You are viewing [info]pmant's journal

Previous Entry | Next Entry


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

В данном посте, хотел бы собственно поговорить о применимости той или иной методологии к тому или иному проекту. Проще говоря, когда на проекте выстраивать процессы по RUP/CMMI, а когда использовать Agile практики?

 

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

Давайте рассмотрим какие существуют проекты разработки ПО с точки зрения бизнеса заказчика:

  1. Заказная разработка системы с нуля
  2. Создание дополнительного функционала для уже существующей системы/платформы
  3. Продуктовая разработка (создаем коробочный продукт)

При этом надо еще учитывать, что заказчик может быть как внешний, так и внутренний.

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

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

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

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

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

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

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

Как же ведется проект при подоьной схеме? Обычно он разбивается на две части, вначале идет мини-проект по сбору бизнес-требований (его кстати может выполнить и сторонний исполнитель, который пишет бизнес-требования, а потом они выносятся на тендер).  Далее происходит оценка объема работ, трудозатрат и выкатывается ком. предложение. Если обе стороны договорятся о сотрудничестве (подписывают контракт),  наступает полный сбор требований и создание архитектуры, на этом этапе происходит коррекция требований, после чего начинается работа. В большинстве своем такие проекты идут по fix price схеме.
В этой схеме для исполнителя работ особо важно на этапе сбора требований и создания архитектуры максимально их проработать и подписать у заказчика, что бы на сдаче приемке отбиться от   озарений в части хотелок и пожеланий заказчика.

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

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

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

Здесь как раз пригодиться Agile. Разработка модуля во первых осуществляется уже не «большой командой для большой системы», во вторых быстрая демонстрация первичного функционала, его опробование на прототипной системе и получение фитбека от реальных пользователей для изменений в следующей итерации выгодна как заказчику, так и исполнителю, к тому же обычно на это стадии можно договориться об оплате работ по схемe  time-and-material.

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

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


 

Tags:

Comments

( 28 comments — Leave a comment )
[info]cartmendum wrote:
Oct. 7th, 2009 03:35 pm (UTC)
Первое:
>> когда на проекте выстраивать процессы по RUP/CMMI, а когда использовать Agile практики

Почему CMMI противопоставляется Agile? Ни то ни другое не содержит практик, противоречащих друг другу.
Почему RUP идет в обнимку с CMMI? Это тоже вещи разной природы.

>> Давайте рассмотрим какие существуют проекты разработки ПО
На том же круглом столе Сергей Архипенков говорил, что есть 4П: Проект, Продукт, Персонал и Процесс. Ограничив число вариаций проектов 3-мя видами мы забыли о типах продукта (сайт, консольное приложение, игрушка, софт для АЭС и сердечного клапана). А еще и о людях (очень умные, умные и пингвины).


>> заказчик хочет получить систему сразу, и принимать ее он будет тоже сразу, а не частями
Это факт. Но промежуточная "приемка" не сделает продукт хуже. Наоборот, очень много неприятностей вылезут на поверхность на много раньше. Просто в каком-то конкретном случае не было достаточно заинтересованного человека ;)

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

Wellcome back, Waterfall! :) Представь, приехал ты туристом в Японию, приходишь в ресторан (ну худо-бедно в их иероглифах разбираешься) заказываешь что-то практически наугад и тебе приносят тарелку, с шевелящимися черными гадами :) Даже не предупредив о том, что ты "угадал" и выбрал экзотическое, даже по японским меркам блюдо. И теперь тебя заставляют это съесть! Насильно! Иначе...
А иногда официант увидит иностранца и спросит "а вы уверены"? Ты скажешь "да". Официант все равно проявит человечность, сходит на кухню, принесет одного шевелящегося гада и спросит "Вы точно уверены, что сможете съесть это?". Ты опять проявляешь уверенность. И тут официант говорит: "а вы понимаете, что по старинным обычаям, мы просто обязаны будем все то, что вы не съедите засунуть вам в задницу? Вы абсолютно уверены, что хотите сделать именно этот заказ?"


Ну и напоследок:
>> Продолжая рассматривать виды проектов, плавно подойдем к продуктовой разработке.
>> Agile не плохо ложиться на подобный тип проектов

