Що насправді є модулем в інженерії програмного забезпечення? [зачинено]


18

За словами Стівена Шаха, "Класична та об'єктно-орієнтована інженерія програмного забезпечення", глава 6:

модуль складається з єдиного блоку коду, до якого можна викликати процедуру, функцію чи метод

Це здається дуже розпливчастим і широким. Тож хтось міг би це пояснити чітко і показати деякі фактичні приклади, як розбити вимогу на модулі? Спасибі.

Відповіді:


16

Модуль,

  • інкапсулює код і дані для реалізації певної функціональності.
  • має інтерфейс, який дозволяє клієнтам отримувати доступ до його функціоналу рівномірно.
  • легко підключається до іншого модуля, який очікує його інтерфейсу.
  • зазвичай упаковується в одне ціле, щоб його можна було легко розгорнути.

Наприклад, dapper.net інкапсулює доступ до бази даних. У нього є API для доступу до його функціональності. Це єдиний файл, який можна підключити до початкового дерева, яке потрібно побудувати.

Поняття модуля походить від модульної парадигми програмування, яка припускає, що програмне забезпечення повинно складатися з окремих, взаємозамінних компонентів, званих модулями, шляхом розбиття програмних функцій на модулі, кожен з яких виконує одну функцію і містить усе необхідне для цього.


якщо у нас є маса вимог, тож кожну вимогу можна розглядати як модуль? Наприклад: вимога "Додавання співробітника" може бути модулем?
Хоан

1
Ні, або це залежить. Функції програми повинні бути розбиті на згуртовані одиниці. Якщо вимоги можна розбити таким чином, може бути так. Але я ще нічого такого не бачив. Також "Додавання працівника" не має бути кандидатом на модуль. Зазвичай модулі - це структури вищого рівня, які розкладають програми на логічно когерентні одиниці.
theD

12

Модуль може бути перевантаженим терміном, настільки, що Вікіпедія описує його під терміном Модульне програмування, коли обговорюється його використання відносно програмного забезпечення. Вони обговорюють це з точки зору структурованого програмування, яке базувалося на дизайнерському підході зверху вниз. Основні характеристики модульності, пов'язані з використанням низької муфти та високої згуртованості .

Моє використання полягає в тому, що на мові, як C або навіть C ++, модуль пов'язаний з визначенням окремо складеного блоку з вихідного файлу (.c або .cpp) і, як правило, одного пов'язаного файлу заголовка (.h). Інші мови використовують модуль як опис, а мова Modula-2 встановлює структурування навколо модулів спереду та центру у своєму назві та підході.

Історично склалося, що модуль має деякі інші наслідки, які були описані в DL Парнас паперу «Про критерії, які використовуються в розкладаються програмного забезпечення в модулях» . Він в першу чергу займається обговоренням переваг заміни функціональної декомпозиції розкладом, орієнтованим на дані, що було великим кроком до нашого сучасного стану, що є об'єктно-орієнтованим розкладанням.

Об'єктно-орієнтовані мови організовані навколо занять, тому, можливо, термін модуль є менш важливим і менш точним у цьому контексті.


7

Не існує формального визначення модуля, і те, що модуль є (чи ні) в контексті вашого проекту, багато в чому залежить від характеру та дизайну проекту.

Взагалі кажучи, модуль - це окремий фрагмент коду, який забезпечує специфічну та щільно пов'язану функціональність, модулі визначають та застосовують логічні межі у вашому коді.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.