Что на самом деле является модулем в разработке программного обеспечения? [закрыто]

18

По словам Стивена Шаха, «Классическая и объектно-ориентированная программная инженерия», глава 6:

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

Это кажется очень расплывчатым и широким. Так может ли кто-нибудь объяснить это ясно и показать некоторые реальные примеры того, как разбить требование на модули? Благодарю.

Хоан
источник

Ответы:

16

Модуль,

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

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

Концепция модуля происходит из парадигмы модульного программирования, которая предполагает, что программное обеспечение должно состоять из отдельных взаимозаменяемых компонентов, называемых модулями, путем разбиения функций программы на модули, каждый из которых выполняет одну функцию и содержит все необходимое для достижения этой цели.

Тед
источник
если у нас есть куча требований, поэтому каждое требование может рассматриваться как модуль? Например: требование «Добавление сотрудника» может быть модулем?
Хоан
1
Нет или это зависит. Функции программы должны быть разбиты на связные единицы. Если требования могут быть разбиты таким образом, может быть да. Но я еще не видел ничего подобного. Также «Добавление сотрудника» не должно быть кандидатом в модуль. Обычно модули являются структурами более высокого уровня, которые разлагают программы на логически согласованные единицы.
Тед
12

Модуль может быть перегруженным термином, настолько, что Википедия описывает его под термином « Модульное программирование» при обсуждении его использования относительно программного обеспечения. Они обсуждают это с точки зрения структурированного программирования, основанного на подходе проектирования сверху вниз. Основные характеристики модульности, связанные с использованием низкого сцепления и высокой когезии .

Я использовал, что на языке, таком как C или даже C ++, модуль связан с определением отдельно скомпилированного модуля из исходного файла (.c или .cpp) и, как правило, одного связанного заголовочного файла (.h). Другие языки используют модуль в качестве описания, а язык Modula-2 помещает структурирование вокруг модулей спереди и по центру в его названии и подходе.

Исторически, модуль имеет некоторые другие последствия, которые были описаны в статье Д.Л. Парнаса «О критериях, которые должны использоваться при декомпозиции программного обеспечения на модули» . Он в первую очередь занимается обсуждением преимуществ замены функциональной декомпозиции на ориентированную на данные декомпозицию, что стало большим шагом к нашему современному состоянию, которое представляет собой объектно-ориентированная декомпозиция.

Объектно-ориентированные языки организованы вокруг классов, поэтому, возможно, термин модуль менее важен и менее точен в этом контексте.

DeveloperDon
источник
7

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

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

Рок Марти
источник