Качество программных систем.

Тема 4. Качество программных систем. Среды разработки программных систем: пользователя, инструментальная, ЭВМ, заказчика, разработчика.

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

 

ИСХОДНЫЕ ПРЕДПОСЫЛКИ РАЗРАБОТКИ КАЧЕСТВЕННЫХ ПРОГРАММНЫХ СИСТЕМ.

Каждая программа, входящая в систему, должна отвечать таким требованиям, как правильность, точность, совместимость, надежность, универсальность, защищенность, полезность, эффективность, проверяемость и адаптируемость. Будем говорить, что программа является

- правильной, если она функционирует в соответствии с техническим заданием. Подразумевается, что техническое задание составлено в четкой форме, позволяющей однозначно судить о том, действительно ли программа отвечает перечисленным в нем требованиям;

- точной, если выдаваемые ею числовые данные имеют допустимые отклонения от аналогичных результатов, полученных с помощью идеальных математических зависимостей;

- совместимой, если она работает должным образом не только автономно, но и как составная часть всей программной системы, осуществляющей обработку информации;

- надежной, если она при всех условиях обеспечивает полную повторяемость результатов.

- универсальной, если она правильно работает при любых допустимых вариантах исходных данных. В ходе разработки программ должны предусматриваться специальные средства защиты от ввода неправильных данных, обеспечивающие целостность системы;

- защищенной, если она сохраняет работоспособность при возникновении сбоев. Это качество особенно важно для программ, предназначенных для решения задач в режиме реального времени. В подобных приложениях отказ оборудования может повлечь катастрофические последствия - например, аварию ракеты или ядерного реактора. Указанными свойствами должны также обладать программы с большим временем выполнения, осуществляющие обработку постоянно хранимых файлов;

- полезной, если задача, которую она решает, представляет практическую ценность;

- эффективной, если объем требуемых для ее работы ресурсов не превышает допустимого предела;

- проверяемой, если ее качества могут быть продемонстрированы на практике. Здесь подразумевается возможность проверки таких свойств программы, как правильность и универсальность. Можно применить формальные математические методы, позволяющие установить, действительно ли программа удовлетворяет техническим условиям и выдает достаточно точные результаты. Однако существует и неформальные способы оценки качества программ, причем иной раз они оказываются более убедительными, чем формальные. Имеются в виду такие неформальные приемы, как прогоны с остановами в контрольных точках, обсуждения результатов с заинтересованными пользователями и др.;

- адаптируемой, если она допускает быструю модификацию с целью приспособления к изменяющимся условиям функционирования. Адаптируемость в значительной степени зависит от конструкции программы, от того, насколько квалифицированно она составлена и полно снабжена документацией.

В какой степени удовлетворяют перечисленные требования, характеризующие качество программ, определяется знаниями и мастерством разработчиков и программистов. Хотя программисты часто пишут небольшие процедуры для своих собственных нужд, все же большинство программ составляется для тех пользователей, которые не обладают должными навыками программирования. На любой вычислительной установке пользователь, прикладной программист, оператор ЭВМ, техник, отвечающий за ввод данных, системный программист - это разные лица, и качество программ сказывается на деятельность каждого из них.

Часто программы создаются коллективами программистов. Некоторые из них занимаются в основном разработкой, некоторые - самим программированием, остальные - составлением документации и испытаниями программы. Если разработка алгоритмов и программирование выполняются разными группами специалистов, за подготовку документации отвечают все группы.

Машинные программы - это своего рода рабочие инструменты, и пользователь нуждается в определенных инструкциях по их применению и правильному обращению с ними. Подобные инструкции должны содержаться в документации, поставляемой вместе с программой. Документация - столь же обязательный продукт процесса программирования, сколь и сама программа. Если программа взаимодействуют с ЭВМ непосредственно, связь ее с людьми обеспечивается в основном с помощью документации.