BAB 3 PENGANTAR UML Catur Iswahyudi + Edhy Sutanta Materi : • Pendahuluan • Pengertian UML • Konsep Dasar UML • Diagram UML • Pengembangan Software Dengan UML • Tool yang Mendukung UML Pendahuluan • Pemodelan (modelling) adalah proses merancang piranti lunak sebelum melakukan pengkodean (coding). Model piranti lunak dapat dianalogikan seperti pembuatan blueprint pada pembangunan gedung. • Membuat model dari sebuah sistem yang kompleks sangatlah penting karena kita tidak dapat memahami sistem semacam itu secara menyeluruh. • Semakin komplek sebuah sistem, semakin penting pula penggunaan teknik pemodelan yang baik. If No One Is Modelling, Why Should You ? • Why then if Bill Gates is making billions writing software without a significant emphasis on formal modelling, should I care about the UML ? • The answer is that almost 80 percent of all software projects fail. These projects exceed their budget, don’t provide the features customers need or desire, or worse, are never delivered • And the real answer is that more time needs to be spent on software analysis and design, and this means MODEL Kesalahan Persepsi (a) Kebutuhan pemakai menurut analis sistem saat wawancara (b) Kebutuhan pemakai yang cukup direalisasikan menurut analis sistem (c) Pemrogram melakukan penyederhanaan (d) Sistem yang sebenarnya diinginkan oleh pemakai Distribusi Pengembangan Sistem Pengujian 45% Analisis Sistem 20% Desain Sistem 15% Pengkodean 20% Iceberg Problem Analisis, Desain, Implementasi, & Konversi Pemeliharaan ` The triangle for success • Kesuksesan suatu pemodelan piranti lunak ditentukan oleh tiga unsur, yang kemudian terkenal dengan sebuan segitiga sukses. • Ketiga unsur tersebut adalah metode pemodelan (notation), proses (process) dan tool yang digunakan. • Memahami notasi pemodelan tanpa mengetahui cara pemakaian yang sebenarnya (proses) akan membuat proyek gagal. Dan pemahaman terhadap metode pemodelan dan proses disempurnakan dengan penggunaan tool yang tepat. Pengantar UML • UML (Unified Modeling Language) adalah metode pemodelan secara visual sebagai sarana untuk merancang dan atau membuat software berorientasi objek. • Karena UML ini merupakan bahasa visual untuk pemodelan bahasa berorientasi objek, maka semua elemen dan diagram berbasiskan pada paradigma object oriented. • UML memberikan standar penulisan sebuah sistem blueprint, yang meliputi konsep bisnis proses, penulisan kelas-kelas dalam bahasa program yang spesifik, skema database, dan komponen-komponen yang diperlukan dalam software • Sebuah bahasa model adalah sebuah bahasa yang mempunyai vocabulary dan konsep tatanan / aturan penulisan serta secara fisik mempresentasikan dari sebuah sistem • UML adalah sebuah bahasa standar untuk pengembangan software yang dapat menyampaikan bagaimana membuat dan membentuk model-model, tetapi tidak menyampaikan apa dan kapan model yang seharusnya dibuat • UML tidak hanya merupakan sebuah bahasa pemograman visual saja, namun juga dapat secara langsung dihubungkan ke berbagai bahasa pemograman, seperti JAVA, C++, Visual Basic, atau bahkan dihubungkan secara langsung ke dalam sebuah objectoriented database. UML juga dapat digunakan untuk modeling aplikasi prosedural dalam VB atau C. • Begitu juga mengenai pendokumentasian dapat dilakukan seperti; requirements, arsitektur, design, source code, project plan, tests, dan prototypes. Perkembangan UML • Sampai era tahun 1990 terdapat puluhan metodologi pemodelan berorientasi objek bermunculan di dunia. Diantaranya adalah: metodologi booch, metodologi coad, metodologi OOSE, metodologi OMT, metodologi shlaermellor, metodologi wirfs-brock, dsb. • Masa itu terkenal dengan masa perang metodologi (method war) dalam perancangan berorientasi objek. Masing-masing metodologi membawa notasi sendirisendiri, yang mengakibatkan timbul masalah baru apabila kita bekerjasama dengan group/perusahaan lain yang menggunakan metodologi yang berlainan. • Dimulai pada bulan Oktober 1994 Booch, Rumbaugh dan Jacobson, mempelopori usaha untuk penyatuan metodologi perancangan berorientasi objek. • Pada tahun 1995 direlease draft pertama dari UML (versi 0.8). Sejak tahun 1996 pengembangan tersebut dikoordinasikan oleh Object Management Group (OMG – http://www.omg.org). • Tahun 1997 UML versi 1.1 muncul, dan saat ini versi terbaru adalah versi 2.0 yang direlease tahun 2005. Sejak saat itulah UML telah menjelma menjadi standar bahasa pemodelan untuk aplikasi berorientasi objek. Konsep Dasar UML • Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan syntax/semantik. Notasi UML merupakan sekumpulan bentuk khusus untuk menggambarkan berbagai diagram piranti lunak. • Setiap bentuk memiliki makna tertentu, dan UML syntax mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. Notasi UML terutama diturunkan dari 3 notasi yang telah ada sebelumnya: Grady Booch OOD (Object-Oriented Design), Jim Rumbaugh OMT (Object Modelling Technique), dan Ivar Jacobson OOSE (ObjectOriented Software Engineering). Building Blocks • Untuk dapat memahami UML membutuhkan bentuk konsep dari sebuah bahasa model, dan mempelajari 3 elemen utama dari UML, seperti building block, aturanaturan yang menyatakan bagaimana building block diletakkan secara bersamaan, dan beberapa mekanisme umum (common). • Tiga macam yang terdapat dalam building block adalah • Benda/Things; adalah abstraksi yang pertama dalam sebuah model • Hubungan/Relationships; sebagai alat komunikasi dari bendabenda • Bagan/Diagrams; sebagai kumpulan / group dari bendabenda/things Things • Adalah hal yang sangat mendasar dalam model UML, juga merupakan bagian paling statik dari sebuah model, serta menjelaskan elemen-elemen lainnya dari sebuah konsep dan atau fisik. Bentuk dari things ada 5 : 1. Classes, yang diuraikan sebagai sekelompok dari object yang mempunyai atribute, operasi, hubungan yang semantik. Sebuah kelas mengimplementasikan 1 atau lebih interfaces. Sebuah kelas dapat digambarkan sebagai sebuah persegi panjang, yang mempunyai sebuah nama, atribute, dan metoda pengoperasiannya. 2. Interfaces, merupakan sebuah antar-muka yang menghubungkan dan melayani antar kelas dan atau elemen. Interface / antar-muka mendefinisikan sebuah set / kelompok dari spesifikasi pengoperasian, umumnya digambarkan dengan sebuah lingkaran yang disertai dengan namanya. Sebuah antar-muka berdiri sendiri dan umumnya merupakan pelengkap dari kelas atau komponen. Collaboration, yang didefinisikan dengan interaksi dan sebuah kumpulan / kelompok dari kelas-kelas / elemenelemen yang bekerja secara bersama-sama. Collaborations mempunyai struktur dan dimensi. Pemberian sebuah kelas memungkinkan berpartisipasi di dalam beberapa collaborations dan digambarkan dengan sebuah ‘elips’ dengan garis terpotong-potong. 4. Use cases, adalah rangkaian/uraian sekelompok yang saling terkait dan membentuk sistem secara teratur yang dilakukan atau diawasi oleh sebuah aktor. ‘use case’ digunakan untuk membentuk tingkah-laku benda / things dalam sebuah model serta direalisasikan oleh sebuah collaboration. Umumnya ‘use case’ digambarkan dengan sebuah ‘elips’ dengan garis yang solid, biasanya mengandung nama. 3. 5. Nodes, merupakan fisik dari elemen-elemen yang ada pada saat dijalankannya sebuah sistem, contohnya adalah sebuah komputer, umumnya mempunyai sedikitnya memory dan processor. Sekelompok komponen mungkin terletak pada sebuah node dan juga mungkin akan berpindah dari node satu ke node lainnya. Umumnya node ini digambarkan seperti kubus serta hanya mengandung namanya. Hubungan / Relationships • Ada 4 macam hubungan dalam penggunaan UML : 1. Dependency, adalah hubungan semantik antara dua benda/things dimana sebuah benda berubah mengakibatkan benda satunya akan berubah pula. Umumnya sebuah dependency digambarkan dengan sebuah panah dengan garis terputus-putus. 2. Association, hubungan antar benda struktural yang terhubung diantara obyek. Kesatuan obyek yang terhubung merupakan hubungan khusus, yang menggambarkan sebuah hubungan struktural diantara seluruh atau sebagian. Umumnya assosiation digambarkan dengan sebuah garis yang dilengkapi dengan sebuah label, nama, dan status hubungannya. 3. Generalizations, menggambarkan hubungan khusus dalam obyek anak/child yang menggantikan obyek parent / induk. Dalam hal ini, obyek anak memberikan pengaruhnya dalam hal struktur dan tingkah lakunya kepada obyek induk. Digambarkan dengan garis panah. 4. Realizations, merupakan hubungan semantik antara pengelompokan yang menjamin adanya ikatan diantaranya. Hubungan ini dapat diwujudkan diantara interface dan kelas atau elements, serta antara use cases dan collaborations. Model dari sebuah hubungan realization. Diagram dalam UML • UML terdiri atas pengelompokan diagram-diagram sistem menurut aspek atau sudut pandang tertentu. • Diagram menggambarkan permasalahan maupun solusi dari permasalahan suatu model. • UML mempunyai 9 diagram, yaitu: • Diagram Use Case • Diagram Class • Diagram Package • Diagram Sequence • Diagram Collaboration • Diagram StateChart • Diagram Activity • Diagram Deployment • Semakin kompleks bentukan sistem yang akan dibuat, maka semakin sulit komunikasi antara orang-orang yang saling terkait dalam pembuatan dan pengembangan software yang akan dibuat. • Pada masa lalu, UML mempunyai peranan sebagai software blueprint (gambaran) language untuk analisis sistem, designer, dan programmer. Sedangkan pada saat ini, merupakan bagian dari software trade (bisnis software). • UML memberikan jalur komunikasi dari sistem analis kemudian designer, lalu programmer mengenai rancangan software yang akan dikerjakan. • Salah satu pemecahan masalah Object Oriented adalah dengan menggunakan UML. Oleh karena itu orang-orang yang berminat dalam mempelajari UML harus mengetahui dasardasar mengenai Object Oriented Solving; antara lain dengan pembentukan model. • Model adalah gambaran abstrak dari suatu dasar masalah. Dan dunia nyata atau tempat dimana masalah itu timbul bisa disebut dengan domain. • Model mengandung obyek-obyek yang beraktifitas dengan saling mengirimkan messages (pesan-pesan). Obyek mempunyai sesuatu yang diketahui (atribut /attributes) dan sesuatu yang dilakukan (behaviors atau operations). Attributes hanya berlaku dalam ruang lingkup obyek itu sendiri (state). Lalu “blue print” dari suatu obyek adalah Classes (kelas). Obyek merupakan bagian-bagian dari kelas. How Many Diagrams Do I Create ? • Tidak ada jawaban / ketentuan yang pasti • Jumlah diagram yang dibuat sangat bergantung kepada • • • • kebutuhan analisis dan disain; juga pengguna (end-user dan programer) Hampir mirip dengan menggambar DFD, apakah perlu sampai level 2, 3, dst..atau cukup sampai level 1 Jika gambar UML terlalu besar dan rumit, maka buatlah model yang lebih detil untuk memecah kerumitan Apabila model sudah memenuhi kebutuhan end-user, maka cukup. Jika sequence diagram dapat dibaca oleh programmer dan dapat di-implementasikan, maka cukup Pengembangan Sistem dengan UML • Object-Oriented Development Life Cycle (OODLC) merupakan update dari SDLC (System Development Life Cycle) • SDLC merupakan suatu proses yang yang digunakan oleh analis sistem untuk mengembangkan suatu sistem informasi, mulai dari analysis, Design,construction, testing dan implementation sistem. Analisys Design Construction Testing Implementation The Life Cycle Phase Activity Models Produced Components Analysis OOA Requirements Model Project scope Feasibility study Context diagram Class diagram: Entity classes Interface classes Control classes Behavior diagrams: Statechart diagrams Collaborations and CRC cards Sequence diagrams Activity diagrams Design OOD Design versions of the OO models Construction OOP Actual system Testing O-O Testing Working system Maintenance All of the above All of the above Darimana kita mulai ? • Untuk menguasai UML, sebenarnya cukup dua hal yang harus kita perhatikan: 1. 2. Menguasai pembuatan diagram UML Menguasai langkah-langkah dalam analisa dan pengembangan dengan UML Tips Menggunakan UML 1. 2. 3. 4. 5. Buatlah daftar business process dari level tertinggi untuk mendefinisikan aktivitas dan proses yang mungkin muncul. Petakan use case untuk tiap business process untuk mendefinisikan dengan tepat fungsionalitas yang harus disediakan oleh sistem. Kemudian perhalus use case diagram dan lengkapi dengan requirement, constraints dan catatan-catatan lain. Buatlah deployment diagram secara kasar untuk mendefinisikan arsitektur fisik sistem. Definisikan requirement lain (non-fungsional, security dan sebagainya) yang juga harus disediakan oleh sistem. Berdasarkan use case diagram, mulailah membuat activity diagram. 6. 7. 8. 9. Definisikan objek-objek level atas (package atau domain) dan buatlah sequence dan/atau collaboration diagram untuk tiap alir pekerjaan. Jika sebuah use case memiliki kemungkinan alir normal dan error, buatlah satu diagram untuk masing-masing alir. Buatlah rancangan user interface model yang menyediakan antarmuka bagi pengguna untuk menjalankan skenario use case. Berdasarkan model-model yang sudah ada, buatlah class diagram. Setiap package atau domain dipecah menjadi hirarki class lengkap dengan atribut dan metodanya. Akan lebih baik jika untuk setiap class dibuat unit test untuk menguji fungsionalitas class dan interaksi dengan class lain. Setelah class diagram dibuat, kita dapat melihat kemungkinan pengelompokan class menjadi komponen-komponen. Karena itu buatlah component diagram pada tahap ini. Juga definisikan tes integrasi untuk setiap komponen meyakinkan ia berinteraksi dengan baik. 10. Perhalus deployment diagram yang sudah dibuat. Detilkan kemampuan dan requirement piranti lunak, sistem operasi, jaringan, dan sebagainya. Petakan komponen ke dalam node. 11. Mulailah membangun sistem. Ada dua pendekatan yang dapat digunakan : • Pendekatan use case, dengan meng-assign setiap use case kepada tim pengembang tertentu untuk mengembangkan unit code yang lengkap dengan tes. • Pendekatan komponen, yaitu meng-assign setiap komponen kepada tim pengembang tertentu. 12. Lakukan uji modul dan uji integrasi serta perbaiki model berserta codenya. Model harus selalu sesuai dengan code yang aktual. 13. Piranti lunak siap dirilis. Tools yang Mendukung UML • Saat ini banyak sekali tool perancangan sistem yang mendukung UML, baik itu tool komersial maupun opensource. Beberapa diantaranya adalah: • Rational Rose (www.rational.com) • Together (www.togethersoft.com) • Object Domain (www.objectdomain.com) • Jvision (www.object-insight.com) • Objecteering (www.objecteering.com) • MagicDraw (www.nomagic.com/magicdrawuml) • Visual Object Modeller (www.visualobject.com) • StarUML (www.staruml.org) Pointer Penting UML • Data seluruh tool yang mendukung UML, lengkap beserta harganya (dalam US dolar) bisa anda pelajari di situs http://www.objectsbydesign.com/tools/umltools_byCompany.html • Disamping itu, daftar tool UML berikut fungsi dan perbandingan kemampuannya juga dapat dilihat di • http://www.jeckle.de/umltools.htm atau • http://en.wikipedia.org/wiki/Unified_Modeling_Language • Sebagai referensi dalam mempelajari dan menggunakan UML, situs-situs yang merupakan pointer penting adalah: • http://www.cetus-links.org/oo_uml.html • http://www.omg.org • http://www.omg.org/technology/uml/ • http://www.rational.com/uml • http://www.uml.org/ End of Chapter • Any Question ? • Materi minggu depan : Use Case Diagram