Сразу отметим, что компьютерные программы – это продукт (интеллектуальный продукт или товар). Исходные тексты и исполняемые файлы программ являются объектами авторского права и являются интеллектуальной собственностью их авторов и правообладателей.
Программный продукт в соответствии с международными требованиями ISO не должен содержать ошибок и дефектов, которые приводят к сбоям и отказам при выполнении на ЭВМ. Программы с дефектами и ошибками – это не продукт!
Согласно Закону РФ "О защите прав потребителей" любой товар при обнаружении в нем дефектов подлежит замена либо возврату денежных средств за его приобретение и сопутствующие издержки.
В процессе создания программного продукта можно выделить несколько этапов, которые называют жизненным циклом программного обеспечения. Затраты труда и времени на их выполнение различны, различаются эти затраты и для разных программ.
В общем случае выделяют следующие этапы разработки ПО:
1) постановка задачи;
2) проектирование общей структуры программы;
|
|
3) кодирование программы;
4) отладка и верификация программы;
5) публикация или передача заказчику результата работы;
6) сопровождение программы.
Рассмотрим подробнее содержание каждого из перечисленных этапов.
Постановка задачи – точное и четкое определение исходных условий и требуемых результатов в задачах.
Для сложных программ определяются общие требования – надежность, технологичность, правильность, универсальность, эффективность, информационная согласованность и т.д. Они дополняются требованиями заказчика, включающими пространственно-временные ограничения, необходимые функции и возможности, режимы функционирования, требования точности и надежности.
Итогом выполнения этого этапа являются эксплуатационные и функциональные спецификации, содержащие конкретное описание программного обеспечения. Разработка спецификаций требует тщательной работы системных аналитиков, постоянно контактирующих с заказчиками.
Эксплуатационные спецификации содержат сведения о быстродействии ПО, затратах памяти, требуемых технических средствах, надежности и т.д. Функциональные спецификации определяют функции, которые должно выполнять ПО, т.е. в них определяется, что надо делать, а не как это делать.
Спецификации должны быть полными, точными и ясными. Полнота исключает необходимость получения разработчиками ПО в процессе их работы от заказчиков иных сведений кроме тех, которые содержатся в спецификациях. Точность не позволяет различных толкований. Ясность подразумевает легкость понимания как заказчиком, так и разработчиком при однозначном толковании.
|
|
Проектирование ПО. На этом этапе:
- формируется структура ПО и разрабатываются алгоритмы, задаваемые спецификациями;
- устанавливается состав модулей с разделением их на иерархические уровни на основе схем алгоритмов;
- выбирается структура информационных массивов, составляющих базу данных;
- фиксируются межмодульные интерфейсы.
Результатом работы на этом этапе являются спецификации на отдельные модули, дальнейшая декомпозиция которых нецелесообразна. Каждый из модулей может быть разработан разными людьми, и сконструирован так, чтобы выполнять только определенную часть общей задачи. С целью усовершенствования методов проектирования программного обеспечения используются CASE-технологии (Computed Aided Software Engineering), которые включают автоматизированные средства планирования, управления, отладки, документирования и разработки интерфейсов.
Кодирование программы. Кодирование – это запись алгоритма на выбранном языке программирования. Если алгоритм решения задачи, структура программы и структура данных тщательно продуманы, затраты времени на кодирование уменьшаются, а вероятность ошибок снижается. На этом этапе проектные решения реализуются в виде программ. Разрабатываются отдельные блоки и подключаются к создаваемой системе.
Отладка и верификация ПО. Отладка и тестирование программы представляют собой очень важную и ответственную часть процесса разработки программы. Отладка заключается в устранении ошибок программирования, ошибок перевода алгоритма на язык программирования. Английский термин debugging («отладка») буквально означает «вылавливание жучков». Термин появился в 1945 г., когда один из первых компьютеров – «Марк-1» прекратил работу из-за того, что в его электрические цепи попал мотылек и заблокировал своими останками одно из тысяч реле машины. Различают следующие виды отладки:
- синтаксическая отладка;
- семантическая отладка;
- отладка логической структуры программы.
Тестирование программы заключаетсяв испытании, проверке правильности работы. Если в процессе тестирования программы результат совпадает с ожидаемым, то есть основание полагать, что программа работает корректно. Но это справедливо только для рассмотренного частного случая, а не вообще. Программа может в некоторых случаях работать правильно, а в других – выдавать совершенно неверный результат или самопроизвольно прекращать работу. Эта проблема особенно актуальна для больших и сложных программ, тестирование которых не всегда устраняет все ошибки.
Таким образом, тестирование может выявить ошибки, но не может гарантировать отсутствие ошибок в программах. Гарантии отсутствия ошибок в алгоритмах и программах могут дать только доказательства их правильности – исчерпывающий анализ правильности алгоритмов и программ. Верификацией алгоритмов и программ называют область исследований, направленную на доказательство их корректности. Верификация основана на методах формальной (математической) логики. Общий подход заключается в следующем:
1) Доказательство корректности начинается с предположения о том, что в начале работы алгоритма удовлетворены некоторые предварительные условия (например, на входе получены нужные данные).
2) Следующий этап доказательства заключается в рассмотрении того, как следствие из этих данных распространяется по программе.
Например, определено, что x=y, тогда, если y¹0, то x¹0.
Публикация или передача заказчику результата работы. Если предыдущие этапы пройдены успешно, то программа переходит в разряд программного продукта и передается Заказчику или публикуется в соответствующих изданиях.
Сопровождение ПО. Это заключительный этап, который имеет особое значение для больших и сложных программ. Этот этап представляет собой процесс исправления замеченных в ходе эксплуатации программы недостатков и, возможно, ошибок, координации всех элементов системы в соответствии с потребностями пользователя, внесения всех нужных ему исправлений и изменений. Это необходимо, по крайней мере, по двум причинам: во-первых, в ПО остаются ошибки, не выявленные при тестировании; во-вторых, пользователи в ходе эксплуатации могут настаивать на внесении в него изменений и его дальнейшем совершенствовании. Кроме того на стадии сопровождения происходит составление документации.
|
|
Документация профессионального программного обеспечения включает проектную, системную и пользовательскую. Проектная документация содержит спецификации программной системы, системная – тексты исходной версии всех программных процедур системы, пользовательская – учебные руководства, книги, модули справочной системы.