Software Design Notations


SOFTWARE DESIGN NOTATION

Software Design Notation jika diterjemahkan secara harfiah ke dalam bahasa Indonesia memiliki artian Notasi  Desain Perangkat Lunak (Aplikasi). Aplikasi yang dikembangkan oleh para developer pastilah memiliki tujuannya masing-masing. Oleh karenanya, notasi desain ini ada untuk membantu para developer dan stakeholder mendeskripsikan tujuan dari suatu perangkat lunak. Mari kita kembali ke S.D.L.C. (Software Development Life Cycle) terlebih dahulu, saya menyertakan gambarnya di bawah ini :
Gambar 1. S.D.L.C., sumber :https://www.winklix.com/blog/software-development-life-cycle-sdlc/
Tahap pertama dan kedua merupakan tahap analisis dan design, menurut @OmarElGabry, di medium, kedua tahap tersebut merupakan tahap yang hampir sama karena perbedaannya dapat dianalogikan dengan “Apa Vs Bagaimana”. Jadi, dapat dikatakan proses desain merupakan proses yang menjelaskan gimana caranya setiap informasi yang sudah ada, di tahap analisis, untuk diimplementasikan. Pada tahap desain berfokus kepada pendeskripsian setiap objek, atribut, lingkungan, dan interaksi antar komponen atau kelas. Berikut saya jelaskan kepada teman-teman semua apa saja fokus yang ada pada tahap desain (dalam bentuk beberapa kriteria yang sebenarnya harus ada ya..), di antaranya :
1.     Automatic Processing, Notasi desain memungkinkan diverifikasi kualitas dan kebenarannya oleh desainer;
2.     Modularity, Notasi desain mendukung pengembangan perangkat lunak yang telah dimodularisasi;
3.     Structure Enforcement, Notasi desain memberlakukan penggunaan konstruksi pemrograman terstruktur;
4.     Ease of Editing, Notasi desain mudah untuk dimodifikasi;
5.     Data Representation, Notasi desain memiliki kemampuan untuk menggambarakan data lokal dan global secara langsung;
6.     Maintainability, Notasi desain mampu memelihara bentuk desainnya sendiri;
7.     Logic Verification, Notasi desain mampu melakukan verifikasi logika guna meningkatkan standar pengujian perangkat lunak yang dikembangkan;
8.     Overall Simplicity, Notasi desain mudah untuk dipelajari, digunakan, dan sederahana penulisannya;
9.     Machine Readabillity, Notasi desain dapat menjadi masukkan secara langsung ke dalam pengembangan sistem yang dapat dibaca oleh mesin;
10.  Easily Converted to Program Source Code, Notasi desain dapat dengan mudah dan cepat untuk dikonversi menjadi kode pemrograman.
Notasi desain perangkat lunak yang dibuat tidaklah selalu sederhana, untuk mengatasi permasalahan tersebut kita harus menggunakan bahasa standar untuk memodelkan. Rosa dalam bukunya yang berjudul Rekayasa Perangkat Lunak menjelaskan ada bahasa yang paling banyak digunakan untuk membuat analisis dan desan, mendefinisikan requirement, serta menggambarkan arsitektur dalam pemrograman berorientasi objek. Bahasa tersebut ialah Unified Modeling Language (UML). UML merupakan bahasa visual untuk pemodelan dan komunikasi mengenai sebuah sistem dengan menggunakan diagram dan teks-teks pendukung. Jadi penggunaan UML tidak terbatas pada metodologi tertentu. Memangnya apa saja sih yang harus dimodelkan? Itu pasti pertanyaan yang terlintas di pikiran teman-teman. Setelah beberapa kriteria yang ada di Notasi Desain Perangkat Lunak dijelaskan, kita beranjak ke beberapa klasifikasi dalam Notasi Desain Perangkat Lunak. Kita klasifikasikan kedua pemodelan ke dalam dua kategori, di antaranya:
1.     Structural Descriptions (Statis)
Structural Descriptions jika diterjemahkan secara hrfiah memiliki artian Deskripsi Terstruktur yang dapat dikatakan kaku atau tetap atau bahkan diam (statis). Structural Description menggambarkan dan merepresentasikan berbagai aspek struktural pada perancangan perangkat lunak, di antaranya :
§  Architecture Description Language (ADL), bahasa yang digunakan dalam hal komponen dan konektornya;
§  Component Diagrams, sekumpulan komponen, realisasi dari sekumpulan antarmuka dan hubungan timbal baliknya.
§  Deployment Diagrams, suatu sistem diwakili dengan satu set simpul (fisik) dan keterkaitannya;
§  Interface Description Languages (IDL), bahasa pemrograman yang digunakan untuk mengimplementasikan antarmuka dan komponen perangkat lunak.
Nah, itulah beberapa aspek yang harus direpresentasikan ketika membuat notasi desain berjenis statis. Lantas apa saja model-model yang harus dimodelkan pada kategori ini? Ada beberapa contoh yang akan saya jelaskan secara singkat kepada teman-teman, di antaranya :
1)    Class and Object Diagrams
Class and Object Diagrams merupakan notasi desain untuk mewakili sekumpulan kelas dan objek lengkap dengan relasinya. Pada kelas memiliki atribut (ialah variabel-variabel yang dimiliki oleh suatu kelas) dan operasi atau metode (ialah fungsi-fungsi yang dimiliki oleh suatu kelas). Kelas sendiri sebaiknya memiliki beberapa jenis kelas berikut:
v  Kelas main, fungsi awal yang dieksekusi ketika sistem dijalankan;
v  Kelas View, mengatur tampilan ke pemakai;
v  Kelas Controller, menangani proses bisnis aplikasi;
v  Kelas Model, memodulkan data menjadi satu kesatuan yang akan diambil maupun disimpan ke basis data.
Setelah mengetahui beberapa kelas yang sebaiknya ada, mari kita pahami beberapa simbol-simbol untuk Class Diagram ini. Berikut saya cantumkan tabel beberapa simbol yang dapat digunakan