Не поверишь, но и продукты бывают разные! Agile в разработке коробок - не самое лучшее решение, потому как команда большая, часто распределенная, очень тяжело найти ОДНОГО человека, который смог бы играть роль владельца продукта. По большому счету цикл релизов очень большой (зачастую год с релизом в back-to-school-time) и итеративность не всегда сможет раскрыть весь свой потенциал, из-за сложностей в сборе фидбека с конечных пользователей.
[info]pmant wrote:
Oct. 7th, 2009 07:14 pm (UTC)
>>Почему CMMI противопоставляется Agile? Ни то ни другое не содержит практик, противоречащих друг другу.

Я конечно далеко не гуру в Agile и могу ошибаться, но у меня сложилось впечатление, что в чистом Agile пропагандируют максимальное упрощение управления требованиями, не понятна роль в Agile use-cases, отсутствует упомянание трассируемости требований и т.д.

>>Ограничив число вариаций проектов 3-мя видами мы забыли о типах продукта (сайт, консольное приложение, игрушка, софт для АЭС и сердечного клапана). А еще и о людях (очень умные, умные и пингвины).

Здесь ты прав, и тем самым мы еще более расширяеем список критериев для выбора методологии ведения проекта!

>>Это факт. Но промежуточная "приемка" не сделает продукт хуже.
и
>>Wellcome back, Waterfall! :)

Здесь ты меня наверное недопонял, надо демонстрировать заказчику систему в процессе создания например на прототипе, и получая фитбек корректировать разработку или формировать CR. В CMMI упомянаются прототипы как рабочий продукт и рекомендуют практики утверждения требований через показ прототипа.

Дело в другом, при подходе a'ля CMMI подразумеваеться сдача-приемка в конце, когда и происходит проплата за работу, и проект обычно там фикс-прайс, посему задержка может привести к убытку.
При гибкой разработке типа Agile когда заказику сдается функционал по итерациям, оплата или почасовая или привязана к определенной итерации (редко кто идет на такой вариант). Поэтому здесь исполнитель менее привязан к деньгам и при форс-мажоре менее страдает. Только вот заказчик предпочитает больше фикс-прайс, чем почасовуху, так как сам завязан на своих внутренних бюджетах.



[info]cartmendum wrote:
Oct. 8th, 2009 05:37 pm (UTC)
>> Дело в другом, при подходе a'ля CMMI подразумеваеться сдача-приемка в конце

Покажи Процессную область -> Цель -> Практику, натолкнувшую тебя на этот вывод?
[info]russian_sla wrote:
Oct. 7th, 2009 08:13 pm (UTC)
М-да уж... ну сколько можно противопостовлять цель и средства? :)
Welcome на SECR - там один американский товарисч с моей подаи должен прибыть, который попытается доказать, что Agile и CMMI вполне уживаются вместе. Видео с анонсом тут: http://agilecmmi.com/.
[info]pmant wrote:
Oct. 8th, 2009 08:02 am (UTC)
Саша, а никто не противопоставляет ничего, в одной компании могут быть проекты как по вотерфолу, так и по Agile. Только вот согласись в одном проекте не может быть реализованы одновременно все практики и Agile и все практики CMMI хотя бы на третий уровень (не говоря об 4 и 5) ;-)
[info]russian_sla wrote:
Oct. 8th, 2009 11:11 am (UTC)
Т.е. для тебя "вотерфол"=CMMI? Однозначно? Ну тогда - что мы обсуждаем? :)
[info]pmant wrote:
Oct. 8th, 2009 12:32 pm (UTC)
Я нигде не ставил знак равенства между CMMI и вотерфолом.
Вотерфол сейчас в чистом виде редко где применяется, конечно в проекте использующем CMMI могут быть итерационные состовляющие,а под термином вотрефол я подразумеваю подход, когда существуют проектные фазы: сбор требований-архитектурный дизайн-разработка-тестирование-UAT, при этом вполне возможно на определенном этапе откатиться назад.

