Программное обеспечение и его разработка
Целью программирования является описание процессов обработки данных. Данные (data) — это представление фактов и идей в формализованном виде, пригодном для передачи и переработке в некоем процессе, а информация (information) — это смысл, который придается данным при их представлении. Обработка данных (data processing) — это выполнение систематической последовательности действий с данными. Данные представляются и хранятся на носителях данных. Совокупность носителей данных, используемых при какой-либо обработке данных, будем называть информационной средой (data medium). Набор данных, содержащихся в какой-либо момент в информационной среде, будем называть состоянием этой информационной среды. Процесс можно определить как последовательность сменяющих друг друга состояний некоторой информационной среды.
Описать процесс — это значит определить последовательность состояний заданной информационной среды. Если мы хотим, чтобы по заданному описанию требуемый процесс порождался автоматически на каком-либо компьютере, необходимо, чтобы это описание было формализованным. Такое описание называется программой. С другой стороны, программа должна быть понятной и человеку, т.к. и при разработке программ, и при их использовании часто приходится выяснять, какой именно процесс она порождает. Поэтому программа составляется на удобном для человека формализованном языке программирования, с которого она автоматически переводится на язык соответствующего компьютера с помощью другой программы, называемой транслятором. Человеку (программисту), прежде чем составить программу на удобном для него языке программирования, приходится проделывать большую подготовительную работу по уточнению постановки задачи, выбору метода ее решения, выяснению специфики применения требуемой программы, прояснению общей организации разрабатываемой программы и мн.др.
Программный комплекс или программная система — это совокупность согласованно работающих программ под общим управлением, предназначенная для решения сложной задачи или ряда взаимосвязанных задач (см. также «пакет прикладных программ»). Прошедший испытания программный комплекс, полностью готовый для продажи (поставки) и снабженный всей необходимой документацией, называется программным продуктом (изделием) или программным средством (ПС).
Программное обеспечение — наиболее общее понятие, под которым понимают программы, программные системы или продукты в совокупности или по отдельности, в зависимости от контекста использования этого термина.
Разработка программных средств имеет ряд специфических особенностей.
- Прежде всего, следует отметить некоторое противостояние: неформальный характер требований к ПС (постановки задачи) и понятия ошибки в нем, но формализованный основной объект разработки — программы ПС. Тем самым разработка ПС содержит определенные этапы формализации, а переход от неформального к формальному существенно неформален.
- Разработка ПС носит творческий характер (на каждом шаге приходится делать какой-либо выбор, принимать какое-либо решение), а не сводится к выполнению какой-либо последовательности регламентированных действий. Тем самым эта разработка ближе к процессу проектирования каких-либо сложных устройств, но никак не к их массовому производству. Этот творческий характер разработки ПС сохраняется до самого ее конца.
- Следует отметить также особенность продукта разработки. Он представляет собой некоторую совокупность текстов (т.е. статических объектов), смысл же (семантика) этих текстов выражается процессами обработки данных и действиями пользователей, запускающих эти процессы (т.е. является динамическим). Это предопределяет выбор разработчиком ряда специфичных приемов, методов и средств.
- Продукт разработки имеет и другую специфическую особенность: ПС при своем использовании (эксплуатации) не расходуется и не расходует используемых ресурсов.
Под жизненным циклом ПС (software life cycle) понимают весь период его разработки и эксплуатации (использования), начиная от момента возникновения замысла ПС и кончая прекращением всех видов его использования. Жизненный цикл охватывает довольно сложный процесс создания и использования ПС (software process).
Жизненный цикл программного продукта состоит из трех крупных фаз :
- разработка;
- использование (эксплуатация);
- сопровождение и продолжающаяся разработка.
В фазе разработки программный продукт разрабатывается и выпускается.
В фазе эксплуатации созданный продукт используется на практике конкретными потребителями.
В фазе сопровождения и продолжающейся разработки продукт модифицируется и развивается.
Фаза эксплуатации, в идеале, должна начинаться сразу после выпуска программного продукта, однако часто работоспособная версия по договоренности с заказчиком поставляется ему до завершения полного цикла разработки. Возможна и обратная ситуация, при которой использование может начаться гораздо позже окончания разработки.
Продолжающаяся разработка — это плановое мероприятие, цель которого — выпуск последующей версии продукта. Основой продолжающейся разработки является желание самих разработчиков.
Сопровождение осуществляется на основе юридической договоренности между разработчиками и пользователями (заказчиками). Модификации при сопровождении обычно инициируются пользователями, обнаруживающими ошибки и недостатки продукта.
Фазу разработки обычно разделяют на следующие логические этапы :
- системный анализ;
- проектирование;
- программирование (кодирование);
- отладка и тестирование;
- документирование;
- выпуск.
На этапе системного анализа происходит анализ необходимости самого программного продукта, выявляются наиболее общие требование к нему. Результатом системного анализа является выработка спецификации требований на программный продукт, содержащая указанные требования в формальном виде. Единая система программной документации (ЕСПД) называет такую спецификацию техническим заданием (ТЗ).
При проектировании общие требования к программному продукту пошагово и итерационно преобразуются в подробный проект, в деталях описывающий будущую структуру программной системы, форматы данных, алгоритмы, интерфейс и т.д. Результатом проектирования является технический проект.
Этап кодирования при наличии достаточно детального проекта (каковым является технический проект) является рутинным. Фактически, кодирование — это в некоторой степени механический процесс реализации спроектированных алгоритмов на конкретном языке программирования с использованием конкретного инструментария. Результатом кодирования являются собственно программы как в исходном тексте, так и в бинарном виде, пригодном к исполнению.
Этап отладки и тестирования предназначен для выявления и устранения ошибок в программах. Результатом данного этапа являются отлаженные (насколько возможно) программы, для которых тестированием установлено (опять же, насколько возможно) соответствие спецификации.
На этапе документирования к созданной программной системе подготавливается пакет документации, разносторонне описывающей будущий продукт как с внешней, так и с внутренней стороны. Каждый документ подготавливается для конкретного типа читателей: конечных пользователей, системных администраторов, программистов и т.д.
На этапе выпуска продукт проходит испытания по утвержденной методике, после чего поставляется, внедряется или продается.
Этапам кодирования, отладки и тестирования и документирования в ЕСПД соответствует этап рабочего проекта. Таким образом, процесс разработки является существенно итеративным . Только простейшие задачи проходят все шаги без итераций. Для больших программ проектирование не кончается никогда.
CC-BY-CA Цыганенко В.Н., 20.10.2013