Промышленные технологии проектирования ПО Качество программного обеспечения Качество ПО Качество ПО – весь объем признаков у и характеристик программной продукции, который относится к её способности удовлетворять установленным и предполагаемым свойствам Характеристики качества – набор свойств программной продукции, по которым её качество описывается и оценивается Ицыксон В.М. (С) ППТПО 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