Оценка качества ПО (лекция по программной инженерии)

 

  Главная       Техника      Программная инженерия (лекции и тесты) - 2020 год

 поиск по сайту           правообладателям

 

 

 

 

 

 

 

 

 

 

 

 

содержание      ..     4      5      6      7     ..

 

 

 

 

Оценка качества ПО (лекция по программной инженерии)

 

 

 

Так как программная  инженерия рассматривает программные системы как программные продукты, т.е. товары, предназначенные для широкого использования, то понятие качества ПП как и любого другого продукта, выходит на первый план. Ранее мы определили качественную программу как программу, выполняющая заранее объявленные действия известным способом и не выполняющая никаких необъявленных действий. Напомним также, что качество является одним и трех критериев успешности программного проекта. Рассмотрим это понятие подробнее.

В терминологическом стандарте ИСО 8402 дано следующее определение качества.  Качество - совокупность свойств и характеристик изделий или услуг, обеспечивающих удовлетворение установленных или предполагаемых потребностей.

Очевидно, что потребность – относительная величина. Следовательно, возникает вопрос о чьих именно  потребностях идет речь в случае ПП.

В качестве программной продукта заинтересованы три стороны: заказчик, пользователь и разработчик. Для заказчика качественная ПС, это система, позволяющая эффективно и безопасно решать его бизнес-задачу. Для пользователя качественная ПС, это система, позволяющая удобно, быстро и эффективно решать его задачи (например, исполнять должностные обязанности), не создавая дополнительных проблем.

Таким образом заказчика и пользователя интересует так называемые характеристики пользовательского качества ПП:

·         Эффективность (Effectiveness)

·         Производительность (Productivity)

·         Безопасность (Safety)

·         Соответствие потребностям (Satisfaction)

Заказчика и пользователя, как правило, не интересует с помощью каких аппаратных и программных средств был создан программный продукт, какие организационные и технические решения были использованы при его разработке. Таким образом, заказчика и пользователя ПП интересует так называемое внешнее качество продукта.

Разработчик заинтересован в качестве ПП так как  рассчитывает на получение прибыли от программного проекта. Для этого в общем случае необходимо установить долговременные отношения с заказчиком, сопровождать  разработанный ПП (поддержка может давать до 70% прибыли!), создать положительный имиджа компании для привлечения новых заказчиков. Поэтому разработчика интересует не только то, чтобы программа удовлетворяла требованиям заказчика, но и чтобы эффективно разрабатывалась (начиная от этапа подготовки и заканчивая тестированием), легко внедрялась, сопровождалась и модифицировалась. Для этого необходимо оценить множество факторов, которые условно можно разделить на две категории: используемые для разработки средства (программные, аппаратные, финансовые, людские) и технологии (методы применяемые на всех этапах ЖЦ, процедуры принятия решений и т.д.).  Система действий, обеспечивающих разработку качественного продукта на всех этапах, начиная от замысла до эксплуатации готового продукта, называется системой управления качеством. Таким образом для разработчика на первый план выходят, так называемое внутреннее качество ПО.

При сборе и анализе требований и составлении технического задания одной из основных проблем является согласование фактически разных представлений внешнего и  внутреннего качества. Искусство проектировщика во многом заключается в том, чтобы правильно проинтерпретировать представления заказчика и потенциальных пользователей о пользовательском качестве программы в терминах её внутреннего качества.

Характеристики качества ПО описаны в международном стандарте ISO/IEC 9126-1 и его российском аналоге ГОСТ Р ИСО/МЭК 9126-93.

В стандарте определяется шесть групп характеристик, которые описывают различные аспекты качества программного продукта (ПП):

·         Функциональность (Functionality)

·         Надежность (Reliability)

·         Удобство использования (Usability)

·         Эффективность (Efficiency)

·         Сопровождаемость (Maintainability)

·         Мобильность (Portability)

Эти характеристики могут применяться к любому виду ПП.

Так как конкретные характеристики существенно зависят от особенностей разработки и применения программ, стандарт не регламентирует, а только рекомендует подхарактеристики (комплексные показатели) и показатели, а также методы их измерения, ранжирования, оценки и использования.

