2.1. Внешние факторы качества
Рассмотрим внешние факторы качества программного обеспечения (т.е. не только приложений, но и различных библиотек или иные API).
Корректность. Программное обеспечение должно функционировать в соответствии с техническим заданием, другими словами, должно делать то, что от него ждут и не содержать ошибок.
Устойчивость. Нештатные и аварийные ситуации, которые могут возникнуть во время эксплуатации программного обеспечения вычислительных систем, не должны приводить к плачевным последствиям.
Расширяемость. «Software must be soft» — программное обеспечение должно быть гибким, т.е. развиваться в соответствии с потребностями пользователей.
Повторное использование. Любой компонент программного обеспечения должен обладать возможностью повторного использования. Это помогает избежать дублирования кода и «размножения ошибок».
Совместимость. Программное обеспечение должно корректно работать в окружении другого программного обеспечения.
Эффективность — это способность программного обеспечения как можно меньше зависеть от ресурсов оборудования [1]. Программа должна работать за приемлемое время на как можно более широком круге вычислительных систем (имеются в виду различные по производительности конфигурации, но одной и той же платформы).
Переносимость. Программное обеспечение должно легко переноситься между различными вычислительными системами.
Простота использования. Освоение программного обеспечения не должно вызывать затруднений для конечного пользователя.
Функциональность. Программное обеспечение не должно уметь больше, чем необходимо, поскольку это делает ее громоздкой для конечного пользователя и осложняет дальнейшее развитие, при этом программное обеспечение должно быть корректным, т.е. делать то, что от него требует пользователь.
Своевременность. Программное обеспечение должно появляться ровно тогда, когда оно необходимо. Если выход задерживается, то вероятнее всего, в нем уже не будет смысла для конечного пользователя либо он понесет убытки.
Два последних критерия особенно актуальны для коммерческих потребителей, заказывающих разработку программного обеспечения, хотя они актуальны не только для них. Программное обеспечение с недостаточной функциональностью (корректное программное обеспечение со слишком бедной спецификацией) не сможет конкурировать с более развитыми продуктами. Так и программное обеспечение, созданное слишком поздно, дает фору по времени конкурентам, которые успевают завоевать рынок и конечных пользователей.
При всем этом, критерии влияют друг на друга и не всегда положительно. Так избыточная функциональность влияет, в частности, и на своевременность, поскольку разрабатывать большее количество функций дольше и дороже.
Естественно, что приведенный список внешних факторов качества ПО не является полным, но он наиболее широко используется и не противоречит требованиям ИСО 9126, т.е. содержит лишь наиболее значимые факторы. Возможно предложить ряд критериев, применимых исключительно к коммерческим системам — это, например, стоимость, однако мы их рассматривать не будем.