2. Критерии качества программного обеспечения

Выше было показано, что качество и его оценка в случае с программным обеспечением вычислительных систем – это сложное, не формализуемое и не имеющее однозначной оценки понятие. Тем не менее, отрасль «управление и оценка качества» складывается, и как следствие формируются необходимые понятия и представления на основе научных трудов, стандартов корпораций и отраслевых государственных стандартов.

В [1] приводится достаточно подробная классификация критериев (факторов) качества программного обеспечения. При этом, анализ различных источников показывает, что данные термины наиболее применимы и поддерживаются большинством.

Все критерии качества делятся на «внешние», которые может обнаружить пользователь программного обеспечения, и «внутренние», которые видят только разработчики, создающие это программное обеспечение.

Внешние факторы, которые в том числе описаны в стандарте ИСО 9126:

  1. корректность
  2. устойчивость
  3. расширяемость
  4. повторное использование
  5. совместимость, эффективность
  6. переносимость
  7. простота использования
  8. функциональность
  9. своевременность

Примеры внутренних факторов: читаемость, модульность, легкость обнаружения ошибок.

Необходимо отметить, что термины «программное обеспечение» и «конечный пользователь» нужно понимать не только как «конечные прикладные программы» и «оператор или пользователь вычислительной системы», но и как «библиотеки» и «разработчик, использующий библиотеку». Следовательно, такие факторы, как расширяемость и повторное использование, не видны конечному пользователю.

На сегодняшний день большая часть создаваемого программного обеспечения вычислительных систем в мире – это библиотеки и API (к таким продуктам относятся не только библиотеки стандартных классов, такие как STL или Collection Framework, но и, например, ядра операционных систем) и они не являются самостоятельными программными продуктами.

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

Полученные библиотеки могут быть не столь жестко регламентированы, как API ядра операционной системы, которое очень опасно менять от версии к версии. Однако требования к качеству проектирования внутренних интерфейсов никто не отменял, и чем лучше они будут разработаны, тем меньше проблем возникает при их использовании. Кроме того, многие приложения имеют внешние библиотеки для расширения (так называемые plug–in), которые очень близки к API операционных систем.