Patterns and Techniques Wahyu Andhyka Kusuma SKom kusumawahyuagmailcom 081233148591 M ateri 1 Introduction OORP Topik Tujuan dari perkuliahan Mengapa Reengineer Lehmans Laws ObjectOriented Legacy ID: 800184
Download The PPT/PDF document "Object-Oriented Reengineering" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
Object-Oriented Reengineering Patterns and Techniques
Wahyu Andhyka Kusuma, S.Komkusuma.wahyu.a@gmail.com081233148591
M
ateri 1
Introduction OORP
Slide2Topik
Tujuan dari perkuliahanMengapa Reengineer?Lehman's LawsObject-Oriented LegacyMasalah Khusus
Keadaaan Umum
Permasalahan Arsitektur
&
R
efactoring
Reverse and Reengineering
Definisi
Teknik
Pola
Slide3Topik
Tujuan dari perkuliahanMengapa Reengineer?Lehman's LawsObject-Oriented LegacyMasalah Khusus
Keadaaan Umum
Permasalahan Arsitektur
&
R
efactoring
Reverse and Reengineering
Definisi
Teknik
Pola
Slide41.4
Tujuan PerkuliahanTujuan utama dari perkuliahan:Reverse engineering and reengineering adalah kegiatan inti dari daur hidup dari semua perangkat lunak termasuk juga Object Oriented
Bagaimana Reengineering digunakan untuk mengidentifikasi masalah
Bagaimana reengineering digunakan untuk membangun kembali sistem untuk memenuhi kebutuhan baru
B
anyak
lightweight
tools and techniques
yang membantu dan digunakan dalam
reengineering
.
Meskipun dengan tools tersebut
seseorang tetap harus bekerja sesuai dengan tugasnya
Bagaimana suatu pattern digunakan untuk mentransformasikan kode untuk memenuhi kebutuhan baru
Slide51.5
Jadwal Perkuliahan
Slide6Topik
Tujuan dari perkuliahanMengapa Reengineer?Lehman's LawsObject-Oriented LegacyMasalah Khusus
Keadaaan Umum
Permasalahan Arsitektur
&
R
efactoring
Reverse and Reengineering
Definisi
Teknik
Pola
Slide71.7
Apa itu Legacy System ?“legacy” legacy kb. (j. -cies) warisan, harta pusaka/peninggalan. to come into a l. mewarisi.
Legacy System adalah bagian dari software yang
:
Anda telah
inherited
valuable
untuk Anda
.
Permasalahan yang timbul dengan
legacy systems:
Pengembang asli tidak ada (dalam keadaan tertentu)
Metode yang digunakan kemungkinan sudah kadarluarsa
Pencarian dan modifikasi mungkin akan dilakukan
Dokumentasi yang mungkin sudah hilang atau tidak berlaku
Evolusi dan pengembangan selanjutnya bisa jadi sangat mahal
Slide81.8
Biaya Perangkat Lunak
requirement
design
coding
testing
delivery
x 1
x 5
x 10
x 20
x 200
Sekitar
60%
untuk
biaya
pengembangan
, 40%
biaya
pengujian
.
Untuk
perangkat
lunak
berbasis
pengguna
(custom),
biaya
evolusi
biasanya
melebihi
biaya
pengembangan
.
Biaya
beragam
tergantung
pada
tipe
sistem
yang
akan
dikembangkan
dan
kebutuhan
sistem
seperti
unjuk
kerja
dan
kehandalan
sistem
,
Distribusi
biaya
bergantung
pada
model
pengembangan
yang
digunakan
.
Slide91.9
Pengembangan Selanjutnya
17.4% Corrective
(fixing reported errors)
18.2% Adaptive
(new platforms or OS)
60.3% Perfective
(new functionality)
data from [Lien78a]
4.1% Other
Bagian terbesar dari biaya perbaikan atau pengembangan tergantung fungsionalitas baru
Slide101.10Lehman's Laws
Studi dari Lehman and Belady [Lehm85a] mengidentifikasi beberapa “laws”
dari sistem perubahan
.
Continuing change
Program yang digunakan dalam dunia nyata harus selalu berubah, atau jika tidak secara bertahap tidak akan digunakan dan akan ditinggalkan
Increasing complexity
Sebagai sebuah program yang terus berkembang
,
hal tersebut akan menjadi kompleks dan kebutuhan ekstra akan dibutuhkan
untuk memelihara dan menyederhanakan strukturnya
Slide111.11
Bagaimana tentang sebuah Obyek?Object-oriented legacy systemsOO lebih peka terhadap perubahan akan arsitektur dan desainnyaDibandingkan dengan tradisional
legacy systems
(AKA Structured, Fungsional)
Antara gejala dan sumber dari permasalahan adalah sama
Antara Solusi dan Detail Teknis mungkin akan berbeda
Teknik dari OO menjanjikan yang terbaik
flexibility,
reusability,
maintainability
…
Tapi ini tidak murah dan mudah
Slide121.12
Bagaimana dengan komponen?
Komponen dapat menjadi sangat rapu
Sampai ada
lem
yang menyatukannya
Slide131.13
process-oriented structured methods, information
engineering,
data-oriented methods,
prototyping
,
CASE-tools
–
Bukan
OO
!
Modern Methods & Tools ?
[Glas98a]
kutipan dari
Sasa
Dekleva
(1992)
Modern methods
(*) memberikan jaminan untuk more reliable softwareeModern methods memberikan jaminan untuk less frequent software repairand ...Modern methods
memberikan jaminan untuk
more
total maintenance time
Slide141.14
Bagaimana mengembangkan Legacy System ?Memperbaharui atau merubah Requirements akan mempengarui desain asli, dan akan membutuhkan usaha ekstra untuk beradaptasi
New Functionality
Hack it in ?
duplicated code
complex conditionals
abusive inheritance
large classes/methods
First …
refactor
restructure
reengineer
Slide15Topik
Tujuan dari perkuliahanMengapa Reengineer?Lehman's LawsObject-Oriented LegacyMasalah Khusus
Keadaaan Umum
Permasalahan Arsitektur
&
R
efactoring
Reverse and Reengineering
Definisi
Teknik
Pola
Slide161.16
Gejala UmumKekurangan Pengetahuan
Sudah tidak terpakai atau tidak ada dokumentasi
Membangun dari awal
Hilangnya atau tidak ada pengetahuan tentang sistem
Keterbatasan pengetahuan tentang sistem
Tidak ada dokumentasi testing
Process symptoms
Terlalu lama untuk memproduksi mulai dari awal
Membutuhkan
bug
fixes
Memperbaiki dependensi dari sistem
difficulties separating
products
perubahan kecil tapi membutuhkan waktu sangat lama
Code symptoms
duplicated
code
code smells
big build times
Slide171.17
Permasalahan UmumPermasalahan ArsitekturTidak ada
documentation
=
tidak ada atau kadarluarsa
Lapisan yang salah
=
terlalu sedikit atau terlalu banyak
Tidak ada modularitas
=
hanya asal menggabungkan
duplicated code
= copy, paste & edit code
duplicated
functionality
=
fungsional yg sama di tim yang berbeda
Peluang
Refactoring
Penyalahgunaaninheritance= code reuse vs polymorphismHilangnya inheritance= Duplikasi, case-statementsOperasi yang salah tempat=
Operasi diluar kelas
Pelanggaran
encapsulation
= type-casting; C++ "friends"
Penyalahgunaan
class
= classes as namespaces
Slide18Topik
Tujuan dari perkuliahanMengapa Reengineer?Lehman's LawsObject-Oriented LegacyMasalah Khusus
Keadaaan Umum
Permasalahan Arsitektur
&
R
efactoring
Reverse and Reengineering
Definisi
Teknik
Pola
Slide191.19
Sebuah Terminologi“Forward Engineering tradisional proses bergerak dari high-level abstractions dan logical mengimplementasikan desain kedalam physical didalam sistem.”
“
Reverse Engineering
adalah sebuah proses menganalisa sebuah sistem untuk diidentifikasi komponen dari sistem dan hubungan didalamnya juga membuat representasi dari sistem didalam sebuah Form atau didalam abstraksi yang lebih tinggi
.”
“
Reengineering
...
Pengujian dan perubahan dari sebuah sistem untuk disusun kembali kedalam sebuah Form baru dan diimplementasikan kedalam suatu sistem yang baru
.”
—
Chikofsky
and Cross [in Arnold, 1993]
Slide201.20
Tujuan dari Reverse EngineeringMengatasi complexityButuh sebuah teknik khusus untuk memahami sistem yang besar dan komplek
Menghasilkan sudut pandang yang berbeda
Menghasilkan cara yang berbeda dalam memandang sebuah sistem
Menanggulangi informasi yang hilang
Menggali apa yang telah terjadi dan bagaimana prosesnya
Mendeteksi efek samping
Membantu memahami efek samping dari perubahan
Menyatukan
Abstraksi
Mengidentifikasi abstraksi yang tersembunyi didalam sebuah software
Memudahkan
reuse
Mendeteksi kandidat reusable dari komponen
—
Chikofsky
and Cross [in Arnold, 1993]
Slide211.21
Teknik Reverse EngineeringRedocumentationDokumentasi yang bagusPenambahan diagram, tabel, chartPenambahan list atau tabel untuk
cross-reference
scripting
Design recovery
software metrics
browsers, visualization tools
static analyzers
dynamic (trace) analyzers
Slide221.22
Tujuan ReengineeringUnbundlingMemecah monolithic sistem kedalam bagian-bagian yang bisa dijual terpisahPerformance
“first do it, then do it right, then do it fast” —
pengalaman menunjukkan bagaimana sistem dapat bekerja sempurna
!
Port
to other Platform
Arsitektur harus dibedakan untuk tiap platform tergantung dari modulny
Design extraction
Untuk mempermudah
maintainability, portability,
dll
.
Exploitation of
New Technology
contoh
,
new language features, standards, libraries,
dll.
Slide231.23
Teknik ReengineeringRestructuringKonversi dari unstructured ke structured codesource code translation
—
Chikofsky
and Cross
Data reengineering
Integrasi dan pemusatan (penggabungan) banyak database
Menyatukan beberapa tidak konsekwennya representasi
upgrading data
model
—
Sommerville
,
ch
32
Refactoring
renaming/moving methods/classes
dll.
Slide241.24
Reengineering Life-Cycle
Slide251.25Reverse engineering Patterns
Reverse engineering patterns menyatukan keahlian dan kemampuan dalam mengeksplorasi desain dari source code, running systems dan sumber daya.
Setiap dokumentasi yang ada biasanya tidak sesuai dengan realitanya
.
Contoh
:
Interview During Demo
Slide261.26Reengineering Patterns
Reengineering patterns Menyatukan keahlian dan kemampuan dalam transforming legacy code untuk menyelesaikan masalah yang ada.
Masalah ini biasanya tidak terlihat didalam desain asli tetapi tergantung dari penyimpangan arsitektur termasuk juga perkembangan arsitektur
Contoh
:
Move
Behaviour
Close to Data
Slide271.27
Rangkaian Reengineering Patterns
Tests: Your Life Insurance
Detailed Model Capture
Initial Understanding
First Contact
Setting Direction
Migration Strategies
Detecting Duplicated Code
Redistribute Responsibilities
Transform Conditionals to Polymorphism
Slide281.28
RingkasanReuseReengineeringReengineering PatternsReverse EngineeringReverse Engineering
Patterns
Slide29© Stéphane Ducasse, Serge Demeyer, Oscar NierstraszOORPT — Introduction
1.29License
http://creativecommons.org/licenses/by-sa/2.5/
Attribution-ShareAlike 2.5
You are free:
to copy, distribute, display, and perform the work
to make derivative works
to make commercial use of the work
Under the following conditions:
Attribution.
You must attribute the work in the manner specified by the author or licensor.
Share Alike.
If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one.
For any reuse or distribution, you must make clear to others the license terms of this work.
Any of these conditions can be waived if you get permission from the copyright holder.
Your fair use and other rights are in no way affected by the above.