Рубрика «Полезное чтиво». Выпуск 29

полезное чтиво

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

И порция полезного видео для просмотра:

Читайте и набирайтесь новых знаний!

Отчет о 15-ой встрече «Клуба анонимных разработчиков»

В прошлый четверг, 19 апреля, состоялась 15-ая встреча нашего «Клуба анонимных разработчиков». В этот раз уютный и полюбившийся многим офис компании DataArt принимал гостей из мира разработчиков бизнес-правил. Встреча была посвящена инструментам для разработки сложных бизнес-правил, в частности JBoss Drools.

У нас был один докладчик – Виктор Полищук, но этого оказалось предостаточно. Витя с удовольствием делился своими знаниями и опытом в использовании JBoss Drools, отвечал на многочисленные вопросы по поводу его применимости и отличиях от простой реализации бизнес-правил на языке программирования. Было очень интересно и разошлись как обычно уже после 23:00. Вот презентация этого выступления:

По просьбе участников Витя выложил проект, на примере которого он демонстрировал возможности инструмента, на github. Таким образом, участники смогут быстро попробовать его на практике и избежать проблем при начальном изучении инструмента. Также Витя поделился ссылкой на интересный проект Акинатор, который реализован на базе экспертной системы и никого не оставит равнодушным. Играйтесь на здоровье!

Дополнительную информацию вы можете найти в Twitter по хештегу #uadevclub. Можно почитать о ходе встречи, найти интересные цитаты, советы и факты о рассматриваемых технологиях. Присоединяйтесь и обсуждайте вместе с нами!

Мы снимали видео выступления и постараемся в ближайшее время выложить его в открытый доступ.

Следующая встреча запланирована на 17 мая и будет посвящена современной разработке с использованием JavaScript. Следите за анонсами и не пропустите начало регистрации!

Рубрика «Полезное чтиво». Выпуск 28

полезное чтиво

Праздники закончились и вас ожидает новый выпуск рубрики «Полезного чтива». Вот что накопилось за прошедшую неделю:

И порция полезного видео для просмотра:

Читайте и набирайтесь новых знаний!

Старт проекта. «Продажа» Управления Рисками?

Продолжаю серию статей «Старт проекта». Первая статья здесь – Старт проекта. Как это делать?, а вторая здесь Старт проекта. Что такое Управление Конфигурациями?

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

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

Из-за чего возникают проектные риски?

  • Заказчик не может обеспечить ожидаемый уровень коммуникаций, взаимодействия
  • Сложная предметная или технологическая область
  • Нехватка персонала или его квалификации
  • Несоответствие типов контрактов, методологий и условий проекта
  • Заказчик, а зачастую и менеджмент слабо (или не) знакомы как работает управление проектами

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

Вот здесь ключевая идея – объяснить, а точнее замаскировать реакции на риски с помощью понятного для заказчика языка. Даже может быть категорически противопоказано употреблять термины и жаргон из мира разработки ПО.

Скажу по себе, хотя и был много лет назад разработчиком, но когда сейчас мне нужно узнать на концептуальном уровне о каком-то техническом решении, и я слышу в ответ слова: ADO, MVC, Hibernate, XML и т.п. у меня отключаются чувства восприятия :) . Т.е. объясняющий совершенно профессионально объясняет техническое решение, но в силу разрыва понимания технологии получается недопонимание. Такие же разрывы случаются между парами тестировщик – разработчик, разработчик – менеджер проекта и т.д. И это между людьми, работающими в одном бизнесе! А что же говорить о заказчике, который хочет, чтобы мы поняли его бизнес потребности, а мы тут к нему с рисками?

Давайте посмотрим на неудачный и приемлемый варианты общения с заказчиком на этапе инициирования проекта. Беру условие практического задания «Маскировка» из тренинга «Управление рисками: классика, agile, бизнес, заказчик».

Условие:

Новый проект, примерно на год на команду 10 человек. Срок сдачи фиксирован. Требования слабо определены. Сложная предметная область. Заказчик примерно понимает приоритеты функционала, находится в США. Нужно как можно раньше четко осознать что успеется за год, т.к. нужно делать анонс продукта, продвигать и т.п. Не хватает 4 разработчика в команде, срок найма 1-2 месяца. Архитектура неясна, ориентировочно 2 подхода с разными ожиданиями по производительности, расширяемости и срокам разработки. Заказчик хочет 1-2 раза в месяц демо и прогнозы успеваемости по срокам. Прямо сейчас заказчик выбирает между 3-я поставщиками, понятно хочется выиграть заказ. Заказчик не очень техничен и от слова «риск» может «съехать».

