Программная инженерия | Связь и сплоченность
Введение . Целью этапа проектирования в жизненном цикле разработки программного обеспечения является решение проблемы, указанной в документе SRS (Спецификация требований к программному обеспечению). Результатом этапа проектирования является проектный документ программного обеспечения (SDD).
По сути, дизайн - это итеративный процесс, состоящий из двух частей. Первая часть - это концептуальный дизайн, который сообщает заказчику, что система будет делать. Во-вторых, это технический дизайн, который позволяет разработчикам систем понять фактическое оборудование и программное обеспечение, необходимое для решения проблемы заказчика.
Концептуальный дизайн системы:
- Написано простым языком, то есть языком, понятным потребителю.
- Подробное объяснение характеристик системы.
- Описывает функциональные возможности системы.
- Это не зависит от реализации.
- Связан с документом с требованиями.
Технический дизайн системы:
- Аппаратная составляющая и дизайн.
- Функциональность и иерархия программной составляющей.
- Архитектура программного обеспечения
- Сетевая архитектура
- Структура данных и поток данных.
- Компонент ввода / вывода системы.
- Показывает интерфейс.
Модуляризация: Модуляризация - это процесс разделения программной системы на несколько независимых модулей, каждый из которых работает независимо. Модуляризация дает множество преимуществ в разработке программного обеспечения. Некоторые из них приведены ниже:
- Легко понять систему.
- Обслуживание системы простое.
- Модуль может использоваться много раз в зависимости от их требований. Не нужно писать это снова и снова.
Связь: Связь - это мера степени взаимозависимости между модулями. Хорошее программное обеспечение будет иметь низкую связь.
Типы сцепления:
- Связь данных: если зависимость между модулями основана на том факте, что они обмениваются данными, передавая только данные, то модули называют связанными данными. При связывании данных компоненты независимы друг от друга и обмениваются данными. Обмен данными между модулями не содержит случайных данных. Пример-клиентская биллинговая система.
- Соединение штампов При соединении штампов полная структура данных передается от одного модуля к другому. Следовательно, он включает в себя данные случайного перемещения. Это может быть необходимо из-за факторов эффективности - этот выбор сделал проницательный дизайнер, а не ленивый программист.
- Связь управления: если модули обмениваются данными, передавая управляющую информацию, то говорят, что они связаны с управлением. Это может быть плохо, если параметры указывают на совершенно другое поведение, и хорошо, если параметры позволяют факторизовать и повторно использовать функциональность. Пример - функция сортировки, которая принимает функцию сравнения в качестве аргумента.
- Внешнее соединение: при внешнем соединении модули зависят от других модулей, внешних по отношению к разрабатываемому программному обеспечению или к конкретному типу оборудования. Ex- протокол, внешний файл, формат устройства и т. Д.
- Общая связь: модули имеют общие данные, такие как глобальные структуры данных. Изменения в глобальных данных означают обратную связь со всеми модулями, которые обращаются к этим данным, для оценки эффекта изменения. Таким образом, у него есть недостатки, такие как сложность повторного использования модулей, ограниченная возможность управления доступом к данным и меньшая ремонтопригодность.
- Связывание контента: при связывании контента один модуль может изменять данные другого модуля, или поток управления передается от одного модуля к другому. Это наихудшая форма сцепления, и ее следует избегать.
Сплоченность: Сплоченность - это мера степени, в которой элементы модуля функционально связаны. Это степень, в которой все элементы, направленные на выполнение одной задачи, содержатся в компоненте. По сути, сплоченность - это внутренний клей, скрепляющий модуль. Хороший дизайн программного обеспечения будет иметь высокую степень согласованности.
Типы сплоченности:
- Функциональная сплоченность: каждый существенный элемент для отдельного вычисления содержится в компоненте. Функциональное единство выполняет задачу и функции. Это идеальная ситуация.
- Последовательная сплоченность: элемент выводит некоторые данные, которые становятся входными для другого элемента, т. Е. Поток данных между частями. Это происходит естественным образом в языках функционального программирования.
- Коммуникационная сплоченность: два элемента работают с одними и теми же входными данными или вносят вклад в одни и те же выходные данные. Пример - обновить запись в базе данных и отправить ее на принтер.
- Процедурное единство: элементы процессуального единства обеспечивают порядок исполнения. Действия по-прежнему слабо связаны и вряд ли можно будет использовать повторно. Вычислите средний балл студента, распечатайте запись студента, вычислите совокупный средний балл, распечатайте совокупный средний балл.
- Временная сплоченность: элементы связаны по времени. Модуль, связанный с временной связью, все задачи должны выполняться в один и тот же промежуток времени. Эта связность содержит код для инициализации всех частей системы. Во время инициализации происходит множество различных действий.
- Логическая сплоченность: элементы связаны логически, а не функционально. Ex- компонент считывает входные данные с ленты, диска и сети. Весь код для этих функций находится в одном компоненте. Операции связаны, но функции существенно различаются.
- Совпадающая сплоченность: элементы не связаны (не связаны). Элементы не имеют концептуальных отношений, кроме местоположения в исходном коде. Это случайность и худшая форма сплоченности. Вывести следующую строку и поменять местами символы строки в одном компоненте.
Вниманию читателя! Не переставай учиться сейчас. Получите все важные концепции теории CS для собеседований SDE с курсом теории CS по доступной для студентов цене и будьте готовы к отрасли.