Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИЧЕСКИЕ РАБОТЫ ПО ОСНОВАМ ИНЖЕНЕРИИ.doc
Скачиваний:
133
Добавлен:
09.02.2016
Размер:
1.51 Mб
Скачать

2.1. Циклический характер разработки

Давно замечено, что программа за время жизни претерпевает многочисленные изменения своей формы, зависящие от состояния процесса разработки программы.

Жизненный цикл программы - это совокупность и последовательность изменений формы программы за все время ее существования.

5 Чего, к сожалению, не случается с программистами.

В разных парадигмах и моделях технологии программирования понятие жизненного цик­ла определяется и трактуется немного по-разному, но, в общем, близко к схеме, представ­ленной на рис. 2. Важно подчеркнуть, что за время своей жизни программа проходит ме­таморфозы, как правило, несколько раз,5 т.е. это именно цикл, который повторяется не один раз, а несколько раз.

Замечание: Программа является преимущественно идеальным (а не материальным) объектом, поэтому в жизненный цикл включаются и те "эмбриональные" формы, в которых программа существу­ет во время разработки. С другой стороны, материально существующие на магнитных носи­телях программы для больших машин не используются и не сопровождаются, а потому их жизненный цикл считается завершенным. Таким образом, программа жива, пока она жива в голове у програмиста и\или пользователя.

На приведенной схеме используются два вида графических обозначений: фигуры симво­лизируют состояния, в которых находится программа, а стрелки - переход из одного со­стояния в другое. Оба типа элементов нагружены дополнительной информацией: текст внутри фигур обозначает деятельность, проводимую в данном состоянии, а текст над стрелкой - условие или событие, управляющее данным переходом.

Переплетение циклов может быть довольно запутанным, особенно для долго живущих программ. Для упорядочения циклической структуры используется понятие выпуска (re­lease).

Выпуск - характерная точка в жизни программы, отмечающая прохождение одного полно­го цикла.

Как правило, термином «выпуск» обозначают не только событие (момент в истории жиз­ни программы), но и отчуждаемый артефакт, конкретную форму программы, появление которой отмечает данное событие.

Эта идея четко выделена в дисциплине проектирования Microsoft Solution Framework (MSF), представленной на рис. 3. В результате появляется характерная спиральная струк­тура с периодическими выпусками очередных версий программы.

Замечание: В материалах MSF используется более сложная схема из нескольких вложенных спиралей, по одной для каждой формы существования программы, которая более точно и детально от­ражает существо методологии программирования MSF. Для понимания основной идеи дос­таточно приведенной упрощенной схемы.

Следует отметить три существенных момента этой схемы:

  • подразумевается одна долго живущая программа,

  • жизненный цикл имеет видимое начало,

  • жизненный цикл потенциально бесконечен.

Программные продукты корпорации Microsoft, например, обладают именно этими свойствами. Проекты же, которые проводит типичная оте­чественная программирующая организация в настоящее время, обладают другими харак­теристиками:

  • Типичная программирующая организация проводит параллельно относительно много проектов, каждый программист участвует в нескольких проектах одновре­менно в режиме разделения времени с мелким квантованием (недели, дни или даже часы).

  • Круг заказчиков имеет тенденцию к стабилизации в смысле выделения постоянных партнеров, для которых периодически выполняются новые проекты, опирающиеся на результаты прежних, таким образом, многие проекты начинаются не с нуля.

  • Каждый отдельный проект конечен и, как правило, предусматривает один6 выпуск и краткосрочное сопровождение. Если программный продукт подлежит значитель­ной модификации, то это оформляется отдельным договором, а значит, является независимым проектом.

Чтобы учесть эти особенности, заметим следующее:

1. В жизненном цикле программа взаимодействует с двумя категориями действую­щих лиц: заказчиком (пользователем) и (абстрактным) программистом, причем по­следний может быть представлен как программно (software), так и умственно (brainware).

  1. Программ много, они взаимно влияют друг на друга на разных фазах своих циклов через совместно используемых программистов и заказчиков.

  2. Оба действующих лица (заказчик и программист) имеют двунаправленные связи с программой: заказчик воздействует на программу формулировкой требований при постановке задачи на фазе анализа, а программа воздействует на заказчика своим выпуском после фазы стабилизации; программа воздействует на программиста тем, что после фазы реализации разработанный код (а также другие материалы, напри­мер, модели) сохраняется в голове у программиста и/или в репозитории, воздейст­вие программиста на программу очевидно — программист творец программы.

Учет этих наблюдений приводит к модели жизненного цикла множества программ, представленных на рисунке 4.

6 В большинстве проектов по разработке приложений для автоматизации бизнеса предусматривается передача заказчи­ку двух версий: прототипа на фазе опытной эксплуатации и окончательной версии на фазе внедрения. С точки зрения организации процесса эти версии необходимо различать, но с точки зрения жизненного цикла программы это один вы­пуск, потому что реализует один набор функций, отраженный в спецификациях.

Приведем некоторые примеры, иллюстрирующие и подтверждающие предлагаемую нами схему, приведенную на рис. 4. Информационная система масштаба предприятия обязана иметь "стандартный" (часто не самый лучший для конкретного случая!) интерфейс и вся­кие изыски в этой области категорически запрещаются просто потому, что пользователь и раньше работал с другими программами и привык к определенному типу интерфейса. Программист из проекта в проект использует "стандартную" трехслойную архитектуру приложения (часто не самую лучшую для конкретного случая!) просто потому, что он знает эту архитектуру.

Замечание: Программа может воздействовать через заказчиков и программистов не только на другие программы, но и на самое себя. Хотя на схеме направление стрелок через программиста противоположно направлению смены фаз, а направление стрелок через заказчика проходит через веху выпуска, но, поскольку модель процесса может состоять из нескольких витков, программа может воздействовать на свою более раннюю фазу на более позднем витке! В следующих разделах этой темы мы кратко охарактеризуем основные понятия, как ис­пользованные нами в предыдущих схемах, так и применяемые в различных известных мо­делях жизненного цикла, с целью уточнить используемую терминологию.