- •Основные понятия и определения
- •Модели жизненного цикла разработки программных средств и систем
- •Стратегии разработки программных средств и систем
- •Каскадная модель жизненного цикла разработки программных средств и систем
- •Преимущества каскадной модели жизненного цикла
- •Недостатки каскадной модели жизненного цикла
- •Область применения каскадной модели
- •V-образная модель жизненного цикла разработки программных средств и систем
- •Преимущества V-образной модели жизненного цикла
- •НедостаткиV-образной модели жизненного цикла
- •Область применения V-образной модели
- •Структурная эволюционная модель быстрого прототипирования жизненного цикла разработки программных средств и систем
- •Преимущества структурной эволюционной модели быстрого прототипирования
- •Недостатки структурной эволюционной модели быстрого прототипирования
- •Область применения структурной эволюционной модели быстрого прототипирования
- •Модель быстрой разработки приложений rad
- •Преимущества модели быстрой разработки
- •Недостатки модели быстрой разработки
- •Область применения модели быстрой разработки rad
- •Инкрементная модель жизненного цикла разработки программных средств и систем
- •Преимущества инкрементной модели жизненного цикла
- •Недостатки инкрементной модели жизненного цикла
- •Область применения инкрементной модели
- •Спиральная модель жизненного цикла разработки программных средств и систем
- •Преимущества спиральной модели жизненного цикла
- •Недостатки спиральной модели жизненного цикла
- •Область применения спиральной модели
- •Упрощенные варианты спиральной модели
- •Классификация проектов по созданию и развитию программных средств и систем
- •Классические технологии проектирования программ
- •Модульное проектирование программ
- •Метод нисходящего проектирования
- •Пошаговое уточнение
- •Кодирование программы с помощью псевдокода и управляющих конструкций структурного программирования
- •Использование комментариев для описания обработки данных
- •Анализ сообщений
- •Связность модуля
- •Сцепление модулей
- •Метод восходящего проектирования
- •Методы расширения ядра
- •Метод иерархического проектирования модулей (метод Джексона)
- •Основные конструкции построения структур данных
- •Построение структур данных
- •Создание структур программ
- •Этапы конструирования программы
- •Case-технологии проектирования программного обеспечения
- •Общие сведения о case-технологиях
- •Информационное моделирование
- •Сущности
- •Атрибуты
- •Способы представления сущностей с атрибутами
- •5. Студент (с)
- •Классификация атрибутов
- •Правила атрибутов
- •Безусловные связи
- •Условные формы связи
- •Формализация связи
- •Подтипы и супертипы
- •Рабочие продукты информационного моделирования
- •Методология структурного анализа и проектирования sadt
- •Введение
- •Общие сведения о методологии структурного анализа и проектирования sadt
- •Достоинства методологии sadt
- •Основные понятия idef0-модели
- •Синтаксис диаграмм
- •Синтаксис моделей
- •Декомпозиция и её стратегии при idef0-моделировании
- •Процесс моделирования в idef0
- •Инструментальные средства проектирования программного обеспечения
- •ЭволюцияCase-средств
- •Case–модель жизненного цикла.
- •Сравнительная оценка трудозатрат по этапам жизненного цикла.
- •Концептуальные основыCase–средств
- •Состав и функциональные особенностиCase–средств
- •КлассификацияCase–средств
Связность модуля
Связность модуля определяется как мера независимости его частей, то есть чем выше связность, тем более отдельные части модуля зависят друг от друга и тем лучше результат проектирования.
Для оценки связности используется понятие силы связности модуля.
Таблица 3.2– Типы и силы связности модулей
-
№ п.п.
Связность
Сила связности
1
Функциональная
10 (сильная)
2
Последовательная
9
3
Коммуникативная
7
4
Процедурная
5
5
Временная
3
6
Логическая
1
7
Связность по совпадению
0 (слабая)
Модуль с функциональной связностью не может быть разбит на 2 других модуля, имеющих связность того же типа. Он выполняет единственную функцию и реализуется последовательностью операций в виде единичного цикла. Пример: модуль который может быть разбит только на исток, преобразователь и сток.
Модуль, имеющий последовательную связность, может быть разбит на последовательные части, выполняющие независимые функции, но совместно реализует единственную функцию. Модуль с последовательной связностью реализуется как последовательность циклов или операций.
Модуль, имеющий коммуникативную связь, может быть разбит на независимые модули, разделяющие общую структуру данных. В основе данного модуля лежит общая структура данных. Пример: модуль который изолирует структуру данных.
Модули высшего уровня иерархической структуры программы должны иметь функциональную или последовательную связь. Для модуля обслуживания предпочтительнее коммуникативная связь.
Процедурная связность характерна для модуля, управляющие конструкции которого организованы так, как изображены на схеме программы. Такая структура модуля может возникнуть при расчленении длинной программы на части в соответствии с передачами управления, но без определения функций при выборе разделительных точек.
Модуль, содержащий функционально несвязные части, но необходимые в один и то же момент обработки имеет временную связность или связность по классу.
Если в модуле объединены операторы только по принципу их функционального подобия, а для настройки модуля применяется алгоритм переключения, то модуль имеет логическую связность.
Модуль имеет связность по совпадению, если его операторы объединяются произвольным образом.
Вывод: Три наиболее слабых типа связи возникают при непрерывном планировании или связки модулей после из реализации. Следует добиваться функциональной связности модуля.
Сцепление модулей
Это мера относительной независимости модулей, которая определяет их читабельность и сохранность. Слабое сцепление определяет высокий уровень независимости модулей.
Модули являются полностью независимыми, если каждый из них не содержит о другом никакой информации и не вызывают друг друга . Чем больше информации в них используется, тем менее они независимы и тем более сцеплены. Чем очевиднее взаимодействие двух связных друг с другом модулей, тем проще определить необходимость корректировки одного модуля, зависящего от другого модуля.
Таблица 3.3– Типы и степени сцепления модулей
-
№ п.п.
Сцепление
Степень сцепления
1
Независимые
0
2
Сцепление по данным
1
3
По образу
3
4
По общей области
4
5
По управлению
5
6
По внешним ссылкам
7
7
По кодам
9(сильное сцепление)
Независимое сцепление возможно только в том случае, если модули не вызывают друг друга и не обрабатывают одну и ту же информацию.
Модули сцеплены по данным, если они имеют общие простые элементы данных, которые передаются от одного модуля к другому, как параметры. Вызывающий модуль знает только имя вызываемого модуля, а также типы и значения переменных, передаваемых как параметры. в этом случае изменение в структуре данных не влияет на другой модуль. Модули со сцеплением по данным не имеет общей области данных или неявных параметров.
Модули сцеплены по образцу, если в качестве параметров используются структуры данных. Недостаток такого сцепления в том, что оба модуля должны знать о внутренней структуре данных, и если модифицируется структура в одном модуле, то необходимо модифицировать и в другом, значит, увеличивается вероятность появления ошибок при сопровождении программы.
Модули сцеплены по общей области, если они разделяют одну и ту же глобальную структуру данных. В этом случае возможность появления ошибок при модификации намного больше.
Модули сцеплены по управлению, если какой-то из них управляет решениями внутри другого с помощью передачи флагов, переключателей, то есть один из модулей знает о внутренней структуре другого. Например, модуль имеет логическую связь и при его вызове используется переключатель, то оба модуля сцеплены по умолчанию.
Модули сцеплены по внешним ссылкам, если у одного модуля есть доступ к данным другого модуля через внешнюю точку входа. Сцепление этого типа возникает, когда внутренние структуры оперируют с глобальными переменными, с которыми оперирует второй модуль.
Модули сцеплены по кодам, если коды их команд перемешаны друг с другом. Например, для одного из модулей доступны внутренние области другого модуля, то есть модули используют один участок памяти. Пример: реализация функций синуса и косинуса. Реализуется синус, а косинус получаем как синус – π/2.
Если модули косвенно обращаются друг к другу, между ними также существует сцепление.
Вывод: сцепление модулей зависит от спроектированной структуры данных и способов взаимодействия между модулями. Необходимо использовать простые параметры и не применять глобальных данных.