Эффективный модульный дизайн в программной инженерии
Роль эффективного модульного дизайна в программной инженерии:
Любое программное обеспечение состоит из множества систем, которые содержат несколько подсистем, и эти подсистемы дополнительно содержат свои подсистемы. Таким образом, проектирование полной системы за один раз, включающей все без исключения требуемые функции, - это напряженная работа, и этот процесс может иметь много ошибок из-за его огромного размера.
Таким образом, чтобы решить эту проблему, команда разработчиков разбивает все программное обеспечение на различные модули. Модуль определяется как уникальные и адресуемые компоненты программного обеспечения, которые могут быть решены и изменены независимо, не нарушая (или влияя в очень небольшом количестве) другие модули программного обеспечения. Таким образом, каждый проект программного обеспечения должен следовать модульности.
Процесс разделения программного обеспечения на несколько независимых модулей, где каждый модуль разрабатывается отдельно, называется модуляризацией .
Эффективная модульная конструкция может быть достигнута, если разделенные модули могут быть отдельно решаемы, модифицируемы, а также компилируемы. Здесь отдельные компилируемые модули означают, что после внесения изменений в модуль нет необходимости перекомпилировать всю программную систему.
Чтобы создать программное обеспечение с эффективным модульным дизайном, необходимо учитывать фактор «функциональной независимости» . Смысл функциональной независимости заключается в том, что функция является атомарной по своей природе, поэтому она выполняет только одну задачу программного обеспечения без взаимодействия с другими модулями или с минимальным взаимодействием с ними. Функциональная независимость рассматривается как признак роста модульности, т. Е. Наличие большей функциональной независимости приводит к хорошей разработке программной системы, а дизайн еще больше влияет на качество программного обеспечения.
Преимущества независимых модулей / функций при разработке программного обеспечения:
Поскольку функциональность программного обеспечения разбита на атомарные уровни, разработчики получают четкие требования к каждой функции и, следовательно, проектирование программного обеспечения становится простым и безошибочным.
Поскольку модули независимы, они практически не зависят от других модулей. Таким образом, при таком подходе возможно внесение изменений в модуль, не затрагивая всю систему.
Распространением ошибок от одного модуля к другому и далее по всей системе можно пренебречь, что экономит время при тестировании и отладке.
Независимость модулей программной системы можно измерить с помощью 2 критериев: сплоченности и сцепления. Это объясняется следующим образом.
Сплоченность:
Сплоченность - это мера силы взаимосвязи между различными функциями в модуле. Он бывает 7 типов, которые перечислены ниже в порядке от высокой к низкой связности:
1. Функциональная сплоченность 2. Последовательная сплоченность 3. Коммуникационная сплоченность 4. Процедурное единство 5. Временная сплоченность 6. Логическая сплоченность 7. Сопутствующая сплоченность
Связь:
Связь - это мера силы взаимосвязи между различными модулями в программном обеспечении. Он бывает 6 типов, которые перечислены ниже в порядке сцепления от низкой к высокой:
1. Связь данных 2. Штамповое соединение 3. Муфта управления 4. Внешнее соединение 5. Общая связь 6. Content Coupling
A good software design requires high cohesion and low coupling.