Фазы разбиваются на ряд этапов (Рис. 2.1., 2.2.).
Рис. 2.2. Модель жизненного цикла проекта
Разработка начинается с идентификации потребности в новом приложении, а заканчивается передачей продукта разработки в эксплуатацию.
Первым этапом фазы разработки является постановка задачи и определение требований. Определение требований включает описание общего контекста задачи, ожидаемых функций системы и ее ограничений. На этом этапе заказчик совместно с разработчиками принимает решение, стоит ли делать систему.
В случае положительного решения начинается этап спецификации требований. Разработчики программного обеспечения пытаются осмыслить выдвигаемые заказчиком требования и зафиксировать их в виде спецификаций системы. Важно подчеркнуть, что назначение этих спецификаций — описывать внешнее поведение разрабатываемой системы, а не ее внутреннюю организацию, т.е. отвечать на вопрос, что она должна делать, а не как это будет реализовано. Здесь говорится о назначении, а не о форме спецификаций, поскольку на практике при отсутствии подходящего языка спецификаций, к сожалению, нередко приходится прибегать к описанию «что» посредством «как». Прежде чем приступать к созданию проекта по спецификациям, они должны быть тщательно проверены на соответствие исходным целям, полноту, совместимость (непротиворечивость) и однозначность.
Разработка проектных решений, отвечающих на вопрос как, должна быть реализована система, чтобы она могла удовлетворять специфицированным требованиям, выполняется на этапе проектирования. Поскольку сложность системы в целом может быть очень большой, главной задачей этого этапа является последовательная декомпозиция системы до уровня очевидно реализуемых модулей или процедур.
На следующем этапе реализации, или кодирования каждый из этих модулей программируется на своем наиболее подходящем для данного приложения языке. С точки зрения автоматизации этот этап традиционно является наиболее развитым.
Далее фаза разработки заканчивается этапом тестирования (автономного и комплексного) и передачей системы в эксплуатацию.
Фаза эксплуатации и сопровождения включает в себя всю деятельность по обеспечению нормального функционирования программных систем, в том числе фиксирование вскрытых во время исполнения программ ошибок, поиск причин и их исправление, повышение эксплуатационных характеристик системы, адаптацию системы к окружающей среде, а также, при необходимости, и более существенные работы по совершенствованию системы.
В связи с этим данная фаза разбивается на два этапа: собственно сопровождение и развитие. В ряде случаев на данную фазу приходится большая часть средств, расходуемых в процессе жизненного цикла программного обеспечения.
Таким образом, данный проект по автоматизации содержит семь этапов, разделенных во времени (Рис. 2.3.).
Рис. 2.3. Модель жизненного цикла проекта автоматизации
2.1.2 Разработка и описание проекта автоматизации, плана-графика автоматизации и сетевой модели задач
План-график — это поэтапно разбитая и упорядоченная по времени выполнения последовательность работ проекта. Его содержание позволяет руководству планировать деятельность коллектива разработчиков проекта как подразделения фирмы в целом. Как правило, план предъявляется заказчику с тем, чтобы заказчик ориентировался в сроках поэтапного выполнения задания. Это внешние функции календарного плана.
Обычный план-график представляется в виде таблицы со следующей структурой:
Таблица 2.1.
Обычный план-график
Наименование работ (тема, работа, задача, задание) | Сроки выполнения начало/конец | Ответственный исполнитель и исполнители, роли | Требуемые ресурсы и сроки их предоставления план/факт | Примечания | |
план | факт | ||||
1 | 2 | 3 | 4 | 5 | 6 |
Столбец 1 заполняется в соответствии с разбиением заказанного проекта на составляющие. Обычно глубина рубрикации разбиения зависит от уровня проработанности того или иного фрагмента проекта. По мере углубления декомпозиции и уточнения задач вводятся новые строки таблицы, которые должны вписываться в ранее составленную структуру и не противоречить ограничениям, налагаемым ранее (сроки, исполнители, ресурсы).
Распределение времени и контроль над ним — назначение столбцов 2 и 3. В них указываются календарные даты планируемого (столбец 2) и фактического (столбец 3) сроков выполнения работы, задачи или задания. Планируемое начало работы — это самая ранняя дата, после которой можно приступать к выполнению; конец — это предельный срок отчета исполнителей перед менеджером. Иногда граф планируемых сроков дополняется критическими и целесообразными сроками начала/конца работы. Это позволяет менеджеру более точно следить за распределением временных ресурсов.
Столбец 4 «Ответственный исполнитель и исполнители, роли» задает информацию о том, кто работает над данным заданием, и какая квалификация от исполнителей требуется. Возможно дополнение этого столбца сведениями о том, на какие периоды выделен тот или иной исполнитель для выполнения задания, предполагается ли подмена исполнителей и т.п. В прочем, необходимость подобных дополнений свидетельствует о некачественном решении задачи распределения кадровых ресурсов. А вот еще одно дополнение столбца исполнителей, которое часто практикуют в управлении, напротив, весьма полезно. Имеются ввиду подписи всех упомянутых исполнителей, подтверждающая знакомство с содержанием, сроками и условиями выполнения задания.
Распределение технических ресурсов и задание сроков их предоставления — содержание столбца 5. Здесь указывается необходимая для выполнения задания техническая, а в ряде случаев, и программная база. Иногда этот раздел дополняется сведениями о лицах, отвечающих за выполнение указываемых требований. Это удобно как для менеджера, так и для ответственных исполнителей: наглядно видны нарушения поставок (несоответствия между плановыми и фактическими сроками). Полезным расширением состава сведений столбца 5 является включение в него информации о зависимости работ внутри проекта, т.е. перечисление заданий (в том числе, ссылки на другие строки данного календарного плана), без выполнения которых осуществимость планируемых работ нарушается. Отслеживание зависимостей работ — это более содержательная задача выполнения проекта по сравнению с тем, что можно получить через только что указанное расширение календарного плана, и ей в дальнейшем будет уделено внимание.
План-график удобен в трех отношениях. Во-первых, его верхний уровень рубрикации почти в точности совпадает (должен совпадать) с тем, что составляет предмет рассмотрения технического задания на проектирование (во времена СССР ГОСТы требовали обязательного включения календарного плана в документы, сопровождающие процедуру заключения договора на проведения любых работ). Во-вторых, дополнение календарного плана новыми рубриками (строками таблицы), в том числе, в процессе выполнения проекта не вызывает трудностей. Наконец, в-третьих, он достаточно нагляден.
В то же время, по мере углубления декомпозиции, календарный план имеет тенденцию к разрастанию, а, следовательно, обозревать работы проекта в целом становится все труднее. В результате приходится дублировать логически единый документ, разбивать его на части в соответствии с уровнями ответственности иерархии работников проекта. Другой недостаток календарного плана — его неприспособленность к решению такой важной задачи планирования, как учет загруженности работников и определение текущих потребностей в перераспределении исполнителей.
Наиболее узким местом календарного плана является то, что его рубрикация зачастую противоречит распараллеливанию работ, привязки параллельных работ и поставок к срокам. Трудно увидеть все нужные показатели на определенный момент времени, трудно решать другие подобные задачи. Для преодоления указанных проблем обычно используют графики сетевого планирования, или сетевых графиков.
Идея всех многочисленных вариантов сетевого планирования заключается в выстраивании работ проекта в виде специальных размеченных графов. Графы зависимостей работ, вершины которых представляют все работы проекта, а дуги — зависимости работ, определяемые следующим образом. Считается, что, если из одной вершины в другую ведет дуга, то работа, соответствующая второй вершине, может начаться только после завершения первой работы, или вторая работа зависит от первой. Содержательный смысл, вкладываемый в понятие зависимости, может быть различным: от фактической зависимости, когда одна работа использует результаты другой и именно поэтому не может начаться до того, как эти результаты не будут получены, до принудительного упорядочивания работ, например, для учета ресурсных ограничений.
Графы специально приспособлены для планирования времени и в этом качестве они более универсально применимы. Для сетевого планирования очень больших проектов применяют сочетание событийно-ориентированных графовых описаний проекта и графов зависимостей работ.
Граф сетевой модели работ обычно дополняют начальной вершиной, в которую не ведет ни одна дуга, и конечной вершиной, достижимой из любой другой вершины. Приписываются ли конкретные работы этим двум выделенным вершинам, не имеет значения, важно только то, что пути, ведущие из начальной в конечную вершину, отражают те и только те последовательности работ, которые нужно пройти при развитии проекта. Каждый из таких путей называется операционным маршрутом. С точностью до определения отношения зависимости работ другие допустимые последовательности работ невозможны.