- •Понятие программного обеспечения, классификация программного обеспечения
- •Жизненный цикл по и его стандартизация, процессы жц по, группы процессов жц по
- •Процесс разработки по: основные действия и их содержание
- •Анализ требований к по
- •Проектирование архитектуры по
- •Кодирование и тестирование по
- •Сертификация процессов разработки по, модель 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. Объектно-ориентированные метрики: набор метрик Фернандо Аббреу
61. Объектно-ориентированные метрики: набор метрик Чидамбера и Кемерера
С. Чидамбер и К. Кемерер в 1994 г. предложили шесть проектных метрик, ориентированных на классы. Измерения и метрики для отдельного класса, иерархии классов и сотрудничества классов важны для разработчика ПО, который должен оценивать качество проекта, так как класс является фундаментальным элементом объектно-ориентированной системы. В набор метрик Чидамбера и Кемерера входят следующие метрики:
взвешенные методы на класс (Weighted methods per class – WMC);
высота дерева наследования (Depth of inheritance tree – DIT);
количество детей (Number of children – NOC);
сцепление между классами объектов (Coupling between object class – CBO);
отклик для класса (Response for a class – RFC);
недостаток связности в методах (Lack of cohesion in methods – LCOM).
Метрика WMC вычисляется по формуле:
,
где Ci – сложность i-го метода класса.
Для оценки сложности методов класса может применяться любая метрика сложности (например, цикломатическая сложность). Необходимо только нормализовать эту метрику так, чтобы номинальная сложность метода принимала значение 1.
Количество методов и их сложность являются индикатором затрат на реализацию и тестирование классов. Помимо этого, чем больше методов, тем сложнее дерево наследования. С ростом количества методов в классе его применение становится все более специфическим, те самым ограничивается возможность повторного использования. По этим причинам метрика WMC должна иметь разумно низкое значение.
На практике часто применяют упрощенную версию метрики: Ci полагают равной 1, а WMC определяют как количество методов в классе. При этом возможны два варианта подсчета количества методов в классе:
подсчитываются только методы текущего класса, а унаследованные методы игнорируются;
подсчитываются все методы класса (и определенные в классе и унаследованные).
Набор метрик Чидамбера-Кемерера является одной из первых работ по комплексной оценке качества объектно-ориентированного проектирования. Существует большое количество предложений по усовершенствованию и развитию данного набора.
Метрика ANAM ориентирована на принятые в объектно-ориентированном проектировании решения – применять простые операции с малым количеством аргументов, а несложные операции – с многочисленными аргументами.
Еще одним предложением является ввод метрики, симметричной метрике LCOM – нормализованной NLCOM, вычисление значения которой осуществляется по формуле:
Значения этой метрики лежат в диапазоне от 0 до 1 включительно. При этом чем ближе NLCOM к 1, тем выше связанность класса.
В наборе Чидамбера-Кемерера отсутствует метрика для прямого измерения информационной закрытости класса. В силу этого была предложена метрика Поведенческая закрытость информации (Behavioral Information Hiding – BIH):
62. Объектно-ориентированные метрики: набор метрик Лоренца и Кидда
Коллекция метрик Лоренца и Кидда является результатом практического и промышленного подхода к оценке объектно-ориентированных проектов. Все метрики данной коллекции делятся на три группы:
метрики, ориентированные на классы;
операционно-ориентированные метрики;
метрики для объектно-ориентированных проектов.
Метрики, ориентированные на классы, М. Лоренц и Д. Кидд подразделяют на четыре категории: метрики размера, метрики наследования, внутренние и внешние метрики.
Размерно-ориентированные метрики основаны на подсчете свойств и операций для отдельных классов, а также их средних значений для всей объектно-ориентированной системы. Метрики наследования акцентируют внимание на способе повторного использования операций в иерархии классов. Внутренние метрики классов рассматривают вопросы связности и кодирования. Внешние метрики исследуют сцепление и повторное использование.
Метрика 1: Размер класса (Class Size - CS) . Общий размер класса определяется с помощью следующих измерений:
общее количество операций (вместе с приватными и наследуемыми экземплярными операциями), которые инкапсулируются внутри класса;
количество свойств (вместе с приватными и наследуемыми экземплярными свойствами), которые инкапсулируются классом.
Метрика 2: Количество операций, переопределяемых подклассом (Number of operations overridden by a subclass – NOO). Переопределением операции называют случай, когда подкласс замещает операцию, унаследованную от суперкласса, своей собственной версией. Большие значения данной метрики обычно указывают на проблемы проектирования. Подкласс должен расширять операции суперкласса, что должно проявляться в виде новых имен операций. Если же значение метрики NOО велико, то разработчик нарушает абстракцию суперкласса, что ослабляет иерархию классов, усложняет тестирование и модификацию программного обеспечения. Рекомендуемое значение NOO ≤ 3 методов.
Метрика 3: Количество операций добавленных подклассом (Number of operations added by a subclass – NOA). Подклассы специализируются добавлением приватных операций и атрибутов. С ростом значений данной метрики подкласс удаляется от абстракции суперкласса. Обычно при увеличении высоты иерархии классов (увеличении DIT) должно уменьшаться значение NOA на нижних уровнях иерархии. Для рекомендуемых значений CS = 20 и DIT = 6 рекомендуемое значение NOA ≤ 4 методов (для класса-листа).
Операционно-ориентированная группа метрик предназначена для оценки операций в классах. Обычно методы имеют тенденцию быть небольшими как по размеру, так и по логической сложности. Тем не менее реальные характеристики операций могут быть полезны для глубокого понимания системы.
Значения метрик NSS, NKC, NSUB полезно накапливать как результат каждого выполненного проекта. Так формируется метрический базис фирмы, в который также включаются метрические значения по классами и операциям. Эти исторические данные могут использоваться для вычисления метрик производительности (среднее количество классов на разработчика или среднее количество методов на человеко-месяц). Совместное применение метрик позволяет оценивать затраты, продолжительность, персонал и другие характеристики текущего проекта.