Методология разработки софта - организация труда, включающая идеологические принципы, план, контроль над процессами, подход к сотрудникам. Выделим 12 видов:

  • Waterfall - традиционный подход.
  • RUP (Rational Unified Process) - рациональный.
  • Agile - общая методология гибкой разработки.
  • Crystal Clear - подход с уравниванием разработчиков в коллективе.
  • Spiral - спиральный метод.
  • DSDM (Dynamic Systems Development Model) - динамическая модель.
  • FDD (Feature Driven Development) - методология, рассматривающая будущие изменения.
  • JAD (Joint Application Development) - ориентированный на пользователя подход.
  • RAD (Rapid Application Development) - модель быстрой разработки.
  • Scrum - концепция работы в условиях сорванных сроков и идеологического кризиса.
  • XP (Extreme Programming) - экстремальная разработка в динамической среде.
  • LD (Lean Development) - метод, предполагающий бережное отношение ко всем участникам процесса.

Давайте попробуем разобраться, что скрывается за этими английскими названиями.

Waterfall

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

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

RUP

RUP - итеративный подход, который решает проблемы, которые есть у Waterfall. Чем хорош RUP:

  • Учитывает изменяющиеся требования. Как бы ни был хорош руководитель проекта, учесть всё в начале невозможно.
  • Интеграция функций происходит постепенно, то есть каждая «деталь» проходит цикл разработки, проверки и внедрения в проект. Как следствие, снижаются риски и стоимость производства.
  • Ранний выпуск продукта. ПО выходит с уменьшенной функциональностью, чтобы занять нишу на рынке и противостоять конкурентам, после чего обрастает «мясом».
  • Повторное использование. При наращивании функциональности проще выделить типовые решения, которые сократят разработку.
  • Постоянное обучение. Из-за частых итераций разработчики не имеют больших пауз между доработкой кода, поэтому профессиональный рост происходит плавно и безболезненно.
  • Постоянное улучшение продукта. Итерации позволяют оценить проект не только с точки зрения соответствия плану и ТЗ, но и найти пути увеличения эффективности и качества продукта.

Agile

Agile - метод гибкой разработки программного обеспечения, предполагающий большое количество итераций. Документ Agile Manifesto описывает 4 идей и 12 принципов гибкого подхода, коротко его можно описать всего двумя пунктами:

  • Неформальные отношения важнее задокументированных. То есть устные договоренности между сотрудниками, между заказчиком и исполнителем важнее всего, что отражено в планах, договорах и техническом задании. Иначе говоря, клиент всегда прав.
  • Работающий продукт - главная оценка прогресса. Важны не инструменты, решения, производительность и изящество, а тот факт, что все запланированные возможности реализованы.

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

Crystal Clear

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

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

Spiral

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

Преимущество подхода не в увеличении скорости разработки, а в снижении уровня возникновения рисков. Успешность спирального метода зависит от добросовестного, внимательного и компетентного управления, а размер проекта не имеет принципиального значения.

DSDM

Модель развития динамических систем была разработана в Великобритании в середине 1990-х годов и является эволюционным развитием быстрой разработки приложений (RAD). Основная идея стандартная: при планировании в самом начале невозможно понимать всех тонкостей разработки, поэтому весь процесс - исследовательская работа.

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

FDD

FDD - процесс для обеспечения масштабируемости и повторяемости, при этом поощряющий творчество и инновации. Вот основные принципы:

  • Разработка каждого крупного проекта должна иметь системность.
  • Процессы должны быть простыми и проработанными.
  • Ценность и логичность процесса должна быть ясна каждому члену команды.
  • Предпочтение отдаётся коротким итеративным циклам разработки. Это уменьшает количество ошибок и позволяет быстрее наращивать функциональность.

FDD регламентирует время, которое должно затрачиваться на каждый из процессов. Организационной деятельности в цикле должна занимать не более 23−25%, в то время как на непосредственную разработку, сборку и тестирование функций необходимо тратить 75−77% времени.

JAD

JAD - это методология, нацеленная на максимальную занятость в разработке конечного пользователя. Происходит это посредством встреч и проведения совместных семинаров. JAD была придумана в 1970-х годах сотрудниками IBM и нацелена на бизнес в целом. Однако со временем данная концепция стала успешно применяться и для разработки программного обеспечения.

