Эволюция методологий разработки по

ЭВОЛЮЦИЯ МЕТОДОЛОГИЙ РАЗРАБОТКИ ПО К.В. Гугаев, аспирант

Московский финансово-промышленный университет «Синергия»

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

Ключевые слова: методологии разработки ПО, гибкие методологии, agile, waterfall, каскадная модель, спиральная модель.

Введение

Начало истории развития дисциплины управления проектами и проектного менеджмента относят к 30-м годам 20го века и связывают с появлением новых методов подготовки, анализа и исполнения крупных проектов в США - в фирмах «US Air Corporation» (авиационные проекты) и «Exon» (нефтегазовые). В это же время в СССР начинает появляться теория и практика потоковой организации работ на строительных проектах большого масштаба [1].

В конце 60х - начале 70х годов появляются первые предпосылки внедрения принципов управления проектами в процессы разработки ПО [2] :

1. Первый кризис программного обеспечения

2. Изменение взглядов на разработку софта

Первый кризис программного обеспечения.

На Конференции НАТО «Инженерия программного обеспечения» в 1968 Фридрих Л. Бауэр констатировал [6] факт увеличения темпов роста вычислительных мощностей компьютеров и значительного увеличения сложности проблем разработки и проектирования ПО. Таким образом:

1. Стоимость разработки программ приблизилась к стоимости аппаратного обеспечения (серверов).

2. Стоимость проектов все чаще превышала бюджет.

3. Программное обеспечение имело чрезвычайно низкое качество.

4. Разработанные программы не советовали заявленным требованиям.

5. Возникали трудности с поддержкой кода.

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

Изменение взглядов на разработку софта.

Изменения так же происходили и внутри самой отрасли - процесс разработки ПО начинает восприниматься как полноценная сфера деятельности со своими стадиями работ, жизненным циклом и регламентами проектирования, разработки и эксплуатации программ [2]. Таким образом начинается развитие инструментария и рабочих методологий для инженеров, занятых на всех этапах разработки программных продуктов.

Методологии в программной инженерии

В 1968 году на конференции НАТО, повещённой вопросам максимальной производительности компьютеров в качестве темы конференции был использован термин "Программная инженерий" [6]. Впоследствии термин стал обозначать так же название научной дисциплины исследующей вопросы экономичности и надежности разработки ПО, его качества и эксплуатации.

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

образом появляются стандарты и регламенты, методы и «лучшие практики», которые входят в программную инженерию как область знания. Совокупности таких практик, применяемых на различных стадиях жизненного цикла программного обеспечения и объединенных общим философским подходом принято называть «Методологиями разработки программного обеспечения» [3]. Так, методологии разработки ПО стали одной из самых динамично развивающихся областей знаний, т.к. несут в себе практическую составляющую.

Классификация методологий управления проектом

Согласно SWEBOK [4], методологии управления разработкой ПО делятся на:

1. Традиционные

2. Spiral

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

Традиционные модели

Основным примером традиционных моделей служит "Каскадная модель", впервые описанная в статье Уинстона Рой-са (1970) [7] и предполагает последовательное выполнение всех фаз проекта. Итоговый продукт будет получен после завершения всех фаз проекта. Водопадная модель долгое время рассматривалась как основной способ регулярной разработки ПО. В 70x — 80x годах XX вв. была принята министерства обороны США как стандарт.

По мере развития методологий водопадная модель подвергается резкой критике, т.к. обладает существенными недостатками:

1. Сильный рост стоимости незапланированных изменений требований к продукту в на каждом следующем этапе работ.

2. Рост количества проблем в процессе проектирования с ростом проекта.

Тем не менее традиционная модель внесла существенный вклад в понимание процессов разработки ПО по следующим утверждениям:

1. Старт реализации проекта должен быть отложен до выяснения всех целей и

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

2. Разработка продукта должна быть хорошо скоординированной, подчиняться разумному планированию и управлению.

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

В спиральной модели работы над проектом представляются как цикл (спираль), каждый виток который является водопадной моделью. Цикл начинается с этапа сбора требований к предполагаемым изменениям, вносимым на данном витке и завершается реализации прототипа. Таким образом решается основная проблема традиционных моделей о невозможности изменения требований к продукту. Модель была впервые описана Барри Боемом в статье «A Spiral Model of Software Development and Enhancement», опубликовавший в 1988гг [8]. Несмотря на то, что в SWEBOK модель выделена отдельно, в статье автор относит модель к семейству итеративных.

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

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

Зачатки модели итеративной разработки появляются еще в 30-х годах в статьях специалиста по проблемам качества продукции Уолтера Шеварта из Bell Labs. Показательным примером эффективности гибких методологий стал реализованный в 50-е годы проект сверхзвукового самолета Х-15. Согласно мнению участников проекта, итерационный подход стал одним из ключевых факторов успешной реализации проекта.

Заключение Методологии разработки ПО как область знаний в программной инженерии развивались эволюционно наряду с развитием самой отрасли промышленного программирования. Замена традиционных подхо-

дов итерационными была неизбежна ввиду экстремальное программирование (XP) - в быстрорастущей сложности технологий и 1996. Разработанный в 2001м году Agile-роста количества практических проблем в манифест [9] провозгласил эру итерацион-процессах разработки продуктов. Так, в ной разработки и задал направление раз-1995 году появляется методология Scrum, вития гибких методологий в будущем.

Библиографический список

1. «Управление проектами: учебное пособие». Дульзон A. A. Издательство Томского политехнического университета. 2010

2. « Управление проектами разработки ПО. Дисциплина «Гибкие технологии разработки программного обеспечения». Д. Г. Шопырин. СПб: СПбГУИТМО, 2008

3. «Scrum и XP: заметки с передовой». Хенрик Книберг. InfoQ Enterprise Software Development Series. 2008.

4. «Software Engineering — Guide to the software engineering body of knowledge». ISO/IEC TR 19759:2015

5. «EssentialScrum: A Practical Guide to the Most Popular Agile Process». — М.: «Вильямс», 2016

6. «Software Engineering Reports. The 1968/69 NATO». Dagstuhl-Seminar 9635: «History of Software Engineering» Schloss Dagstuhl, August 26 - 30, 1996

7. «Managing the Development of Large Software Systems: concepts and techniques». Royce Winston. 1970. ICSE '87 Proceedings of the 9th international conference on Software Engineering

8. «A Spiral Model of Software Development and. Enhancement». Barry W. Boehm. TRW Defense Systems Group. 1988

9. «Manifesto for Agile Software Development». Agile Alliance. 2001.

EVOLUTION OF THE DEVELOPMENT METHODOLOGY K.W. Gugaev, postgraduate

Moscow financial-industrial university "Synergy"

Abstract. The article deals with the process of development of software engineering as a science and methodologies of software development as a field of knowledge in software engineering. The main stages in the development of methodologies, their prerequisites and content are considered. Opie the way to develop flexible methodologies as the evolution of traditional models.

Keywords: software development methodologies, flexible methodologies, agile, waterfall, cascade model, spiral model.