Design Pattern pembuatan Perangkat Lunak
Design perangkat lunak
Dipublikasikan pada 15 May, 2022Latar Belakang
Perangkat lunak umumnya merupakan usaha untuk menyelesaikan permasalahan pada dunia nyata menggunakan komputer. Pengembangan perangkat lunak (software development) melalui serangkaian tahapan dimana masing-masing tahapan menghasilkan artifak atau luaran tertentu. Dimulai dari pemahaman masalah (requirement elicitation), analisis, desain, implementasi, dan diakhiri dengan pengujian. Selanjutnya, perangkat lunak ditempatkan (deploy) pada pelanggan dan dilakukan pemiliharaan terhadapnya. Tahapan desain menerjemahkan kebutuhan perangkat lunak ke dalam model [1] yang dapat dipahami oleh pengembang perangkat lunak. Beberapa hal harus diperhatikan oleh desainer perangkat lunak supaya perangkat lunak yang dikembangkan dapat fleksibel dan komponen-komponen di dalamnya dapat digunakan ulang (reuseable). Pada tulisan ini, dipaparkan beberapa hal terkait dengan desain perangkat lunak yaitu prinsip-prinsip penting, proses desain, dan artifak-artifak yang dihasilkan dalam tahapan desain. Tulisan ini ditutup dengan beberapa tantangantantangan dalam desain perangkat lunak
Design Pattern pembuatan Perangkat Lunak
Design pattern atau yang dapat diartikan sebagai pola desain adalah metode yang dibuat untuk membantu tim pengembang dalam menemukan solusi dari masalah-masalah umum yang muncul saat pengembangan perangkat lunak sedang berlangsung. Pola desain ini dapat digunakan kembali dalam pengembangan perangkat lunak selanjutnya. Ia bukanlah suatu metode yang dapat diimplementasikan langsung menjadi sebuah kode program, tetapi ia merupakan sebuah pola untuk menyelesaikan masalah dalam situasi yang bermacam-macam.
Tahapan Design
menentukan hubungan di antara elemen-elemen struktural utama dari program. (Digambarkan di dalam Data Flow Diagram).
menggambarkan bagaimana Perangkat lunak berkomunikasi dengan dirinya sendiri, dengan sistem yang berinteroperasi dengan dirinya dan dengan manusia yang menggunakannya.
mentransformasikan elemen-elemen struktural dari arsitektural program ke dalam suatu deskripsi prosedural dari komponen-komponen perangkat lunak. (Informasi diperoleh dari PSPEC, CSPEC, STD).
Object Oriented Konsep
Mengapa Object Oriented Programming? OOP (Object Oriented Programming) masih merupakan salah satu paradigma atau teknik pemrograman yang populer dalam pengembangan aplikasi. Dengan paradigma OOP kita dapat dengan mudah memvisualisasikan kode karena OOP sendiri mirip dengan skenario kehidupan nyata. Dalam penerapan OOP kita menggabungkan kumpulan-kumpulan fungsi atau atribut yang memiliki kesamaan dalam sebuah unit yang kita sebut sebagai objek. Class merupakan sebuah blueprint yang dapat dikembangkan untuk membuat sebuah objek. Blueprint ini merupakan sebuah template yang di dalamnya menjelaskan seperti apa perilaku dari objek itu (berupa properti ataupun function).
Visualisasi di atas mencontohkan gambaran umum dari konsep OOP, di mana terdapat sebuah blueprint Kucing, atribut yang dimiliki Kucing, dan kemampuan yang dapat dilakukan oleh Kucing.
Property
Property (atau disebut juga dengan atribut) adalah data yang terdapat dalam sebuah class. Sebuah class tentu memiliki property dan mempresentasikan karakteristik dari class tersebut. Masing - masing class memiliki property yang berbeda. Contoh sebelumnya pada class Kucing, property yang dimiliki berupa color, height, length dan weight.
terdapat beberapa teknik yang dikelompokkan menjadi beberapa pilar yang bisa kita gunakan, di antaranya:
Inheritence
Encapsulation
Abstractcion
Polymorphism
Inheritence
Dalam object oriented programming, inheritance merupakan salah satu konsep penting. Kenapa? Karena kita bisa meminimalisir penulisan berulang pada fungsi, properti, dan variable. Ketika ingin membuat class dengan fungsi yang sudah tersedia pada class lain, kita tidak perlu lagi menulis ulang kode tersebut di dalam class yang kita buat. Cukup dengan mewarisi class tersebut maka kita bisa langsung mengaksesnya.
Saat menggunakan inheritance, kita dapat menggunakan kembali, menyesuaikan dan memelihara kode yang sudah dibuat, sehingga dapat memudahkan programmer.
Encapsulation
Encapsulation merupakan proses di mana sebuah penanganan data ditempatkan di dalam wadah tunggal yang disebut sebagai class. Saat menggunakan encapsulation, data dapat diisolasi dan tidak dapat diakses langsung dari luar.
Dari contoh kode di atas, apa alasan kita untuk menggunakan encapsulation? Karena kita akan lebih leluasa dalam melakukan perubahan nilai tanpa harus mengakses propertinya secara langsung, cukup gunakan fungsi setter yang tersedia.
Abstraction
Abstraction layer atau abstraction level merupakan mekanisme yang memisahkan 2 (dua) kompleksitas sebuah sistem. Dalam proses komputasi, abstraction layer atau level merupakan cara menyembunyikan detail implementasi yang kompleks dari serangkaian fungsionalitas tertentu dengan tujuan agar dapat memisahkan masalah seperti interoperabilitas. Contoh abstraction di dunia nyata bisa kita lihat ketika ingin mengendarai mobil. Kita hanya perlu menekan pedal gas jika ingin mobil berjalan tanpa harus tau apa yang telah terjadi ketika pedal gas tersebut ditekan. Ini berlaku juga ketika kita ingin melakukan pengereman.
Polymorphism
Polymorphism merupakan kemampuan objek, variabel, atau fungsi yang dapat memiliki berbagai bentuk. Secara umum polymorphism dalam OOP terjadi ketika suatu SuperClass direferensikan ke dalam SubClass. Alhasil kita dapat mengembangkan sebuah program secara umum, bukan spesifik. Polymorphism dapat digambarkan seperti seorang yang menguasai dan mampu berbicara dalam beberapa bahasa.