В отличие от подхода Waterfall, JAD приводит к сокращению времени разработки, большей удовлетворенности клиентов и экономии средств на изучении рынка. С другой стороны, это требует большой клиентской выборки и необходимости разработчиков работать не со строгими требованиями ТЗ, а с постоянно меняющимся мнением.

RAD

RAD - методология, которая во главу угла ставит скорость и удобство разработки. Одно из главных условий - использование языка быстрой разработки. Это название абстрактного языка программирования, с помощью которого программист способен решать задачи быстрее, чем с представителями третьего поколения (C / C ++, Pascal или Fortran). Вот ещё несколько пунктов концепции:

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

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

Scrum

Scrum - гибкий метод управления проектами, целью которого является повышение производительности труда в командах, ранее парализованных более тяжелыми методологическими процессами. В основе концепции лежат «спринты». Спринт - короткая итерация, строго ограниченная по времени (обычно 2−4 недели). В это время минимизируется длительность совещаний, но увеличивается их частота (они называются «схватками»).

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

XP

Экстремальное программирование - возможность вести разработку в условиях постоянно меняющихся требований. Вот несколько признаков:

  • Игра в планирование. В начале проекта есть только приблизительный план, после каждой итерации его чёткость возрастает.
  • Высокая частота релизов. Новая версия продукта имеет незначительные изменения по сравнению с предыдущей, но время на выпуск при этом минимально.
  • Контакт с клиентом. Для удовлетворения требований конечной аудитории необходимо оперативное реагирование на замечания и пожелания.
  • Рефакторинг. Улучшение качества кода без уменьшения функциональности.
  • Стандарт выполнения кода. Или применяются общие правила, или разногласия в оформлении не подлежат обсуждению и критике.
  • Коллективная ответственность. Несмотря на то, что каждый член команды выполняет свой участок работ, за код в целом отвечает весь коллектив.

LD

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

  • Поощрении сотрудников за успешную работу.
  • Изменении текущих задач только по мере необходимости или по запросу заказчика.
  • Строгом выполнении плана: всё, что сверх - считается потерями времени и ресурсов.
  • Внедрении общей концепции «Мыслить широко, делать мало, ошибаться быстро, учиться стремительно».

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

В конце 2002 года московское издательство "Лори" выпустило книгу Алистера Коберна (Alistair Cockburn) "Быстрая разработка программного обеспечения". Русское название книги немного удивляет, потому что в оригинале она называется "Agile Software Development" и более правильный перевод звучал бы как "Гибкая разработка ПО". Впрочем, не будем придираться к переводчику, потому что подобных книг на русском языке еще не издавалось.

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

Возьмем, к примеру, строительство здания. В наше время строительство дома - совершенно простая задача. Все знают, какие действия надо предпринять, чтобы в итоге получился нужный дом. Процесс предсказуем. Роли четко определены. Технологии отлично известны. При разработке ПО возникают совершенно уникальные проблемы: пользователи зачастую просто не могут сказать, что же им в действительности нужно, пока не попробуют продукт в действии; требования постоянно меняются, поэтому создание солидного плана на весь проект лишено смысла; квалифицированных кадров не хватает; используемые технологии часто "сырые", а инструменты несовершенны. В таких условиях традиционные подходы к управлению проектами очень часто терпят поражение.

Периодически находились люди, которые начинали понимать проблемы создания ПО, но настоящий прорыв происходит именно теперь, после появления экстремального программирования (eXtreme Programming, www.extremeprogramming.com) и создания альянса гибкой разработки ПО (Agile Alliance, www.agilealliance.org). Гибкие методологии ломают стереотипы и полностью изменяют процесс разработки программ. Они изменяют сами принципы организации процесса.

Чем же отличаются гибкие методологии от традиционных? Можно выделить несколько основных отличий:

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

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

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

Какие бывают методологии, как они влияют на процесс разработки ПО и зачем они вообще нужны? В книгу включены крайне интересные приложения: программирование как построение теорий, применение языковых игр Витгенштейна к разработке ПО, применение методов Мусаши (самурай, живший в 17 веке и написавший книгу "Книга пяти колец") к разработке ПО.

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

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

Для управляющих проектами (Project Manager) и лидеров групп (Team Leader) книга из категории must read. Ваша эффективность, как руководителя, заметно возрастет.