Еще раз повторю, смысл моего поста не в противопоставлении какой либо методологии (типа "методология X методологии Z"), а попытка выявить критерии для выбора конкретной методологии или может быть симбиоз методологий под конкретный проект, что бы этот проект был безубыточный.
Лично меня не устраивает ответ на вопрос "а какую методологию нам выбрать" - " а вы попробуйте на маленьком проекте и поймете". Время разбрасываться деньгами ушло в конце сентября 2008 года.
[info]cartmendum wrote:
Oct. 8th, 2009 05:36 pm (UTC)
>> Лично меня не устраивает ответ на вопрос "а какую методологию нам выбрать" - " а вы попробуйте на маленьком проекте и поймете"

А вот это верно. То, что сработает на маленьком проекте, может запнуться о большой.
[info]russian_sla wrote:
Oct. 9th, 2009 10:32 am (UTC)
Увы, запутался в противоречиях твоих комментов. :) Объяснишь при какой-нибудь личной встрече.
[info]pmant wrote:
Oct. 8th, 2009 08:48 am (UTC)
К тому же, я считаю что возможно использовать практики из одной методологии ииз другой. Я сам недавно руководил проектом, в котором были итерации, но при этом создавались требований, они утверждались и велся лог рисков и была трасебилити матрица с дефектов на требования.
Но в моем посте немного о другом, а именно поднят вопрос о критериях выбора той или иной методологии или тех или иных инструмнтов и практик что бы создать смешанную, но при этом не ошибиться и не сделать проект убыточным.
[info]cartmendum wrote:
Oct. 8th, 2009 05:35 pm (UTC)
>> а именно поднят вопрос о критериях выбора

Забыл самый главный критерий - людей. Процесс и методологию нужно выбирать прежде всего на основании опыта (текущего или будущего) тех ребят, которые будут с нами работать.
[info]pmant wrote:
Oct. 8th, 2009 06:52 pm (UTC)
Максим,
"кадры решают все" и здесь я с тобой полностью согласен, но я исхожу из постулата, что команда у нас среднестатистическая, то есть средненькая :) Компаниям "звездам", при выборе многое упрощается.
Если же "горе-горемыки", то там надо не методологию выбирать на проект, а перерстраивать саму систему управления компанией и переубеждать руководство в методах ведения бизнеса, ибо накике Agile и CMMI не помогут сделать компанию более эффективной, так как "разруха не в клозетах, а в головах".
[info]cartmendum wrote:
Oct. 9th, 2009 07:31 am (UTC)
Если пренебрегаем персоналиями, то чем плоха шкала Коберна?

[info]pmant wrote:
Oct. 9th, 2009 08:46 am (UTC)
А где расшифровка крестиков-ноликов?
[info]cartmendum wrote:
Oct. 9th, 2009 09:06 am (UTC)
По горизонтали размер проекта в человеко-людях. По вертикали "критичность" или что произойдет в случае багов: (c) - станет некомфортно, (D) - потеряем немного денег, (E) - потеряем много денег, (L) - кто-нибудь умрет.

Для каждой методологии показываются области, где они оптимальны.
[info]pmant wrote:
Oct. 9th, 2009 03:42 pm (UTC)
А слабо дать первоисточник этой таблицы (желательно ссылочно-читабельный)? А то что такое AUP, к свой дремучести не разумею :)
[info]cartmendum wrote:
Oct. 9th, 2009 03:56 pm (UTC)
картинка отсюда http://www.devx.com/architect/Article/32836/0/page/4

Взято из книги Alistair Cockburn "Agile Software Development"

AUP - Agile Unified Process. Тот же RUP только бесплатный. Теперь он называется OpenUP
[info]peeplevarreh wrote:
Oct. 8th, 2009 06:19 pm (UTC)
Теоретически - цель и средства, практически - упаковка и упаковка. Одна - из дешевой оберточной бумаги, но очень пестрая, в большинстве случаев раскрашена дошкольниками с помошью цветных карандашиков. Вторая - солидная, из дорогой кожи и местами с тиснением и позолотой. Ясное дело, что появления продукции "под кожу" не пришлось долго ждать. Ну, будет теперь еще и кирзовый CMMI...
[info]russian_sla wrote:
Oct. 9th, 2009 10:31 am (UTC)
"Теоретически - цель и средства, практически - упаковка и упаковка."

