Nama: Pinka Ananda
NPM: 2115061089
Kelas: PSTI – D
Dosen Pengampu: Rio Ariestia Pradipta, S.Kom., M.T.I
KONSEP DESAIN PERANGKAT LUNAK
Desain Menurut E. S. Taylor adalah langkah pertama dalam fase pengembangan bagi setiap produk atau sistem yang direkayasa. Desain dapat didefinisikan sebagai proses aplikasi berbagai teknik dan pronsisp bagi tujuan pendefinisian suatu perangkat, suatu proses atau sistem dalam detail yang memadai untuk memungkinkan realisasi fisiknya.
Desain adalah penggambaran, perencanaan sketsa, perancanaan tentang sesuatu yang kan dibangun. Desain dilakukan agar kualitas dapat diukur dan dijamin jauh sebelum dilakukan implementasi fisik sehinga resiko dan dampak dari resiko yang ditimbulkan akan menjadi seminimal mungkin.
Desain Perangkat Lunak
Teknik desain Perangkat Lunak berbeda dengan teknik desain pada umumnya (desain bangunan, desain mikrokontroller, desain karya seni), karena Perangkat Lunak bersifat intangible. Namun, telah dikembangkan berbangai macam metode yang dapat digunakan spesifik untuk keperluan desain Perangkat Lunak.
Desain perangkat lunak berada pada inti teknik dari proses rekayasa perangkat lunak dan diaplikasikan tanpa memperhatikan model proses perangkat lunak yang digunakan. Begitu persyaratan perangkat lunak telah mulai dianalisis dan ditentukan, maka desain perangkat lunak menjadi yang pertama dari tiga aktivitas teknik desain, pembuatan kode danpengujian yang diperlukan untuk membangun dan menguji perangkat lunak. Persyaratan perangkat lunak, yang dimanifestasi oleh data , fungsional, dan model model perilaku,mengisilangkah desain. Dengan menggunakan satu dari sejumlah metode desain, langkah desain menghasilkan :
a. Desain data
Desain data merupakan suatu aktivitas pertama dan juga yang terpentig dari empat aktivitas desain yang dilakukan selama rekayasa perangkat lunak. Proses dalam pemilihan struktur didalam menentukan desain yang paling efisien dan juga yang sesuai kebutuhan.
Desain data mentransformasikan model domain suatu informasi yang dibuat selama analisis ke dalam struktur data yang akan diperlukan untuk dapat menngimplementasikan perangkat lunak .
b. Desain arsitektur
Pada desain arsitektur ini menentukan suatu hubungan diantara elemen-elemen struktur utama dan program.
c. Desain interface
pada desain interface menggambarkan bagaimana Perangkat Lunak berinteraksi dengan sistem yang berinteroperasi dengan desain interface tersebut serta pengguna yang menggunakannya.
d. Desain prosedur
mentransformasikan elemen-elemen struktural dari desai arsitektur progrma ke dalam sebuah deskripsi prosedural dari komponen-komponen Perangkat lunak.
Prinsip desain
Desain perangkat lunak berupa model dan proses. Proses desain adalah serangkaian langkah iteratif yang memungkinkan desainer menggambarkan semua aspek perangkat lunak yang dibangun. Model desain adalah ekivalen rencana arsitek untuk sebuah “rumah”, yang dimulai dengan menyajikan totalitas dari hal yang akan dibangun. Prinsip desain dasar memungkinkan perekayasa perangkat lunak untuk mengendalikan proses desain.
a. Proses desain tidak boleh menderita karena “tunnel vision”
b. Desain harus dapat ditelusuri sampai model analisis.
c. Desain tidak boleh berulang.
d. Desain harus “meminimalkan kesenjangan intelektual” di antara perangkat lunak dan masalah yang ada di dunia nyata.
e. Desain harus mengungkap keseragaman dan integrasi.
f. Desain harus terstruktur untuk mengakomodasi perubahan.
g. Desain harus terstruktur untuk berdegradasi dengan baik, bahkan pada saat data dan event-event menyimpang, atau menghadapi kondisi operasi.
h. Desain bukanlah pengkodean, dan pengkodean bukanlah desain.
i. Desain harus dinilai kualitasnya pada saat desain dibuat, bukan setelah jadi.
j. Desain harus dikaji untuk meminimalkan kesalahan-kesalahan konseptual (semantik).
Konsep Desain Perangkat Lunak
Sebuah Perangkat Lunak harus didesain dengan mengejar faktor :
- Firmness : Terhindar dari bugs dan error yang dapat mengganggu jalannya PL.
- Commodity : Sesuai dengan keperluan dan kebutuhan.
- Delight : Nyaman digunakan oleh pengguna PL.
4 Layer dalam desain Perangkat Lunak :
- Desain Data
Translasi ERD & Data Dictionary ke dalam konteks lingkungan implementasi.
- Desain Arsitektur
Rancang bangun dari PL, relasi dan posisi antar bagian utama dari PL dengan memanfaatkan “design patterns”.
- Desain Antarmuka
Rancang bangun dari PL, relasi dan posisi antar bagian utama dari PL dengan memanfaatkan “design patterns”.
- Desain Komponen
Desain detail masing-masing prosedur di dalam komponen.
MENGUKUR KUALITAS DESAIN PERANGKAT LUNAK
- Desain PL memiliki arsitektur yang :
- Dibuat berdasarkan template dan design patterns yang telah teruji.
- Berisi komponen yang memiliki karakteristik desain yang baik.
- Dapat diimplementasikan secara bertahap.
- Desain PL bersifat modular
- Desain PL berisi representasi yang jelas dari data, arsitektur, antarmuka, komponen
- Desain PL memiliki struktur data yang pantas untuk setiap kelas
- Desain PL memiliki komponen yang functionally independent
- Desain PL memiliki antarmuka yang simpel
- Desain PL dilakukan dengan metode yang jelas dan telah terbukti
- Desain PL menggunakan representasi yang dapat dimengerti bersama
TUJUAN AKHIR DESAIN PERANGKAT LUNAK
- Desain PL harus mengimplementasikan semua spesifikasi kebutuhan tertulis, dan juga memenuhi harapan tak tertulis dari pengguna.
- Desain PL harus terdokumentasi dan mudah dibaca serta dimengerti oleh yang berkepentingan.
- Desain PL harus dapat menggambarkan keseluruhan dari PL.
Konsep Utama Desain Perangkat Lunak
Separation of Concerns adalah pola pikit dasar yang harus dimiliki oleh semua Software Engineer dalam membangun Perangkat Lunak.
OO Design Concepts
- Abstraksi
Abstraksi memungkinkan desainer menentukan prosedur dan data, dan masih menekan detail tingkat rendah.
Terdapat 3 macam bentuk abstraksi, yaitu :
a. Abstraksi prosedural.
Merupakan urutan instruksi yang diberi nama yang mempunyai fungsi tertentu dan terbatas.
b. Abstraksi data.
Kumpulan data yang bernama yang menggambarkan obyek data.
c. Abstraksi kontrol.
Mengimplikasikan suatu mekanisme kontrol program tanpa menentukan detail-detail internal
- Modularitas
Modularitas merupakan atribut tunggal dari perangkat lunak yang memungkinkan sebuah program untuk dikelola secara intelektual.
Meyer menyebutkan 5 kriteria yang memungkinkan kita untuk mengevaluasi suatu metode desain dengan merujuk pada kemampuannya untuk menentukan sistem modular yang efektif.
a. Dekomposisi modular.
b. Komposabilitas modular.
c. Kemampuan pemahaman modular.
d. Kontinuitas modular.
e. Proteksi modular.
- Penyembunyian informasi
Prinsip penyembunyian informasi menyatakan bahwa bahwa modul ditandai dengan keputusan desain tersembunyi dari semua desain lain.
Design Classes
- Kelas yang ada pada tahap desain dapat dibedakan menjadi :
- Kelas Analisis : Yaitu kelas hasil turunan dari tahap analisis, dengan melakukan modifikasi dan adaptasi terhadap lingkungan implementasi. Misal : kelas Mahasiswa, pada tahap desain ditambahkan fungsi getSummary() untuk mendapatkan rangkuman keterangan identitas yang akan ditampilkan pada dashboard.
- Kelas Boundary : Yaitu kelas yang terlibat dalam pembangunan antarmuka PL. Misal : kelas-kelas form, dsb.
- Kelas Controller : Yaitu kelas yang dibuat untuk mengatur jalannya PL. Misal : kelas Main, kelas SessionController, dsb
Arsitektur perangkat lunak
Arsitektur perangkat lunak mencakup “struktur keseluruhan perangkat lunak dan cara dimana struktur memberikan integrasi konseptual bagi suatu sistem”.
Shaw dan Garlan menjelaskan sekumpulan properti yang seharusnya ditetapkan sebagai bagian dari desain arsitektural :
a. Properti struktural.
Menentukan komponen suatu sistem dan cara dimana komponen-komponen tersebut dikemas dan berinteraksi satu dengan yang lain.
b. Properti ekstra-fungsional.
Menekankan pada bagaimana arsitektur desain memenuhi persyaratan kinerja, kapasitas, reliabilitas, keamanan, adaptibilitas, dan karakteristik sistem yang lain.
c. Keluarga dari sistem yang berhubungan.
Desain harus memiliki kemampuan untuk memakai lagi blok bangunan arsitektural tersebut.
Model yang dapat digunakan dalam representasi Arsitektur PL :
- Structural Models : Komponen-komponen apa saja yang ada pada PL.
- Framework Models : Kerangka & patterns apa yang digunakan.
- Dynamic Models : Bagaimana PL bereaksi pada setiap use case.
- Process Models : Proses teknis dari berjalannya PL.
- Functional Models : Hirarki secara fungsional dari komponen PL.
Aspects
Sebuah aspect adalah fitur yang beririsan dengan fitur-fitur lainnya pada saat desain PL.
Refinement
Refinement membantu designer untuk memperlihatkan detil dari lowest level dari abstraction. Abstraction dan refinement merupakan konsep yang saling melengkapi.
Refactoring
Desain dilakukan secara iterative, berulang-ulang. Pada setiap iterasi, dilakukan refactoring yaitu optimasi dengan menghilangkan / memperbaiki :
- Redundansi
- Elemen desain tak terpakai
- Algoritma yang tidak efisien / tidak perlu
- Struktur Data yang badly designed
- Faktor lain yang dapat diperbaiki.
Prinsip terpenting dalam refactoring : perubahan yang dilakukan tidak boleh mempengaruhi berjalannya system secara keseluruhan.
Sumber Referensi
https://rplhlw117a04.wordpress.com/2015/11/16/konsep-desain/
https://ilmurplkitabersama.blogspot.com/2020/05/desain-perangkat-lunak.html