Качество есть совокупность свойств

Качество программного обеспечения можно определить массой способов. Здесь я хочу представить определение, прошедшее самое долгое испытание временем.

Под качеством в индустрии ПО понимают совокупность семи свойств,которыми должен обладать программный продукт: переносимости (portability), надежности (reliability), эффективности (efficiency), удобства в использовании (usability, или учета человеческого фактора), тестируемости(testability), понятности (understandability) и модифицируемости (modifiability). Разные специалисты дают этим свойствам не совсем одинаковые названия, но данный список принят подавляющим большинством и существует почти тридцать лет.
Каков же смысл этих свойств?

  1. Переносимость означает, что программный продукт можно без труда перенести на другую платформу.
  2. Надежность – это свойство программного продукта надлежащим образом выполнять свои функции.
  3. Под эффективностью программного продукта понимают экономное расходование им времени и занимаемого места.
  4. Принятие в расчет человеческого фактора (что называют также словом «юзабилити») подразумевает, что с программным продуктом легко и удобно работать.
  5. Тестируемость ПО есть не что иное, как свойство, характеризующее легкость его тестирования.
  6. Понятность ПО – это свойство, характеризующее, насколько легко
  7. (или трудно) специалисту, сопровождающему программный продукт, понять его работу.
  8. Модифицируемым называют ПО, изменение которого не вызывает трудностей.

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

Например, обычные приоритеты для среднестатистического продукта могли бы быть такими:

  1. Надежность (если продукт не работает надлежащим образом, то остальные его свойства не имеют большого значения).
  2. Учет человеческого фактора (огромное внимание, уделяемое графическим интерфейсам пользователя в настоящее время, лучше всяких слов говорит о большом значении удобства работы с продуктом).
  3. Понятность и модифицируемость (любое ПО, стoящее затраченного на него труда, вероятно, будет долго сопровождаться и поддерживаться).
  4. Эффективность (сам удивлен, что поместил это свойство на столь низкую позицию; для некоторых приложений оно будет на первом месте).
  5. Тестируемость (предпоследнее свойство, но это не уменьшает его важность, поскольку оно может самым прямым путем привести к надежности ПО, а надежность я поставил на первое место).
  6. Переносимость (для многих приложений это свойство вообще не имеет значения, а для других может иметь первостепенную важность).

Не удивляйтесь, если приведенный мною порядок не совпадет с вашим.

(с) Роберт Гласс. Факты и заблуждения профессионального программирования. Факт #46.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *