- •Анализ требований к проекту
- •Проектирование
- •Реализация
- •Тестирование продукта
- •Внедрение и поддержка
- •Глава 1. Способы формального представления знаний1.1 История в информатике
- •Критерий оценки качества программного обеспечения.
- •12.Стандартизация информационных технологий Стандартизация в области информационных технологий.
- •1. Стандартизация и метрология в разработке программного обеспечения. Оценка качественных и количественных характеристик программного обеспечения.
- •2. Цели и принципы стандартизации, подтверждение соответствия, добровольная сертификация, системы сертификации программных средств.
- •Показатели надежности и факторы, влияющие на надежность
- •Математические модели надёжности комплексов программ
- •Методы проектирования надежного по: обнаружение ошибок
- •Методы проектирования надежного по: обеспечение устойчивости к ошибкам
- •24. Понятие избыточности по
- •Временная избыточность
- •Информационная избыточность
- •Программная избыточность
Критерий оценки качества программного обеспечения.
Разработка программного обеспечения - это, прежде всего, нахождение способов получения качественного программного продукта. Что мы подразумеваем, когда мы говорим о "качестве" программного обеспечения? Качество программного обеспечения может измеряться во внешних характеристиках (например, легкий в использовании, выполняется быстро) или во внутренних характеристиках (например, модульная конструкция, читабельный код). Внешние метрики - единственные, которые, в конце концов, действительно имеют значение. Никто, на самом деле, не заботится, насколько хорошую модульную конструкцию вы использовали при создании программы. Всех только заботит, чтобы она хорошо выполнялась. Однако, внутренняя (скрытая) метрика является ключом к созданию внешних, и при этом необходимо учитывать правила конструирования программ и технику программирования. В таблице 1 приводится список наиболее общих внешних факторов, найденных в качественном программном обеспечении. Более подробно некоторые из них будут рассмотрены ниже.
Таблица 1.
Характеристики качества программного обеспечения
Фактор |
Означает |
Корректность (правильность) |
Обеспечивает правильную обработку на правильных данных |
Устойчивость |
"Элегантно" завершает обработку ошибок |
Расширяемость |
Может легко адаптироваться к изменяющимся требованиям |
Многократность использования |
Может использоваться и в других системах, а не только в той, для которой было создано. |
Совместимость |
Может легко использоваться с другим программным обеспечением |
Эффективность |
Эффективное использование времени, компьютерной памяти, дискового пространства и т.д. |
Переносимость |
Можно легко перенести на другие аппаратные и программные средства |
Верификация |
Простота проверки, легкость разработки тестов при обнаружении ошибок, легкость обнаружения мест, где программа потерпела неудачу, и т.д. |
Поддержка целостности |
Защищает себя от неправильного обращения и неправильного употребления |
Легкость использования |
Для пользователя и для будущих программистов |
Корректность и устойчивость
Легко спутать термины "Корректная программа" и "Устойчивая программа". Корректная программа работает, когда поданы на вход правильные данные. Она отвечает всем требованиям к спецификации данных и не терпит неудачу внутри заданного диапазона. Устойчивость подразумевает не только правильность. Устойчивая программа способна обработать ситуации, не запланированные проектом. Эти ситуации включают некорректный ввод пользователя, аппаратный отказ и ошибки во время выполнения программы. Устойчивые системы терпят неудачу элегантно, без потери критических данных. Легко увидеть, что обе характеристики необходимы для любой системы, которая будет оценена как высококачественное программное обеспечение. Если система некорректна, то она бесполезна. Если система неустойчива, то она окажется неспособной справиться с задачей в реальной ситуации.
Расширяемость
Требований меняются. Это - один из бесспорных фактов процесса разработки программного обеспечения. Высококачественная программа способна иметь дело с этими изменениями относительно безболезненно. Этот сорт адаптируемости - не является существенным для малых проектов, но становится определяющим, когда происходит "программирование в большом". Два основных принципа создания расширяемого программного обеспечения:
Простота проекта. Более простые проект и архитектура позволяют произвести изменения намного быстрее и легче, чем при сложном проекте.
Децентрализация. Разбиение сложных проблем на малые. Управляемость и независимость фрагментов, означающая, что они могут быть поделены внутри себя. Это значит, что изменения, могут быть выполнены без перекраивания других частей системы.
Эти принципы позволяют нам понять проблему в частях без опасения затеряться в несметном количестве непостижимых подробностей.
Многократность (повторность) использования и совместимость
Многократное использование может просматриваться на различных уровнях: при анализе, проектировании, и реализации. Оно поддерживает качество следующими способами:
Если проекты и код могут повторно использоваться, то мы можем начинать с уже проверенных, опробованных и правильных компонент, качество которых уже является высоким.
Время и энергия, сохраненные через многократное использование, могут применяться для улучшения других характеристик качества программы (например, корректности или устойчивости).
Совместимость программного обеспечения - мера того, насколько просто объединить различные программные изделия вместе для нового применения. Основы совместимости вытекают из общих проектных решений. Например, файловая система UNIX разработана таким образом, чтобы позволить малым инструментальным средствам хорошо работать вместе при решении сложных проблем. Противоположным примером является типичный беспорядок при совместной подготовке текстов и графических изображений. В этом случае, большие усилия должны быть затрачены на создание транслятора, которые позволяет одной программе работать с другой.
Совместимость и многократное использование идут "взявшись за руки", потому что повторно используемое программное обеспечение (например, plug&play компоненты) должно быть совместимо с его новым окружением. Совместимое программное обеспечение поддерживает качество посредством использования прошлых усилий и подпорок при формировании новых систем. Программное обеспечение с низким коэффициентом совместимости требует огромных усилий, чтобы настроить систему на необходимое использование. Это усилие могло быть потрачено на проектирование лучшей системы или на улучшение эффективности кода.
Характеристика качества ПИ
|
Понятность – легкость понимания документации, сопровождающей ПИ.
Каждое ПИ должно создаваться с учетом требований пользователя, определенных в техническом задании.
Все это может быть обеспечено, если ПИ описано ясным, лаконичным языком, без излишних повторений, с необходимыми ссылками.
Характеристики понятности:
Информативность ПИ – ПИ обладает информативностью, если оно содержит информацию, обеспечивающую понимание назначения ПИ, принятых ограничений, смыслового значения результатов работы отдельных компонентов ПИ.
Открытость ПИ – дает возможность понять назначение каждого оператора ПИ при чтении ее текста, т.е. каждый из идентификаторов должен нести смысловую нагрузку, например, SUM= CENA*KOL.
Согласованность ПИ – бывает внутренняя и внешняя.
Внутренняя согласованность должна обеспечивать единую терминологию, единую трактовку понятий и значений. Особое значение эта характеристика приобретает при создании программных комплексов, когда над проектом работает группа специалистов, и в процессе работы необходимы контакты по взаимоувязке программных модулей.
Внешняя согласованность обеспечивается однозначным соответствием создаваемого ПИ требованиям, изложенным в техническом проекте на его разработку.
Структурированность ПИ – делает его понятным для пользователя. Она предполагает создание ПИ в соответствии с определенными требованиями: использование при программировании трех базовых конструкций:
1. а) линейная структура б) условный переход в) цикл
(или
последовательная).
-
S1
Да Нет
-
S2
-
S1
условия условие
-
S2
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
|
|
2. Подробное комментирование текста программ.
3. Использование модульного программирования (отдельная программная единица).
4. Ограничение на объем модулей (количество операторов).
3. Надежность – свойство ПИ сохранять работоспособность в течение определенного периода времени в определенных условиях эксплуатации с учетом последствий для пользователя при любом отказе.
Она характеризуется:
Завершенность – завершенное ПИ включает все необходимые для функционирования программные компоненты.
Например, независимые ПИ:
– отсутствие в нем одного из модулей (нет перехода с года на год, нет перехода с века на век);
– некомплектная документация (т.е. нет документа целиком, либо раздела в документе).
Точность - характеристика, определяющая точность результатов расчета в соответствии с их назначением.
Например: если ведутся расчеты банковским операциям, то разумная точность – 3 знака после запятой, с последующим округлением до 2 знаков. Если в программе производятся расчеты по биологическим экспериментам, на молекулярном уровне, то точность по 10-12 знаков после запятой.
4. Эффективность – выполнение требуемых функций при минимальных затратах ресурсов. Причем под ресурсами подразумевается: объем оперативной памяти, время работы процессора, объем внешней памяти, пропускная способность канала.
Часто характеристика эффективности вступает в противоречие с другими характеристиками качественного ПИ.
Например: ПИ будет более эффективным во время работы, если будет состоять из меньшего количества модулей, чем это требует характеристика структурированности, так как на вызов модулей затрачивается относительно много машинного времени. Поэтому необходимость повышения эффективности ПИ за счет других характеристик необходимо оговаривать в техническом проекте на разработку ПИ.
5. Модифицируемость – эта характеристика отражает возможность внесения изменений в ПИ без значительных затрат времени на последующую отладку.
Эта характеристика включает в себя характеристику расширяемости ПИ, которая предполагает модификацию ПИ в части увеличения объема памяти либо числа функциональных модулей.
Оцениваемость – это существование критерия оценки ПИ и способа проверки соответствия этому критерию, по которым можно сравнить с другими подобными ПИ (критерии оценки в техническом проекте соответствует заданным требованиям: время работы модуля и т.д.).
Человеческий фактор: (сервис)
1. Легкость использования ПИ.
2. ПИ должно удовлетворять требованиям пользователя.
3. ПИ должно реализовывать потенциальные потребности пользователя.
4. Необходимо при разработке ПИ следовать золотому правилу: относить к людям так же, как бы ты хотел, чтобы относились к тебе.
Мобильность – возможность работы ПИ в различных ОС.
