Программная инженерия | Связь и сплоченность

Опубликовано: 28 Января, 2022

Введение . Целью этапа проектирования в жизненном цикле разработки программного обеспечения является решение проблемы, указанной в документе SRS (Спецификация требований к программному обеспечению). Результатом этапа проектирования является проектный документ программного обеспечения (SDD).

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

Концептуальный дизайн системы:

  • Написано простым языком, то есть языком, понятным потребителю.
  • Подробное объяснение характеристик системы.
  • Описывает функциональные возможности системы.
  • Это не зависит от реализации.
  • Связан с документом с требованиями.

Технический дизайн системы:

  • Аппаратная составляющая и дизайн.
  • Функциональность и иерархия программной составляющей.
  • Архитектура программного обеспечения
  • Сетевая архитектура
  • Структура данных и поток данных.
  • Компонент ввода / вывода системы.
  • Показывает интерфейс.

Модуляризация: Модуляризация - это процесс разделения программной системы на несколько независимых модулей, каждый из которых работает независимо. Модуляризация дает множество преимуществ в разработке программного обеспечения. Некоторые из них приведены ниже:

  • Легко понять систему.
  • Обслуживание системы простое.
  • Модуль может использоваться много раз в зависимости от их требований. Не нужно писать это снова и снова.

Связь: Связь - это мера степени взаимозависимости между модулями. Хорошее программное обеспечение будет иметь низкую связь.

Типы сцепления:

  • Связь данных: если зависимость между модулями основана на том факте, что они обмениваются данными, передавая только данные, то модули называют связанными данными. При связывании данных компоненты независимы друг от друга и обмениваются данными. Обмен данными между модулями не содержит случайных данных. Пример-клиентская биллинговая система.
  • Соединение штампов При соединении штампов полная структура данных передается от одного модуля к другому. Следовательно, он включает в себя данные случайного перемещения. Это может быть необходимо из-за факторов эффективности - этот выбор сделал проницательный дизайнер, а не ленивый программист.
  • Связь управления: если модули обмениваются данными, передавая управляющую информацию, то говорят, что они связаны с управлением. Это может быть плохо, если параметры указывают на совершенно другое поведение, и хорошо, если параметры позволяют факторизовать и повторно использовать функциональность. Пример - функция сортировки, которая принимает функцию сравнения в качестве аргумента.
  • Внешнее соединение: при внешнем соединении модули зависят от других модулей, внешних по отношению к разрабатываемому программному обеспечению или к конкретному типу оборудования. Ex- протокол, внешний файл, формат устройства и т. Д.
  • Общая связь: модули имеют общие данные, такие как глобальные структуры данных. Изменения в глобальных данных означают обратную связь со всеми модулями, которые обращаются к этим данным, для оценки эффекта изменения. Таким образом, у него есть недостатки, такие как сложность повторного использования модулей, ограниченная возможность управления доступом к данным и меньшая ремонтопригодность.
  • Связывание контента: при связывании контента один модуль может изменять данные другого модуля, или поток управления передается от одного модуля к другому. Это наихудшая форма сцепления, и ее следует избегать.

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

Типы сплоченности:

  • Функциональная сплоченность: каждый существенный элемент для отдельного вычисления содержится в компоненте. Функциональное единство выполняет задачу и функции. Это идеальная ситуация.
  • Последовательная сплоченность: элемент выводит некоторые данные, которые становятся входными для другого элемента, т. Е. Поток данных между частями. Это происходит естественным образом в языках функционального программирования.
  • Коммуникационная сплоченность: два элемента работают с одними и теми же входными данными или вносят вклад в одни и те же выходные данные. Пример - обновить запись в базе данных и отправить ее на принтер.
  • Процедурное единство: элементы процессуального единства обеспечивают порядок исполнения. Действия по-прежнему слабо связаны и вряд ли можно будет использовать повторно. Вычислите средний балл студента, распечатайте запись студента, вычислите совокупный средний балл, распечатайте совокупный средний балл.
  • Временная сплоченность: элементы связаны по времени. Модуль, связанный с временной связью, все задачи должны выполняться в один и тот же промежуток времени. Эта связность содержит код для инициализации всех частей системы. Во время инициализации происходит множество различных действий.
  • Логическая сплоченность: элементы связаны логически, а не функционально. Ex- компонент считывает входные данные с ленты, диска и сети. Весь код для этих функций находится в одном компоненте. Операции связаны, но функции существенно различаются.
  • Совпадающая сплоченность: элементы не связаны (не связаны). Элементы не имеют концептуальных отношений, кроме местоположения в исходном коде. Это случайность и худшая форма сплоченности. Вывести следующую строку и поменять местами символы строки в одном компоненте.

Вниманию читателя! Не переставай учиться сейчас. Получите все важные концепции теории CS для собеседований SDE с курсом теории CS по доступной для студентов цене и будьте готовы к отрасли.