Неудачные фразы:

  • «Мы будем работать по СКРАМу и наши разработчики вам на демо все будут рассказывать» – вы можете представить каким языком разработчики расскажут? Да и хочет ли не техничный заказчик так общаться?
  • «Мы по ходу разработки будем брать задачи из бэклога и по берндауну будем понимать наше велосити, а если не будем что-то успевать, то низкоприоритетные функции делать не будем» – несмотря на развитие гибких подходов у заказчика может случиться «вынос мозга» от такого заявления. К тому же от хочет «как можно раньше четко осознать что успеется за год».
  • «У нас есть риск недобора команды, поэтому мы нагоним потом либо овертаймами, либо сокращением бэклога» – во-первых, состав команды это не есть проблема заказчика, ему по существу все равно как вы будете делать проект. Во-вторых, от такого «подхода» сразу же веет непрофессионализмом.
  • «У нас есть риск неправильного выбора технического решения, поэтому мы заложим 20% времени на рефакторинг или имплементацию другого решения» – в понимании заказчика вы не знаете как правильно спроектировать его продукт, да еще и будете переделывать за его же деньги. И что это за мифический резерв в 20% времени?

Приемлемые варианты:

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

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

Серия статей «Старт проекта» выходит в поддержку тренинга «Успешный старт проекта», в котором темы статей рассматриваются подробнее и с практическими заданиями.

Рубрика «Полезное чтиво». Выпуск 27

полезное чтиво

В процессе выздоровления сбился рабочий ритм и я совсем забыл опубликовать очередной выпуск рубрики «Полезного чтива». Рад представить его вашему вниманию:

И порция полезного видео для просмотра:

Читайте и набирайтесь новых знаний!

15-ая встреча «Клуба анонимных разработчиков» 19 апреля

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

Темой встречи мы выбрали BPM. Бизнес-процессы включает в себя ряд активностей, целенаправленно исполняемых соответствующими участниками для достижения общей цели бизнеса. Эти процессы имеют важное значение для любой организации, поскольку они могут (!!) приносить доход и часто составляют значительную часть затрат. Для программиста, практически все с чем он работает – является бизнес-моделью, а соответственно он является активным участником бизнес-процесса. Более того, код, который он пишет – это результат процесса, так как «он» решает или призван решить бизнес-проблему.

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

Главным докладчиком выступит Виктор Полищук, который расскажет о JBoss Drools и о практическом его применении. Drools является реализацией движка правил на основе Рете (Rete) алгоритма Чарльза Форджи. Адаптация Rete к объектно-ориентированному подходу обеспечивает более естественное выражение бизнес-правил и связи с бизнес-объектами. Drools написан на Java, но может работать на Java и .NET.

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

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

Итак, встреча пройдет в четверг 19 апреля. Место проведения мы объявим ближе к дате мероприятия. Это связано с тем, кто число членов клуба постоянно растет и мы рискуем не влезть в уютный Киевский офис компании DataArt. Этот офис полюбился членам клуба своей уютной обстановкой и наличием всего необходимого для продуктивного общения. Но, по итогам прошлых встреч, есть риск, что все желающие не поместятся.

Официальное начало встречи по-прежнему в 19:00, завершение в 23:00. Стоимость участия 80 гривен при оплате заранее, 120 гривен при оплате на месте. Пива, пиццы и кофе с печеньками хватит на всех. Регистрация обязательна. Все детали по оплате будут высланы вам после успешного прохождения регистрации. Количество мест ограничено 60 участниками.

Ошибки проектирования – о подмене постановки задачи решением

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

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

Нужно управлять этим риском хотя бы потому, что задавая вопросы «что вы хотите получить?», «что вам нужно сделать?» вы просто срезаете у своего бизнеса возможность заработать на бизнес-анализе и консалтинге. Потому что вы получаете весьма субъективное мнение владельца идеи или свое собственное. Потом приходит Его Величество Конечный Пользователь на реальном, а не воображаемом рынке и все ставит с ног на голову. Поэтому, гигиена идеи проекта должна заключаться в том, что вопрос «что делать?» должен быть уничтожен во взаимоотношениях заказчик исполнитель – как вне команды, так и внутри её.