Setelah memahami Class Diagram kita berlanjut kepada Object Diagram, kalau bagian ini menggambarkan penamaan dan jalannya objek dalam suatu sistem. Nah, untuk memahami jalannya objek pada suatu perangkat lunak kita harus mendifinisikannya dengan dua simbol di bawah ini, berikut saya lampirkan :
Gambar 2. Simbol Object Diagram, Sumber : Rosa A.S.

Karena penjelasan antara Class Diagram dan Object Diagram hampir sama, kita dapat mengintegrasikan keduanya menjadi satu kesatuan karena saling melengkapi (AZEKKK). Untuk menambah pemahaman kita, saya akan memberikan contoh BELANJA ONLINE. Gimana sih relasi kelas dan objeknya, yu langsung lihat di bawah ini:

Gambar 3. Online Shopping Class and Object Diagram, sumber :https://www.uml-diagrams.org/examples/online-shopping-domain-uml-diagram-example.html?context=cls-examples


2)    Entity Relationship Diagram
Entity Relationship Diagram (ERD) merupakan bentuk paling awal dalam perancangan basis data relasional. ERD sendiri berfungsi untuk menggambarkan model konseptual data yang disimpan ke dalam sistem informasi. ERD sendiri memiliki beberapa aliran notasi, di antaranya Chen, Barker, dan lain-lain. Notasi yang sering digunakan ialah notasi Chen, berikut beberapa simbol dalam notasi desain Chen:
 
Gambar 4. Notasi ERD, sumber https://www.conceptdraw.com/How-To-Guide/picture/Design_Elements(Chen-ERD)_Win_Mac.png

Gambar 5. ERD Model Penjualan Internet, sumber : https://www.smartdraw.com/entity-relationship-diagram/
Lantas, gimana cara pake simbol-simbol tersebut dapat kita implementasikan ke berbagai studi kasus? Saya cantumkan contoh ERD  model penjualan internet di bawah ini :


Gambar 5. ERD Model Penjualan Internet, sumber : https://www.smartdraw.com/entity-relationship-diagram/

3)   
Structure Chart
Structure Chart merupakan grafik yang merepresentasikan suatu proses dalam sistem. Caranya kerjanya dengan menguraikan komponen utama menjadi bagian-bagian kecil. Selain itu, grafik ini pun digunakan untuk pemanggilan suatu program dan juga digunakan untuk menganalisis sistem terstruktur atau desain terstruktur. Adapun beberapa tahapan untuk mengimplementasikan atau membuat grafik ini ialah sebagai berikut (didapatkan dari : https://sis.binus.ac.id/2016/08/30/cara-menggambarkan-rancangan-program-menggunakan-structure-chart/) :

Tahap 1: Mengidentifikasi Modul dan Level. Pada tahap ini, analis dapat mengidentifikasi modul dan level dengan melakukan konversi proses yang ada pada DFD ke dalam modul-modul structure chart. Perbedaan tingkatan atau level yang telah dibuat pada DFD diterjemahkan ke dalam modul dengan tingkatan yang berbeda pula pada structure chart. Pada gambar di bawah, DFD level konteks (level-context DFD) ditempatkan pada bagian tertinggi dari structure chart untuk merepresentasikan modul kontrol yang mengatur keseluruhan fungsi sistem. Lalu di bawahnya ditempatkan DFD Level 0 sebagai modul subordinat. Pola struktur seperti ini berlanjut mengikuti hierarki tingkatan DFD. Contoh diberikan pada gambar di bawah ini:
Sumber: Buku System Analysis and Design, 2013
Tahap 2: Mengidentifikasi Hubungan Spesial. Pada tahap ini, yang dilakukan adalah menambahkan notasi loop (iterasi) dan conditional line (garis kondisi). Hal ini dilakukan untuk merepresentasikan modul mana yang bersifat perulangan ataupun modul yang bersifat opsional. Contoh diberikan pada gambar di bawah ini:
Sumber: Buku System Analysis and Design, 2013
Tahap 3: Menambahkan Couples. Pada tahap ini, analis mengidentifikasi informasi yang terdapat di antara modul-modul. Informasi ini dapat berupa atribut suatu data atau parameter kontrol. Informasi yang berupa atribut data dinotasikan oleh panah dengan lingkaran kosong. Sedangkan informasi yang berupa parameter kontrol dinotasikan oleh panah dengan lingkaran penuh. Arah panah menunjukkan informasi mengalir dari suatu modul ke modul lain. Contoh diberikan pada gambar di bawah ini:

Sumber: Buku System Analysis and Design, 2013
Tahap 4: Meninjau dan Merevisi Structure Chart. Pada tahap ini, analis akan meninjau ulang dan melakukan revisi terhadap structure chart versi pertama yang telah dibuat berdasarkan DFD, use case, dan definisi kebutuhan pengguna. Namun masih terdapat bagian yang perlu dilakukan konfirmasi yang sesuai dengan informasi yang ada dalam proses bisnis ataupun perubahan yang diinginkan pengguna.

Jadi, dapat disimpulkan bahwa Structural Description yaitu kumpulan diagram yang digunakan untuk menggambarkan suatu struktur statis dari sistem yang dimodelkan. Dengan kata lain, struktur ini tidak dapat dengan mudah beradaptasi dengan lingkungannya karena sudah merupakan suatu ketetapan. Okeh. Lanjut ke jenis yang kedua, yaitu :

2.     Behavioral Description (Dinamis)
Behavioral Description merupakan bentuk representasi perilaku dinamis suatu perangkat lunak dan beberapa komponen, di antaranya :
§  Communication Diagram, bentuk tautan (pesan) yang dihasilkan dari interaksi antara sekelompok objek;
§  Decision Tables and Diagrams, Kondisi dan tindakan yang kompleks dari suatu sistem;
§  State Transition and State Chart Diagrams, aliran kontrol dari negara ke negera di mesin negara;
§  Formal Specification Languages, Bahasa tekstual yang digunakannya.
Okeh, kita lanjut ke beberapa jenis notasi desain yang menggambarkan perilaku dinamisnya, di antaranya :
1)    Activity Diagrams
Activity Diagrams merupakan diagram yang menggambarkan aliran kerja atau aktivitas dari sebuah sistem atau proses bisnis atau menu yang ada pada perangkat lunak. Ingat yang dilakukan oleh sistem dan bukan aktor. Selain itu, diagram aliran kerja juga digunakan untuk mendefinisikan beberapa hal berikut ini (Rosa A.S.):
§  Rancangan proses bisnis;
§  Pengelompokan tampilan dari sistem (User Interface);
§  Rancangan Pengujian;
§  Rancangan menu.
Untuk membuat diagram ini, kita perlu tahu terlebih dahulu beberapa simbol yang ada, di antaranya :
Gambar 6. Simbol Activity Diagram, sumber :https://pccontrol.wordpress.com/2012/09/12/pengetahuan-dasar-dan-contoh-diagram-aktivitas/

Lalu, kita perdalam pengetahuan kita dengan melihat contoh yang ada pada diagram aliran kerja ini. Berikut saya lampirkan :
Gambar 7. Contoh Diagram Aliran Kerja, sumber : https://www.uml-diagrams.org/online-shopping-uml-activity-diagram-example.html?context=activity-examples


