Object-Oriented Reengineering Patterns and Techniques Wahyu Andhyka Kusuma, S.Kom Materi 3 Software Visualization
Topik Pengantar – Software V Visualization dalam Reengineering Context Static Code Visualization – Contoh Dynamic Code Visualization – Contoh Memahami Evolusi Kesimpulan
Topik Pengantar – Software Visualization dalam Reengineering Context Static Code Visualization – Contoh Dynamic Code Visualization – Contoh Memahami Evolusi Kesimpulan
5.4 Program Visualization Pengurangan kompleksitas Menghasilkan sudut pandang yang berbeda dari sistem Visualization Sangat kuat tetapi memiliki kelemahan : – Dapat menjadi komplek, dan menjadikan penelitian tersendiri, Penggunaan spasi, penggunaan tab, dll – Warna yang bagus tidak mengindikasikan informasi penting – Dimana dilihat dan apa itu penting ?
5.5 Kekurangan Kosakata Visualization – Information Visualization Software Visualization – Algorithm Visualization – Program Visualization Static Code Visualization Dynamic Code Visualization Tujuan dari kesemuanya adalah mengurangi kompleksitas
5.6 (Information) Visualization Kurang lebih ada tiga pertanyaan – Lower perception (one element) – Medium perception (several elements) – Upper perception (all elements/the complete picture) Didalam Information Visualization digunakan untuk mengurangi kompleksitas Mengumpukan Informasi Bagaimana menampilkan informasi Bagaimana memvisualisasikan
5.7 Software Visualization “Software Visualization is the use of the crafts of typography, graphic design, animation, and cinematography with modern human-computer interaction and computer graphics technology to facilitate both the human understanding and effective use of computer software.” Price, Baecker and Small, “Introduction to Software Visualization” 2 bidang utama: – Algorithm Visualization – Program Visualization Permasalahan utama: “Software is intangible, having no physical shape or size. Software visualisation tools use graphical techniques to make software visible by displaying programs, program artifacts and program behaviour.” [Thomas Ball]
5.8 Dalam konteks Teknik Bekerja dalam sistem lama, juga arsitektur yang kadarluarsa Biasanya tools (editor) tidak dapat memroses kode yang berbeda atau lama Sebuah pendekatan – Scalability sangat penting – Efficient (waktu / Informasi yang diperoleh) – Membutuhkan sebuah fokus Solusi – Mengurangi dukungan dari tools atau editor juga ketergantungannya – Gunakan tool untuk visualisasi (Rigi, CodeCrawler, Jinsight) – Lakukan sendiri tetapi gunakan pemikiran sederhana
5.9 Program Visualization “Program visualization is the visualization of the actual program code or data structures in either static or dynamic form” [Price, Baecker and Small] Static code visualization Dynamic code visualization Menghasilkan sudut pandang yang berbeda dari sistem dan mempelajari informasi yang ada didalam visualization tersebut Permasalahan yang kompleks, seperti : – Efficient space use, edge crossing problem, layout problem, focus, HCI issues, GUI issues, … – Kaidah yang tidak sesuai (colors, symbols, interpretation, …)
Topik Pengantar – Software V Visualization dalam Reengineering Context Static Code Visualization – Contoh Dynamic Code Visualization – Contoh Memahami Evolusi Kesimpulan
5.11 Static Code Visualization Informasi dari visualisasi dapat di peroleh dari static structure dari sebuah sistem Tergantung dari bahasa pemrograman dan paradigmanya – Object-Oriented PL: classes, methods, attributes, inheritance, … – Procedural PL: procedures, invocations, … – Functional
Topik Pengantar – Software V Visualization dalam Reengineering Context Static Code Visualization – Contoh Dynamic Code Visualization – Contoh Memahami Evolusi Kesimpulan
5.13 Dynamic Code Visualization Memvisualisasikan perilaku (behaviour) dinamis dari sistem – Instrumen dari kode – Trace collection (melihat jejak dari pengumpulan variabel) – Trace evaluation (melihat jejak dari evaluasi setelah dieksekusi) – Untuk apa visualisasinya Execution trace (melihat jejak dari hasil eksekusi Memory consumption (seberapa besar memori digunakan) Object interaction (interaksi antar objek) Kompleksitas dari Algoritma …
5.14 Dynamic Software Visualization: Evaluation Permasalahan instrumen dari kode – Blue Print, Method Wrapping, enkapsulasi, dll Permasalahan Scalability
Topik Pengantar – Software V Visualization dalam Reengineering Context Static Code Visualization – Contoh Dynamic Code Visualization – Contoh Memahami Evolusi Kesimpulan
5.16 Memahami Evolusi Informasi ada didalam riwayat perngkat lunak Kompleksitas yang sangat berlimpah Bagaimana kita dapat mendeteksi dan memahami perubahan? Solusi: – Revision Towers – TimeWheel, Infobug – The Evolution Matrix
Topik Pengantar – Software V Visualization dalam Reengineering Context Static Code Visualization – Contoh Dynamic Code Visualization – Contoh Memahami Evolusi Kesimpulan
5.18 Menjadi diri sendiri lebih baik Visualisasi yang baik dapat menjadi pekerjaan yang susah – Algoritma dapat menjadi sangat penting – Efisien dari penggunaan space sangat penting Sangat susah untuk fokus: – Beautiful graphs are not always meaningful – Bagaimana seharusnya melihat informasi? – Bagaimana seharusnya informasi untuk digunakan?
5.19 Kesimpulan Software Visualization sangat penting jika digunakan dengan baik Pendekatan terintegrasi sangat dibutuhkan hanya menggunakan visualisasi dengan penampilan yang baik tidak cukup Secara umum, hanya orang yang tahu tentang Software Visualization yang mengerti dan dapat memberikan informasi tentang sistem Masa depan dari software sedang berkembang dan software visualization akan menjadi bagian dari itu