Книги по разным темам Pages:     | 1 |   ...   | 8 | 9 | 10 | 11 | 12 |   ...   | 33 |

По характеру отношений с заказчиком/потребителем.

Аутсорсинговые проекты - постановка целей и частично управление проектом ведутся на стороне заказчика; на стороне исполнителя ведется, в основном, реализация и кодирование.

Заказные проекты - постановка целей частично происходит на стороне заказчика, но все управление проектом ведется на стороне исполнителя.

Проекты модификации или сопровождения ПО третьей стороны.

Инициативная разработка - все аспекты проекта:

постановка целей, планирование, управление, разработка и сопровождение ведутся на стороне исполнителя.

Проекты разных категорий требуют применения различных методов управления.

4.4. Жизненный цикл проекта разработки программного продукта Проект по разработке программного продукта, как и всякий проект, имеет начало и конец, то есть развивается во времени. Во время проведения проекта выполняются некоторые операции, причем не хаотически, а в определенной взаимосвязи и последовательности, образуя, тем самым, процессы. Замечено, что выполнение процессов распределено по времени выполнения всего проекта неравномерно.

Одни процессы, например, управление проектом, выполняются все время, пока выполняется проект. Другие процессы, например анализ требований, выполняются только в начале проекта. Третьи процессы, например сопровождение продукта, выполняются только в конце.

Какие процессы выполняются и как они соотносятся друг с другом в конкретном проекте, зависит от многих факторов, из которых важнейшими являются следующие два:

Х тип проекта и особенности продукта;

Х потребности и возможности организации, проводящей проект.

Для того, чтобы было удобно управлять проектом и сравнивать различные способы проведения проектов, принято делить проект на некоторые периоды, называемые фазами (или стадиями), в которых соотношение и взаимосвязь процессов остаются примерно постоянными.

Жизненный цикл проекта (Project Life-Cycle) - набор последовательных фаз проекта, название и число которых определяется потребностями организации, выполняющей проект и типом проекта.

4.4.1. Модели жизненного цикла программных продуктов Жизненный цикл программы - это весь период ее разработки и эксплуатации, начиная с момента возникновения замысла и заканчивая прекращением всех видов ее использования.

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

Постановка задачи Спецификация Проектирование Модель Реализация Код Тестирование и отладка Приложение Использование Замечания Анализ результатов Рис. 1. Жизненный цикл программы Реализацияневозможна Спецификации не удовлетворены Программа не работает Заказчик хочет не это Не та функция Найдены ошибки Пользователь не понял Не удовлетворяются количественные ограничения Жизненный цикл программы тесно связан с жизненным циклом проекта по разработке, особенно если в проект включают такие фазы, как сопровождение и модификация программы во время эксплуатации.

Технология программирования (Software Enginering) изучает отдельные технологические процессы и порядок их прохождения Ч стадии и фазы, а также более крупные структуры: жизненные циклы продуктов и проектов (с использованием определенных знаний, методов и средств). Результаты исследований обычно представляются для общего пользования в форме моделей жизненных циклов, то есть обобщенных описаний типовых способов проведения проектов разработки программных продуктов.

Модель жизненного цикла удобно характеризовать в двух измерениях - вертикальном (представляющем процессы) и горизонтальном (представляющем стадии).

Процесс - совокупность взаимосвязанных действий, преобразующих некоторые входные данные в выходные.

Процессы состоят из набора действий, а каждое действие из набора задач. Вертикальное измерение отражает статические аспекты процессов и оперирует такими понятиями, как рабочие процессы, действия, задачи, результаты деятельности и исполнители.

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

Стадия Ч часть процесса работы над проектом. Каждая стадия характеризуется вехой, достижение которой знаменует завершение стадии.

Стадии состоят из этапов, которые обычно имеют итерационный характер. Иногда стадии объединяют в более крупные временные рамки, называемые фазами.

