16
1)документирование требований (включая детальное описание для большинства прецедентов использования);
2)проектирование, реализацию и тестирование исполняемого функционального ядра системы;
3)уточнение экономического обоснования и более точная оценка сроков и стоимости разработки;
4)снижение основных рисков.
Итерация «Построение» включает в себя следующие этапы:
1)реализация большей части функциональности продукта;
2)завершение первого внешнего релиза системы. Итерация «Внедрение» включает в себя следующие этапы:
5)создание финальной версии продукта;
6)передача от разработчика к заказчику (бета-тестирование, обучение пользователей, определение качества продукта);
7)повторение внедрения (в случае несоответствия качества ожиданиям пользователей);
8)завершение полного цикла разработки.
Технология RUP на сегодняшний день является наиболее прогрессивной, так
как объединяет в себе объектно-ориентированный анализ информационной системы с применением UML, объектно-ориентированное проектирование с применением прототипов и объектно-ориентированное компонентное программирование. Такое сочетание универсальных методов является наиболее целесообразным для быстрой разработки качественного, интероперабельного и легкоадаптируемого программного кода с применением объектно-ориентированного языка программирования.
Применение UML в RUP-процессах позволяет фиксировать окончание работ на очередной стадии в виде различных по назначению моделей. Более того, язык UML принят в качестве стандарта для графических примитивов в автоматизированных CASE-средствах от одноимённой компании Rational Software (IBM Rational Software Modeler и IBM Rational Software Architect), предназначенных для ускоренной разработки программных продуктов. Типичное распределение трудоёмкости по стадиям технологии RUP приведено рисунке 1.
|
|
|
17 |
|
|
|
|
|
Рабочие процессы |
Распределение трудоёмкости по стадиям разработки |
|
||||||
|
|
Начальная |
Уточнения |
Конструирование |
Внедрение |
|||
|
|
стадия |
|
|
|
|
|
|
|
|
Итерация 1 Итерация Итерация Итерация Итерация Итерация Итерация |
||||||
|
|
|
1 |
n |
1 |
n |
1 |
n |
Основные |
Моделирование |
|
|
|
|
|
|
|
процессы |
|
|
|
|
|
|
|
|
|
Управление |
|
|
|
|
|
|
|
|
требованиями |
|
|
|
|
|
|
|
|
Анализ и |
|
|
|
|
|
|
|
|
проектирование |
|
|
|
|
|
|
|
|
Реализация |
|
|
|
|
|
|
|
|
Тестирование |
|
|
|
|
|
|
|
|
Развёртывание |
|
|
|
|
|
|
|
Процессы |
Управление |
|
|
|
|
|
|
|
поддержки |
проектом |
|
|
|
|
|
|
|
|
Управление |
|
|
|
|
|
|
|
|
конфигурацией и |
|
|
|
|
|
|
|
|
изменениями |
|
|
|
|
|
|
|
|
Создание среды |
|
|
|
|
|
|
|
|
разработки |
|
|
|
|
|
|
|
|
Рисунок 1 − Процессы, стадии и итерации технологии RUP |
|
||||||
Описанные в этом разделе различные процессы разработки программных систем не являются единственными в своём роде. Мы привели наиболее показательные примеры с целью пояснить различия между процедурным и объектноориентированными подходами к разработке программных продуктов. Более подробно объектно-ориентированные технологии будут рассмотрены в следующей главе настоящего пособия. Иллюстрация жизненного цикла программного продукта, включающего в себя итерационный цикл разработки, применение автоматизированных средств CASE и RAD, а также роли исполнителей этапов работ приведена на рисунке 1.
|
|
18 |
|
|
Постановка задачи на разработку программного обеспечения |
|
|
|
Функциональный анализ бизнес-процессов. |
|
|
Участники процесса: |
Анализ информационных процессов. Моделирование бизнес- |
|
|
- системный аналитик; |
процессов и реорганизация (при необходимости) |
|
|
- системотехник |
|
|
|
|
Генерация требований к проектируемой программной системе |
|
|
|
в виде технического задания ( ответы на вопросы: |
|
|
|
«Что должна выполнять проектируемая система? |
CASE |
|
|
Какие данные требуются и обрабатываются?») |
||
|
|
||
Участники процесса: |
Разработка прототипа |
|
|
- системотехник, |
интерфейса |
|
|
- дизайнер |
|
|
|
Участники процесса: |
|
Разработка модели и структуры базы |
|
- программист |
|
данных |
|
Участники процесса: |
Разработка руководства |
|
|
|
|
|
|
- технический писатель |
пользователя |
|
|
|
|
|
|
|
|
Спецификация модулей программной |
|
|
|
системы |
|
|
|
Описание реализации экономико- |
|
|
|
математических моделей |
|
Участники |
|
|
|
процесса: |
|
Проектирование логики работы модулей и |
|
- программисты |
|
взаимодействия модулей |
RAD |
разработчики |
|
|
|
|
|
Разработка исходного кода модулей на |
|
|
|
языке программирования |
|
|
|
Отладка исходного кода совместно со |
|
|
|
сторонними компонентами (СУБД, |
|
|
|
оборудование, телекоммуникации) |
|
Участники процесса: технический писатель; |
Разработка документации |
|
|
программист; дизайнер |
|
|
|
|
(в т.ч. электронной) |
|
|
|
|
Цикл |
|
|
|
|
|
|
|
|
итераций |
Участники процесса: |
|
Приёмо-сдаточные испытания |
|
|
|
|
|
- персонал заказчика; |
|
Опытная эксплуатация |
|
- программисты; |
|
|
|
|
|
|
|
- специалист технической |
|
|
|
поддержки |
|
Эксплуатация промышленная |
|
|
|
Поддержка и модернизация |
|
|
Рисунок 2 – Жизненный цикл программных продуктов |
|
|
19
1.5. Парадигмы программирования
Эволюция программного обеспечения обусловлена следующими проблемами: усложнением моделей предметной области; требованиями к организации групповой разработки программных продуктов; адаптация к быстрой смене поколений вычислительной техники, к уровням и развитию телекоммуникаций; требованиями к обеспечению взаимодействия систем в гетерогенных средах; мобильностью и интероперабельностью программного кода и т.д. Эволюция программного обеспечения находит своё отражение в становлении и развитии технологий (парадигм) программирования. Парадигмой программирования следует считать весь комплекс средств, которыми обладают разработчики программных продуктов, как-то: методы и средства проектирования программных систем; языки программирования; среды разработки исходного кода; средства автоматизации процессов разработки прототипов интерфейсов пользователей и классов в виде CASE-систем (Computer Aided Software Engineering); средства ускоренной разработки приложений (RAD-системы); средства экстремального программирования (в минимально сжатые сроки с привлечением большой группы разработчиков); средства реализации языков программирования четвёртого уровня и т.д.
Рассмотрим в качестве примера две парадигмы:
1)структурное проектирование и программирование (см. рисунок 3);
2)объектно-ориентированное проектирование и программирование.
1.5.1. Структурное проектирование
Структурное проектирование включает в себя:
1)нисходящее каскадное проектирование ("сверху вниз");
2)модульное программирование;
3)структурное программирование.
Нисходящее проектирование – разработка иерархической схемы, которая отражает состав и взаимоподчинённость всех функций, обнаруженных в ходе функционального анализа предметной области. Такой схемой является функциональная структура алгоритма (ФСА) приложения. Функциональная структура алгоритма строится посредством функциональной декомпозиции, т.е. выявления главной цели, подцелей и задач. Одна задача соответствует одной функции. Функциональная структура алгоритма является основой для построения алгоритма приложения. Пример функциональной структуры алгоритма приведён на рисунке 4.
20
Примечание: показательными примерами применения процедурной парадигмы при разработке тиражируемых прикладных программных продуктов для автоматизации бухгалтерского учета в 1990 – 1995гг. являлись системы с жёстким (не зависящим от действий пользователя) интерфейсом типа «меню».
1.5.2. Структурное программирование
Структурное программирование − технология разработки программного обеспечения, в основе которой лежит представление программы в виде иерархической структуры базовых конструкций (блоков). Технология предложена в 70-х годах XX века Э. Дейкстрой, разработана и дополнена Н. Виртом.
Базовые элементы структурного программирования:
1)последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;
2)ветвление — однократное выполнение одной из двух или более операций,
взависимости от выполнения некоторого заданного условия;
3)цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла);
4)подпрограмма (процедура или функция) – именованные логически целостные вычислительные блоки, состоящие из последовательности инструкций;
5)переход к выполнению таких инструкций из основной программы осуществляется посредством вызова подпрограммы (процедуры или функции);
6)продолжение выполнения основной программы по окончании выполнения подпрограммы начинается с инструкции, следующей за командой вызова предыдущей подпрограммы.
Вразрабатываемой процедурной программе базовые элементы могут быть вложены друг в друга произвольным образом, при этом возможны условные и безусловные переходы на определённые (посредством меток) строки программного кода, но никаких других средств управления последовательностью выполнения операций в такой программе не предусматривается. Данная технология предусматривает каскадный процесс разработки программ (см. «каскадный жизненный цикл») методом «сверху вниз».