Apa sebenarnya modul dalam rekayasa perangkat lunak? [Tutup]

18

Menurut Stephen Schach, "Rekayasa Perangkat Lunak Klasik dan Berorientasi Objek", bab 6:

modul terdiri dari satu blok kode yang dapat dipanggil dengan cara prosedur, fungsi, atau metode dipanggil

Ini sepertinya sangat kabur dan luas. Jadi, adakah yang bisa menjelaskannya dengan jelas dan menunjukkan beberapa contoh aktual tentang bagaimana memecah persyaratan menjadi modul? Terima kasih.

Hoan
sumber

Jawaban:

16

Modul,

  • merangkum kode dan data untuk mengimplementasikan fungsi tertentu.
  • memiliki antarmuka yang memungkinkan klien untuk mengakses fungsinya secara seragam.
  • mudah dicolokkan dengan modul lain yang mengharapkan antarmuka.
  • biasanya dikemas dalam satu unit sehingga dapat dengan mudah digunakan.

Misalnya, dapper.net merangkum akses basis data. Ini memiliki API untuk mengakses fungsinya. Ini adalah file tunggal yang dapat dicolokkan ke pohon sumber yang akan dibangun.

Konsep modul berasal dari paradigma pemrograman modular yang menganjurkan bahwa perangkat lunak harus terdiri dari komponen-komponen terpisah yang dapat dipertukarkan yang disebut modul dengan memecah fungsi-fungsi program menjadi modul-modul, yang masing-masing mencapai satu fungsi dan berisi semua yang diperlukan untuk mencapai hal ini.

theD
sumber
jika kita memiliki banyak persyaratan sehingga setiap persyaratan dapat dianggap sebagai modul? Misalnya: persyaratan "Menambahkan karyawan" dapat menjadi modul?
Hoan
1
Tidak atau tergantung. Fungsi program harus dipecah menjadi unit yang kohesif. Jika persyaratan bisa dirinci sedemikian rupa, mungkin ya. Tapi saya belum melihat yang seperti ini. Juga, "Menambahkan Karyawan" tidak harus menjadi kandidat untuk modul. Biasanya modul adalah struktur tingkat yang lebih tinggi yang menguraikan program menjadi unit yang logis secara koheren.
theD
12

Modul mungkin istilah yang kelebihan beban, sehingga Wikipedia menggambarkannya dengan istilah Modular Programming ketika membahas penggunaannya relatif terhadap perangkat lunak. Mereka membahasnya dalam hal pemrograman terstruktur yang didasarkan pada pendekatan desain top-down. Karakteristik kunci dari modularitas terkait dengan penggunaan kopling rendah dan kohesi tinggi .

Penggunaan saya adalah bahwa dalam bahasa seperti C atau bahkan C ++, modul terkait dengan mendefinisikan unit yang dikompilasi secara terpisah dari file sumber (.c atau .cpp) dan biasanya satu file header terkait (.h). Bahasa lain menggunakan modul sebagai deskripsi, dan bahasa Modula-2 menempatkan penataan di sekitar modul bagian depan dan tengah dalam nama dan pendekatannya.

Secara historis, modul memiliki beberapa implikasi lain seperti yang dijelaskan dalam makalah DL Parnas "Pada Kriteria yang akan Digunakan dalam Penguraian Perangkat Lunak menjadi Modul" . Dia terutama prihatin dengan membahas manfaat menggantikan dekomposisi fungsional dengan dekomposisi berorientasi data yang merupakan langkah besar menuju keadaan kita saat ini yang dekomposisi berorientasi objek.

Bahasa berorientasi objek diatur di sekitar kelas, jadi mungkin istilah modul kurang penting dan kurang tepat dalam konteks itu.

Pengembang Don
sumber
7

Tidak ada definisi formal dari modul, dan apa modul itu (atau tidak) dalam konteks proyek Anda sangat tergantung pada sifat dan desain proyek.

Secara umum, modul adalah bagian mandiri dari kode yang menyediakan fungsionalitas spesifik dan erat, modul menentukan dan menegakkan batasan logis dalam kode Anda.

Roc Martí
sumber