Следует подчеркнуть, что деление процесса на этапы, стадии и фазы носит объективный характер, поскольку определяется объективными событиями Ч вехами Ч выпуском тех или иных артефактов.

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

Итак, горизонтальное измерение представляет время, отражает динамические аспекты процессов и оперирует такими понятиями, как фазы, стадии, этапы, итерации и контрольные точки.

Модель (или технологический подход) определяется спецификой комбинации стадий и процессов, ориентированной на разные классы программного обеспечения и на особенности коллектива разработчиков.

Простейшее представление жизненного цикла программы представлено на рис. 2.

Процессы Анализ Проектирование Программирование Тестирование Сопровождение Стадии Анализ Проектирование Программирование Тестирование Сопровождение Рис. 2 Каскадная модель жизненного цикла проекта.

Фактически, в данном случае на каждой стадии выполняется единственный процесс. Конечно, при разработке и создании больших программ такая схема недостаточно корректна (да и просто нереалистична). Однако мы можем взять ее за основу для многих других технологических подходов к ведению жизненного цикла.

4.4.2. История и эволюция В истории технологии программирования можно выделить три этапа.

Х Осмысление опыта разработки больших систем. Понимание того, что важно не только на каком языке программирования разрабатывается программа, но и как это делается. Проведение первых международных и национальных конференций (конец 60-х Ч 70-е годы XX века).

o 1968 г. Ч НАТО проводит первую конференцию по инженерии программирования (Software Engineering).

o 1975 г. Ч 1-я международная конференция IEEE.

o 1979 г. Ч 1-я Всесоюзная конференция по технологии программирования.

Х Разработка новых технологических подходов (начало 70-х годов XX века Ч настоящее время).

o 1973 г. Ч Дагласом Россом (Douglas Ross) разработана технология проектирования сложных систем SADT (Structured Analysis and Design Technique).

Стандартизована под названием IDEF (Integrated DEFinition).

o 1985 г. Ч Харланом Миллзом (Harlan Mills) сформулированы основные идеи технологии стерильного цеха.

o 1997 г. Ч в ноябре появилась первая версия Унифицированного языка моделирования UML (Unified Modeling Language). С точки зрения технологических подходов особый интерес представляет рациональный унифицированный процесс, описанный с использованием UML.

Х Принятие стандартов на состав процессов жизненного цикла программного обеспечения (середина 80-х годов XX века Ч настоящее время). Попытки решить проблему качества программных продуктов.

o 1978 г. Ч В СССР утверждена Единая система программной документации (ЕСПД) Ч сборник стандартов, определяющий взаимоувязанные правила разработки, оформления и обращения программ и программной документации.

o 1985 г. Ч впервые утвержден стандарт жизненного цикла для проектирования программных систем (для систем военного назначения по заказам Министерства обороны США).

o 1994 г. Ч в Великобритании создан международный консорциум, разрабатывающий на постоянной основе проекты стандартов и технологии быстрого создания приложений DSDM (Dynamic Systems Development Method).

o 1995 г. Ч принят международный стандарт ISO 12207:1995 Information Technology Ч Software Life Cycle Processes, регламентирующий состав процессов жизненного цикла программного обеспечения.

4.4.3. Классификации моделей жизненного цикла К настоящему времени было предложено множество моделей жизненного цикла программного продукта и процесса разработки, а также постоянно появляются новые предложения. Большинство этих моделей используются на практике в тех или иных типах проектов. Для обзора всего многообразия моделей целесообразно их классифицировать по подходам, процессам и стадиям.

Классификация технологических подходов Выделим основные группы технологических подходов и укажем область применения для каждой из них.

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

Х Строгие (классические, жесткие, предсказуемые) подходы. Данную группу подходов рекомендуется применять для средних, крупномасштабных и гигантских проектов с фиксированным объемом работ. Одно из основных требований к таким проектам Ч предсказуемость.

В эту группу входят подходы, перечисленные ниже.

o Каскадные технологические подходы.

