Rekayasa Perangkat Lunak: Software Design

Rekayasa Perangkat Lunak: Software Design

 


Pendahuluan

Dalam manifesto desain perangkat lunak yang dicontohkan oleh Dr. Dobbs Journal, desain diartikan sebagai kondisi di mana Anda berada di persimpangan dua dunia - dunia teknologi dan dunia manusia serta tujuan manusia - dan berusaha untuk menggabungkan keduanya. Ini menggambarkan pentingnya menghubungkan aspek teknis dan aspek manusiawi dalam pengembangan perangkat lunak.

Desain perangkat lunak memiliki posisi yang sangat krusial dalam inti teknis rekayasa perangkat lunak dan diterapkan tanpa memandang model proses perangkat lunak yang digunakan. Ini berarti bahwa prinsip-prinsip desain perangkat lunak harus diterapkan dalam setiap tahap pengembangan perangkat lunak, apa pun model proses yang sedang digunakan.

Desain perangkat lunak juga merupakan tindakan terakhir dalam kegiatan pemodelan perangkat lunak dan menetapkan panggung untuk tahap konstruksi (penyusunan kode dan pengujian). Ini berarti bahwa sebelum kita mulai membuat kode dan menguji perangkat lunak, kita harus memiliki desain yang kuat sebagai panduan untuk proses selanjutnya.

Pertanyaan:

  1. Apa yang dimaksud dengan "manifesto desain perangkat lunak" yang diacu oleh Dr. Dobbs Journal? Jawaban: Manifesto desain perangkat lunak yang diacu oleh Dr. Dobbs Journal menggambarkan pentingnya menggabungkan dunia teknologi dengan dunia manusia dan tujuan manusia dalam pengembangan perangkat lunak.

  2. Mengapa desain perangkat lunak dianggap sebagai tindakan terakhir dalam pemodelan perangkat lunak? Jawaban: Desain perangkat lunak dianggap sebagai tindakan terakhir dalam pemodelan perangkat lunak karena itu menetapkan landasan dan panduan untuk tahap selanjutnya dalam pengembangan perangkat lunak, yaitu konstruksi, yang melibatkan penyusunan kode dan pengujian. Sebelum kita dapat mulai mengembangkan perangkat lunak, kita perlu memiliki desain yang kuat sebagai dasar untuk langkah-langkah selanjutnya.

     

Proses Desain

Proses desain perangkat lunak adalah suatu proses yang iteratif di mana kebutuhan diterjemahkan menjadi "blueprint" untuk membangun perangkat lunak. Desain ini diwakili pada tingkat abstraksi yang tinggi - tingkat yang dapat langsung dilacak ke tujuan sistem tertentu dan kebutuhan data, fungsional, dan perilaku yang lebih rinci.

Desain merupakan satu-satunya cara yang dapat Anda gunakan untuk menerjemahkan kebutuhan pemangku kepentingan ke dalam produk atau sistem perangkat lunak yang selesai. Pentingnya desain perangkat lunak dapat dijelaskan dengan satu kata saja - kualitas. Desain memberikan Anda representasi perangkat lunak yang dapat dinilai dari segi kualitasnya.

Proses desain memberikan Anda representasi perangkat lunak yang dapat dinilai dari segi kualitasnya. Dalam proses ini, desain tidak hanya menjadi langkah terakhir sebelum mengimplementasikan perangkat lunak, tetapi juga sebagai tahap kritis dalam memastikan bahwa perangkat lunak yang dihasilkan memenuhi standar kualitas yang ditentukan. Dengan melakukan desain yang baik, Anda dapat menghindari masalah yang mungkin muncul selama pengembangan perangkat lunak, seperti bug atau kinerja yang buruk.

Dalam konteks ini, penting untuk mengingat bahwa desain tidak hanya tentang tampilan antarmuka pengguna, tetapi juga tentang bagaimana seluruh sistem bekerja bersama-sama. Ini mencakup pemodelan data, perancangan fungsionalitas perangkat lunak, dan perilaku sistem secara keseluruhan.

Salah satu hal utama yang harus diingat adalah bahwa desain memungkinkan Anda untuk menciptakan pandangan tingkat tinggi tentang bagaimana perangkat lunak akan bekerja dan bagaimana itu akan memenuhi kebutuhan pemangku kepentingan. Ini adalah alat yang kuat untuk berkomunikasi dengan tim pengembangan dan pemangku kepentingan lainnya.

