Качество ПО

advertisement
Промышленные технологии
проектирования ПО
Качество программного обеспечения
Качество ПО
 Качество ПО – весь объем признаков у и
характеристик программной продукции,
который относится к её способности
удовлетворять установленным и
предполагаемым свойствам
 Характеристики качества – набор
свойств программной продукции, по
которым её качество описывается и
оценивается
Ицыксон В.М. (С) ППТПО 2009
Характеристики качества ПО






Функциональность
Надежность
Практичность
Эффективность
Сопровождаемость
Мобильность
Ицыксон В.М. (С) ППТПО 2009
Характеристики качества.
Функциональность
 Функциональность - набор атрибутов
характеризующий, соответствие
функциональных возможностей ПО
набору требуемой пользователем
функциональности. Подхарактеристики:
 Пригодность
 Корректность (правильность, точность)
 Способность к взаимодействию (в частности
сетевому)
 Защищенность
Ицыксон В.М. (С) ППТПО 2009
Характеристики качества.
Надежность
 Надежность - набор атрибутов,
относящихся к способности ПО сохранять
свой уровень качества
функционирования в установленных
условиях за определенный период
времени. Подхарактеристики:





Завершенность (отсутствия ошибок)
Устойчивость к дефектам
Восстанавливаемость
Доступность
Готовность
Ицыксон В.М. (С) ППТПО 2009
Характеристики качества.
Практичность
 Практичность (удобство) - набор
атрибутов, относящихся к объему работ,
требуемых для исполнения и
индивидуальной оценки такого
исполнения определенным или
предполагаемым кругом пользователей.
Подхарактеристики:




Понятность
Простота использования
Изучаемость
Привлекательность
Ицыксон В.М. (С) ППТПО 2009
Характеристики качества.
Эффективность
 Эффективность - набор атрибутов,
относящихся к соотношению между
уровнем качества функционирования ПО
и объемом используемых ресурсов при
установленных условиях.
Подхарактеристики:
 Временная эффективность
 Используемость ресурсов
Ицыксон В.М. (С) ППТПО 2009
Характеристики качества.
Сопровождаемость
 Сопровождаемость - набор
атрибутов, относящихся к объему
работ, требуемых для проведения
конкретных изменений
(модификаций). Подхарактеристики:




Удобства для анализа
Изменяемость
Стабильность
Тестируемость
Ицыксон В.М. (С) ППТПО 2009
Характеристики качества.
Мобильность
 Мобильность (переносимость)набор атрибутов, относящихся к
способности ПО быть перенесенным
из одного окружения в другое.
Подхарактеристики:
 Адаптируемость
 Соответствие стандартам
 Простота установки
 Заменяемость
Ицыксон В.М. (С) ППТПО 2009
Стандарты качества ПО
 Мировые стандарты
 ISO/IEC 9126. Software engineering - Product
quality:




Part
Part
Part
Part
1:
2:
3:
4:
Quality model
External metrics
Internal metrics
Quality in use metrics
 ISO/IEC 25000:2005. Software Engineering Software product Quality Requirements and
Evaluation (SQuaRE)
 Российские стандарты
 ГОСТ 28195-89 «Оценка качества программных
средств»
 ГОСТ Р ИСО/МЭК 9126-93 «Оценка программной
продукции»
Ицыксон В.М. (С) ППТПО 2009
Программометрика
 Наука о количественном
оценивании свойств программного
обеспечения
 Программная метрика - мера,
позволяющая получить численное
значение некоторого свойства
программного обеспечения или его
спецификаций
Ицыксон В.М. (С) ППТПО 2009
Использование метрик для
оценки качества
 Функциональность – метрики
тестирования
 Практичность – метрики эргономики
 Сопровождаемость – метрики кода
 Мобильность – метрики кода
 Надежность – метрики тестирования,
динамические методы
 Эффективность – только динамические
методы
Ицыксон В.М. (С) ППТПО 2009
Метрики программного
обеспечения
 Различные системы метрик позволяют
оценивать различные характеристики
ПО:









Локализация
Инкапсуляция
Информационная закрытость
Наследование
Абстракция
Связность объектов программы
Сложность
Размер
И т.п.
Ицыксон В.М. (С) ППТПО 2009
Метрики программного
обеспечения
 Существует множество систем метрик:









