Каждое ПС должно выполнять определенные функции, т.е. делать то, что задумано. Хорошее ПС должно обладать еще целым рядом свойств, по-зволяющим успешно его использовать в течение длительного периода, т.е. обладать определенным качеством. Качество (quality) ПС это совокупность его черт и характеристик, которые влияют на его способность удовлетворять заданные потребности пользователей. Это не означает, что разные ПС долж-ны обладать одной и той же совокупностью таких свойств в их наивысшей степени. Этому препятствует тот факт, что повышение качества ПС по одно-му из таких свойств часто может быть достигнуто лишь ценой изменения стоимости, сроков завершения разработки и снижения качества этого ПС по другим его свойствам. Качество ПС является удовлетворительным, когда оно обладает указанными свойствами в такой степени, чтобы гарантировать успешное его использование. Совокупность свойств ПС, которая образует удовлетворительное для пользователя качество ПС, зависит от условий и характера эксплуатации это-го ПС, т.е. от позиции, с которой должно рассматриваться качество этого ПС. Поэтому при описании качества ПС, прежде всего, должны быть фиксирова-ны критерии отбора требуемых свойств ПС. В настоящее время критериями качества ПС (criteria of software quality) принято считать: - функциональность; - надежность; - легкость применения; - эффективность; - сопровождаемость; - мобильность. Функциональность - это способность ПС выполнять набор функций, удовлетворяющих заданным или подразумеваемым потребностям пользова-телей. Набор указанных функций определяется во внешнем описании ПС. Надежность (reliability) ПС - это его способность безотказно выпол-нять определенные функции при заданных условиях в течение заданного пе-риода времени с достаточно большой вероятностью. При этом под отказом в ПС понимают проявление в нем ошибки. Таким образом, надежное ПС не исключает наличия в нем ошибок - важно лишь, чтобы эти ошибки при практическом применении этого ПС в заданных условиях проявлялись доста-точно редко. Убедиться, что ПС обладает таким свойством можно при его испытании путем тестирования, а также при практическом применении. Та-ким образом, фактически мы можем разрабатывать лишь надежные, а не пра-вильные ПС. При оценке степени надежности ПС следует также учитывать послед-ствия каждого отказа. Некоторые ошибки в ПС могут вызывать лишь некото-рые неудобства при его применении, тогда как другие ошибки могут иметь катастрофические последствия, например, угрожать человеческой жизни. Поэтому для оценки надежности ПС иногда используют дополнительные по-казатели, учитывающие стоимость (вред) для пользователя каждого отказа. Легкость применения - это характеристики ПС, которые позволяют минимизировать усилия пользователя по подготовке исходных данных, при-менению ПС и оценке полученных результатов, а также вызывать положи-тельные эмоции определенного или подразумеваемого пользователя. Эффективность - это отношение уровня услуг, предоставляемых ПС пользователю при заданных условиях, к объему используемых ресурсов. Сопровождаемость - это характеристики ПС, которые позволяют минимизировать усилия по внесению изменений для устранения в нем оши-бок и по его модификации в соответствии с изменяющимися потребностями пользователей. Мобильность - это способность ПС быть перенесенным из одной сре-ды (окружения) в другую, в частности, с одной ЭВМ на другую. Функциональность и надежность являются обязательными критерия-ми качества ПС, причем обеспечение надежности будет красной нитью про-ходить по всем этапам и процессам разработки ПС. Остальные критерии ис-пользуются в зависимости от потребностей пользователей в соответствии с требованиями к ПС. Для конкретизации качества ПС по каждому из критери-ев используется стандартизованный набор достаточно простых свойств ПС, однозначно интерпретируемых разработчиками. Такие свойства мы будем называть примитивами качества ПС. Некоторые из примитивов могут ис-пользоваться по нескольким критериям. Ниже приводится зависимость кри-териев качества от примитивов качества ПС. Функциональность: завершенность. Надежность: завершенность, точность, автономность, устойчивость, защищенность. Легкость применения: П-документированность, информативность (только применительно к документации по применению), коммуникабель-ность, устойчивость, защищенность. Эффективность: временнáя эффективность, эффективность по ресур-сам (по памяти), эффективность по устройствам. Сопровождаемость. С данным критерием связано много различных примитивов качества. Однако их можно распределить по двум группам, вы-делив два подкритерия качества: изучаемость и модифицируемость. Изучаемость это характеристики ПС, которые позволяют миними-зировать усилия по изучению и пониманию программ и документации ПС. Модифицируемость это характеристики ПС, которые позволяют ав-томатически настраивать на условия применения ПС или упрощают внесе-ние в него вручную необходимых изменений и доработок. Изучаемость: С-документированность, информативность (здесь при-менительно к документации по сопровождению), понятность, структуриро-ванность, удобочитаемость. Модифицируемость: расширяемость, модифицируемость (в узком смысле, как примитив качества), структурированность, модульность. Мобильность: независимость от устройств, автономность, структури-рованность, модульность. Ниже даются определения используемых примитивов качества ПС. Завершенность (completeness) - свойство, характеризующее степень обладания ПС всеми необходимыми частями и чертами, требующимися для выполнения своих явных и неявных функций. Точность (accuracy) - мера, характеризующая приемлемость величи-ны погрешности в выдаваемых программами ПС результатах с точки зрения предполагаемого их использования. Автономность (self-containedness) - свойство, характеризующее спо-собность ПС выполнять предписанные функции без помощи или поддержки других компонент программного обеспечения. Устойчивость (robustness) - свойство, характеризующее способность ПС продолжать корректное функционирование, несмотря на неправильные (ошибочные) входные данные. Защищенность (defensiveness) - свойство, характеризующее способ-ность ПС противостоять преднамеренным или нечаянным деструктивным (разрушающим) действиям пользователя. П-документированность (u. documentation) - свойство, характери-зующее наличие, полноту, понятность, доступность и наглядность учебной, инструктивной и справочной документации, необходимой для применения ПС. Информативность (accountability) - свойство, характеризующее на-личие в составе ПС информации, необходимой и достаточной для понимания назначения ПС, принятых предположений, существующих ограничений, входных данных и результатов работы отдельных компонент, а также теку-щего состояния программ в процессе их функционирования. Коммуникабельность (communicativeness) - свойство, характеризую-щее степень, в которой ПС облегчает задание или описание входных данных, и способность выдавать полезные сведения в достаточно простой форме и с простым для понимания содержанием. Временнáя эффективность (time efficiency) - мера, характеризующая способность ПС выполнять возложенные на него функции в течение опреде-ленного отрезка времени. Эффективность по ресурсам (resource efficiency) - мера, характери-зующая способность ПС выполнять возложенные на него функции при опре-деленных ограничениях на используемые ресурсы (используемую память). Эффективность по устройствам (device efficiency) - мера, характе-ризующая экономичность использования устройств машины для решения по-ставленной задачи. С-документировапнность (documentation) - свойство, характеризую-щее с точки зрения наличия документации, отражающей требования к ПС и результаты различных этапов разработки данной ПС, включающие возмож-ности, ограничения и другие черты ПС, а также их обоснование. Понятность (understandability) - свойство, характеризующее степень, в которой ПС позволяет изучающему его лицу понять его назначение, сде-ланные допущения и ограничения, входные данные и результаты работы его программ, тексты этих программ и состояние их реализации. Структурированность (structuredness) - свойство, характеризующее программы ПС с точки зрения организации взаимосвязанных их частей в единое целое определенным образом (например, в соответствии с принципа-ми структурного программирования). Удобочитаемость (readability) - свойство, характеризующее легкость восприятия текста программ ПС (отступы, фрагментация, форматирован-ность). Расширяемость (augmentability) - свойство, характеризующее спо-собность ПС к использованию большего объема памяти для хранения данных или расширению функциональных возможностей отдельных компонент. Модифицируемость (modifiability) - мера, характеризующая ПС с точки зрения простоты внесения необходимых изменений и доработок на всех этапах и стадиях жизненного цикла ПС. Модульность (modularity) - свойство, характеризующее ПС с точки зрения организации его программ из таких дискретных компонент, что изме-нение одной из них оказывает минимальное воздействие на другие компо-ненты. Независимость от устройств (device independence) - свойство, ха-рактеризующее способность ПС работать на разнообразном аппаратном обеспечении (различных типах, марках, моделях ЭВМ).