Jadi, proses desain adalah langkah yang tak terpisahkan dalam pengembangan perangkat lunak yang berkualitas tinggi, dan itu adalah kunci untuk menerjemahkan visi menjadi kenyataan.


Pedoman dan Atribut Kualitas Perangkat Lunak

  1. Desain harus mengimplementasikan semua persyaratan eksplisit yang terdapat dalam model persyaratan, dan harus mampu menampung semua persyaratan tersirat yang diinginkan oleh pemangku kepentingan.

    • Ini berarti bahwa desain perangkat lunak harus mampu memenuhi semua persyaratan yang secara tegas ditentukan dalam model persyaratan, sekaligus mampu mengakomodasi kebutuhan yang tidak terungkap namun diinginkan oleh pihak-pihak terkait.
  2. Desain harus menjadi panduan yang mudah dibaca dan dimengerti bagi para pengembang dan pengujian.

    • Hal ini berarti bahwa desain perangkat lunak harus disusun dengan cara yang memudahkan para pengembang dan pengujian untuk memahami langkah-langkah yang harus diambil dan bagaimana perangkat lunak bekerja.
  3. Desain harus memberikan gambaran lengkap tentang perangkat lunak, mengatasi domain data, fungsional, dan perilaku dari sudut pandang implementasi.

    • Ini berarti bahwa desain perangkat lunak harus mencakup semua aspek perangkat lunak, termasuk bagaimana data diolah, apa fungsi yang dilakukan oleh perangkat lunak, dan bagaimana perilaku perangkat lunak tersebut.

Pertanyaan yang Mungkin Muncul:

  1. Mengapa penting untuk memenuhi persyaratan tersirat?

    • Persyaratan tersirat adalah kebutuhan yang mungkin tidak diungkapkan secara eksplisit dalam dokumen persyaratan, tetapi masih penting bagi pemangku kepentingan. Memenuhi persyaratan ini dapat meningkatkan kepuasan pemangku kepentingan dan menghindari masalah di masa depan.
  2. Mengapa penting bagi desain perangkat lunak untuk mudah dimengerti?

    • Desain yang mudah dimengerti akan membantu pengembang dan pengujian untuk bekerja lebih efisien. Ini juga meminimalkan risiko kesalahan selama proses pengembangan perangkat lunak.
  3. Mengapa perangkat lunak harus mencakup domain data, fungsional, dan perilaku?

    • Ini penting karena perangkat lunak harus mampu mengelola data dengan benar, menjalankan fungsi yang diharapkan, dan menunjukkan perilaku yang diinginkan. Memahami aspek-aspek ini dalam desain akan membantu memastikan kualitas perangkat lunak yang lebih baik.
Quality Attributes

Hewlett-Packard mengembangkan sejumlah atribut kualitas perangkat lunak yang telah diberi akronim FURPS—fungsionalitas, kegunaan, kehandalan, kinerja, dan dukungan (rincian akan dibahas dalam topik "Kualitas Perangkat Lunak"). Tidak setiap atribut kualitas perangkat lunak diberi bobot secara sama ketika desain perangkat lunak dikembangkan. Satu aplikasi mungkin menekankan fungsionalitas dengan penekanan khusus pada keamanan. Aplikasi lain mungkin menuntut kinerja dengan penekanan khusus pada kecepatan pemrosesan. Sebuah aplikasi ketiga mungkin fokus pada kehandalan. Terlepas dari pembobotan, penting untuk dicatat bahwa atribut-atribut kualitas ini harus dipertimbangkan sejak desain dimulai, bukan setelah desain selesai dan konstruksi telah dimulai.

Pentingnya Kualitas Desain

Untuk mengukur kualitas sebuah representasi desain, Anda dan anggota tim pengembang perangkat lunak harus menetapkan kriteria teknis yang akan menentukan apakah desain tersebut memenuhi standar kualitas yang baik.

Desain yang baik harus memperlihatkan arsitektur yang telah dibuat menggunakan gaya atau pola arsitektur yang dapat dikenali. Selain itu, desain ini harus terdiri dari komponen-komponen yang memiliki karakteristik desain yang baik, yang akan dibahas lebih lanjut dalam bab ini. Hal ini penting karena komponen-komponen ini akan memengaruhi implementasi dan pengujian selanjutnya.

Penting juga untuk memastikan bahwa desain bersifat modular, yang berarti perangkat lunak harus dibagi secara logis menjadi elemen-elemen atau subsistem. Dengan cara ini, kita dapat mengelola kompleksitas dan mempermudah pengembangan dan pemeliharaan selanjutnya.

