Процесс разработки программного обеспечения

Поделись знанием:
Перейти к: навигация, поиск
Разработка программного обеспечения
Процесс разработки ПО
Шаги процесса

Анализ • Проектирование • Программирование • Документирование • Тестирование

Модели

Итеративная • Спиральная • Каскадная • V-Model • Dual Vee Model

Методологии

Agile (XP, Lean, Scrum, FDD и др.) • Cleanroom • OpenUP • RAD • RUP • MSF • DSDM • TDD

Сопутствующие дисциплины

Конфигурационное управление • Управление проектами • Управление требованиями

Процесс разработки программного обеспечения (англ. software development process, software process) — структура, согласно которой построена разработка программного обеспечения (ПО).

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





Шаги процесса

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

Модели процесса

Водопадная (каскадная, последовательная) модель

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

Этапы проекта в соответствии с каскадной моделью:

  1. Формирование требований;
  2. Проектирование;
  3. Реализация;
  4. Тестирование;
  5. Внедрение;
  6. Эксплуатация и сопровождение.

Преимущества:

  • Полная и согласованная документация на каждом этапе;
  • Легко определить сроки и затраты на проект.

Недостатки:

В водопадной модели переход от одной фазы проекта к другой предполагает полную корректность результата (выхода) предыдущей фазы. Однако неточность какого-либо требования или некорректная его интерпретация в результате приводит к тому, что приходится «откатываться» к ранней фазе проекта и требуемая переработка не просто выбивает проектную команду из графика, но приводит часто к качественному росту затрат и, не исключено, к прекращению проекта в той форме, в которой он изначально задумывался. По мнению современных специалистов, основное заблуждение авторов водопадной модели состоит в предположениях, что проект проходит через весь процесс один раз, спроектированная архитектура хороша и проста в использовании, проект осуществления разумен, а ошибки в реализации легко устраняются по мере тестирования. Эта модель исходит из того, что все ошибки будут сосредоточены в реализации, а потому их устранение происходит равномерно во время тестирования компонентов и системы[1]. Таким образом, водопадная модель для крупных проектов мало реалистична и может быть эффективно использована только для создания небольших систем[2].

Итерационная модель

Альтернативой последовательной модели является так называемая модель итеративной и инкрементальной разработки (англ. iterative and incremental development, IID), получившей также от Т. Гилба в 70-е гг. название эволюционной модели. Также эту модель называют итеративной моделью и инкрементальной моделью[3].

Модель IID предполагает разбиение жизненного цикла проекта на последовательность итераций, каждая из которых напоминает «мини-проект», включая все процессы разработки в применении к созданию меньших фрагментов функциональности, по сравнению с проектом в целом. Цель каждой итерации — получение работающей версии программной системы, включающей функциональность, определённую интегрированным содержанием всех предыдущих и текущей итерации. Результат финальной итерации содержит всю требуемую функциональность продукта. Таким образом, с завершением каждой итерации продукт получает приращение — инкремент — к его возможностям, которые, следовательно, развиваются эволюционно. Итеративность, инкрементальность и эволюционность в данном случае есть выражение одного и того же смысла разными словами со слегка разных точек зрения[2].

По выражению Т. Гилба, «эволюция — приём, предназначенный для создания видимости стабильности. Шансы успешного создания сложной системы будут максимальными, если она реализуется в серии небольших шагов и если каждый шаг заключает в себе четко определённый успех, а также возможность «отката» к предыдущему успешному этапу в случае неудачи. Перед тем, как пустить в дело все ресурсы, предназначенные для создания системы, разработчик имеет возможность получать из реального мира сигналы обратной связи и исправлять возможные ошибки в проекте»[3].

Подход IID имеет и свои отрицательные стороны, которые, по сути, — обратная сторона достоинств. Во-первых, целостное понимание возможностей и ограничений проекта очень долгое время отсутствует. Во-вторых, при итерациях приходится отбрасывать часть сделанной ранее работы. В-третьих, добросовестность специалистов при выполнении работ всё же снижается, что психологически объяснимо, ведь над ними постоянно довлеет ощущение, что «всё равно всё можно будет переделать и улучшить позже»[2].

Различные варианты итерационного подхода реализованы в большинстве современных методологий разработки (RUP, MSF, XP).

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

Спиральная модель (англ. spiral model) была разработана в середине 1980-х годов Барри Боэмом. Она основана на классическом цикле Деминга PDCA (plan-do-check-act). При использовании этой модели ПО создается в несколько итераций (витков спирали) методом прототипирования.

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

На каждой итерации оцениваются:

  • риск превышения сроков и стоимости проекта;
  • необходимость выполнения ещё одной итерации;
  • степень полноты и точности понимания требований к системе;
  • целесообразность прекращения проекта.

