О качестве программных систем
Разработка технического задания (ТЗ) на проектирование
Программной системы (ПС)
Цель работы: ознакомить студентов с процессом разработки ТЗ и составом необходимой документации, отражающей этот этап жизненного цикла (ЖЦ) программ.
Введение
Наиболее важное свойство хорошей программы состоит в том, что она работает, т.е. делает именно то, что было задумано. Иными словами, она дает правильные результаты в ответ на правильные исходные данные. Важно и то, что хорошая программа сама способна отличать верные данные от неверных. В этом случае она не станет выдавать внешне правдоподобные результаты по неверным исходным данным.
Качество программного обеспечения играет важную роль, т.к. большинство программ и программных систем, разрабатываемых с целью сбыта (например, компиляторы, текстовые редакторы, программы сбора учетной информации, пакеты программ статистической обработки), рассчитаны на длительное использование.
Создание хорошей программы является весьма трудоемкой задачей, и различные организации и предприятия вынуждены вкладывать большие средства в разработку прикладного программного обеспечения. Многие программы должны быть рассчитаны на длительную эксплуатацию, в ходе которой они могут неоднократно модифицироваться. С учетом этого, понятие «хорошая программа» в широком смысле включает и такие качества, которые способствовали бы увеличению срока службы программ и их адаптации к изменяющимся условиям применения.
О качестве программных систем
Каждая программа, входящая в систему, должна отвечать таким требованиям как правильность, точность, совместимость, надежность, универсальность, защищенность, полезность, эффективность, проверяемость и адаптируемость. Программа является
· Правильной, если она функционирует в соответствии с техническим заданием (ТЗ). При этом подразумевается, что ТЗ составлено четко и позволяет однозначно судить о том, действительно ли программа отвечает перечисленным в нем требованиям;
· Точной, если выдаваемые ею числовые результаты имеют отклонения от аналогичных данных, полученных расчетным путем по точным формулам, не выше допустимых величин;
· Совместимой, если она работает, как ей предписано, не только в автономном режиме, но и в составе всей программной системы, осуществляемой обработку информации;
· Надежной, если она при всех допустимых условиях работы обеспечивает полную повторяемость результатов;
· Универсальной, если она правильно работает при любых допустимых вариантах исходных данных. В ходе разработки программы должны предусматриваться специальные средства защиты от ввода неправильных данных, обеспечивающие целостность системы;
· Защищенной, если она остается работоспособной при возникновении сбоев. Это качество особенно важно для программ, работающих в режиме реального времени. В этих случаях отказ программного обеспечения (ПО) может вызвать катастрофические последствия – например, аварию ракеты или ядерного реактора. Этим же свойством должны обладать программы с большим временем выполнения, предназначенные для обработки постоянно хранимых файлов;
· Полезной, если задача, которую она решает, представляет практическую ценность;
· Эффективной, если объем ресурсов ЭВМ, требуемых для ее работы, не превышает допустимого предела;
· Проверяемой, если ее качества могут быть продемонстрированы на практике. Здесь имеется в виду возможность проверки таких свойств программы, как правильность и универсальность. Можно применить формальные математические методы, позволяющие установить, действительно ли программа удовлетворяет ТЗ и выдает достаточно точные результаты. Но существуют и неформальные способы оценки качества программ, которые часто оказываются более убедительными, чем формальные. В качестве неформальных приемов используются прогоны с остановами в контрольных точках, обсуждения результатов с заинтересованными пользователями и др.;
· Адаптируемой, если она допускает быструю модификацию для того, чтобы приспособить ее к изменяющимся условиям функционирования. Адаптируемость сильно зависит от конструкции программы, от того, насколько квалифицированно она составлена и полно снабжена информацией.
То, в какой степени обеспечиваются перечисленные требования, характеризующие качество программ, определяется знаниями и мастерством разработчиков и программистов. Часто программы создаются коллективами программистов. Некоторые из них занимаются в основном разработкой, другие – самим программированием, остальные – составлением документации и испытаниями программ. Если разработка алгоритмов и программирование выполняются разными группами специалистов, то за подготовку документации отвечают все группы.
Машинные программы – это своего рода рабочие инструменты, и пользователь нуждается в инструкциях по их применению и правильному обращению с ними. Эти инструкции должны содержаться в документации, поставляемой вместе с программой. Документация – столь же обязательный продукт процесса программирования, сколь и сама программа. Если сама программа непосредственно взаимодействует с ЭВМ, то связь ее с людьми осуществляется в основном с помощью документации.