Selain itu, dalam desain sebaiknya terdapat representasi yang jelas mengenai data, arsitektur, antarmuka, dan komponen. Ini akan membantu tim pengembang untuk memahami dan berkomunikasi secara efektif mengenai desain tersebut.

Desain yang baik juga harus menghasilkan struktur data yang sesuai dengan kelas-kelas yang akan diimplementasikan, dan struktur tersebut sebaiknya didasarkan pada pola data yang dapat dikenali.

Selanjutnya, desain harus menghasilkan komponen-komponen yang memiliki karakteristik fungsional yang independen. Ini akan memungkinkan untuk menguji dan mengembangkan komponen-komponen tersebut secara terpisah.

Antarmuka dalam desain juga sangat penting. Desain yang baik seharusnya menghasilkan antarmuka yang mengurangi kompleksitas hubungan antara komponen-komponen dan lingkungan eksternal.

Selain itu, proses pengembangan desain harus didasarkan pada metode yang dapat diulang, yang dipandu oleh informasi yang diperoleh selama analisis kebutuhan perangkat lunak. Ini akan memastikan konsistensi dan keandalan dalam proses desain.

Terakhir, penting untuk merepresentasikan desain menggunakan notasi yang efektif dalam mengkomunikasikan maknanya. Dengan cara ini, seluruh tim dapat memahami dan berkolaborasi dengan lebih baik dalam proses pengembangan.

Demikianlah pentingnya kualitas desain dalam pengembangan perangkat lunak. Dengan mengikuti kriteria-kriteria ini, Anda dapat memastikan bahwa desain Anda memenuhi standar kualitas yang tinggi.

 
Strategi Desain

Desain Fungsional 

  • Sistem dirancang dari sudut pandang fungsional. 
  • Status sistem terpusat dan dibagikan antara fungsi-fungsi yang beroperasi pada status tersebut.

Desain Berbasis Objek 

  • Sistem dipandang sebagai kumpulan objek yang berinteraksi. 
  • Status sistem terdesentralisasi, dan setiap objek mengelola statusnya sendiri. Objek dapat menjadi contoh dari kelas objek dan berkomunikasi dengan pertukaran pesan.

Desain Campuran 

  • Meskipun terkadang disarankan bahwa satu pendekatan desain lebih unggul, dalam praktiknya, pendekatan desain berbasis objek dan pendekatan desain berbasis fungsional bersifat komplementer.
  •  Insinyur perangkat lunak yang baik harus memilih pendekatan yang paling sesuai untuk subsistem apa pun yang sedang dirancang.

Tahapan Desain

  1. Desain Arsitektur: Dalam tahap ini, langkah pertama dalam proses desain adalah mengidentifikasi sub-sistem yang diperlukan untuk mengembangkan sistem yang kompleks. Arsitektur sistem ini akan menentukan bagaimana berbagai sub-sistem akan berinteraksi dan saling bergantung satu sama lain.

  2. Spesifikasi Abstrak: Setelah arsitektur sistem telah diidentifikasi, tahap selanjutnya adalah menentukan spesifikasi abstrak dari masing-masing sub-sistem. Spesifikasi ini akan menjelaskan secara rinci apa yang diharapkan dari setiap sub-sistem dan apa tujuan utamanya.

  3. Desain Antarmuka: Setelah spesifikasi abstrak telah ditentukan, langkah selanjutnya adalah mendefinisikan antarmuka antara sub-sistem. Ini mencakup penentuan cara sub-sistem akan berkomunikasi satu sama lain, termasuk format pesan atau data yang akan digunakan.

  4. Desain Komponen: Tahapan ini melibatkan penguraian sub-sistem menjadi komponen-komponen yang lebih kecil. Komponen-komponen ini akan melakukan fungsi-fungsi tertentu dan biasanya dapat digunakan kembali dalam pengembangan berbagai sistem yang berbeda.

  5. Desain Struktur: Data Desain struktur data melibatkan pemilihan dan perancangan struktur data yang akan digunakan untuk menyimpan dan mengelola data yang terkait dengan masalah yang sedang diselesaikan. Ini mencakup pemilihan jenis data yang sesuai dan cara data akan disimpan dan diakses.

  6. Desain Algoritma: Tahapan terakhir adalah merancang algoritma-algoritma yang diperlukan untuk menjalankan fungsi-fungsi khusus dalam sistem. Algoritma-algoritma ini akan menentukan bagaimana data akan diproses dan bagaimana sistem akan merespons terhadap berbagai situasi.

Post a Comment

Lebih baru Lebih lama