Важно понимать, что спиральная модель является не альтернативой эволюционной модели (модели IID), а специально проработанным вариантом. К сожалению, нередко спиральную модель либо ошибочно используют как синоним эволюционной модели вообще, либо (не менее ошибочно) упоминают как совершенно самостоятельную модель наряду с IID[2].

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

  1. Дефицит специалистов.
  2. Нереалистичные сроки и бюджет.
  3. Реализация несоответствующей функциональности.
  4. Разработка неправильного пользовательского интерфейса.
  5. Перфекционизм, ненужная оптимизация и оттачивание деталей.
  6. Непрекращающийся поток изменений.
  7. Нехватка информации о внешних компонентах, определяющих окружение системы или вовлеченных в интеграцию.
  8. Недостатки в работах, выполняемых внешними (по отношению к проекту) ресурсами.
  9. Недостаточная производительность получаемой системы.
  10. Разрыв в квалификации специалистов разных областей.

В сегодняшней спиральной модели определён следующий общий набор контрольных точек[4]:

  1. Concept of Operations (COO) — концепция (использования) системы;
  2. Life Cycle Objectives (LCO) — цели и содержание жизненного цикла;
  3. Life Cycle Architecture (LCA) — архитектура жизненного цикла; здесь же возможно говорить о готовности концептуальной архитектуры целевой программной системы;
  4. Initial Operational Capability (IOC) — первая версия создаваемого продукта, пригодная для опытной эксплуатации;
  5. Final Operational Capability (FOC) –— готовый продукт, развернутый (установленный и настроенный) для реальной эксплуатации.

Напишите отзыв о статье "Процесс разработки программного обеспечения"

Примечания

  1. Брукс Ф. Мифический человеко-месяц или как создаются программные системы : пер. с англ. / Ф. Брукс. — Санкт-Петербург : Символ-Плюс, 1999. — 304 с.: ил.
  2. 1 2 3 4 Мирошниченко Е. А. Технологии программирования: учебное пособие / Е. А. Мирошниченко. — 2-е изд., испр. и доп. — Томск: Изд-во Томского политехнического университета, 2008. — 128 с.
  3. 1 2 Ларман К. [www.osp.ru/os/2003/09/183412/ Итеративная и инкрементальная разработка: краткая история] / К. Ларман, В. Базили // Открытые системы. — 2003.— N 9.
  4. Орлик С. Введение в программную инженерию и управление жизненным циклом ПО. [software-testing.ru/library/around-testing/engineering/267-swebok]

Отрывок, характеризующий Процесс разработки программного обеспечения


