Программа – упорядоченная
последовательность команд, которые должен выполнить компьютер в соответствии с
алгоритмом решения конкретной задачи.
Задача – проблема, подлежащая решению.
Приложение – программная реализация на
компьютере решения задачи.
Программирование - теоретическая и
практическая деятельность по обеспечению программного управления обработкой
данных, включающая создание программ, а также выбор структуры и
кодирования данных; программирование является одним из основных этапов
жизненного цикла программного продукта. По назначению различают прикладное и
системное программирование; по способу разработки программ - восходящее и
нисходящее программирование; в зависимости от метода написания программ -
декларативное, объектно-ориентированное, процедурно-ориентированное,
структурное, функциональное, эвристическое и др.
Программный продукт - комплекс
взаимосвязанных программ, предназначенный для решения определенной задачи
массового спроса, подготовленный к реализации как любой вид промышленной
продукции (иметь программную документацию, предоставлять сервис и гарантию
надежной работы, иметь товарный знак изготовителя и т.д.). Программный продукт
разрабатывается на основе промышленной технологии выполнения проектных работ с
применением современных инструментальных средств программирования. Как
правило, программные продукты требуют сопровождения, которое осуществляется
специализированными фирмами - распространителями программ (дистрибьютерами),
реже - фирмами-разработчиками. Для каждого программного продукта характерно
прохождение этапов жизненного цикла.
Методы проектирования алгоритмов и программ
очень разнообразны, их можно классифицировать по различным признакам, важнейшими
из которых являются: степень автоматизации проектных работ, принятая методология
процесса разработки.
1) По степени автоматизации проектирования алгоритмов и
программ можно выделить:
•
Неавтоматизированное проектирование алгоритмов и программ преимущественно
используется при разработке небольших по трудоемкости и структурной сложности
программных продуктов, не требующих участия большого числа разработчиков.
Трудоемкость разрабатываемых программных продуктов, как правило, небольшая, а
сами программные продукты имеют преимущественно прикладной характер.
При нарушении этих ограничений заметно снижается
производительность труда разработчиков, падает качество разработки, и, как ни
парадоксально, увеличиваются трудозатраты и стоимость программного продукта в
целом.
•
Автоматизированное проектирование алгоритмов и программ возникло с
необходимостью уменьшить затраты на проектные работы, сократить сроки их
выполнения, создать типовые "заготовки" алгоритмов и программ, многократно
тиражируемых для различных разработок, координации работ большого коллектива
разработчиков, стандартизации алгоритмов и программ.
Автоматизация проектирования может охватывать все или
отдельные этапы жизненного цикла программного продукта, при этом работы этапов
могут быть изолированы друг от друга либо составлять единый комплекс,
выполняемый последовательно во времени. Как правило, автоматизированный подход
требует технического и программного "перевооружения" труда самих разработчиков
(мощных компьютеров, дорогостоящего программного инструментария, а также
повышения квалификации разработчиков и т.п.).
Автоматизированное проектирование алгоритмов и программ под
силу лишь крупным фирмам, специализирующимся на разработке определенного класса
программных продуктов, занимающих устойчивое положение на рынке программных
средств.
Проектирование алгоритмов и программ может основываться на
различных подходах, среди которых наиболее распространены:
• структурное
проектирование программных продуктов;
• информационное
моделирование предметной области и связанных с ней приложений;
•
объектно-ориентированное проектирование программных продуктов.
При традиционной неавтоматизированной разработке программ
независимо от принятого метода проектирования и используемого инструментария
выполняют следующие работы.
1. Составление технического
задания на программирование
Данная работа соответствует этапу анализа и спецификации
программ жизненного цикла программных продуктов.
Работы данного этапа в существенной степени зависят от
принятых решений по технической части системы обработки данных и операционной
среде, от выбранных инструментальных средств проектирования алгоритмов и
программ, технологии работ.
3. Рабочая документация (рабочий
проект)
На данном этапе осуществляется адаптация базовых средств
программного обеспечения (операционной системы, СУБД, методо-ориентированных
ППП, инструментальных сред конечного пользователя - текстовых редакторов,
электронных таблиц и т.п.). Выполняется разработка программных модулей или
методов обработки объектов - собственно программирование или создание
программного кода. Проводятся автономная и комплексная отладка
программного продукта, испытание работоспособности программных модулей и
базовых программных средств. Для комплексной отладки готовится контрольный
пример, который позволяет проверить соответствие возможностей программного
продукта заданным спецификациям.
Основной результат работ этого этапа - также создание
эксплуатационной документации на программный продукт:
· описание применения
- дает общую характеристику программного изделия с указанием сферы его
применения, требований к базовому программному обеспечению, комплексу
технических средств;
· руководство
пользователя - включает детальное описание функциональных возможностей и
технологии работы с программным продуктом. Данный вид документации ориентирован
на конечного пользователя и содержит необходимую информацию для
самостоятельного освоения и нормальной работы пользователя (с учетом требуемой
квалификации пользователя);
· руководство
программиста (оператора) - указывает особенности установки (инсталляции)
программного продукта и его внутренней структуры - состав и назначение модулей,
правила эксплуатации и обеспечения надежной и качественной работы программного
продукта.
В ряде случаев на данном этапе для программных продуктов
массового применения создаются обучающие системы, демоверсии. гипертекстовые
системы помощи.
Готовый программный продукт сначала проходит опытную
эксплуатацию (пробный рынок продаж), а затем сдается в промышленную
эксплуатацию (тиражирование и распространение программного продукта).
В большей степени программные продукты не являются монолитом и
имеют конструкцию (архитектуру) построения - состав и взаимосвязь
программных модулей.
Модуль - это самостоятельная часть программы,
имеющая определенное назначение и обеспечивающая заданные функции обработки
автономно от других программных модулей.
Таким образом, программный продукт обладает внутренней
организацией, или внутренней структурой, образованной
взаимосвязанными программными модулями. Это справедливо для сложных и
многофункциональных программных продуктов, которые часто называются
программными системами.
Структуризация программ выполняется в первую очередь для
удобства разработки, программирования, отладки и внесения изменений в
программный продукт. Как правило, программные комплексы большой алгоритмической
сложности разрабатываются коллективом разработчиков (2 - 15 и более человек).
Управлять разработкой программ в условиях применения промышленных технологий
изготовления программ можно лишь на научной основе.
Структурное "разбиение" программ на отдельные составляющие
служит основой и для выбора инструментальных средств их создания, хотя имеет
место и обратное влияние - выбор инструментальных средств разработчика
программного обеспечения определяет типы программных модулей. При создании
программных продуктов выделяются многократно используемые модули, проводится их
типизация и унификация, за счет чего сокращаются сроки и
трудозатраты на разработку программного продукта в целом.
Некоторые программные продукты используют модули из готовых
библиотек стандартных подпрограмм, процедур, функций, объектов, методов
обработки данных.
Среди множества модулей различают:
•
головной модуль - управляет запуском программного продукта
(существует в единственном числе);
•
управляющий модуль - обеспечивает вызов других модулей на
обработку;
• рабочие модули
- выполняют функции обработки;
• сервисные
модули и библиотеки, утилиты - осуществляют обслуживающие функции.
Характеристики качества программных продуктов: мобильность,
надёжность, эффективность, модифицируемость, коммуникативность и др.
Мобильность программных продуктов (ПП) означает их
независимость от технического комплекса системы обработки данных, операционной
среды, сетевой технологии обработки данных, специфики предметной области и т.п.
Мобильный (многоплатформенный) программный продукт может быть установлен на
различных моделях компьютеров и ОС, без ограничения на его эксплуатацию в
условиях вычислительной сети.
Надежность работы ПП определяется бесперебойностью и
устойчивостью в работе программ, точностью выполнения предписанных функций
обработки, возможностью диагностики возникающих в процессе работы программ
ошибок.
Эффективность ПП оценивается как с позиции прямого его
назначения – требований пользователя, так и с точки зрения расхода
вычислительных ресурсов, необходимых для его эксплуатации.
Учет человеческого фактора означает обеспечение
дружественного интерфейса, наличия справочной информации по работе с ПП,
подсказок, анализ и диагностику возникающих ошибок и т.д.
Модифицируемость ПП означает способность к внесению
изменений, н-р, расширение функций обработки, переход на другую техническую базу
обработки и т.д.
Коммуникативность ПП основана на максимально возможной
их интеграции с другими программами, обеспечении обмена данными (экспорт/импорт
баз данных, внедрение или связывание объектов обработки и т.д)
Сопровождаемость программного обеспечения -
характеристики программного продукта, позволяющие минимизировать усилия по
внесению в него изменений: для устранения ошибок или для модификации в
соответствии с изменяющимися потребностями пользователей
Точность – характеристика, определяющая точность
результатов выполнения расчетов в соответствии с их назначением. Например, если
в программе ведутся расчеты по банковским операциям, то разумная точность
составляет три знака после запятой с последующим округлением до двух знаков.
Если в программе производятся расчеты по биологическим экспериментам на
молекулярном уровне, то может потребоваться точность до 10-12 десятичных знаков.
Устойчивость к ошибкам – предсказуемость работы ПП в
условиях любых наборов входных данных или наличие ошибок при взаимодействии с
оборудованием. Очевидность этого требования прекрасно демонстрирует приведенный
выше пример из европейской космической программы.
Понятность ПП является наиболее комплексной
характеристикой качественного программного продукта. Каждый программный продукт
должен создаваться с учетом требований пользователя, определенных в техническом
задании. Кроме того, пользователь должен иметь возможность достаточно легко
вникнуть в смысл документации, сопровождающей ПП, понять его функциональное
назначение.
Информативность – одна из характеристик, обеспечивающая
понятность ПП. Говорят, что программный продукт обладает характеристикой
информативности, если содержит информацию, обеспечивающую понимание назначения
ПП, принятых ограничений, смыслового значения результатов работы отдельных
компонентов ПП.
Открытость ПП при доступности его исходного кода дает
возможность понять назначение каждого оператора ПП при чтении ее текста, другими
словами, каждый из идентификаторов должен нести смысловую нагрузку.
Согласованность как характеристика качественного ПП,
бывает внутренней и внешней. Внутренняя согласованность должна обеспечивать
единую терминологию, единую трактовку понятий и значений. Особое значение эта
характеристика приобретает при создании программных комплексов, когда над
проектом работает группа специалистов, и в процессе работы необходимы контакты
по взаимоувязке программных модулей. Внешняя согласованность обеспечивается
однозначным соответствием создаваемого ПИ требованиям, изложенным в техническом
проекте на его разработку, а также тем или иным отраслевым стандартам.
Жизненный цикл программного продукта -
период существования программного продукта, исчисляемый от начала его
проектирования до уничтожения. Основные этапы жизненного цикла:
- маркетинг рынка программных изделий, спецификация требования
к программному изделию;
- проектирование структуры программного продукта;
- программирование, тестирование, автономная и комплексная
отладка программ;
- подготовка программной документации;
- выход на рынок программных изделий, распространение
программного продукта;
- эксплуатация программного продукта пользователями;
- сопровождение программного продукта;
- снятие программного продукта с продажи, отказ от
сопровождения.
Стандарт описывает 17 процессов жизненного цикла,
распределенных по трем категориям – группам процессов:
1. Основные процессы жизненного цикла - Primary Processes
1.1 Заказ - Acqusition
1.2 Поставка - Supply
1.3 Разработка - Development
1.4 Эксплуатация - Operation
1.5 Сопровождение - Maintenance
2. Вспомогательные процессы жизненного цикла – Supporting
Processes
2.1 Документирование - Documentation
2.2 Управление конфигурацией – Configuration Management
2.3 Обеспечение качества – Quality Assurance
2.4 Верификация - Verification
2.5 Аттестация - Validation
2.6 Совместный анализ – Joint Review
2.7 Аудит - Audit
2.8 Решение проблем
– Problem Resolution
3. Организационные процессы жизненного цикла – Organizational
Processes
3.1 Управление - Management
3.2 Создание инфраструктуры - Infrastructure
3.3 Усовершенствование - Improvement
3.4 Обучение - Training
Существует целый ряд стандартов, регламентирующих ЖЦ ПО, а в
некоторых случаях и процессы разработки. Среди наиболее известных стандартов
можно выделить следующие:
•
ГОСТ 34.601-90 - распространяется на автоматизированные системы и устанавливает
стадии и этапы их создания. Кроме того, в стандарте содержится описание
содержания работ на каждом этапе. Стадии и этапы работы, закрепленные в
стандарте, в большей степени соответствуют каскадной модели жизненного цикла.
•
ISO/IEC 12207:1995 - стандарт на процессы и организацию жизненного цикла.
Распространяется на все виды заказного ПО. Стандарт не содержит описания фаз,
стадий и этапов.