Метрики
Метрики
Метрики
Метрики
Метрики
Метрики
Метрики
Метрики
И т.п.
Холстеда
Л. Константейна и Э. Йордана
Л. Отта и Б. Мехра
Д. Биемена и Б. Кенга
С. Чидамбера и К. Кемерера
М. Лоренца и Д. Кидда
Ф. Абреу
Р. Байндера
Ицыксон В.М. (С) ППТПО 2009
Метрики Чидамбера и
Кемерера
 Авторы С. Чидамбер и К. Кемерер
 Разработаны в 1994 г.
 Применяются для объектноориентированных систем
Ицыксон В.М. (С) ППТПО 2009
Метрики Чидамбера и
Кемерера
1. Взвешенные методы на класс
(WMC)
2. Глубина дерева наследования (DIT)
3. Количество детей (NOC)
4. Сцепление между классами
объектов (CBO)
5. Отклик для класса (RFC)
6. Недостаток связности в методах
(LCOM)
Ицыксон В.М. (С) ППТПО 2009
ЧК. Взвешенные методы на
класс




WMC – Weighted Methods Per Class
WMC = ∑1..n ci
ci – сложность метода
n:
 Только методы текущего класса
 Методы текущего класса и все
унаследованные методы
 Методы текущего класса и методы,
унаследованные от непосредственных
родителей
 Иногда сi=1, тогда WMC – количество
методов в классе
Ицыксон В.М. (С) ППТПО 2009
ЧК. Глубина дерева
наследования
 DIT –Depth of Inheritance Tree
 Определяется длиной пути от корня
дерева до самого дальнего листа
Ицыксон В.М. (С) ППТПО 2009
ЧК. Количество детей
 NOC – Number of Children
 Определяет число непосредственных
потомков у класса
 DIT и NOC – характеризуют форму и
размер структуры класса
 Оптимально, чтобы максимальные
значения не превышали:
 NOC – 7 ± 2
 DIT – 7 ± 2
Ицыксон В.М. (С) ППТПО 2009
ЧК. Сцепление между
классами объектов
 CBО – Coupling Between Object
classes
 Количество классов, которые
используются методами данного
класса
Ицыксон В.М. (С) ППТПО 2009
ЧК. Отклик для класса
 RFC – Response For a Class
 Характеризует меру взаимодействия
данного класса с другими классами
 RFC = M + R
 M – число методов класса
 R – число методов других классов,
вызываемых из данного
 По RFC можно оценивать время
тестирования
Ицыксон В.М. (С) ППТПО 2009
ЧК. Недостаток связности в
методах
 LCOM – Lack of Cohesion in Methods
 Показывает, насколько методы
класса не связаны друг с другом
через поля и свойства
 LCOM = max (UCM-CM, 0)
 UCM – число пар несвязанных методов
 CM – число пар связанных методов
Ицыксон В.М. (С) ППТПО 2009
ЧК. Дополнительные метрики
 WMC2=∑1..n Pi
 Pi = количество параметров i-го метода
 ANAM (Average Number of Arguments per
Method)
 ANAM = WMC2/WMC
 NLCOM (Normalized LCOM)
 NLCOM = CM/(UCM+CM)
 BIH (Behavioral Information Hiding)
 BIH = WEOC/WIEOC
 WEOC - Weighted External Operation per Class
 WEIOC - Weighted External & Internal
Operation per Class
Ицыксон В.М. (С) ППТПО 2009
Метрики Лоренца и Кидда
 Разработаны М. Лоренцом и Д.
Киддом в 1994 году
 Используются для объектноориентированных систем
Ицыксон В.М. (С) ППТПО 2009
Метрики Лоренца и Кидда










Размер класса (CS)
Количество операций, переопределенных
подклассами (NOO)
Количество операций, добавленных подклассами
(NOA)
Индекс специализации (SI)
Средний размер операции (OSavg)
Сложность операции (OC)
Среднее количество параметров на операцию
(NPavg)
Количество описаний сценариев (NSS)
Количество ключевых классов (NKC)
Количество подсистем (NSUB)
Ицыксон В.М. (С) ППТПО 2009
ЛК. Метрики классов