Как это выглядит практически:

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

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

3. Проанализируйте путь достижения главной цели – из него появляются дочерние цели.

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

5. Проанализируйте …

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

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

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

Какие вы получаете выгоды от такого подхода управления требованиями и дальнейшего проектирования:

1. Резкое сокращение объема работы для заказчика и увеличение объема творческой и высокооплачиваемой работы для себя.

2. Переходя от вопросов «чего надо сделать?» к «чего вы хотите добиться?» вы резко сокращаете влияние субъективного мнения о решении проблемы как вашего, так и заказчика – тот самый риск подмены постановки задачи решением.

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

4. Вы не оставите места такой вредной штуке, как «спящие кейсы» – нет бизнес-целей, нет и фичи.

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

6. Изменения требований становятся в большинстве случаев безболезненными. Как правило, меняются не цели – меняются пути их достижения. Если заказчик меняет цели – это уже другой проект. И вам это будет легче доказать на языке бизнес-целей и ассоциируя с его стилем бизнеса. Владение целями, кроме всего прочего, позволяет лучше понимать причину изменения требований и позволяет снизить психологический эффект «синдрома ребенка».

7. Если команда владеет целями, связанными с реальной бизнес-моделью и приоритетами этих целей – проще бороться с прокрастинацией и смещением фокуса с целей на заклепочничество в команде.

8. У вас есть черновик функциональной карты проекта, связанный с бизнес-целями как пруф вашего понимания бизнес-модели и способности решать бизнес-задачи. Хороший продажник вам так на этой теме денег накосит – мама не горюй :) Такое и инвестору не стыдно показать, и архитектор потом спасибо скажет.

Такие вот практики продуктовой разработки по управлению риском подмены постановки задачи решением :)

Сразу отвечаю на не заданный вопрос: как это относится к продуктовой разработке, если применяются термины «лишаете свой бизнес возможности заработать», «отношения заказчик-исполнитель» и т.д. Хорошо относится. Потому что отношения заказчик – исполнитель вполне себе постоянно возникают внутри любой команды между её участниками и внутри любой компании между командами. Ну а ваша работа в любой компании – это разве не бизнес-модель получения материальной и моральной компенсации за возможности самостоятельно решать проблемы разной степени сложности в различных предметных областях? В это отношении заказная разработка и продуктовая разработка ничем не отличаются – я постоянно это говорю :) Поэтому, вышеприведенные практики смело рекомендую как для продуктовых, так и для команд заказной разработки – проверено и там, там :)

Ошибки проектирования – об абстрактных моделях

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

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

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

Что такое описание предметной области? В умных книжках дается много определений, но мне больше нравится следующее:

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

Про методы описания предметных областей мы все много учили в ВУЗе или жизнь заставила, про методы превращения описания предметной области в код – тоже немало написано и известно, а в рамки статьи даже скупой обзор практик анализа и получения моделей предметной области не поместить. Поэтому, я хочу пока остановиться на использовании этих моделей в управлении рисками проектирования – тема, которая часто звучит или рефреном, или размазана по умным книгам в неявном виде. Почему я уделяю столько внимания именно абстрактному моделированию софта? А потому что в пароксизме увлечения легковесными методологиями все чуть забыли, что кроме генерирования качества есть такое понятие как воспроизводство качества. А вот тут без сбалансированной многоуровневой документации, которая не отвечает на вопрос «как сделано», а отвечает на вопрос «почему так сделано», «какие критерии» и «какие рамки и ограничения» – совсем никуда. А вот именно на эту документацию и не хватает времени в большом количестве «динамичных и быстрорастущих» проектов :)

Итак, какими основными рисками позволяет управлять описание предметной области:

0. Риск потери понимания бизнес-модели

