- •Понятие программного обеспечения, классификация программного обеспечения
- •Жизненный цикл по и его стандартизация, процессы жц по, группы процессов жц по
- •Процесс разработки по: основные действия и их содержание
- •Анализ требований к по
- •Проектирование архитектуры по
- •Кодирование и тестирование по
- •Сертификация процессов разработки по, модель cmm
- •Стратегии жизненного цикла по: понятие, виды и их сравнительная характеристика
- •Каскадная модель жизненного цикла по: описание, преимущества и недостатки, критерии применения
- •Процесс макетирования по: его содержание, преимущества и недостатки, критерии применения
- •Недостатки:
- •Инкрементная модель жизненного цикла по: описание, преимущества и недостатки, критерии применения
- •Спиральная модель жизненного цикла по: описание, преимущества и недостатки, критерии применения
- •Rad модель жизненного цикла по: описание, преимущества и недостатки, критерии применения
- •Структурный подход к разработке по: основные принципы и методы
- •Методология idef0: назначение, icom-модель, правила построения диаграммы
- •Методология idef0: назначение, правила построения иерархии диаграмм, критерии завершения и стратегии декомпозиции
- •Методология dfd: назначение, элементы диаграммы и их назначение, правила построения диаграммы
- •Методология dfd: правила построения иерархии диаграмм, спецификации и их содержание
- •Модификация dfd п. Варда и с. Меллора
- •Модификация dfd д. Хетли и и. Пирбхаи
- •Методология idef1x: назначение, сущности и связи: понятие и их обозначения
- •Методология idef1x: назначение, виды и уровни моделей, порядок построения
- •21 Методология idef3: назначение, единица работы, связи и их виды, соединения и их виды
- •Типы связей idef3
- •Типы соединений
- •Виды указателей idef3
- •22 Основные этапы проектирования программных систем и их содержание
- •Информационные потоки процесса синтеза программной системы
- •23 Структурирование программной системы: цели и модели
- •Широковещательная модель
- •Модель, управляемая прерываниями
- •Модульность программной системы: понятие и свойства модуля, цели модульной декомпозиции
- •Затраты на модульность
- •26 Связность модуля: понятие, виды связности и их описание
- •Характеристика связностей модуля
- •27 Сцепление модулей: понятие, виды сцепления и их описание
- •28 Сложность программной системы, основные подходы к ее оценке
- •29 Структурные карты Констайнтайна
- •Элементы структурных карт: а) – модуль; б) – вызов модуля; в) – связь по данным; г) – связь по управлению
- •Типы вызовов модулей
- •30 Метод анализа и проектирования Джексона
- •Соединения между физическими процессами и их моделями
- •31.Объектно-ориентированный подход к разработке по: основные понятия и принципы
- •32.Язык uml: причины появления и история развития языка, структура языка
- •33.Канонические диаграммы языка uml: их виды и типы, рекомендации построения
- •34.Механизмы расширения uml: виды, примеры использования
- •35.Диаграмма вариантов использования: назначение, принципы построения
- •36.Диаграмма классов: назначение, классы, обозначение классов, их атрибутов и операций
- •37.Диаграмма классов: назначение, отношения между классами и их применение
- •38.Диаграмма композитной структуры: композитные классы и их части, принципы построения
- •39.Диаграмма композитной структуры: кооперации и их использование
- •40. Диаграмма пакетов: назначение, пакеты и отношения между ними
- •41.Диаграмма объектов, назначение, объекты и отношения между ними
- •42.Диаграмма последовательности: назначение, линии жизни, прием и передача сообщений между линиями жизни
- •43.Диаграмма последовательности: назначение, комбинированные фрагменты, их виды и использование
- •44.Диаграмма деятельности: назначение, понятие, семантика и обозначение деятельности, действия и дуг
- •45.Диаграмма деятельности: узлы управления, их виды и применение
- •46. Дополнительные элементы диаграммы деятельности: действия приема и передачи сигналов, центральный буфер и хранилище данных
- •Дополнительные элементы диаграммы деятельности: разбиения, регион прерываемой деятельности, обработчик исключений
- •Диаграмма коммуникации: назначение, принципы построения
- •Диаграмма обзора взаимодействия: назначение, принципы построения
- •Когда применяются диаграммы обзора взаимодействия
- •50. Временные диаграммы: назначение, принципы построения
- •51. Диаграмма конечного автомата: назначение, простое и композитное состояния
- •52. Диаграмма конечного автомата: простые и составные переходы, правила срабатывания переходов
- •6.3. Переход
- •6.6. Сложные переходы
- •53. Диаграмма конечного автомата: псевдосостояния, их виды и применение
- •54. Протокольные конечный автомат: назначение, элементы и принципы построения
- •55. Диаграмма компонентов: назначение, компоненты, интерфейсы и порты, соединения и их виды
- •56. Диаграмма развертывания: назначение, узлы, артефакты, соединения и их виды
- •57. Объектно-ориентированные метрики: назначение, связь с принципами ооп
- •58. Объектно-ориентированные метрики: связность по данным
- •59. Объектно-ориентированные метрики: связность по методам
- •60. Объектно-ориентированные метрики: сцепление объектов и локальность данных
- •61. Объектно-ориентированные метрики: набор метрик Чидамбера и Кемерера
- •62. Объектно-ориентированные метрики: набор метрик Лоренца и Кидда
- •63. Объектно-ориентированные метрики: набор метрик Фернандо Аббреу
Характеристика связностей модуля
Тип связности |
Сопровождаемость |
Роль модуля |
Функциональная |
Лучшая |
«Черный ящик» |
Информационная (последовательная) |
Не совсем «черный ящик» |
|
Коммуникативная |
«Серый ящик» |
|
Процедурная |
Худшая |
«Белый» или «просвечивающий ящик» |
Временная |
«Белый ящик» |
|
Логическая |
||
По совпадению |
27 Сцепление модулей: понятие, виды сцепления и их описание
Сцепление – это мера взаимозависимости модулей по данным. Сцепление – внешняя характеристика модуля, которую желательно уменьшать. Количественно сцепление измеряется степенью сцепления.
Выделяют 6 видов сцепления:
Сцепление по данным (СЦ=1) – модуль А вызывает модуль Б. Все входные и выходные параметры вызываемого модуля – простые элементы данных (рисунок 5.18).
Сцепление по образцу (СЦ=3) – в качестве параметров используются структуры данных (рисунок 19).
Сцепление по управлению (СЦ=4) – модуль А явно управляет функционированием модуля Б (с помощью флагов или переключателей), посылая управляющие данные (рисунок 20).
Сцепление по внешним ссылкам (СЦ=5) – модули А и Б ссылаются на один и тот же глобальный элемент данных.
Сцепление по внешней области (СЦ=7) – модули А и Б ссылаются на одну и ту же глобальную структуру данных (рисунок 21).
Сцепление по содержанию (СЦ=9) – один модуль прямо ссылается на содержание другого модуля (не через его точку входа). Например, коды их команд перемежаются друг с другом (рисунок 21).
28 Сложность программной системы, основные подходы к ее оценке
В простейшем случае сложность программной системы определяется как сумма мер сложности ее модулей. Сложность модуля может вычисляться различными способами. Например, М. Холстед (1977) предложил меру длины N модуля:
,
где n1 – число различных операторов, а n2 – число различных операндов.
В качестве второй метрики М. Холстед рассматривал объем V модуля (количество символов для записи всех операторов и операндов текста программы):
.
Недостатком рассмотренной системы измерений является то, что она не учитывает внутрисистемные связи. Том МакКейб (1976) при оценке сложности программной системы предложил исходить из топологии внутренних связей. Для этого он разработал метрику цикломатической сложности:
,
где E – количество дуг, N – количество вершин в управляющем графе программной системы.
Таким образом, при комплексной оценке сложности программной системы необходимо рассматривать меру сложности модулей, меру сложности внешних связей (между модулями) и меру сложности внутренних связей (внутри модуля). Для осуществления этой оценки используют иерархическую структуру программной системы.
Иерархическая структура программной системы – основной результат предварительного проектирования. Она определяет состав модулей программной системы и управляющие отношения меду модулями. В этой структуре модуль более высокого уровня управляет модулем нижнего уровня.
Первичными характеристиками являются количество вершин (модулей) и количество ребер (связей межу модулями). К ним добавляются две глобальные характеристики:
высота – количество уровней управления (в примере – 4);
ширина – максимальное из количеств модулей, размещенных на уровнях управления (в примере – 3).
Локальными характеристиками модулей структуры являются:
коэффициент объединения по входу (Fan_in(i)) – это количество модулей, которые прямо управляют i-м модулем (в примере для модуля n – Fan_in(n)=3);
коэффициент разветвления по выходу (Fan_out(i)) – это количество модулей, которыми прямо управляет i-ый модуль (в примере для модуля m - Fan_in(m)=3).
Для оценки качества иерархической структуры используется невязка этой структуры. Эта характеристика определяет: насколько близко граф иерархической структуры соответствует в лучшем случае дереву, а в худшем – полному графу.
Значение невязки лежит в диапазоне [0,1], где значение 0 – соответствует тому, что иерархическая структура является деревом (лучший вариант), а значение 1 – полным графом (худший вариант).
Л. Констентайн и Э. Йордан предложили оценивать структуру с помощью коэффициентов Fan_in(i) и Fan_out(i). Большое значение Fan_in(i) — свидетельство высокого сцепления, так как является мерой зависимости модуля. Большое значение Fan_out(i) говорит о высокой сложности вызывающего модуля.
С. Генри и Д. Кафура (1981) велим информационные коэффициенты ifan_in(i) и ifan_out(j). Эти коэффициенты учитывают количество элементов и структур данных, из которых i-ый модуль берет информацию, и которые обновляются j-ым модулем соответственно. Информационные коэффициенты суммируются со структурными коэффициентами sfan_in(i) и sfan_out(j), которые учитывают только вызовы модулей. На основе полных коэффициентов модулей вычисляется метрика общей сложности структуры:
где length(i) – оценка размера i-го модуля в виде LOC- или FP-оценки.