Если говорить о качестве издания, то перевод достаточно хорош, за исключением термина agile. Единственный минус книги - плохая полиграфия, что не редкость для компьютерной литературы. Что удивительно, цена книги при таком качестве тоже не маленькая.

Книгу Алистера Коберна "Быстрая разработка программного обеспечения" можно приобрести в интернет-магазине www.rodina.by (www.rodina.by/book/info/go/6047.html).

Михаил ДУБАКОВ

Срочная разработка программного обеспечения - это суровая необходимость современного ИТ-рынка. Положение индустрии таково, что приходится реагировать достаточно эффективно на любые условия, которые меняются часто. Быстро, срочно - эти слова не исчезают из лексикона успешных разработчиков. Приложения должны удовлетворять текущий запрос, предоставляя тот функционал, о котором вчера лишь догадывались, а сегодня он уже необходим именно это и есть и срочная разработка программного обеспечения. Разработка программ сегодня проникла буквально во все сферы жизни и новые требования могут появится с любой стороны. Программное обеспечение сегодня это:

  • Современное управление
  • Контроль
  • Мониторинг

Срочно - не значит некачественно?

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

  • Чтобы продукт получался быстро - необходима либо слаженная команда профессионалов, либо отдельный исполнитель-универсал. Разумеется, это не подходит ко всем программам.
  • Контроль качества - обязательная процедура. Контроль качества и отлов «багов» в таком процессе как создание программного обеспечения не может быть исключён из производственного процесса, даже для ускорения. Это необходимое условие для профессионально сделанной программы.
  • Чтобы срочность не вредила итоговому продукту, нужны исполнители, которые давно освоили и создали свой производственный процесс. Скорее всего разработка ПО у таких специалистов пройдёт действительно качественно и быстро.

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

Поиск исполнителей.

Много специалистов, вольнонаёмных и объединённых в организации оказывают подобные услуги. Заказать у них можно всё что угодно, естественно что цены будут зависеть от уровня специалиста, его востребованности и сложности задачи. Есть три основных пути, которыми пользуется большинство заказчиков.

  • Студийная разработка. Студии предполагают хорошее качество исполнения, но за срочность берут очень и очень солидные надбавки. Заказать у них программу можно, если заказчик готов оплатить эти расходы.
  • Фрилансеры. Спорный вопрос. Можно сэкономить, а можно получить сорванные сроки и очень посредственное качество.

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

Быстрая разработка программ

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

По-английски: Rapid Application Development

Синонимы английские: RAD

См. также: Автоматизированное программирование

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

    Педагогический терминологический словарь

  • - Быстрорастущая сельскохозяйственная культура, высаживаемая на земле, доступной только в течение короткого периода времени, например между посадками основной культуры, или – иногда – культура, высаживаемая между...

    Словарь бизнес терминов

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

    Большой бухгалтерский словарь

  • - ".....

    Официальная терминология

  • - 1) река в Земле Войска Донского, левый приток Донца. Берет начало во 2-м Донском округе, пересекает юго-восточный угол Донецкого и в 1-м Донском округе впадает в Донец, выше Усть-Быстрянской станицы...
  • - Иркутской губернии и уезда, правый приток реки Иркут, берет начало в хребте Хамар-Дабан, двумя истоками, вершины которых находятся в гранитных ущельях...

    Энциклопедический словарь Брокгауза и Евфрона

  • - река в Ростовской области РСФСР, левый приток Северского Донца. Длина 218 км, площадь бассейна 4180 км2. Течёт по равнине. Питание преимущественно снеговое. В верховьях Б. и её притоки летом пересыхают...

    Большая Советская энциклопедия

  • - См. forme allegro...

    Пятиязычный словарь лингвистических терминов

  • - См. СТРОГОСТЬ -...
  • - См....

    В.И. Даль. Пословицы русского народа

  • - См. ПОРА - МЕРА -...

    В.И. Даль. Пословицы русского народа

  • Словарь синонимов

  • - сущ., кол-во синонимов: 2 фаст-фуд фастфуд...

    Словарь синонимов

  • - сущ., кол-во синонимов: 1 чес...

    Словарь синонимов

  • - сущ., кол-во синонимов: 1 игра...

    Словарь синонимов

  • - сущ., кол-во синонимов: 1 река...

    Словарь синонимов

"Быстрая разработка программ" в книгах

РАЗРАБОТКА ПРОГРАММ

