II. Прикладное программное обеспечение.
Прикладное программное обеспечение (applications software) – это совокупность прикладных программ, предназначенных для решения определенных задач или для предоставления пользователю определенных услуг.
Эти услуги носят не общий, а специфический характер, отображающий особенности прикладной области.
Прикладная область (предметная область) (application domain) – это совокупность понятий и объектов, информация о которых хранится в базе данных или обрабатывается программой.
Под совокупностью понятий и объектов прикладной области понимается взаимосвязанный перечень прикладных задач, задач, отображающих специфику любой области деятельности человека: отрасли промышленности, предприятий сельского хозяйства, областей науки и техники, проблемы социальной сферы и экологии, задачи космоса.
Совокупность прикладных программных средств включает не только разрабатываемые пользователем прикладные задачи, но и типовые программные системы и пакеты, которые образуют инструментарий для быстрого и эффективного проектирования программ с учетом специфики данной прикладной области.
Например, при проектировании заданий требуются средства поддержки графических операций, операций по синтезу, анализу и редактированию графических изображений и объектов (это графический процессор, например, AUTOCAD).
К типовым прикладным пакетам, имеющим широкий спрос в задачах передачи, сборы и обработки информации, относятся пакеты, обеспечивающие указанные операции в инвариантных спецификациях. Это пакеты и программные системы всемирной сети Internet, называемой “всемирной паутиной” (World wart web, www).
Целый класс проблемно-ориентированных пакетов в настоящее время представляют системы управления базами данных (СУБД).
Наиболее распространенные среди них – Fox Pro, Clipper, Paradox, среди сетевых СУБД – Oracle.
По мере развития средств проблемно-ориентированного программирования наблюдается тенденция к приобщению конкретного пользователя к глобальному информационному пространству.
При традиционном проектировании прикладных программных продуктов выделяют семь этапов, составляющих цикл их разработки или «цикл жизни» прикладных программ.
1. Анализ требований, предъявляемых к программной системе;
2. Определение спецификаций;
3. Проектирование программ;
4. Кодирование;
5. Текстирование;
6. Документирование;
7. Эксплуатация и сопровождение.
I. При анализе требований, предъявляемых к программе, необходимо выделить следующие основные моменты и требования.
1. Цели и задачи издаваемого программного продукта;
2. Варианты реализации (поиск оптимального решения);
3. Форма выполнения;
4. Возможные изменения и коррекция и их особенности;
5. Ограничения на разработку;
6. Средства документирования и защиты от несанкционированного доступа;
7. Необходимость копирования и связи с другими программными системами;
8. Специфические особенности, связанные со взаимодействием с сетями и информационными системами.
После выяснения указанных требований производится планирование работ и обсуждение вопросов управления развитием программной системы.
II. На эти определения спецификаций осуществляется точное описание функций программной системы.
Под спецификацией (specification) понимается описание условий и результатов действия программы, без указания способов достижения необходимого эффекта.
На этом этапе осуществляются следующие действия:
1. Определяются структуры входных и выходных данных;
2. разрабатываются описания условий и особенностей работы программного продукта;
3. определяются способы применения структур баз данных и их реорганизации, если это необходимо;
4. оценивается предполагаемое время выполнения, число специалистов, участвующих в разработке, компьютерные ресурсы, необходимые для реализации проекта;
5. разрабатываются условия тестирования продукта;
Чем подробнее составляются спецификации, тем меньше будет недоразумений между заказчиком и исполнителем программного продукта.
III. На стадии проектирования разрабатываются программные алгоритмы, задаваемые спецификациями, и определяются условия проектирования, учитывая возможность или необходимость использования модульного программирования.
При реализации модульного программирования происходит разбиение программной системы на отдельные, функционально независимые подзадачи, модули и далее каждый модуль может быть реализован по независимому алгоритму. Важно при этом оговорить правила и процедуры стыковки отдельных модулей друг с другом.
IV. Этап кодирования заключается в составлении описания алгоритма на выбранном языке программирования.
Этот этап является формально наиболее простым и его реализация целиком зависит от того, насколько хорошо разработаны программные алгоритмы и какой квалификацией обладает программист.
V. Процесс тестирования заключается в запуске закодированной на предыдущем этапе программы, со специально подобранными данными, с целью обнаружения и исправления ошибок.
Этап тестирования не гарантирует полного исправления ошибок, но избавляет программу от наиболее очевидных ошибок.
Тестирование разделяется на три стадии:
- автономное тестирование;
- комплексное;
- системное.
При автономном тестировании каждый программный модуль проверяется отдельно, с помощью данных, подготовленных самим программистом. При этом составляется специальная программа тестирования, в которой используются фиктивные программы, вместо реальных подпрограмм, к которым должен обращаться разрабатываемый программный модуль в процессе своей работы.
После автономного выполняется комплексное тестирование.
Здесь тестируются все модули при их совместной работе и выявляются ошибки, пропущенные на стадии автономного тестирования.
Системное тестирование – это завершающий этап тестирования, при котором полный программный продукт проверяется системой программирования и операционной системой.
С этапом тестирования тесно связаны такие важные параметры программы как надежность и правильность.
Правильная программа – это такая программа, для которой доказано, что она удовлетворяет первоначально разработанным требованиям.
Надежная программа – это программа, выдающая приемлемый результат даже в случае, если входные данные или условия их использования выходят за рамки первоначальных допущений.
Надежная программа необязательно является правильной.
VI. Этап документирования программы заключается в описании всего процесса проектирования в виде различных документов.
В общем виде документация разработанной программы должна включать следующие разделы:
1. имя программы и общее функциональное описание;
2. описание спецификаций, включая описание структур данных, их особенностей, областей их хранения;
3. описания баз данных, словарей и библиотек и способов доступа к ним, описание способов модифицирования данных;
4. описание способов проектирования, нумерации программных модулей, порядок их разработки и характер связей между модулями;
5. описание особенностей интерфейса пользователей и инструкции для пользователя, описание применяемой среды программирования и операционной системы;
6. текстовые данные и результаты тестирования;
7. списки исправлений и ошибок;
8. справочный указатель для документации.
Указанные составляющие документации нужны в полном объеме при разработке общего программного продукта, состоящего из ряда модулей.
Если же разрабатываемая программа является частью программной системы, то столь подробная документация может не понадобиться.
VII. Этап (заключительный) – эксплуатация и сопровождение подразумевает обеспечение описанных выше параметров по надежности и правильности программы в течении определенного времени, при использовании в реальных условиях эксплуатации.
Этот этап часто является наиболее трудоемким с точки зрения временных затрат и составляет иногда да 60% от общих затрат на разработку.
Это связано с тем, что, во-первых, на этом этапе обнаруживаются, как правило, ошибки не выявленные при тестировании, во-вторых, происходит уточнение спецификаций и данных, которые были определены ранее некачественно и неквалифицированно.
Приходится вносить много дополнительных изменений, добавлений, «заплат» и от этого программный продукт не становится лучше.
В любом случае этот последний этап должен быть тщательно обсужден на предварительных этапах между заказчиком и исполнителем.
Интерфейс пользователя