Какие методологии разработки программного обеспечения можно рассматривать как основу


10

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

Для примера рассмотрим следующие методологии:
Agile, Прототипирование, Чистая комната, Итеративный, RAD, RUP, Спираль, Водопад, XP, Lean, Scrum, V-модель, TDD.

Можно ли сказать, что:
прототипирование, итеративный, спираль и водопад являются «основой» для других?

Или нет такой вещи как «основы», и у каждой методологии есть своя уникальная история?

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

Ответы:


5

Имена в вашем списке не все методологии, и они масштабируются на разных уровнях:

  • Итеративный является характеристикой, чертой, разделяемой несколькими методами и техниками. Скрам - это итеративная методология, TDD - итеративная методика.
  • Я вижу Agile как методологическую надстройку, которая остается на концептуальном / философском уровне. В объектно-ориентированном программировании вы можете описать его как абстрактный - это набор ценностей и принципов, которые не могут быть созданы и должны быть получены и реализованы. Это то, что делают Scrum и XP.
  • Чистая комната, RAD, RUP, Спираль, Водопад, XP, Lean, Scrum, V-Model являются правильными методологиями, то есть процессами разработки программного обеспечения (хотя Scrum утверждает, что является легкой «структурой» в отличие от тяжелого процесса)
  • Прототипирование и TDD - это техники, действия. TDD - это практика XP.

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

Еще один способ взглянуть на это с точки зрения поколения. Что касается корпоративного программного обеспечения, я бы сказал, что мы знаем 2 поколения методологий. Первыми, среди которых Waterfall и V-Model, были в основном уже существующие процессы из других инженерных дисциплин, применяемых к программному обеспечению. Второе поколение (его можно назвать Agile, но оно началось задолго до того, как появился термин Agile) было инициировано в ответ на тяжесть процессов первого поколения, когда люди начали понимать, что программное обеспечение было совершенно другим животным и что критерии, которые делают его хорошим программное обеспечение и шаги, которые могут гарантировать, что эти критерии были действительно конкретными и все еще должны быть изучены.

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


Я рекомендую этот академический документ, в котором сравниваются 2 типа программных процессов, аналогичных двум
guillaume31

3

Есть три:

  1. нет (он же ковбойское кодирование)
  2. водопад
  3. быстрая разработка приложений (RAD или спираль)

остальные варианты и комбинации этих

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

пожалуйста, опубликуйте ссылку на ваши результаты, когда это будет сделано, это звучит как интересная статья!


@Bas: Джеймсу Мартину приписывают термин «быстрая разработка приложений» в 1991 году en.wikipedia.org/wiki/…
Стивен А. Лоу

Большое спасибо за этот ответ! Я посмотрю, смогу ли я опубликовать результаты позже, так как это часть задания, которое я выполняю для компании. Поэтому я попытаюсь выяснить, смогу ли я сделать это независимым от назначения компании :)
Bas

0

Может быть, вы хотите просто упомянуть античные методологии (не «методологии»), такие как:

  1. Пакетная обработка: отправьте колоду карт и получите результат на следующий день. Недостатки: слишком много времени между подачами; для отладки изучите дамп ядра.

  2. Методы cli - используйте vi или emacs, затем скомпилируйте; все из командной строки, как это делается в оболочке Linux, даже по сей день. Недостатки: трудно отлаживать (gdb? Ты что, шутишь?), Неясные 40-летние команды оболочки.

Просто мысль.


1
Это было не то, что я искал. Я действительно хотел бы знать о методологиях разработки программного обеспечения, которые используются в проектах разработки программного обеспечения.

0

Вы можете упомянуть три основных подхода: прототипирование, спираль и водопад. Я бы не рассматривал Lean, TDD или Cleanroom как методологию, а скорее процесс, который может быть частью методологии.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.