Из книги Практика управления человеческими ресурсами автора Армстронг Майкл

РАЗРАБОТКА ПРОГРАММ 6. Для каждого аспекта электронного научения уточните следующее:? потребность в научении;? то, каким образом электронное научение удовлетворит эту потребность;? систему научения, которая будет использоваться;? содержание (в широком смысле), которое

Путь 2. Быстрая разработка приложений

автора Джестон Джон

Путь 2. Быстрая разработка приложений Большинство автоматизированных решений BPM дает возможность интерактивно конфигурировать процессы между персоналом бизнеса и техническими специалистами, когда специалисты по процессам и/или хозяева процессов садятся за стол

Шаг 9. Разработка и запуск маркетинговых программ

Из книги Управление бизнес-процессами. Практическое руководство по успешной реализации проектов автора Джестон Джон

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

3. Разработка и совершенствование общественных программ и услуг

Из книги Маркетинг для государственных и общественных организаций автора Котлер Филип

3. Разработка и совершенствование общественных программ и услуг «Как вам, возможно, уже известно, мы получили отличную новость после того, как я направил петицию по адресу Даунинг-стрит, 10. Теперь они обещают потратить $280 млн на улучшение обедов в школьных столовых

Создание устноисторических проектов и разработка научно-исследовательских программ по устной истории

Из книги Устная история автора Щеглова Татьяна Кирилловна

Создание устноисторических проектов и разработка научно-исследовательских программ по устной истории Специфика деятельности в области устной истории. Разработка концепции исследования. Постановка целей. Определение задач. Направления и формы устноисторической

Из книги Гражданский кодекс РФ автора ГАРАНТ

Глава 8 Разработка программ

Из книги UNIX - универсальная среда программирования автора Пайк Роб

Глава 8 Разработка программ Первоначально системе UNIX предназначалась роль среды для разработки программ. В настоящей главе мы обсудим некоторые применяемые с этой целью программные средства на примере солидной программы - интерпретатора языка программирования,

10. Классы памяти и разработка программ

Из книги Язык Си - руководство для начинающих автора Прата Стивен

10. Классы памяти и разработка программ ЛОКАЛЬНЫЕ И ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕКЛАССЫ ПАМЯТИФУНКЦИЯ ПОЛУЧЕНИЯ СЛУЧАЙНЫХ ЧИСЕЛПРОВЕРКА ОШИБОКМОДУЛЬНОЕ

Глава 3 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual Basic 3.0

автора Волков Владимир Борисович

Глава 3 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual Basic

Глава 4 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual C++ 3.0

Из книги Программирование для карманных компьютеров автора Волков Владимир Борисович