Х
Но странное дело, все эти распоряжения, заботы и планы, бывшие вовсе не хуже других, издаваемых в подобных же случаях, не затрогивали сущности дела, а, как стрелки циферблата в часах, отделенного от механизма, вертелись произвольно и бесцельно, не захватывая колес.
В военном отношении, гениальный план кампании, про который Тьер говорит; que son genie n'avait jamais rien imagine de plus profond, de plus habile et de plus admirable [гений его никогда не изобретал ничего более глубокого, более искусного и более удивительного] и относительно которого Тьер, вступая в полемику с г м Феном, доказывает, что составление этого гениального плана должно быть отнесено не к 4 му, а к 15 му октября, план этот никогда не был и не мог быть исполнен, потому что ничего не имел близкого к действительности. Укрепление Кремля, для которого надо было срыть la Mosquee [мечеть] (так Наполеон назвал церковь Василия Блаженного), оказалось совершенно бесполезным. Подведение мин под Кремлем только содействовало исполнению желания императора при выходе из Москвы, чтобы Кремль был взорван, то есть чтобы был побит тот пол, о который убился ребенок. Преследование русской армии, которое так озабочивало Наполеона, представило неслыханное явление. Французские военачальники потеряли шестидесятитысячную русскую армию, и только, по словам Тьера, искусству и, кажется, тоже гениальности Мюрата удалось найти, как булавку, эту шестидесятитысячную русскую армию.
В дипломатическом отношении, все доводы Наполеона о своем великодушии и справедливости, и перед Тутолминым, и перед Яковлевым, озабоченным преимущественно приобретением шинели и повозки, оказались бесполезны: Александр не принял этих послов и не отвечал на их посольство.
В отношении юридическом, после казни мнимых поджигателей сгорела другая половина Москвы.
В отношении административном, учреждение муниципалитета не остановило грабежа и принесло только пользу некоторым лицам, участвовавшим в этом муниципалитете и, под предлогом соблюдения порядка, грабившим Москву или сохранявшим свое от грабежа.
В отношении религиозном, так легко устроенное в Египте дело посредством посещения мечети, здесь не принесло никаких результатов. Два или три священника, найденные в Москве, попробовали исполнить волю Наполеона, но одного из них по щекам прибил французский солдат во время службы, а про другого доносил следующее французский чиновник: «Le pretre, que j'avais decouvert et invite a recommencer a dire la messe, a nettoye et ferme l'eglise. Cette nuit on est venu de nouveau enfoncer les portes, casser les cadenas, dechirer les livres et commettre d'autres desordres». [«Священник, которого я нашел и пригласил начать служить обедню, вычистил и запер церковь. В ту же ночь пришли опять ломать двери и замки, рвать книги и производить другие беспорядки».]
В торговом отношении, на провозглашение трудолюбивым ремесленникам и всем крестьянам не последовало никакого ответа. Трудолюбивых ремесленников не было, а крестьяне ловили тех комиссаров, которые слишком далеко заезжали с этим провозглашением, и убивали их.
В отношении увеселений народа и войска театрами, дело точно так же не удалось. Учрежденные в Кремле и в доме Познякова театры тотчас же закрылись, потому что ограбили актрис и актеров.
Благотворительность и та не принесла желаемых результатов. Фальшивые ассигнации и нефальшивые наполняли Москву и не имели цены. Для французов, собиравших добычу, нужно было только золото. Не только фальшивые ассигнации, которые Наполеон так милостиво раздавал несчастным, не имели цены, но серебро отдавалось ниже своей стоимости за золото.
Но самое поразительное явление недействительности высших распоряжений в то время было старание Наполеона остановить грабежи и восстановить дисциплину.
Вот что доносили чины армии.
«Грабежи продолжаются в городе, несмотря на повеление прекратить их. Порядок еще не восстановлен, и нет ни одного купца, отправляющего торговлю законным образом. Только маркитанты позволяют себе продавать, да и то награбленные вещи».
«La partie de mon arrondissement continue a etre en proie au pillage des soldats du 3 corps, qui, non contents d'arracher aux malheureux refugies dans des souterrains le peu qui leur reste, ont meme la ferocite de les blesser a coups de sabre, comme j'en ai vu plusieurs exemples».
«Rien de nouveau outre que les soldats se permettent de voler et de piller. Le 9 octobre».
«Le vol et le pillage continuent. Il y a une bande de voleurs dans notre district qu'il faudra faire arreter par de fortes gardes. Le 11 octobre».
[«Часть моего округа продолжает подвергаться грабежу солдат 3 го корпуса, которые не довольствуются тем, что отнимают скудное достояние несчастных жителей, попрятавшихся в подвалы, но еще и с жестокостию наносят им раны саблями, как я сам много раз видел».
«Ничего нового, только что солдаты позволяют себе грабить и воровать. 9 октября».
«Воровство и грабеж продолжаются. Существует шайка воров в нашем участке, которую надо будет остановить сильными мерами. 11 октября».]
«Император чрезвычайно недоволен, что, несмотря на строгие повеления остановить грабеж, только и видны отряды гвардейских мародеров, возвращающиеся в Кремль. В старой гвардии беспорядки и грабеж сильнее, нежели когда либо, возобновились вчера, в последнюю ночь и сегодня. С соболезнованием видит император, что отборные солдаты, назначенные охранять его особу, долженствующие подавать пример подчиненности, до такой степени простирают ослушание, что разбивают погреба и магазины, заготовленные для армии. Другие унизились до того, что не слушали часовых и караульных офицеров, ругали их и били».
«Le grand marechal du palais se plaint vivement, – писал губернатор, – que malgre les defenses reiterees, les soldats continuent a faire leurs besoins dans toutes les cours et meme jusque sous les fenetres de l'Empereur».
[«Обер церемониймейстер дворца сильно жалуется на то, что, несмотря на все запрещения, солдаты продолжают ходить на час во всех дворах и даже под окнами императора».]
Войско это, как распущенное стадо, топча под ногами тот корм, который мог бы спасти его от голодной смерти, распадалось и гибло с каждым днем лишнего пребывания в Москве.
Но оно не двигалось.
Оно побежало только тогда, когда его вдруг охватил панический страх, произведенный перехватами обозов по Смоленской дороге и Тарутинским сражением. Это же самое известие о Тарутинском сражении, неожиданно на смотру полученное Наполеоном, вызвало в нем желание наказать русских, как говорит Тьер, и он отдал приказание о выступлении, которого требовало все войско.
Убегая из Москвы, люди этого войска захватили с собой все, что было награблено. Наполеон тоже увозил с собой свой собственный tresor [сокровище]. Увидав обоз, загромождавший армию. Наполеон ужаснулся (как говорит Тьер). Но он, с своей опытностью войны, не велел сжечь всо лишние повозки, как он это сделал с повозками маршала, подходя к Москве, но он посмотрел на эти коляски и кареты, в которых ехали солдаты, и сказал, что это очень хорошо, что экипажи эти употребятся для провианта, больных и раненых.
Положение всего войска было подобно положению раненого животного, чувствующего свою погибель и не знающего, что оно делает. Изучать искусные маневры Наполеона и его войска и его цели со времени вступления в Москву и до уничтожения этого войска – все равно, что изучать значение предсмертных прыжков и судорог смертельно раненного животного. Очень часто раненое животное, заслышав шорох, бросается на выстрел на охотника, бежит вперед, назад и само ускоряет свой конец. То же самое делал Наполеон под давлением всего его войска. Шорох Тарутинского сражения спугнул зверя, и он бросился вперед на выстрел, добежал до охотника, вернулся назад, опять вперед, опять назад и, наконец, как всякий зверь, побежал назад, по самому невыгодному, опасному пути, но по знакомому, старому следу.
Наполеон, представляющийся нам руководителем всего этого движения (как диким представлялась фигура, вырезанная на носу корабля, силою, руководящею корабль), Наполеон во все это время своей деятельности был подобен ребенку, который, держась за тесемочки, привязанные внутри кареты, воображает, что он правит.