Ответ 1
См. этот ответ на другой вопрос для некоторой информации о том, почему редко бывают хорошие эмпирические исследования по любым аспектам построения программного обеспечения.
Существуют ли какие-либо научные исследования, которые сравнили бы гибкие с другими методологиями разработки программного обеспечения? Я считаю, что гибкий - хороший способ работать, но есть ли какая-то научная основа для этого?
Я ищу что-то вроде this, за исключением того, что это исследование касается только TDD. Проводились ли какие-либо исследования в отношении гибкости вообще?
Я спрашиваю об этом, потому что я встретил проворного фанатика, который утверждал, что гибкий способ работы дает лучшее программное обеспечение, чем все другие способы работы. Он представил это как факт, который я не думаю, что это так.
См. этот ответ на другой вопрос для некоторой информации о том, почему редко бывают хорошие эмпирические исследования по любым аспектам построения программного обеспечения.
Научные? Ну, я очень впечатлен работой Алистера Кокберна. Слушайте его здесь
Алистер Кокберн был разработчиком аппаратного обеспечения и исследователем в течение 16 лет, когда IBM попросила его написать методологию для объектно-ориентированных проектов. В течение последнего десятилетия он изучал и писал о разработке программного обеспечения и узнал, что некоторые из наиболее успешных проектов имеют самые простые процессы. В 2001 году он и еще 16 других тяжеловесов по разработке программного обеспечения собрались для обсуждения так называемых легких методологий, и одним из результатов был Манифест разработки Agile Software Development, который включает в себя четыре заявления о ценности: отдельные лица и взаимодействия над процессами и инструментами; работающее программное обеспечение по полной документации; сотрудничество с клиентами по заключению договоров; и реагировать на изменения в соответствии с планом.
Некоторые аспекты схватки имеют подтверждающие эмпирические данные. Проведено немало эмпирических исследований по разной части схватки. Я слышал, что Джефф Сазерленд (http://jeffsutherland.com/scrum/ изобретатель схватки) упоминает множество конкретных исследований и наблюдений в своих беседах.
Agile в целом - всего лишь зонтичный термин, предназначенный для того, чтобы держать разные политические группы умеренно счастливыми. Не ожидайте увидеть эксперимент, доказывающий что-либо общее обо всем "подвижном". Это слишком расплывчато, чтобы быть полезным.
Лори Уильямс из NCSU опубликовал много действительно интересных исследований эффективности парного программирования, а затем начал заниматься более гранями гибких.
Я не думаю, что можно "доказать" такую вещь.
Я пойду еще дальше и скажу, что я не думаю, что действительно можно изучить вопрос "Производительность разработки программного обеспечения" с таким исследованием. Именно поэтому все доказательства, которые нам когда-либо были действительно, продолжались, - это то, что говорят нам опытные люди (и, к сожалению, у каждого из них разные взгляды на различные методологии).
Там есть простая причина: люди совершенно разные. Сядьте в команду из 5 человек для проекта в течение нескольких месяцев (что более того, я предполагаю, чем большинство исследований когда-либо управляют, пусть кто-нибудь финансирует несколько месяцев времени разработчиков), и вы обязательно получите полностью разные результаты. Проблема в том, что здесь нет возможности уладить множество разных факторов:
И, вероятно, есть много факторов.
Так что я пытаюсь сказать, не верьте исследованиям, которые "доказали", что одна методология/инструмент/что-то работает лучше других. Их почти невозможно сделать.
Нет, это не научно или не доказано. Для "доказательства" это означало бы:
Аналитический подход неосуществим, поскольку мы имеем дело с людьми здесь, а не с простыми системами. Вы не можете формализовать команды и организации.
С другой стороны, эмпирические исследования были проведены, но результаты необоснованны. Например, Роберт Гласс показывает некоторые интересные результаты в своей книге Software Creativity 2.0.
Так что нет, гибкость не доказана. Даже не близко.: -)
То, что мне доказано, - это статистический провал водопада, т.е. научный менеджмент, применяемый для разработки программного обеспечения. Гибкость, как движение, является просто ответом на эти эмпирические данные (см., Например, отчеты CHAOS).
Этот интервью с Linda Rising on InfoQ в какой-то мере затрагивает ваш вопрос. Она говорит об эффективности плацебо и наших убеждений в медицине и о том, как эти самые вещи могут относиться к разработке программного обеспечения. В основном, мы находимся в Agile-сообществе, давая себе "Sugar Pill"?
Отрывок из интервью
Наука о экспериментах, о том, чтобы провести идею на короткий период времени и проверить ее, а затем изучить результаты этого теста, чтобы выяснить, сохраняется ли гипотеза. Это действительно то, о чем говорит Agile. Agile - это небольшие эксперименты. Теперь я считаю, что все, что мы делаем, а не только разработка программного обеспечения, но наша жизнь должна быть серией небольших экспериментов.Мы привлекаем всех заинтересованных сторон, привлекаем клиентов, привлекаем пользователей, тестировщики работают с разработчиками. Мы всегда тщательно изучаем эти сахарные таблетки. Это действительно работает? Как вы думаете? Вы довольны результатами? Это единственное, что спасает нас - само по себе. Эта серия небольших экспериментов.
В этом документе анализируется рентабельность инвестиций (ROI) Agile vs Traditional methods. Это основано на фактических результатах опубликованных исследований.
Из реферата:
Agile Methods ROI был в четыре раза больше чем дорогие традиционные методы, в два раза меньше, чем недорогие, и лучший Agile и традиционный Методы имели равный ROI.