Глава 4 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual C++ 3.0 По сравнению с eVB язык C++, безусловно, предоставляет разработчику больше возможностей. Несмотря на то что в eVB можно было сделать почти все, что можно сделать в eVC (так в этой главе будет называться eMbedded Visual C++

Глава 5 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual С++ 4.0

Из книги Программирование для карманных компьютеров автора Волков Владимир Борисович

Глава 5 Разработка программ для Pocket PC с помощью Microsoft eMbedded Visual С++ 4.0 Поскольку все сказанное о среде VC 3.0 относится в полной мере и к eVC 4.0, да и сами среды похожи друг на друга как близнецы, нет нужды снова описывать среду разработки. Использовать eVC 4.0 необходимо, если

Глава 6 NET Compact Framework и разработка программ для Pocket PC в Microsoft Visual Studio.NET 2003

Из книги Программирование для карманных компьютеров автора Волков Владимир Борисович

Глава 6 NET Compact Framework и разработка программ для Pocket PC в Microsoft Visual Studio.NET 2003 Не покривлю душой, если скажу, что мы переходим к одной из самых интересных частей книги. На самом деле, еще совсем недавно технология. NET вызывала у меня вполне законные опасения. Уж очень это все было

Глава 12 Разработка ценовых стратегий и программ

Из книги Маркетинг менеджмент. Экспресс-курс автора Котлер Филип

Глава 12 Разработка ценовых стратегий и программ В этой главе вы найдете ответы на следующие вопросы:1. Как потребители воспринимают и сравнивают цены?2. Как происходит первоначальное установление цены?3. Как происходит адаптация цен к различным рыночным ситуациям и

8.6. Разработка программ стимулирования труда

Из книги Управление персоналом автора Шевчук Денис Александрович

8.6. Разработка программ стимулирования труда Стимулирование труда – способ вознаграждения работников за участие в производстве, основанный на сопоставлении эффек-тивности труда и требований технологии.Существенная проблема в области управления производством –

Глава 5. Разработка и виды туристических программ

Из книги Организация туристического бизнеса: технология создания турпродукта автора Мишина Лариса Александровна

Глава 5. Разработка и виды туристических программ Изначальной функцией туристических фирм является планирование туров. В процессе выполнения этой функции создается конкурентоспособный и привлекательный туристский продукт.Для того чтобы его создать, необходимо

Rapid Application Development (RAD) - это жизненный цикл процесса проектирования, созданный для достижения более высоких скорости разработки и качества ПО, чем это возможно при традиционном подходе к проектированию.

Концепция RAD стала ответом на методы разработки программ 1970-х и начала 1980-х годов, такие как «модель водопада». Эти методы предусматривали настолько медленный процесс создания программы, что зачастую даже требования к программе успевали измениться до окончания разработки. Основателем RAD считается сотрудник IBM Джеймс Мартин, который в 1980-х годах сформулировал основные принципы RAD, основываясь на идеях Барри Бойма и Скотта Шульца. А в 1991 году Мартин опубликовал известную книгу, в которой детально изложил концепцию RAD и возможности её применения. В настоящее время RAD становится общепринятой схемой для создания средств разработки программных продуктов.

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

Жизненный цикл ПО по методологии RAD состоит из четырех фаз:

фаза анализа и планирования требований;

фаза проектирования;

фаза построения;

фаза внедрения.

На стадии анализа и планирования требований пользователи осуществляют следующие действия:

определение функций, которые должна выполнять система;

выделение наиболее приоритетных функций, требующих проработки в первую очередь;

описание информационных потребностей.

Формулирование требований к системе осуществляется в основном силами пользователей под руководством специалистов-разработчиков. Кроме того, на данной стадии решаются следующие задачи:

ограничивается масштаб проекта;

устанавливаются временные рамки для каждой из последующих стадий;

определяется сама возможность реализации проекта в заданных размерах финансирования на имеющихся аппаратных средствах и т.п. Результатом стадии должны быть:

список расположенных по приоритету функций будущего ПО ИС;

предварительные модели ПО.

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

более детально рассматриваются процессы системы;

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

устанавливаются требования разграничения доступа к данным;

определяется состав необходимой документации.

Далее проект распределяется между различными командами разработчиков. В случае использования CASE-средств это означает деление функциональной модели системы (диаграммы потоков данных для структурного подхода или диаграммы вариантов использования для объектно-ориентированного подхода). Результатом данной стадии должны быть:

общая информационная модель системы;

функциональные модели системы в целом и подсистем, реализуемых отдельными командами разработчиков;

точно определенные интерфейсы между автономно разрабатываемыми подсистемами;

построенные прототипы экранных форм, отчетов, диалогов.

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

На стадии реализации выполняется быстрая разработка приложения:

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

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

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

осуществляется анализ использования данных и определяется необходимость их распределения;

производится физическое проектирование базы данных;

формулируются требования к аппаратным ресурсам;

устанавливаются способы увеличения производительности;

завершается разработка документации проекта. Результатом стадии является готовая система, удовлетворяющая всем согласованным требованиям.

На стадии внедрения производится обучение пользователей и организационные изменения.

Применение технологии RAD целесообразно, когда:

требуется выполнение проекта в сжатые сроки (90 дней);

нечетко определены требования к ПО;

проект выполняется в условиях ограниченности бюджета;

интерфейс пользователя (GUI) есть главный фактор;

проект большой, но поддается разделению на более мелкие функциональные компоненты;

ПО не обладает большой вычислительной сложностью.

RAD-технология не является универсальной, то есть ее применение целесообразно не всегда. Например, в проектах, где требования к программному продукту четко определены и не должны меняться, вовлечение заказчика в процесс разработки не требуется и более эффективной может быть иерархическая разработка (каскадный метод). То же касается проектов, ПО, сложность которых определяется необходимостью реализации сложных алгоритмов, а роль и объем пользовательского интерфейса невелик.

Рисунок 1 - Сравнение RAD и Каскадного метода