Рассмотрим характеристики каждой из групп.

В группе «Функциональность» выделятся следующие характеристики.

  • Пригодность  (Suitability) - предоставление необходимого набора функциональности и данных для решения бизнес-задачи  (Очевидно, что самая качественная программа бессмысленна если она не решает исходную бизнес-задачу. Для решения исходной бизнес-задачи программа должна иметь не только соответствующая функциональность, но правильный и достаточный набор данных)
  • Правильность (Accuracy)  - правильные и ожидаемые результаты или эффекты, получаемые с необходимой точностью (Программа должна выдавать корректный результат с необходимой заказчику точностью )
  • Способность к взаимодействию (Interoperability) -  способность к взаимодействию с другими системами. (Например, совместимость форматов данных, совместимость справочников БД , совместимость протоколов передачи данных, технология Drag&drop, использование  формата XML,  позволяющего создавать удобные протоколы взаимодействия)
  • Защищенность (Security) - защита информации и данных для исключения неавторизированного  доступа людей или систем к чтению и модификации данных. (например, защита от неавторизированного доступа к системе/данным, ролевая система защиты, шифрование данных, административные меры ), Защита может быть активной (защита от перебора логина/пароля, ролевой доступ и т.д.)  и пассивной (сообщения о выполнении операций с банковской картой, отображение времени последнего посещения сайта  и т.п.)
  • Согласованность (с действующими стандартами) (Compliance) -  выполнение всех необходимых законов и стандартов, связанных с функциональностью.