2)    Flowchart
Flowchart merupakan diagram alir yang menunjukkan apa yang terjadi dalam suatu program dan bagaimana data mengalir di sekitarnya. Dapat dikatakan juga Flowchart ialah diagram alir yang menjalankan suatu algoritma dengan aliranny dari awal hingga akhir yang merepresentasikan proses bisinis. Adapun beberapa tujuan menggunakan Flowchart ialah sebagai berikut :
§  Menggambarkan suatu tahapan penyelesaian masalah
§  Secara sederhana, terurai, rapi dan jelas
§  Menggunakan simbol-simbol standar
Lalu, bagaimana cara kita mengunakan diagram alir ini untuk notasi desain yang kita gunakan? Berikut beberapa simbol yang Dwiky (https://www.it-jurnal.com/pengertian-flowchart/) jelaskan dan mengklasifikan simbol-simbol tersebut ke dalam tiga kategori, di antaranya :
      • Flow Direction Symbols

Digunakan untuk menghubungkan simbol satu dengan yang lain – Disebut juga connecting line

·       Processing symbols
Menunjukan jenis operasi pengolahan dalam suatu  proses / prosedur Input / Output
·       Symbols

Untuk lebih lanjut ayo kita analisis contoh diagram alir pelayanan kesehatan di bawah ini untuk menambah pemahaman kita mengenai Flowchart.
Gambar 8. Flowchart Pelayanan Kesehatan, sumber :https://www.visual-paradigm.com/tutorials/flowchart-tutorial/

                     

                     3) Sequence Diagram
                      Sequence Diagram atau sekuen diagram merupakan diagram yang menggambarkan kelakuan objek pada use case dengan mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima antar objek. Berikut saya sertakan beberapa simbol yang ada pada diagram ini 
Gambar 9. Sequence Diagram simbol, sumber :https://pccontrol.wordpress.com/2012/12/25/pengetahuan-dasar-diagram-interaksi-sequnce-diagram-dan-kolaborasi/

Berikut contoh dari diagram sekuen yang didapatkan dari (
https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-sequence-diagram/) yang berekenaan dengan Sistem Hotel.

4)    Pseudocode
Pseudocode adalah notasi desain yang berkaitan erat dengan bagaimana logika suatu program akan bekerja, umumnya pada tahap desain terperinci, perilaku prosedur atau metode. Selain itu, pseudocode juga merupakan deskripsi dari algoritma pemrograman komputer yang menggunakan konvensi struktural dari suatu bahasa pemrograman, dan ditujukan agar dapat dibaca oleh manusia dan bukan oleh mesin. Tetapi apa sebenanya fungsi dari notasi desain ini? Terdapat beberapa fungsi yang dijelaskan di (https://bilabil.com/contoh-pseudocode/), di antaranya :
§  Mempermudah penggunanya dalam memahami dan memperjelas cara menyelesaikan suatu masalah;
§  Sebagai alat dokumentasi;
§  Membantu penggunanya dalam menuliskan suatu algoritma yang dibuatnya;
§  Mudah karena tidak bergantung pada suatu sistem tertentu dan juga sapek dari Pseudocode termasuk ringkas, dan itulah yang merupakan perinsip utama dari algoritma.
Lalu struktur yang harus ada dalam psedocode ialah tiga bagian, yaitu judul, deskripsi, dan implementasi. Untuk lebih jelasnya ayok kita lihat contohnya :
program hitung_luas_trapesium

deklarasi
var luas, ab, cd, t:integer;

algoritma:
ab <-- 10="" span="">
cd <-- 8="" span="">
t <-- 7="" span="">

luas <-- 1="" ab="" cd="" span="" t="">

write <-- luas="" span="">
Saya lampirkan beberapa kode yang ada dalam psedocode untuk membantu teman-teman agar semakin paham dengan psedococe.
§  INPUT, menunjukkan penggunaan memasukkan sesuatu;
§  OUTPUT, menunjukkan bahwa output akan muncul di layar;
§  WHILE, loop (iterasi yang memiliki kondisi di awal);
§  FOR, loop penghitungan (iterasi);
§  REPEAT–UNTIL-LOOP (iterasi) yang memiliki kondisi di akhir;
§  IF–THEN–ELSE, keputusan (pemilihan) di mana pilihan dibuat.
Nah sekian ya teman-teman terima kasih.....

Komentar

Postingan populer dari blog ini

Kebutuhan Fungsional dan Non-Fungsional

Pengantar Rekayasa Perangkat Lunak