УДК 004
Методы определения качества программного обеспечения
Лаптов Денис Сергеевич – бакалавр Челябинского государственного университета
Аннотация: В статье описано современный программный инструмент для определения качества программного обеспечения (ПО) методами метрического анализа. Программное обеспечение позволяет использовать метрики качества для расчета соответствующей метрики и определения значения комплексного показателя качества программного продукта. Уточняется процесс оценки качества программного обеспечения, анализируется понятие качества программного продукта как объекта стандартизации и уровни качества моделей производительности программного обеспечения. Это дало возможность повысить качество программного обеспечения путем формирования соответствующих требований критериев оценки качества. Также возможно улучшение метрического анализа моделей его качества и методов его количественного измерения на всех этапах программного проекта. Выявлено, что движущей силой успеха программных проектов является стремление их руководителей разработать такое программное обеспечение, которое имело бы определенную ценность. Он должен быть важен для выполнения определенных задач или для достижения тактических и стратегических целей. Ценность программного обеспечения может быть выражена в форме его стоимости или в какой-либо другой форме. Заказчик обычно имеет собственное представление о максимальной стоимости вложений в разработку ПО. Эти средства прибыли он рассчитывает получить в случае достижения основных целей использования программного обеспечения. Он также может иметь видение функциональности программного обеспечения и определенные ожидания в отношении его качества. Особенности использования метрического анализа для определения качества программного обеспечения, выявили отсутствие единых стандартов на метрику. Поэтому каждый поставщик своей системы измерения предлагает свои методики оценки качества программного обеспечения и связанных с ними метрик. Также вызывает затруднения интерпретация значений метрик, так как для большинства пользователей ее программного обеспечения метрики и их значения не совсем понятны и информативны. Установлено, что основными параметрами выбора варианта реализации программного обеспечения являются его стоимость, продолжительность процесса разработки и репутация компании-разработчика. Но решения, принимаемые на основе этих параметров, не всегда гарантируют надлежащее качество программного обеспечения.
Ключевые слова: информационные технологии, разработка программного обеспечения, стандарты качества, требования к программному обеспечению, технические требования, критерии оценки качества, метрики качества программного обеспечения; комплексный показатель качества.
Введение
Качество программного обеспечения является основной его характеристикой в различных сферах использования информационных технологий [1], что свидетельствует о степени его соответствия требованиям [2]. Качество программного обеспечения означает действия, которые определяют, насколько программное обеспечение соответствует своему назначению. Такие действия интерпретируются по-разному, что приводит к нескольким независимым определениям этого термина. Преимущественно под качеством программного обеспечения понимают совокупность свойств программного продукта, характеризующих его способность удовлетворять заданные или прогнозируемые потребности заказчика, выраженные им в виде требований пользователя на начальных этапах разработки программного обеспечения [5, 6].
Стандарт ISO/IEC 9126 регулирует внутренние и внешние функции обеспечения качества. Внешние характеристики отражают требования к работе программного обеспечения, а внутренние характеристики, используемые для подготовки планов достижения требуемых значений, являются его внешними характеристиками [8, 9]. Характеристики качества отражают свойства программного обеспечения, а также взгляды на него заказчика и разработчика. Однако непосредственного пользователя ПО в основном интересует операционное его качество, то есть совокупный эффект от достижения требуемых характеристик программы, ценность которого измеряется скоростью и достоверностью результатов, а не его свойством. Это понятие гораздо шире, чем любая отдельная характеристика обеспечения качества, например, простота использования или надежность [4].
Качество программного обеспечения определяется с помощью модели качества, что приобретает особое значение по мере развития и совершенствования технологии оценки качества программного обеспечения, а именно методы метрического анализа. Суть данной методики заключается в следующем: на основе показателей качества программного обеспечения рассчитываются значения соответствующих метрик качества и значения интегрального показателя качества будущего программного продукта. Согласно ISO 24765:2010 [41] метрика определяется как степень обладания свойством определенного товара, имеющего числовое значение.
Как правило, при оценке качества программного обеспечения понимают этапы, которые определяют, насколько программное обеспечение соответствует своему назначению [6]. Качество программного обеспечения оценивается с использованием модели качества [7]. Эта оценка особенно важна для разработки и совершенствования технологий определения качества программного обеспечения, а именно – методов метрического анализа. Все это привело к необходимости разработки соответствующих средств для определения соответствующих методов обеспечения качества.
Анализ последних исследований и публикаций
Разработка и совершенствование программного обеспечения и качества соответственно носят по существу организационный характер, а не технический [8]. Модель ISO 9126 состоит из четырех частей стандарта «Разработка программного обеспечения — качество продукта», который включает модель качества, внешние метрики, внутренние метрики и метрики качества при использовании соответственно [9].
Недавно предложенная модель, модель Макколла, описывает качество программного обеспечения как характеристики программного продукта, которые представляют его способность удовлетворять как явным, так и неявным требованиям [10]. Он предлагает шесть высокоуровневых независимых показателей качества, а именно: повторное использование на основе объектно-ориентированной технологии, модель качества Дромея, модель качества технологического центра Software Assurance, модель качества для объектно-ориентированного проектирования, модель качества на основе показателей для объектно-ориентированного проектирования. и Программные метрики. Эти меры включают в себя набор функций программного обеспечения, с помощью которых качество продукта изображается и оценивается [11].
Качество программного обеспечения также описывается [12] в соответствии с характеристиками продукта: внутреннее качество (т. е. способ разработки продукта), такое как сложность и конфигурация программного обеспечения; внешнее качество (т. е. функциональность продукта), такое как удобство обслуживания и надежность [13].
Однако процедура определения качества программного обеспечения и соответствующие методы и средства обеспечения этого качества, а также сам процесс разработки программного обеспечения остаются без фундаментальной теории и эффективной методологии [7]. Большинство исследований в области оценки качества программного обеспечения, особенно на ранних стадиях его жизненного цикла, носят хаотичный и бессистемный характер [13].
В то же время, как доказано исследованиями [14], до 55 % всех проблем будущего программного продукта можно выявить и устранить в конце этапа проектирования архитектуры программного обеспечения. Поэтому проблема оценки качества программного обеспечения требует пристального внимания для предотвращения непредвиденных потерь и неприятных инцидентов, вызванных ошибками в его работе.
Объект исследования – метрический анализ качества программного обеспечения.
Предмет исследования – методы и средства анализа метрик качества программного обеспечения, которые дадут возможность рассчитать метрики качества программного обеспечения, используя соответствующие показатели, рассчитываемые на ранних стадиях разработки проекта.
Целью исследования является разработка адекватного инструмента для определения качества программного обеспечения с использованием методов метрического анализа, который даст возможность рассчитать соответствующие метрики с использованием показателей качества и определить интегральный показатель качества всего программного продукта.
Для реализации поставленной цели необходимо выполнить следующие основные задачи исследования:
- выяснить особенности программного обеспечения для оценки качества для анализа его качества как предмета стандартизации и уровня представления модели качества программного обеспечения;
- определить особенности с помощью метрического анализа определения качества программного обеспечения, что позволит им объяснить причины неэффективного использования, а также различные интерпретации значений этих метрик;
- разработать программный инструмент определения качества программного обеспечения, обеспечивающий возможность прогнозирования дальнейшего развития его технологической эффективности и создания соответствующего набора данных для определения стоимости комплексного качества программного обеспечения;
- сделать соответствующие выводы и дать рекомендации по практическому использованию средств определения показателей качества программными методами анализа.
Научная новизна исследования – впервые разработан метод использования метрического анализа для определения качества программного обеспечения. Согласно этому методу систематически доступны метрические стандарты, поэтому каждый поставщик измерительных систем должен использовать только утвержденные методы оценки качества программного обеспечения и соответствующие метрики. Также предложен единый подход к интерпретации значений метрик, что позволило большинству пользователей эти метрики и их значения одинаково информативно понимать и применять.
Практическая значимость полученных результатов исследования заключается в том, что современный программный инструмент для определения метрики качества позволяет анализировать программные методы с использованием показателей качества соответствующей метрики для расчета и определения значения комплексного качества программного обеспечения.
Методы определения качества программного обеспечения
Особенности процесса оценки качества программного обеспечения. Для любого программного продукта существует множество трактовок его качества. Согласованные показатели качества программного обеспечения могут быть обязаны соблюдаться его исполнителями на всех этапах разработки программного обеспечения. Таких индикаторов может быть немного или они могут отражать определенные свойства будущего программного обеспечения, которые хотели бы видеть их непосредственные пользователи и другие заинтересованные лица [5]. Часто эти показатели можно получить в результате некоторого компромисса. Такой подход полностью совпадает с понятием «приемлемое качество программного обеспечения», которое представляет собой менее жесткую точку зрения на качество программного обеспечения как на гарантированное достижение его совершенства.
Затраты на обеспечение качества ПО можно дифференцировать на затраты на предотвращение дефектов, затраты на оценку эффективности работы, затраты на внутренние и внешние сбои в процессе эксплуатации ПО. Движущей силой успешной реализации программных проектов является стремление их руководителей разработать программное обеспечение, которое имело бы определенную ценность, то есть было бы значимым для решения определенных задач или достижения целей – тактических и стратегических. Стоимость программного обеспечения может быть выражена в виде его цены или в какой-либо другой форме. Часто заказчик имеет свое представление о максимальной стоимости вложений, возврат которых он ожидает в случае достижения основных целей при использовании ПО. Он также может иметь свое видение функциональности программного обеспечения и определенные ожидания относительно его качества.
Как правило, заказчик в первую очередь концентрируется на функциональности программного обеспечения и думает не о его качестве, а о затратах, связанных с обеспечением качества. Поэтому на начальном этапе реализации проекта предметом обсуждения может быть вопрос о полном понимании заказчиком преимуществ использования ПО и затрат на его разработку, связанных с достижением того или иного уровня качества ПО, а также ее вовлеченность в процесс принятия соответствующих решений. В идеале большинство этих решений необходимо обсуждать на этапе определения требований к заказному программному обеспечению, но эти вопросы можно (и нужно) учитывать на всех этапах его разработки. Не существует «стандартных» правил принятия таких решений. Однако бизнес-аналитики должны четко продемонстрировать различные альтернативные способы достижения определенного уровня качества программного обеспечения и соответствующую стоимость разработки, чтобы можно было предсказать общую стоимость реализации программного проекта (рисунок 1).
Рисунок 1. Особенности процесса оценки качества системы защиты информации.
Для демонстрации зависимости между стоимостью внедрения программного обеспечения и качеством программного обеспечения рассмотрим особенности разработки системы защиты информации, а именно ее функциональную модель
В этой модели не показана цена информации – объекта конфиденциальности (например, банковских депозитных счетов или кодов доступа к ним, так как эта информация не теряет своей ценности с течением времени). Следовательно, на этом рисунке введены следующие обозначения: – уровень (вероятность) защищенности информации (практически
);
– допустимые затраты на защиту информации в зависимости от требуемого уровня защиты. Эти затраты возрастают с повышением требований к определенному уровню защиты информационной безопасности.
Желание достичь очень высокого уровня информационной безопасности обычно приводит к резкому увеличению затрат, которые могут превышать стоимость информации, которую необходимо защитить.
Возможные потери носителя информации из-за неправильного уровня защиты являются функцией существующего уровня защиты
. Из рисунка видно, что сумма
определяет цену V(Z, U) для обеспечения информационной безопасности. При этом оптимальный уровень защиты Vopt(Z, U) будет соответствовать минимальному значению затрат на защиту Z(P) плюс возможные потери U(P) из-за потери информации из-за неполноты ее защиты. Стремление ее превзойти приведет к резкому увеличению затрат Z(P) на обеспечение информационной безопасности; снижение уровня защиты приведет к увеличению возможных потерь U(P) из-за несовершенства функционирования системы защиты информации.
Существует ряд моделей, позволяющих рассчитывать качество программного обеспечения, но множественность интерпретации их характеристик усложняет такие расчеты.
Модели основаны на использовании различных программных метрик. Введение количественных метрик качества программного обеспечения помогает решить некоторые практические задачи:
- прогнозирование количества ошибок в программном обеспечении с начала проектирования;
- прогнозирование уровня сложности программного обеспечения и его сопровождения на основе анализа результатов проектирования;
- прогнозирование сложности процессов тестирования и количества необнаруженных ошибок на основе анализа программного кода;
- прогнозирование конечного размера программного кода на основе анализа сложности проектирования программной архитектуры;
- определение влияния отдельных характеристик программного кода на качество готового программного обеспечения;
- мониторинг этапов реализации программы;
- анализ обнаруженных и скрытых дефектов в готовом ПО;
- выявление лучших методов и технологий разработки программного обеспечения на основе их сравнения.
Метрика качества программного обеспечения
Согласно стандарту ISO 24765:2010 метрика может быть определена как степень владения свойством, имеющим числовое значение. В общем случае метрика программного обеспечения представляет собой меру, позволяющую вычислить численное значение некоторого свойства программного обеспечения как взвешенную арифметику с учетом значений метрик, оценивающих эту метрику, и их весовых коэффициентов.
Оценка качества программного обеспечения по результатам метрического анализа осуществляется следующим образом: на основе показателей качества программного обеспечения рассчитываются значения метрик качества, которые, в свою очередь, дают комплексную оценку общего качества программного обеспечения. Несмотря на многочисленные исследования программных метрик, остается еще много нерешенных вопросов. Например, отсутствие единых стандартов на метрики приводит к тому, что каждый поставщик измерительной системы предлагает свои методы определения качества ПО и соответствующие метрики. Также сложной задачей является интерпретация значений метрик, так как для большинства пользователей и метрики, и их значения не вполне понятны и информативны.
В [16] анализировались различные метрики качества программного обеспечения с точки зрения возможности их применения на ранних стадиях реализации проекта с получением точного или прогнозируемого значения. По результатам данного исследования было выявлено несколько метрик, которые имели точное значение на этапе проектирования архитектуры программного обеспечения, а именно:
- метрика Чапина – анализирует характер использования переменных из списка входной и обрабатываемой информации;
- метрика связности – внутренняя характеристика программного модуля, которая зависит от типа модуля или проекта;
- связующие метрики – внешняя характеристика модуля, которую желательно и стоит снижать. степень взаимозависимости данных модулей;
- метрика Гилба (составляющая метрики) – модульная сложность программы, с помощью которой можно вычислить количество межмодульных связей на этапе проектирования;
- метрика МакКлюра – предназначена для оценки архитектуры программного обеспечения.
Анализ метрик качества программного обеспечения с точки зрения возможности их применения на этапе проектирования его архитектуры для получения точного или прогнозируемого значения позволяет выделить набор метрик, обладающих прогностическим значением на этапе проектирования:
- ожидаемая LOC-оценка (экспертом);
- метрика Холстеда – рассчитывается на основе анализа количества строк и элементов синтаксиса исходного кода программы;
- метрика Маккейба – цикломатическая сложность;
- метрика Гилба – относительная логическая сложность программы;
- расчетное количество операторов программы;
- прогнозная оценка сложности интерфейсов программных компонентов;
- предполагаемая общая продолжительность процесса разработки программного обеспечения – метрика процесса разработки программного обеспечения;
- продолжительность этапа проектирования ПО – метрика процесса разработки ПО;
- ожидаемая стоимость процесса разработки программного обеспечения;
- ориентировочная стоимость обеспечения качества – метрика процесса разработки программного обеспечения;
- прогнозируемая продуктивность процесса разработки программного обеспечения;
- прогнозируемые затраты на внедрение кода – показатель процесса разработки ПО;
- прогнозируемый функциональный размер ФП – измеряет сущность возможностей будущей программы;
- расчетные трудозатраты и сроки реализации проекта – по модели Боэма.
Итак, для построения интеллектуального метода оценки результатов проектирования архитектуры программного обеспечения и прогнозирования характеристик его качества были выбраны 9 метрик стадии проектирования с точными значениями и 15 метрик стадии проектирования программного обеспечения с прогнозируемыми значениями. Другие метрики являются производными от выбранных базовых метрик. Наиболее часто используемыми источниками информации о сложности программного обеспечения являются метрики: Нед Чапин, Дэйв Макклюр, Деннис Кафура, Морис Х. Холстед, Томас Дж. Маккейб и Том Гилб. Что касается качества программного обеспечения, для его оценки часто используются показатели связности, связности, ожидаемой стоимости разработки, прогнозируемой стоимости проверки качества, расчетной стоимости разработки, ожидаемой общей продолжительности процесса разработки программного обеспечения, прогнозируемой продолжительности этапа проектирования. Например, рассмотрим метрику Чапина и метрику Кафуры.
Метрика Чапина анализирует использование переменных из списка ввода-вывода, то есть соответствующей обрабатываемой информации. Существует несколько модификаций метрики Чапина.
Метрику Чапина можно рассчитать по формуле:
где:
– количество программных модулей;
– переменные для расчетов и вывода;
– измененные или созданные переменные в программе;
– управляющие переменные;
– неиспользуемые в программе («паразитные») переменные.
Метрика Кафура основана на потоке данных. Согласно информации, приведенной в [13], сложность программного обеспечения можно рассчитать по следующей формуле:
,
где:
– количество программных модулей;
– среднее количество процедур модуля, обновляющих структуру данных;
– среднее количество процедур модуля, считывающих информацию из структуры данных;
– среднее количество процедур модуля, которые считывают и обновляют структуру данных.
Количество программных модулей, исходя из приведенных формул метрики Чапина и Кафуры, можно определить как с использованием метрики Чапина
как при использовании метрики Кафура
Сравнив их между собой, мы получили формулу определения информационной сложности
Таким образом, метрика Кафура может быть рассчитана с использованием метрики Чапина (и наоборот), что указывает на их взаимную корреляцию.
Различные метрики отражают определенные особенности качества программного обеспечения [16]. Для всестороннего рассмотрения этих аспектов при оценке качества программного обеспечения используется не отдельная метрика, а их совокупность. Если получено значение нескольких метрик, то каждое такое значение должно быть умножено на соответствующий весовой коэффициент, установленный экспертами с учетом доминирующих критериев качества программного обеспечения по задачам, особенностям, его функциональному назначению и свойствам. После этого необходимо сложить все показатели, чтобы получить комплексную оценку уровня качества программного обеспечения или качества процесса проектирования его архитектуры. Наиболее важно применять достаточно большие наборы метрик качества к программному обеспечению на этапе проектирования его архитектуры, а на последующих этапах его разработки значение этих метрик может быть лишь уточнено.
Заключение
Разработан современный программный инструмент для определения качества программного обеспечения посредством метрического анализа, позволяющий рассчитывать соответствующие метрики с использованием показателей качества и определять значение комплексного показателя качества программного продукта. По результатам исследования можно сделать следующие выводы:
- Определены особенности процесса оценки качества ПО, что дало возможность выявить возможность его повышения за счет формирования соответствующих требований к критериям оценки качества, совершенствования моделей анализа метрики качества и методов ее количественного измерения на всех этапах реализации программы.
- Установлены особенности использования метрического анализа для определения качества программного обеспечения, согласно которым отсутствует единые стандарты для метрик, поэтому каждый поставщик измерительной системы предлагает свои методы оценки качества программного обеспечения и соответствующие показатели. Также сложной задачей является интерпретация значений метрик, так как для большинства пользователей и метрики, и их значения не вполне понятны и информативны.
- Выявлено, что основными параметрами при выборе варианта реализации программного обеспечения являются его стоимость и длительность процесса разработки, а также репутация компании-разработчика, однако решения, принимаемые на основе этих параметров, не всегда гарантируют надлежащее качество программного обеспечения.
- Разработан программный инструмент для определения качества ПО с помощью метрического анализа, обеспечивающий возможность прогнозирования дальнейшей эффективности процесса его разработки и позволяющий формировать соответствующий набор данных для определения стоимости ПО (комплексный показатель качества).
Список литературы
- Агравал А. и Маурья Л.С. (2014 г., январь). Внедрение нечеткой логики для оценки риска и качества программного обеспечения. Опубликовано на Национальной конференции в SRMS CET (с. 84-90). Получено с: https://www.academia.edu/6274907/Implementing_Fuzzy_logic_for_software_risk_and_quality_estimation.
- Агравал М. и Чари К. (2007). Программное обеспечение, качество и время цикла: исследование проектов CMM уровня 5. IEEE Transactions on Software Engineering, 33(3), 145-156. https://doi.org/10.1109/TSE.2007.29.
- Алебебисат Ф., Альхалхули З., Альшабатат Т.Э., и Альравашде Т.И. (2018, октябрь). Обзор литературы по качеству программного обеспечения. Журнал «Мир компьютерных наук и информационных технологий» (WCSIT), 8 (5), 32-42. Получено с: https://www.researchgate.net/publication/328495821_Review_of_Literature_on_Software_Quality.
- Аль-Кутаиш Р.Э. (2010). Модели качества в литературе по программной инженерии: аналитическое и сравнительное исследование. Журнал американской науки, 6 (3), 166–175. Получено с: https://www.researchgate.net/publication/228991952_Quality_Models_in_Software_Engineering_Literature_An_Analytical_and_Comparative_Study.
- Анас Бассам Аль-Бадарин, Мохд Хасан Селамат, Джамиля Дин, Марзана А. Джабар, Шерзод Тураев. (2011). Оценка качества программного обеспечения: мнение пользователей. Международный журнал прикладной математики и информатики, 3 (5), 200–207. Получено с: https://www.academia.edu/6752159/Software_Quality_Evaluation_User_s_View
- Анас Бассам Аль-Бадарин, Мохд Хасан Селамат, Мохд Хасан Селамат, Марзана А. Джабар, Марзана А. Джабар, Марзана А. Джабар, Шерзод Тураев, Шерзод Тураев. (2011). Модели качества программного обеспечения: сравнительное исследование. Коммуникации в области компьютерных и информационных наук, 179, 46–55. https://doi.org/10.1007/978-3-642-22170-5_4.
- Андон Ф.И., Коваль Г.И., Коротун Т.М., Суслов В.Ю. (2002). Основы инженерии качества программного обеспечения (Под ред. Сергиенко И.В.). Киев: Академпериодика. 504 стр. [На русском].
- Андрушкевич О.Т., Грицюк Ю.В. И. (2018). Используйте метрический анализ для определения качества программного обеспечения. Научные исследования: закономерности и парадоксы: сборник материалов междисциплинарной научно-практической конференции, (с. 23-29), 18 мая 2018 г., Киев, Украина. Киев: Юдина Л. И. 99 с. Получено с: http://futurolog.com.ua/publish/8/Zbirnyk.pdf. [На украинском языке].
- Ая Р. Элгебили. (2013, июнь). Проблемы качества программного обеспечения и практические рекомендации. В: Разработчик IBM. Получено с: http://www.ibm.com/developerworks/rational/library/softwarequality-challenges-practice-recommendations/.
- Азар Д., Харманани Х. и Коркмаз Р. (2009 г., сентябрь). Гибридный эвристический подход к оптимизации моделей оценки качества программного обеспечения на основе правил. Информационные и программные технологии, 51 (9), 1365–1376. https://doi.org/10.1016/j.infsof.2009.05.003.
- Бирла С. и Йоханссон М. (2014). Требования к качеству для программно-зависимых критических с точки зрения безопасности систем История, текущее состояние и будущие потребности. Ученый-семантик. Получено с: http://pbadupws.nrc.gov/docs/ML1424/ML14247A205.pdf.
- Боэг Дж. (2008). Новый стандарт требований к качеству. Программное обеспечение IEEE, 25(2), 57–63. https://doi.org/10.1109/MS.2008.30.
- Брауде Э. (2004). Технология разработки программного обеспечения. СПб.: Питерское издательство. 655 стр. [На русском].
- Кэри Д. (1996, январь). Является ли качество программного обеспечения внутренним, субъективным или относительным? Заметки по разработке программного обеспечения ACM SIGSOFT, 21 (1), 74–75. https://doi.org/10.1145/381790.565678.
- Чалла Дж. С., Пол А., Дада Ю., Нерелла В., Шривастава П. Р., и Сингх А. П. (2011). Интегрированная оценка качества программного обеспечения: нечеткий многокритериальный подход. Журнал систем обработки информации, 7 (3), 473–518. https://doi.org/10.3745/JIPS.2011.7.3.473.