Штука, которая страшна для любого проекта, независимо от его величины и сложности. Как только разработчик теряет понимание/ощущение/осязание первоисточника решения, т.е. бизнес-модели использования программного продукта и в проектировании оперирует не терминами предметной области проекта (бизнес-терминами, иными словами), а только классами, методами и интерфейсами – все, приехали. Начинается »клейка танчиков» и «заклепочничество» в чистом виде. Лучше иметь ответы на вопросы «зачем мы это делаем» в максимально простой, компактной и понятной форме. Кто-то может сказать, что он замечательно и без всяких моделей предметной области переводит user-story/use cases/scenarios в программный код. Отлично, а вы спросите его о том, как ответить на вопрос о том, как определить сложность тестирования или определить степень влияния фич друг на друга?

1. Риск потери ценности системы знаний

В любой системе знаний, кроме накопления, систематизации, транзитивности и пр. – есть ещё такая вещь, как обмен знаниями. Чем меньше объем и чем на более высоком абстрактном уровне находится вводная для проекта – тем проще вводить новичка, да и старикам навигацию это упрощает. Такая модель, представленная, как правило, в виде «кружочки + стрелочки + поясняющие надписи» – это очень полезная для команды вещь. Намного полезнее, чем диаграмма классов во всю стену, которая висит в большей степени «для понтов» и «меряний» :)

2. Риск определения момента, когда заказчика можно отпустить

Извечный вопрос: «когда отпускать заказчика?» в управлении требованиями и сценариями поведения. Сторонники гибких методологий скажут «никогда», но реалисты будут искать ответ на этот вопрос :) Имхо, совокупность требований и сценариев поведения/приемки (в каждой методологии они называются по-своему, но их сути это не меняет) для мало-мальски сложного проекта не позволит ни заказчику убедиться в том, что понимание требуемого результата поселилось в голове у исполнителя, ни исполнителю не позволит страховать риски срыва ожиданий заказчика. Нужен промежуточный слой, который бы позволил уже наглядно представить результаты проекта, но ещё не оперировал терминами технических решений – просто заказчик не поймет. Даже технически грамотному заказчику проще общаться в терминах предметной области бизнеса, а не решения.

3. Риск потери управления техническим долгом

Очень часто бизнес требует сразу писать legacy код :) Все часто сталкивались в своей практике со случаями, когда бизнесмен принимает решение quick win vs. long way в пользу быстрой поставки решения, которое с точки зрения разработчиков не более чем технический долг чуть более, чем полностью. Даже если этот технический долг измерим, осязаем и вполне себе в будущем начинает возвращаться, то без абстрактной модели будет очень трудно. В этом часто и состоит конфликт между бизнес-стороной проекта и его разработчиками: бизнесмен ожидает, что уж после не самого дешевого «продакшен-прототипа» с наработанным опытом и пониманием реализованной бизнес-модели возврат технического долга произойдет быстро. А получается, что уже через полгода требуется функциональный реверс-анализ проекта :)

4. Риск качества перевода с языка бизнеса на язык кода

Имеется ввиду перевод требований и сценариев в рабочий код. Модель предметной области в данном случае – отличная точка входа для управления рисками перевода идеи в реализацию. Хотите – используйте её как трамплин для погружения в DSL и DDD, хотите – просто как артефакт, задающий на высоком абстрактном уровне структуру, иерархию, потоки данных и действий, разделяющий зоны воздействия ролей для удешевления верификации, разработки, планирования и т.д.

5. Риск определения достаточности регрессии функциональных тестов

Вот кто от абстрактных моделей всегда в восторге – это тестировщики. Как ручные, так и автоматизаторы. Вопрос достаточности регрессии при внесении изменений всегда актуален. И определять его можно или путем глубокого анализа сценариев поведения/тестирования, или путем взаимодействия с разработчиком, или самостоятельно. Третий вариант при наличии модели самый экономный по времени и самый безопасный по влиянию решения на тесты. Если вы спросите тестировщика, что ему нужно для входа в проект – в большинстве случаев он ответит «сам проект и что-то вроде карты». Ну и не стоит забывать о мечте любого тестировщика (если вы его ещё не вовлекли в процесс анализа и проектирования) – обратная связь на функциональность проекта. Тут модель приложения в терминах бизнеса – самое то, чтобы начать предлагать изменения.

6. Риск смены решения