Категорически не согласен. Вполне нормально живут люди, когда CMMI используется как некий методологический "зонтик", а отталкиваясь от него дальше этот "зонтик" реализовывают самыми разными средствами, в т.ч. и "агильными".
[info]peeplevarreh wrote:
Oct. 9th, 2009 11:13 am (UTC)
Вы про теорию, я - про практику. Все знают, как лучше. И у всех выходит как всегда. Оценивают подразделение по разработке бортовых систем или работе с правительственными заказчиками в стране размером с оленеводческий колхоз, потом гордо пишут про компанию с пятым уровнем. Вполне себе зонтик, но дорогой, не у всех есть. Теперь будет зонтик подешевле. Берем любой бардак, заставляем с утра всех по десять минут чесать языком стоя, минимум третий уровень гарантирован.
[info]russian_sla wrote:
Oct. 9th, 2009 11:25 am (UTC)
"Вы про теорию, я - про практику."
Почему же? Я же это видел в жизни и оценивал, как оценщик (хотя если говорить откровенно, то там была комбинация различных методов "семейства" agile). :) Но это, увы, не в России... И с точки зрения maturity level это был уровень 2. А вот с точки зрения другого представления модели для некоторых областей уровень был и повыше 2-го.
[info]peeplevarreh wrote:
Oct. 9th, 2009 11:51 am (UTC)
И с какой целью эти люди "не в России" оценивались? Кстати, class A или B?

Ну и это... Мы в России... А индийцы - в Индии, и китайцы - в Китае. Забыл уже, кто из них лидирует по числу оценок в этом году.

P.S. Вы только не подумайте, что я против CMMI или против Вас лично что-то имею. Меня, скорее, "практики" достали. И эксплуатируемые ими пылкие юноши.
[info]russian_sla wrote:
Oct. 9th, 2009 06:26 pm (UTC)
И было это в Испании. И был это Class A. :)

Дело в том, что там много небольших софтверных компаний (мне лично удалось поработать и с компаниями в 9-20 человек, и с компаниями 40-50 человек). Правительство некоторых областей Испании материально помогало (может и дальше помогает) этим компаниям улучшить свою привлекательность на европейском и американском рынках, в т.ч. и путем поддержки внедрения каких-либо "улучшающих" методологий и сертификаций относительно них. Выбор вариантов методологий широк. Лидируют в выборах :) ISO и CMMI.

В этом году по числу оцениваний лидирует, скорей всего Китай (США должны быть где-то "рядом").
[info]peeplevarreh wrote:
Oct. 11th, 2009 03:23 pm (UTC)
Видите, Вы сами "улучшающие" в кавычки поставили ;-) Упаковка это для них, упаковка.
Что не означает, что сама идея(идеи) - ерунда.
[info]russian_sla wrote:
Oct. 12th, 2009 03:10 pm (UTC)
Ну вот ведь как я неосторожно кавычки поставил... :( Я-то имел в виду, что на русский нет адекватного перевода термина process improvement methodologies. Эх, поймали меня на кавычках. :)
[info]jacks_alterego wrote:
Oct. 8th, 2009 06:16 pm (UTC)
Подписываюсь.
Единожды вкусив скрама уже трудно от него отказаться.Хотя и тут может быть подвох. Иногда надо переворачивать все с ног на голову, внедрять другой процесс.
[info]jacks_alterego wrote:
Oct. 8th, 2009 06:23 pm (UTC)
Ой не туда написал, это я к комментарию cartmendum.
Что же касательно вопроса самого поста - не все так однозначно, ИМХО.
RUP конечно хорошо, если знать как это все настраивать и до какой степени с этим играться. Agile тоже хорошо - но тут надо подбирать людей, причем если в RUP за счет процесса еще можно нивелировать кое-какие риски на определенном отрезке времени, то в Agile все вылезет сразу(есть гут), но может заблокировать все нафиг (не есть гут).

Насчет внедрения больших систем - размораживать действительно правильно,а вот внедрить все сразу и скопом - вряд ли получиться. Мне примеры подобного внедрежа неизвестны. А как только начинается волокита и косяки с внедрением начинаются проблемы "последней мили".
Поэтому мне кажеться что надо размораживать народ пачками и на постоянной основе.
( 28 comments — Leave a comment )

Profile

[info]pmant
Записки PM'a

Latest Month

September 2011
S M T W T F S
    123
45678910
11121314151617
18192021222324
252627282930 
Powered by LiveJournal.com
Designed by Tiffany Chow