Размер класса





Количество переопределенных методов



NOO – Number of Operations Overridden by a Subclass
Рекомендуемое значение NOO ≤ 3 методов
Количество добавленных методов



CS – Class Size
Общее число методов класса
Общее число свойств класса
Рекомендуемое значение CS ≤ 20 методов
NOA – Number of Operations Added by a Subclass
Рекомендуемое значение для оконечного класса NOA ≤ 4 методов
Индекс специализации


SI – Specialization Index
SI = (NOO * Level)/M



Level – номер уровня иерархии
M – общее число методов
Рекомендуемое значение SI ≤ 0.75
Ицыксон В.М. (С) ППТПО 2009
ЛК. Метрики методов

Средний размер метода

OSavg – Average Operation Size

Количество сообщений, посланных методом
Рекомендуемое значение OSavg ≤ 9

Сложность метода
 OC - Operation Complexity
 Значение для каждого использованного типа
программных компонентов добавляется из
таблицы
 Рекомендуемое значение OC ≤ 65
 Среднее количество параметров на метод


NPavg – Average Number of Parameters per operation

Рекомендуемое значение NPavg ≤ 0,7
Ицыксон В.М. (С) ППТПО 2009
ЛК. Метрики OO-проектов

Количество описаний сценариев


NSS – Number of Scenario Scripts
Зависит от:




Количество ключевых классов





NKC – Number of Key Classes
Ключевые классы прямо связаны с предметной областью
NKC должно быть в пределах 20%-40%
Количество подсистем



Количества классов, реализующих требования
Количества состояний каждого класса
Количества методов, свойств, сотрудничеств
NSUB – Number of Subsystem
Рекомендуемое значение NSUB > 3
NSS, NKC и NSUB – должны накапливаться фирмой для после
каждого проекта.
На основе собранной статистики формируется метрические
параметры фирмы
Ицыксон В.М. (С) ППТПО 2009
Метрики Ф. Абреу (MOOD)
 Набор метрик MOOD (Metrics of ObjectOriented Design)
 Разработаны Фернандо Абреу в 1994 г.
 Цели:
 Описание ОО-механизмов: инкапсуляция,
наследование, полиморфизм, обмен
сообщений
 Формализованность метрик
 Независимость от размера ПО
 Независимость от ЯП
Ицыксон В.М. (С) ППТПО 2009
Метрики MOOD






Фактор
Фактор
Фактор
Фактор
Фактор
Фактор
закрытости метода (MHF)
закрытости свойства (AHF)
наследования метода (MIF)
наследования свойства (AIF)
полиморфизма (POF)
сцепления (COF)
Ицыксон В.М. (С) ППТПО 2009
MOOD. Фактор закрытости
метода
 MHF – Method Hiding Factor
 Показывает долю скрытых методов
в программе
 MHF = ∑1..N(Mhi) / ∑ 1..N(Mhi + Mvi)
 Mhi – число скрытых
неунаследованных методов класса i
 Mvi – число видимых
неунаследованных методов класса i
Ицыксон В.М. (С) ППТПО 2009
MOOD. Фактор закрытости
свойства
 AHF – Attribute Hiding Factor
 Показывает долю скрытых свойств в
программе
 AHF = ∑1..N(Ahi) / ∑ 1..N(Ahi + Avi)
 Ahi – число скрытых неунаследованных
свойств класса i
 Avi – число видимых
неунаследованных свойств класса i
Ицыксон В.М. (С) ППТПО 2009
MOOD. Фактор наследования
метода
 MIF – Method Inheritance Factor
 Показывает долю унаследованных
непереопределенных методов в
программе
 MIF = ∑1..N(MIi) / ∑ 1..N(MNi + MIi+MOi)
 MIi – число унаследованных
непереопределенных методов класса i
 MNi – число новых методов класса i
 MOi – число унаследованных
переопределенных методов класса i
Ицыксон В.М. (С) ППТПО 2009
MOOD. Фактор наследования
свойств
 AIF – Attribute Inheritance Factor
 Показывает долю унаследованных
непереопределенных свойств в
программе
 AIF = ∑1..N(AIi) / ∑ 1..N(ANi + AIi+AOi)
 AIi – число унаследованных
