8 (8212) 55 18 12

Модели разработки программного обеспечения

Приступить к чтению

Предисловие

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

 

Эта статья — начало большого цикла статей о разработке ПО, который включит в себя:

  • популярные модели;
  • популярные методики;
  • подробней об «Agile» и фреймворках гибкой разработки.

 

Общая информация о разработке ПО

Свою историю процесс разработки программного обеспечения берет непосредственно от теории качества управления, появившейся в послевоенных США и Японии. Одними из известнейших основоположников теории качества являются:

  • Э. Деминг — американский учёный, статистик и консультант по менеджменту. Больше всего известен благодаря усовершенствованному циклу Шухарта, после этого названному циклом Деминга;
  • Дж. Джуран — американский специалист в области качества, академик Международной академии качества (МАК). Автор множества книг по менеджменту и теории качества. Дж. Джуран первым обосновал переход от контроля качества к управлению качеством;
  • Ф. Кросби — бизнесмен и автор нескольких книг по теории качества, который внес вклад в теорию менеджмента и практики менеджмента качества. В 1979 году Кросби основал консалтинговую компанию по управлению финансами Philip Crosby Associates, Inc.

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

 

К ключевым процессам разработки ПО относятся:

  1. Анализ — часть процесса разработки программного обеспечения, включающая в себя сбор требований к программному обеспечению (ПО), их систематизацию, выявление взаимосвязей и документирование;
  2. Проектирование — процесс создания проекта программного обеспечения (ПО);
  3. Программирование — процесс создания компьютерных программ;
  4. Документирование — печатные руководства пользователя, диалоговая (оперативная) документация и справочный текст, описывающие, как пользоваться программным продуктом;
  5. Тестирование —- процесс исследования, испытания программного продукта, цель которого  —  проверка соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определенным образом.

 

К основным типам рисков разработки ПО относятся:

  1. Непродуманные сроки и нереалистичный бюджет;
  2. Отсутствие квалифицированных разработчиков;
  3. «Плавающие» требования;
  4. Трата большого количества ресурсов на оптимизацию;
  5. Слабая производительность системы;
  6. Разная классификация специалистов из разных отделов.

 

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

 

Итеративный метод

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

  1. План;
  2. Реализация;
  3. Тестирование;
  4. Анализ.

Итеративная модель используется при построении «гибких» (Agile) методов в разработке ПО.

 

 

Преимущества итеративного подхода:

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

Недостатки итеративного подхода:

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

 

Каскадная модель (waterfall model)

Процесс разработки в модели расположен последовательно и включает в себя: 

  • анализ;
  • проектирование;
  • реализацию;
  • тестирование;
  • интеграцию;
  • поддержку.

Первым описание модели считают статью, опубликованную У. У. Ройсом в 1970 году.

Используя каскадную модель, разработчик идет от стадии к стадии, соблюдая строгую последовательность.

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

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

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

 

 

Преимущества каскадной модели:

  • Подробное документирование всех этапов;
  • возможность определить четкие сроки и бюджет;
  • прозрачность разработки для всех участников.

Недостатки каскадной модели:

  • необходимость утвердить все требования на этапе анализа;
  • в случае необходимости изменить что-то позднее первого этапа, придется вернуться к анализу требований и пройти весь путь заново;
  • большой расход средств и времени при возврате к начальному этапу.

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

 

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

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

 

 

Преимущества спиральной модели:

  • подробный анализ рисков;
  • подробная документация процесса разработки ПО;
  • возможность вносить изменения на каждом этапе разработки;
  • быстрое создание MVP(Минимально готовый продукт).

Недостатки спиральной модели:

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

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

 

V-Model

Дополненная версия каскадной модели. В данной модели этап тестирования начинается параллельно с разработкой требований и для каждого этапа создаются свои тесты. Каждый последующий набор тестов разрабатывается во время тестов текущего этапа.

 

 

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

Преимущества V-модели:

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

Недостатки V-модели похожи на недостатки каскадной модели, к ним можно отнести:

  • отсутствие гибкости; 
  • недостаточный анализ рисков; 
  • невозможность внести изменение на текущем этапе и продолжить дальше разработку.

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

 

Резюме

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

Для более подробного изучения моделей можно изучить данную литературу:

  1. Richard W. Selby. Software Engineering: Barry W. Boehm's Lifetime Contributions to Software Development, Management, and Research.
  2. Эрик Брауде. Технология разработки программного обеспечения
  3. Мартин Фаулер.Рефакторинг.
  4. Стив Макконнелл. Совершенный код
Время прочтения:
Время прочтения 8.0 мин

Для авторов

Хотите стать со-автором блога, рассказать аудитории о новинках в мире веб и все что с ним связано? Тогда присылайте ваши материалы и мы опубликуем их.

Стать автором

Обсуждение