Классический каскадный подход.

Каскадно-возвратный подход.

Каскадно-итерационный подход.

Каскадный подход с перекрывающимися процессами.

Каскадный подход с подпроцессами.

Спиральная модель.

o Каркасные подходы.

Рациональный унифицированный процесс.

o Генетические подходы.

Синтезирующее программирование.

Сборочное (расширяемое) программирование.

Конкретизирующее программирование.

o Подходы на основе формальных преобразований.

Технология стерильного цеха.

Формальные генетические подходы.

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

o Ранние технологические подходы быстрой разработки.

Эволюционное прототипирование.

Итеративная разработка.

Постадийная разработка.

o Адаптивные подходы.

Экстремальное программирование.

Адаптивная разработка.

o Подходы исследовательского программирования.

Компьютерный дарвинизм.

Классификация технологических процессов Мы будем рассматривать два набора (множества) технологических процессов. Первый набор Ч классический, включающий основные процессы, сложившиеся исторически в результате практического опыта разработки программного обеспечения. Второй набор Ч стандартный, т. е. основанный на стандарте ISO 12207:1995. Процессы классического набора фактически являются подмножеством стандартного, выступая там как процессы или действия процессов.

В классическом наборе выделим девять технологических процессов.

Х Возникновение и исследование идеи.

Х Управление.

Х Анализ требований.

Х Проектирование.

Х Программирование.

Х Тестирование и отладка.

Х Ввод в действие.

Х Эксплуатация и сопровождение.

Х Завершение эксплуатации.

Процессы жизненного цикла, определяемые международным стандартом ISO 12207 [ISO/IEC 12207:1995], делятся на три группы.

Х Основные процессы.

o Приобретение.

o Поставка.

o Разработка.

o Эксплуатация.

o Сопровождение.

Х Вспомогательные процессы.

o Документирование.

o Управление конфигурацией.

o Обеспечение качества.

o Верификация.

o Аттестация.

o Совместная оценка.

o Аудит.

o Разрешение проблем.

Х Организационные процессы.

o Управление.

o Создание инфраструктуры.

o Усовершенствование.

o Обучение.

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

Существует два основных варианта формирования промежутков времени, поддерживаемых технологическими подходами. В первом - формируются фазы, отражающие крупные временные этапы. Например, начальная фаза, середина, кульминация, окончание. Во втором варианте - определяются стадии, отражающие названия классических процессов (или их подмножества или надмножества), большая часть времени которых проходит в данной стадии. Пример взаимосвязи между стандартными процессами и стадиями показан на рис. Основные процессы Приобретение Поставка Разработка Эксплуатация Сопровождение Вспомогательные процессы Документирование Вспомогательные процессы Управление Стадии Возник- Плани- Извле- Проек- Прог- Тести- Ввод в Эксплуа- Завершеновение рова- чение тирова- рамми- рова- действие тация и ние идеи ние требо- ние рование ние и сопро- эксплуваний отладка вождение атации Рис. 3 Взаимосвязь между стандартными процессами и стадиями С 1980 года на территории Российской Федерации действует ГОСТ 19.102-77, входящий в систему ГОСТов ЕСПД, который устанавливает стадии разработки программ и программной документации для вычислительных машин, комплексов и систем независимо от их назначения и области применения. Стадии разработки, этапы и содержание работ должны соответствовать указанным в таблице 1.

Таблица 2.

Стадии разработки согласно ГОСТ 19.102-Стадии Этапы работ Содержание работ разработ ки 1. Обоснование Постановка задачи Техническ необходимости Сбор исходных материалов ое задание разработки Выбор и обоснование критериев программы эффективности и качества разрабатываемой программы.

Обоснование необходимости проведения научно-исследовательских работ.

Научно- Определение структуры входных и исследовательск выходных данных.

Pages:     | 1 |   ...   | 8 | 9 | 10 | 11 | 12 |   ...   | 33 |    Книги по разным темам