Разговоры про эволюцию кода и гибкие архитектуры – вещь классная. Но в бизнесе, как на войне – пушистый зверь может подкрасться незаметно. Например – сменятся аппаратные требования. В разгар кризиса и при развитии Atom платформы они менялись в сторону уменьшения :) Вот и представьте, что вы отрезали от вашей связки «требования – сценарии – реализация» слой реализации. Что при этом произойдет? Правильно – кроме проектирования решения, опять реверс-анализ ввиду непрозрачности связей в сценариях.

7. Риск удорожания внесения изменений

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

8. Риск удорожания стратегического планирования

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

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

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

Более детально о рисках проектирования и о управлении ими, мы поговорим с вами на мастер-классе «Практики эффективного, но экономного проектирования».

Продолжение следует.

Рубрика «Полезное чтиво». Выпуск 26

полезное чтиво

Прошедшая неделя очень порадовала материалами для рубрики «Полезного чтива». Вот что насобиралось после прочтения:

И порция полезного видео для просмотра:

Читайте и набирайтесь новых знаний!

Старт проекта. Что такое Управление Конфигурациями?

Продолжаю серию статей «Старт проекта». Первая статья здесь – Старт проекта. Как это делать?

А в этой статье поговорим о дисциплине управления конфигурациями как таковой и о ее важности.

Сразу начну с кейса из реальной жизни:

  • Заказчик прислал проект на оценку в виде нескольких документов, пусть это будут спецификации: «Spec 1 v1_1» и «Spec 2 v1_2»
  • Сделали оценку работ, причем в разделе «References» указали что оценки сделаны на основе этих спецификаций
  • Заказчик согласился на оценку, подписали контракт, собрали команду, начали проект
  • В середине проекта выяснилось, что обещанные сроки выдержать не получается
  • Поначалу «подозрение» пало на некачественный оценку работ
  • Но в конечном итоге выяснилось что: А) – заказчик в начале работ «подсунул» другие спецификации (названия те же, но версии и содержание отличаются); Б) – никто не сверился, отличаются ли изначальные и новые спецификации.

А теперь еще несколько типичных проблем:

  • Устраненные дефекты появляются снова
  • Отсутствуют зафиксированные версии спецификаций, продукта
  • Заказчику отдали старую или неполную версию продукта или его частей
  • Откуда-то появился новый функционал
  • Не совпадают спецификации, продукт и тестовая документация

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

Немного истории. Дисциплина, как и многие другие здравые мысли пришла от военных. Кстати еще о военных, есть статья «История проектного инструментария, нач. ХХв.» – рекомендую. Так вот, как говорит Википедия, дисциплина формализовалась в 1950-х в американских воздушных силах для контроля над компонентами сложных систем. И сейчас применяется во многих отраслях, в том числе и космической. Если говорить о более близких к ИТ вещах, то она постепенно стала компонентом CMMI, ISO 9000, ISO 10007, ITIL, PRINCE2 и т.д.

Собственно определение – Управление конфигурацией (Configuration Management, CM) – это управление наборами рабочих продуктов, их версиями, статусами и взаимосвязями.

Ключевые задачи могут немного отличаться в разных источниках, но если выделить основное, то это:

  • Определение элементов конфигурации
  • Учет состояний и версий
  • Отслеживание запросов на изменение
  • Верификация конфигураций

Причем, о первых трех в списке нужно по возможности договориться на старте проекта, лучше до подписания контракта. Давайте рассмотрим первую задачу – «Определение элементов конфигурации». На протяжении проекта производится множество разных артефактов (Work Products) – спецификации, отчеты, код, результаты инспекции кода, документация пользователя, тест кейсы, скрипты, протоколы совещаний и т.д. Некоторые из них являются Элементами Конфигурации (Configuration Items), а некоторые нет. Если по простому, то Элементы Конфигурации – это наиболее важные артефакты, это могут быть: результаты поставки заказчику; артефакты, от которых зависят другие артефакты и т.п. Например, спецификация – однозначно Элемент Конфигурации, т.к. на ее основании разрабатывается продукт, тестовая документация, делается приемка продукта и т.п. А вот отчет – вряд ли.

Соответственно к Элементам Конфигурации должен применяться структурированный контроль – со второй по четвертую ключевые задачи в списке.

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

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

Серия статей «Старт проекта» выходит в поддержку тренинга «Успешный старт проекта», в котором темы статей рассматриваются подробнее и с практическими заданиями.