В настоящее время не существует общепринятых критериев качества программного обеспечения.
Классическое определение качества заключается в том, что разработанный программный продукт подтверждает свою спецификацию, при этом спецификация должна быть ориентирована на характеристики, которые желает получить клиент.
Современные стандарты уточняют понятие качества, вводя совокупность черт и характеристик, которые влияют на его способность удовлетворять заданные потребности пользователей.
Перечислим ряд таких характеристик:
• Функциональность (пригодность, точность, интер операбельность, согласованность, безопасность). Функциональность - это способность программного продукта выполнять набор функций, удовлетворяющих заданным или подразумеваемым потребностям пользователей. Набор таких функций определяется во внешнем описании программного продукта.
• Надежность (завершенность, устойчивость, восстанавливаемость).
• Удобство (понимаемость, эффективность освоения, эргономичность). Удобство - это характеристики программного продукта, которые позволяют минимизировать усилия пользователя по подготовке исходных данных, применению программного продукта и оценке полученных результатов, а также вызывать положительные эмоции определенного или подразумеваемого пользователя.
• Эффективность (по времени и по ресурсам). Эффективность - это отношение уровня услуг, предоставляемых программным продуктом пользователю при заданных условиях, к объему используемых ресурсов.
• Сопровождаемостъ (простота анализа, изменяемость, стабильность, проверяемость). Сопровождаемость - это характеристики программного продукта, позволяющие минимизировать усилия по внесению изменений для устранения в нем ошибок и по его модификации в соответствии с изменяющимися потребностями пользователей.
• Переносимость (адаптируемость, гибкость инсталляции, согласованность со стандартами и правилами, заменяемость). Переносимость - это способность программного продукта быть перенесенным из одной среды в другую, в частности, с одной аппаратной архитектуры на другую.
• Добротность (рациональная организация, продуманность, непереусложненность).
Две наиболее интересные характеристики рассмотрим подробнее.
Надежность - это способность программы безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью. Надежный программный продукт не исключает наличия в нем ошибок. Здесь важно, чтобы ошибки при практическом применении в заданных условиях проявлялись достаточно редко. Степень надежности характеризуется вероятностью работы программного продукта без отказа в течение определенного периода времени.
Существуют следующие подходы по обеспечению надежности:
Задавайте вопросы нашему консультанту, он ждет вас внизу экрана и всегда онлайн специально для Вас. Не стесняемся, мы работаем совершенно бесплатно!!!
Также оказываем консультации по телефону: 8 (800) 600-76-83, звонок по России бесплатный!
• предупреждение ошибок;
• самообнаружение ошибок;
• самоисправление ошибок;
• обеспечение устойчивости к ошибкам.
Добротность программы заключается в том, что программа разумно и рационально организована, с достаточно продуманной организацией потоков управления и информационных потоков, не слишком переусложнена. Понятие добротности введено Поттосиным для оценки внутренних достоинств реализации программы с технической стороны.
Поттосин вводит четыре класса критериев добротности программ:
• Количественные критерии, связанные с различными способами оценки (метриками) сложности программ. Укажем примеры численных характеристик.
- Меры Холстеда, включающие ряд формул, оценивающих длину, объем, уровень и интеллектуальное содержание программ.
- Оценка сложности управляющего графа программы. Фрагмент программы может быть оценен цикломатическим числом ее управляющего графа, которое равно m - n + 2, где m - число дуг, an - число вершин управляющего графа. Считается, что цикломатическое число не должно превышать 10.
- Оценка модульного разбиения программы. Такая оценка должна состоять из множества критериев. Например, сложность модуля оценивается совокупностью сложности определяемых в нем процедур и сложности связей модуля с другими модулями по импорту и экспорту определяемых сущностей.
• Генетические критерии, связанные с происхождением программы и дисциплиной ее создания.
• Структурные критерии, связанные с оценкой организации управления в программе и отражением организации управления в программном тексте.
• Прагматические критерии, связанные с оценкой того, насколько программный текст соответствует цели программы. Формулируется список излишеств, которых не должно быть в добротных программах, например - вычислительной избыточности.