В группе «Надежность» выделятся следующие характеристики.

  • Стабильность (Maturity) - стабильная работа продукта. Стабильность работы характеризуется частотой отказов. Нестабильность может возникать из-за ошибок в программе. При нестабильной работе пользователь и заказчик несет постоянные потери времени и, возможно, теряет прибыль. Кроме того, нестабильность системы раздражает пользователя. Следовательно при частых отказах из-за ошибок в системе заказчик будет искать другую, более стабильную систему.
  • Устойчивость к ошибке (Fault tolerance)  - обеспечение качественной работы даже при наличии ошибок.    В любой системе есть ошибки, либо ошибки могут возникать во внешних системах. Поэтому при работе с любой системой актуальны два вопроса: Можно ли продолжить работать с системой  после возникновения ошибки и Корректно ли реагирует система на ошибки во внешних системах? В ответами на эти вопросы связаны два важных понятия: отказобезопасность и отказоустойчивочть системы. Отказобезопасность – переход в специальный режим работы, не представляющий угрозы для людей, окружающей среде и материальным ресурсам. Отказоустойчивость – способность системы правильно функционировать при отказе ее частей.
  • Восстанавливаемость (Recoverability) - возможность восстановить данные после ошибки и время и усилия необходимые для этого.  Для заказчика важно, чтобы при возникновении в системе сбоя, он был устранен в приемлемое для него время, а дынные сохранились бы приемлемом состоянии. Для этого в любой системе должен осуществляться контроль транзакций. Транзакция – группа операций, рассматриваемая пользователем как единое целое, иными словами, это группа операторов, выполняемая либо целиком либо не выполняемая совсем. Транзакция имеет четыре основных свойства: (ACID = атомарность, согласованность, изолированность, долговечность. Атомарность – транзакция должна выполняться полностью и не может быть зафиксирована частично.   Согласованность – система должна находиться в согласованном состоянии до и после выполнения транзакции (но не в ходе выполнения транзакции) .  Изолированность – никакие другие системы не должны видеть промежуточные результаты работы транзакций.  Долговечность – если пользователь получил подтверждение выполнения транзакции, то он может быть уверен, что эти изменения уже никогда не будут отменены из-за сбоев/
  • Согласованность (со стандартами надежности) (Reliability compliance) - выполнение необходимых стандартов по надежности.

В группе «Удобство использования» выделятся следующие характеристики.

  • Понятность (Understand ability)  - усилия пользователя по пониманию применимости программы, как выполнить конкретные задачи и что для этого нужно
  • Обучаемость (Learn ability)  - усилия пользователя по обучению работе с программой.
  • Простота использования (Operability) - усилия пользователя при использовании программы.
  • Привлекательность (Attractiveness)  - привлекательность  программы  для  пользователя  (например, пользовательский интерфейс UI).
  • Согласованность(со стандартами удобства)  (Compliance)  - соответствие стандартам, связанным с юзабилити.

 

В группе «Эффективность» выделятся следующие характеристики

  • Характер изменения во времени  (Time behavior) - время отклика и обработки данных, скорость выполнения функций. Слишком долгий отклик воспринимается  пользователем как ―зависание системы. Например, максимальным приемлемым временем отклика для веб-приложений считается 5 секунд. Для длительных операций рекомендуется использовать  окно  отображения прогресса.
  • Характер изменения ресурсов (Resource behavior) - объем используемых ресурсов и время занятости ресурсов. Система должна занимать только те ресурсы, которые необходимы для ее работы и только на тот момент времени, когда они реально необходимы. К ресурсам относятся:  память, место на диске, процессор, соединение с БД, внешние системы. Для оптимизации доступа к ресурсам можно использовать кэширование.
  • Согласованность (со стандартами эффективности)  (Compliance) - Выполнение необходимых стандартов по эффективности.

В группе «Сопровождаемость» выделятся следующие характеристики

  • Анализируемость (Analyzability) - усилия, необходимые для диагностики проблем. Для диагностики проблем используются: логи работы системы, диагностические переменные/данные, внешние системы диагностики. При проектировании системы логирования нужно понять - что именно планируется найти в логе.  Иначе большая вероятность не найти в нем нужной информации в нужный момент времени. Примеры логов: Windows Event Log, файлы, БД и т.д. Заметим, что слишком подробный лог замедляет работу системы, слишком поверхностный – не позволит проанализировать ситуацию. Диагностическое окно – специальное окно, отображающее внутренние данные системы. Сообщения об ошибках должны быть 

-          адекватными

-          соответствовать реальной ситуации

-          давать пользователю информацию о месте возникновения ошибки

-          давать пользователю понять как исправить ошибку

-          не пугать обилием технической информации (оптимально – кнопка «Подробнее»)

  • Изменяемость  (Changeabi1ity) - возможность модификации системы, возможность внесения изменений для исправления дефектов.  Чем проще внести изменения в систему, тем  меньше себестоимость, тем больше прибыль. На сопровождении можно заработать до 70% прибыли. Изменяемость достигается уменьшением связанности модулей системы. Уровни уменьшения связанности: классы, интерфейсы, модули, plug-ins, сервисы.  
  • Устойчивость  (Stabi1ity) - возникновение проблем от внесения изменений. Наличие юнит-тестов значительно повышает устойчивость к изменениям
  • Тестируемость  (Testabi1ity) - усилия, необходимые для проверки системы после внесения. изменений.  Замечание: тестируемость важна не только после внесения изменений, но и при разработке.
  • Согласованность (со стандартами сопровождаемости)  (Compliance) - выполнение необходимых стандартов по сопровождаемости.

В группе «Мобильность» выделятся следующие характеристики

  • Адаптируемость  (Adaptabi1ity)  - возможность адаптации продукта к новым условиям работы только средствами, предусмотренными в продукте. Продукт должен иметь возможности настройки, достаточные для работы: файлы конфигурации, окна настроек приложения, выбор расположения файлов данных, выбор строки подключения к БД, выбор расположения результирующих файлов.  
  •  Простота внедрения (Installabi1ity)  - простота установки и внедрения продукта. В идеальном случае – наличие полного инсталляционного пакета. Минимум действий по установке. Подробная инструкция по установке. Подробные диагностические сообщения при ошибках установки системы. 
  • Совместимость (Co-existence) - возможность сосуществования продукта с другими.
  • Взаимозаменяемость (Rep1aceabi1i1y) - возможность замены продукта на аналогичный.
  • Согласованность (со стандартами мобильности)  (Compliance) - соответствие стандартам мобильности.

 

Разработчику предоставляется возможность самому отобрать важные для программы характеристики из предлагаемого набора. Использование данного стандарта обеспечивает единство понимания и измерения характеристик качества ПП.

 

 

 

 

 

 

 

 

 

содержание      ..     4      5      6      7     ..