непереопределенных свойств класса i
 ANi – число новых свойств класса i
 AOi – число унаследованных
переопределенных свойств класса i
Ицыксон В.М. (С) ППТПО 2009
MOOD. Фактор полиморфизма
 POF – Polymorphism factor
 POF = ∑1..N(МОi) / ∑ 1..N(MNi * Di)
 MNi – число новых методов класса i
 MOi – число унаследованных
переопределенных методов класса i
 Di – количество потомков класса i
Ицыксон В.М. (С) ППТПО 2009
MOOD. Фактор сцепления
 COF – Coupling Factor
 Определяет долю пар классов,
связанных отношением «клиентпоставщик»
 COF = ∑i∈1..N∑ j∈1..N(Cij) / (N∙(N-1))
 Cij = 1, если класс i имеет собственную
ссылку на класс j
Ицыксон В.М. (С) ППТПО 2009
Метрики сложности
 Метрики размера программных
систем
 Классические метрики сложности
 Метрики Холстеда
 Метрики сложности потока
управления
 Метрики сложности потока данных
Ицыксон В.М. (С) ППТПО 2009
Метрики размера
 LOC – Lines Of Code. Число строк
кода. Может вычисляться
 как общее число всех строк
 как число операторов программы
 Среднее число строк в модуле
 Среднее число строк в функции
 Степень комментирования
программы (LOCC/LOC)
 Плотность комментирования
Ицыксон В.М. (С) ППТПО 2009
Метрики Холстеда

Характеристики программы





NUOprtr (Number of Unique Operators) — число уникальных
операторов программы
NUOprnd (Number of Unique Operands) — число уникальных
операндов программы (словарь операндов)
Noprtr (Number of Operators) — общее число операторов в
программе
Noprnd (Number of Operands) — общее число операндов в
программе
Оценки

Словарь программы (Halstead Program Vocabulary, HPVoc):


Длина программы (Halstead Program Length, HPLen):


HPVol = HPLen * log2 HPVoc;
Сложность программы (Halstead Difficulty, HDiff):


HPLen = Noprtr + Noprnd;
Объем программы (Halstead Program Volume, HPVol):


HPVoc = NUOprtr + NUOprnd;
HDiff = (NUOprtr/2) × (NOprnd / NUOprnd);
Усилия программиста при разработке: (Halstead Effort):

HEff = HDiff × HPVol.
Ицыксон В.М. (С) ППТПО 2009
Метрики сложности потока
управления. Метрика Мак-Кейба
 Цикломатическая сложность
 С= A-V+2
 A – число ребер в ГПУ
 V- число вершин в ГПУ
 В общем случае показывает число
тестовых прогонов программы, для
прохода всех ветвей
Ицыксон В.М. (С) ППТПО 2009
Метрики сложности потока
данных. Метрики Чепина
 Множество «Р» – входные переменные
программы
 Множество «М» – модифицируемые
или создаваемые внутри программы
переменные
 Множество «C» – переменные,
участвующие в управлении работой
программного модуля (управляющие
переменные)
 Множество «Т» – не используемые в
программе переменные
 Q = P + 2M + 3C + 0.5T
Ицыксон В.М. (С) ППТПО 2009
Аудит программного кода
 Aудит (review) – процесс контроля и
оценки программного кода в процессе его
эволюции
 Ручной аудит проводится экспертами в
области программирования
 Автоматизированный аудит проводится
на основе программных метрик
 Автоматизированный аудит является
частью многих сред разработки
Ицыксон В.М. (С) ППТПО 2009
Использование метрик
 Для проекта выбирается набор(ы) метрик
 Для каждой метрики:



Если метрика неоднозначна – доопределяется
Формируются эталонные значения
Значение метрик - нормируются
 Осуществляется непрерывный аудит программного
кода
 Метрики, значения которых неудовлетворительны,
выбираются для анализа
 Программный код модифицируется с целью
улучшения метрик
 Накапливается статистика
 * Возможно корректируются эталонные значения
метрик
Ицыксон В.М. (С) ППТПО 2009
Отображение метрик
Ицыксон В.М. (С) ППТПО 2009
Отображение метрик
Ицыксон В.М. (С) ППТПО 2009
Download