Руководство проектами по разработке по в компании

Управление проектами по разработке программного обеспечения. Проблемы и пути решения

Время на прочтение
15 мин

Количество просмотров 26K

Воронка методологий В 2001 году, когда ещё не было Хабра и существенной доли его современных читателей, когда вотерфолл был всемогущим, а об эджайле ещё только-только начинали говорить, я немного поисследовал тему методологий разработки и их отличий друг от друга. В результате появилась статья, которая была опубликована на дружественных мне веб-сайтах. На статью даже ссылались некоторые уважаемые учебные заведения при подготовке курсов по основам менеджмента программных проектов. Поскольку дружественные веб-сайты были не про IT, то и статья со временем с них исчезла. Дабы не допустить её полного исчезновения с просторов рунета, позволю себе опубликовать её на Хабре и предлагаю всем желающим совершить небольшой экскурс в прошлое. Да, многие вещи сейчас кажутся наивными, но ряд выводов всё ещё более чем актуален.

Внимание, статья от 2001 года!

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

Вступление

Сегодня существует достаточно большое количество стандартных процессов и методологий, применяя которые фирма получает ту или иную модель производства ПО. Самыми известными из них являются CMM (Capability Maturity Model) и серия стандартов ISO 9000. Как правило, организации внедряют эти процессы исключительно для того, чтобы получит сертификат соответствия своего процесса одному из вышеупомянутых стандартов. Однако, как не парадоксально это звучит, зачастую попытки внедрить один из вышеупомянутых процессов пагубно сказывались на стабильности работы фирмы.

В последние 3 года на западе стали модными термины «легковесный процесс», «адаптивный процесс», «единый рациональный процесс» и «экстремальное программирование». Что это такое? И почему иногда эффект от внедрения ISO9000 оказывается негативным? Какой процесс предпочесть и какими критериями руководствоваться при выборе процесса? Остальная часть статьи является попыткой найти ответы на эти и другие вопросы.

Классификация проектов

Модель и параметры процесса производства ПО в значительной мере зависит от типа проекта. У каждой команды есть свои заказчики, с которыми сложились те или иные отношения.

«Свой» заказчик

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

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

Продукт под заказ

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

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

Тиражируемый продукт

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

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

Аутсорсинг

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

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

Проблемы

Организация процесса

Наиболее типовую в России модель процесса производства программного обеспечения можно охарактеризовать следующим образом: «Каждый разработчик выбирает тот или иной метод или технику для создания программ в соответствии с собственными привычками и пристрастиями. Практически полное отсутствие четкой ответственности за выполнение тех или иных функций. Качество программного обеспечения является случайной величиной и напрямую зависит от способностей отдельных сотрудников компании. Практически все зависит от инициативы и деловых качеств нескольких личностей». Эта формулировка практически полностью соответствует 1 уровню CMM под названием «начальный». По некоторым источником, 2 года назад доля фирм-производителей программного обеспечения, использующих эту модель, составляла свыше 70%.

Вот какие выводы делает Мартин Фаулер [4], сравнивая процесс производства программного обеспечения с классическими типами строительства и производства:

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

Требования и итеративность

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

Фаулер пишет: «В процессе производства программного обеспечения все зависит от требований. Если вы не можете добиться устойчивости требований, вы не сможете создать предсказуемый план». Как же быть? С одной стороны требования должны быть устойчивыми, а с другой они будут неизбежно меняться в ходе проекта.

Ключ ко всему – итеративный процесс производства.

Пути решения

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

Линейный и итеративный жизненные циклы создания ПО

Линейный жизненный цикл создания программного обеспечения (также известный как «Водопад») предусматривает последовательное прохождения 6 этапов: обследование, постановка задачи, проектирование, программирование, тестирование и внедрение. Такой жизненный цикл предполагает неизменность требований, предъявляемых к ПО, с момента постановки задачи до момента подписания акта о внедрении разработанного продукта, каким бы длительным не был этап разработки программного обеспечения.

Такой подход применим, к классическим дисциплинам, таким, как строительство домов или производство станков. Данный подход применим даже в индустрии производства программного обеспечения, если требования к продукту на самом деле не меняются в течение всего цикла разработки. Еще одним условием служит устоявшаяся технология разработки ПО, без применения каких-либо до конца не исследованных технологических новинок. Примером проектов подобного рода может служить написание программы, управляющей ракетой, летящей на Луну (маловероятно, что по ходу написания программы человечество узнало что-то кардинально новое о Луне) или создание калькулятора, требования к которому уже давно известны и долгое время не меняются. А как же быть, если требуется создать, например, электронный магазин для заказчика, торгующего компьютерами и комплектующими?

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

Существующие методологии

В мире существует довольно много типовых процессов производства программного обеспечения. ISO9001, ISO12207, ISO15504, CMM (Capability Maturity Model), MSF (Microsoft Solution Framework), RUP (Rational Unified Process), SCRUM, XP (eXtremal Programming), Crystal Clear, ASD (Adaptive Software Development), Lean Development – все это разновидности процессов производства программного обеспечения, семейства процессов и методологии. Под методологией понимается набор методов, практик, метрик и правил, используемых в процессе производства ПО. Согласно Алистеру Кобурну [1], методология нужна для того, чтобы:

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

По определению Джима Хайсмита [16] «Настоящее назначение методологий – это увеличение производительности, обеспечивающее решения для заказчиков »

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

Согласно Алистеру Кобурну [1]:

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

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

Первая категория методологий появилась на свет раньше всех и является неотъемлемой частью моделей качества программного обеспечения. Тяжелые методологии отличаются тем, что охватывают все аспекты деятельности компании, производящей программное обеспечение – от управления требованиями и планирования процесса до регламентирования взаимоотношений с субподрядчиками и описания требований к вспомогательным процессам. Все методологии данной категории нетерпимы к изменениям и рассматривают людей как обычный ресурс. Примеры: CMM, ISO9000, SPICE.

Вторая категория методологий появилась на свет в качестве некоторой совокупности методов и практик, применявшихся небольшими командами разработчиков в успешных проектах. Здесь огромное значение уделяется взаимоотношениями между людьми внутри команды, учитываются вопросы терпимости и другие психологические аспекты. Все процессы данной категории предусматривают итерационный жизненный цикл разработки ПО. Если попытаться сформулировать основной смысл легких методологий, то получится следующее: «Обеспечение максимальной скорости и качества разработки ПО при минимуме ограничений и условностей». В частности, во всех легких методологиях предусмотрен лишь необходимый минимум документов, т.к. отдается должное принципу «Документация – это не есть понимание». Существенным отличием данных методологий от методологий первого типа является отношение к планированию. Лучше всего суть этого отличия выразил Джим Хайсмит: «В традиционном планировании отклонения от плана являются ошибками, которые должны быть устранены. Однако, в адаптивном процессе, отклонения ведут нас к правильному решению»[4]. Примеры: SCRUM, XP (eXtremal Programming), Crystal Clear.

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

Анализ применимости процессов

Алистер Кобурн, автор Crystal, является одним из наиболее известных современных специалистов, сделавших объектом своих исследований методологии. Результатом его исследований в данной области является книга «Agile Software Development»[1], в которой автор анализирует процесс производства ПО с различных точек зрения. Алистер Кобурн является автором концепции «Разработка программного обеспечения – это совместная игра изобретения и взаимодействия». Он выделяет 2 цели у этой игры:

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

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

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

Рисунки 1-3 иллюстрируют закономерности в использовании разных методологий командами разработчиков различной численности.

image

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

image

Рисунок 2 отражает динамику производительности большой команды, использующей методологии различного веса. Легкая методология не обеспечивает должной управляемости процессу, поэтому вначале графика производительность команды низка. Наивысшей производительности команда достигает, используя методологию, которой достаточно для установки управляемого и динамичного процесса, однако при дальнейшем утяжелении методологии наблюдается постепенный спад в производительности.

image

Рисунок 3 отражает потолок возможностей команды при использовании методологий разного веса.

Классификация

image

Кобурн разработал классификацию [1] типов проектов, основываясь на двух параметрах – размер проекта и его степень критичности. Различаются следующие степени критичности:

  • потеря комфорта (Loss of comfort). Потеря комфорта означает, что в случае ошибки в системе, жизнь людей немного осложнится, они должны буду делать больше ручной работы, или звонить друг другу, чтобы восполнить прерванный канал связи. Программы поддержки корпоративной инфраструктуры обычно лежат в этой области;
  • потеря существенного количества денег (Discretionary money). Означает потерю некоторого количества денег или какого-либо другого материального эквивалента, но только в рамках дискомфорта. Обычно, складские системы лежат в данной области;
  • невосполнимая потеря денег (Irreplaceable money, essential money). Означает потерю денег или их эквивалента в объемах, сравнимых с банкротством предприятия. Система управления национальным банком лежит в этой области;
  • потеря жизни (Loss of life). Означает, что в случае ошибки такой системы возникает опасность для жизни человека. Системы управления атомной станцией, космическим кораблем и самолетом лежат в данной области.

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

Выводы

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

Свой заказчик

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

Продукт под заказ

Самый уязвимый тип проекта. Фирма целиком зависит от количества заключенных договоров. Постоянно производится поиск новых заказчиков. В таких условиях, конечно же, наличие сертификата ISO или CMM является очень желательным, особенно если речь идет о западных заказчиках. Однако, внедрение ISO9001, SPICE или CMM является достаточно трудоемким процессом, который не всегда себя оправдывает. Поэтому, видимо, целесообразно начать внедрение RUP, с прицелом на дальнейшую сертификацию.

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

Тиражируемый продукт

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

Аутсорсинг

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

Заключение

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

Библиографический список:

  1. A. Cockburn. Agile Software Development, 2001, Addison Wesley
  2. A. Cockburn. Cristal Clear, 2002, Addison Wesley (готовится к печати)
  3. Mark C. Paulk. Extreme Programming from CMM perspective, Paper for XP Universe, Raleigh,NC, 2001
  4. Martin Fowler. The New Methodology (www.martinfowler.com/articles/newMethodology.html)
  5. A Guide to the Project Management Body of Knowledge, PMI, 2000
  6. Jim Highsmith. Agile Methodologies. Problems, Principlee and Practices, Cutter consortium, 2001 (www.surgeworks.com/resources/papers/AgileMethodologiesXP2001.pdf)
  7. Angelo Corsaro, eXtreme Programming Concepts, Department of computer science, Washington university, 2001
  8. Thomas Dudziak. eXtreme Programming. An Overview. Methoden und Werkzeuge der Softwareproduktion WS 1999/2000
  9. Spice. Consolidated product. Software Process Assessment (http://www.sqi.gu.edu.au/spice)
  10. Н. Сапрыкина, А Абарыков, А. Григорьев. Сертификация российских IT-компаний, PCWeek, #41(311)
  11. John Smitm. A Comparision of RUP and XP, Rational Software White Paper, 2000
  12. Gary Pollice. Using The Rational Unified Process For Small Projects: Expanding Upon eXtreme Programming, Rational Software White Paper, 2000
  13. McConnell. Software Project Survival Guide, Microsoft Press, 1998
  14. Philippe Kruchten. The Rational Unified Process, An Introduction, Second Edition, Addison-Wesley, Addison-Wesley, 2000
  15. Tom DeMarko, Cutter Trends Report on light methodologies, 2000
  16. Jim Highsmith, E-Project Management: Harnessing Innovation And Speed, Cutter consortium, 2001, VOL 1, No. 1
  17. Kent Beck, Mike Beedle etc, Manifesto for Agile Software Development (http://agilealliance.org)
  18. Assessing the Rational Unified Process against ISO/IEC15504-5: Information Technology Software Process Assessment Part 5: An Assessment Model And Indicator Guidance. Rational Corporation Whitepaper, 2000
  19. Reaching CMM Levels 2 and 3 with the Rational Unified Process. Rational Corporation Whitepaper, 2000
  20. http://www.objectmentor.com/resources/articles/RUPvsXP.pdf
  21. A. Cockburn. Surviving Object-Oriented Projects (The Agile Series for Software Developers), Addison Wesley 1998

Процесс управления разработкой программного обеспечения

Невозможно описать и стандартизировать
все работы, выполняемые в проекте по
созданию ПО. Эти работы весьма существенно
зависят от организации, где выполняется
разработка ПО, и от типа создаваемого
программного продукта. Но всегда можно
выделить следующие:

  • Написание предложений по созданию ПО.

  • Планирование и составление графика
    работ по созданию ПО.

  • Оценивание стоимости проекта.

  • Подбор персонала.

  • Контроль за ходом выполнения работ.

  • Написание отчетов и представлений.

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

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

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

Контроль за ходом выполнения работ
(мониторинг проекта)
— это непрерывный
процесс, продолжающийся в течение всего
срока реализации проекта. Руководитель
дол­жен постоянно отслеживать ход
реализации проекта и сравнивать
фактические и пла­новые показатели
выполнения работ с их стоимостью. Хотя
многие организации имеют механизмы
формального мониторинга работ, опытный
руководитель может составить яс­ную
картину о стадии развитии проекта просто
путем неформального общения с
разра­ботчиками.

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

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

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

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

  1. Бюджет проекта не позволяет привлечь
    высококвалифицированный персонал. В
    таком случае за меньшую плату привлекаются
    менее квалифицированные специалисты.

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

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

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

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

В рамках курса «Технология разработки
программного обеспечения» выделены
следующие роли в группе по разработке
ПО:

  • Руководитель
    – общее руководство проектом, написание
    документации, общение с заказчиком ПО

  • Системный
    аналитик – разработка требований
    (составление технического задания,
    проекта программного обеспечения)

  • Тестер
    – составление плана тестирования и
    аттестации готового ПО (продукта),
    составление сценария тестирования,
    базовый пример, проведение мероприятий
    по плану тестирования

  • Разработчик
    – моделирование компонент программного
    обеспечения, кодирование

Соседние файлы в папке Курс (лекции)

  • #
  • #
  • #
  • #
  • #
  • #

Управление проектами по разработке программного обеспечения. Проблемы и пути решения

Время на прочтение
15 мин

Количество просмотров 25K

Воронка методологий В 2001 году, когда ещё не было Хабра и существенной доли его современных читателей, когда вотерфолл был всемогущим, а об эджайле ещё только-только начинали говорить, я немного поисследовал тему методологий разработки и их отличий друг от друга. В результате появилась статья, которая была опубликована на дружественных мне веб-сайтах. На статью даже ссылались некоторые уважаемые учебные заведения при подготовке курсов по основам менеджмента программных проектов. Поскольку дружественные веб-сайты были не про IT, то и статья со временем с них исчезла. Дабы не допустить её полного исчезновения с просторов рунета, позволю себе опубликовать её на Хабре и предлагаю всем желающим совершить небольшой экскурс в прошлое. Да, многие вещи сейчас кажутся наивными, но ряд выводов всё ещё более чем актуален.

Внимание, статья от 2001 года!

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

Вступление

Сегодня существует достаточно большое количество стандартных процессов и методологий, применяя которые фирма получает ту или иную модель производства ПО. Самыми известными из них являются CMM (Capability Maturity Model) и серия стандартов ISO 9000. Как правило, организации внедряют эти процессы исключительно для того, чтобы получит сертификат соответствия своего процесса одному из вышеупомянутых стандартов. Однако, как не парадоксально это звучит, зачастую попытки внедрить один из вышеупомянутых процессов пагубно сказывались на стабильности работы фирмы.

В последние 3 года на западе стали модными термины «легковесный процесс», «адаптивный процесс», «единый рациональный процесс» и «экстремальное программирование». Что это такое? И почему иногда эффект от внедрения ISO9000 оказывается негативным? Какой процесс предпочесть и какими критериями руководствоваться при выборе процесса? Остальная часть статьи является попыткой найти ответы на эти и другие вопросы.

Классификация проектов

Модель и параметры процесса производства ПО в значительной мере зависит от типа проекта. У каждой команды есть свои заказчики, с которыми сложились те или иные отношения.

«Свой» заказчик

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

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

Продукт под заказ

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

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

Тиражируемый продукт

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

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

Аутсорсинг

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

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

Проблемы

Организация процесса

Наиболее типовую в России модель процесса производства программного обеспечения можно охарактеризовать следующим образом: «Каждый разработчик выбирает тот или иной метод или технику для создания программ в соответствии с собственными привычками и пристрастиями. Практически полное отсутствие четкой ответственности за выполнение тех или иных функций. Качество программного обеспечения является случайной величиной и напрямую зависит от способностей отдельных сотрудников компании. Практически все зависит от инициативы и деловых качеств нескольких личностей». Эта формулировка практически полностью соответствует 1 уровню CMM под названием «начальный». По некоторым источником, 2 года назад доля фирм-производителей программного обеспечения, использующих эту модель, составляла свыше 70%.

Вот какие выводы делает Мартин Фаулер [4], сравнивая процесс производства программного обеспечения с классическими типами строительства и производства:

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

Требования и итеративность

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

Фаулер пишет: «В процессе производства программного обеспечения все зависит от требований. Если вы не можете добиться устойчивости требований, вы не сможете создать предсказуемый план». Как же быть? С одной стороны требования должны быть устойчивыми, а с другой они будут неизбежно меняться в ходе проекта.

Ключ ко всему – итеративный процесс производства.

Пути решения

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

Линейный и итеративный жизненные циклы создания ПО

Линейный жизненный цикл создания программного обеспечения (также известный как «Водопад») предусматривает последовательное прохождения 6 этапов: обследование, постановка задачи, проектирование, программирование, тестирование и внедрение. Такой жизненный цикл предполагает неизменность требований, предъявляемых к ПО, с момента постановки задачи до момента подписания акта о внедрении разработанного продукта, каким бы длительным не был этап разработки программного обеспечения.

Такой подход применим, к классическим дисциплинам, таким, как строительство домов или производство станков. Данный подход применим даже в индустрии производства программного обеспечения, если требования к продукту на самом деле не меняются в течение всего цикла разработки. Еще одним условием служит устоявшаяся технология разработки ПО, без применения каких-либо до конца не исследованных технологических новинок. Примером проектов подобного рода может служить написание программы, управляющей ракетой, летящей на Луну (маловероятно, что по ходу написания программы человечество узнало что-то кардинально новое о Луне) или создание калькулятора, требования к которому уже давно известны и долгое время не меняются. А как же быть, если требуется создать, например, электронный магазин для заказчика, торгующего компьютерами и комплектующими?

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

Существующие методологии

В мире существует довольно много типовых процессов производства программного обеспечения. ISO9001, ISO12207, ISO15504, CMM (Capability Maturity Model), MSF (Microsoft Solution Framework), RUP (Rational Unified Process), SCRUM, XP (eXtremal Programming), Crystal Clear, ASD (Adaptive Software Development), Lean Development – все это разновидности процессов производства программного обеспечения, семейства процессов и методологии. Под методологией понимается набор методов, практик, метрик и правил, используемых в процессе производства ПО. Согласно Алистеру Кобурну [1], методология нужна для того, чтобы:

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

По определению Джима Хайсмита [16] «Настоящее назначение методологий – это увеличение производительности, обеспечивающее решения для заказчиков »

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

Согласно Алистеру Кобурну [1]:

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

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

Первая категория методологий появилась на свет раньше всех и является неотъемлемой частью моделей качества программного обеспечения. Тяжелые методологии отличаются тем, что охватывают все аспекты деятельности компании, производящей программное обеспечение – от управления требованиями и планирования процесса до регламентирования взаимоотношений с субподрядчиками и описания требований к вспомогательным процессам. Все методологии данной категории нетерпимы к изменениям и рассматривают людей как обычный ресурс. Примеры: CMM, ISO9000, SPICE.

Вторая категория методологий появилась на свет в качестве некоторой совокупности методов и практик, применявшихся небольшими командами разработчиков в успешных проектах. Здесь огромное значение уделяется взаимоотношениями между людьми внутри команды, учитываются вопросы терпимости и другие психологические аспекты. Все процессы данной категории предусматривают итерационный жизненный цикл разработки ПО. Если попытаться сформулировать основной смысл легких методологий, то получится следующее: «Обеспечение максимальной скорости и качества разработки ПО при минимуме ограничений и условностей». В частности, во всех легких методологиях предусмотрен лишь необходимый минимум документов, т.к. отдается должное принципу «Документация – это не есть понимание». Существенным отличием данных методологий от методологий первого типа является отношение к планированию. Лучше всего суть этого отличия выразил Джим Хайсмит: «В традиционном планировании отклонения от плана являются ошибками, которые должны быть устранены. Однако, в адаптивном процессе, отклонения ведут нас к правильному решению»[4]. Примеры: SCRUM, XP (eXtremal Programming), Crystal Clear.

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

Анализ применимости процессов

Алистер Кобурн, автор Crystal, является одним из наиболее известных современных специалистов, сделавших объектом своих исследований методологии. Результатом его исследований в данной области является книга «Agile Software Development»[1], в которой автор анализирует процесс производства ПО с различных точек зрения. Алистер Кобурн является автором концепции «Разработка программного обеспечения – это совместная игра изобретения и взаимодействия». Он выделяет 2 цели у этой игры:

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

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

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

Рисунки 1-3 иллюстрируют закономерности в использовании разных методологий командами разработчиков различной численности.

image

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

image

Рисунок 2 отражает динамику производительности большой команды, использующей методологии различного веса. Легкая методология не обеспечивает должной управляемости процессу, поэтому вначале графика производительность команды низка. Наивысшей производительности команда достигает, используя методологию, которой достаточно для установки управляемого и динамичного процесса, однако при дальнейшем утяжелении методологии наблюдается постепенный спад в производительности.

image

Рисунок 3 отражает потолок возможностей команды при использовании методологий разного веса.

Классификация

image

Кобурн разработал классификацию [1] типов проектов, основываясь на двух параметрах – размер проекта и его степень критичности. Различаются следующие степени критичности:

  • потеря комфорта (Loss of comfort). Потеря комфорта означает, что в случае ошибки в системе, жизнь людей немного осложнится, они должны буду делать больше ручной работы, или звонить друг другу, чтобы восполнить прерванный канал связи. Программы поддержки корпоративной инфраструктуры обычно лежат в этой области;
  • потеря существенного количества денег (Discretionary money). Означает потерю некоторого количества денег или какого-либо другого материального эквивалента, но только в рамках дискомфорта. Обычно, складские системы лежат в данной области;
  • невосполнимая потеря денег (Irreplaceable money, essential money). Означает потерю денег или их эквивалента в объемах, сравнимых с банкротством предприятия. Система управления национальным банком лежит в этой области;
  • потеря жизни (Loss of life). Означает, что в случае ошибки такой системы возникает опасность для жизни человека. Системы управления атомной станцией, космическим кораблем и самолетом лежат в данной области.

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

Выводы

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

Свой заказчик

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

Продукт под заказ

Самый уязвимый тип проекта. Фирма целиком зависит от количества заключенных договоров. Постоянно производится поиск новых заказчиков. В таких условиях, конечно же, наличие сертификата ISO или CMM является очень желательным, особенно если речь идет о западных заказчиках. Однако, внедрение ISO9001, SPICE или CMM является достаточно трудоемким процессом, который не всегда себя оправдывает. Поэтому, видимо, целесообразно начать внедрение RUP, с прицелом на дальнейшую сертификацию.

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

Тиражируемый продукт

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

Аутсорсинг

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

Заключение

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

Библиографический список:

  1. A. Cockburn. Agile Software Development, 2001, Addison Wesley
  2. A. Cockburn. Cristal Clear, 2002, Addison Wesley (готовится к печати)
  3. Mark C. Paulk. Extreme Programming from CMM perspective, Paper for XP Universe, Raleigh,NC, 2001
  4. Martin Fowler. The New Methodology (www.martinfowler.com/articles/newMethodology.html)
  5. A Guide to the Project Management Body of Knowledge, PMI, 2000
  6. Jim Highsmith. Agile Methodologies. Problems, Principlee and Practices, Cutter consortium, 2001 (www.surgeworks.com/resources/papers/AgileMethodologiesXP2001.pdf)
  7. Angelo Corsaro, eXtreme Programming Concepts, Department of computer science, Washington university, 2001
  8. Thomas Dudziak. eXtreme Programming. An Overview. Methoden und Werkzeuge der Softwareproduktion WS 1999/2000
  9. Spice. Consolidated product. Software Process Assessment (http://www.sqi.gu.edu.au/spice)
  10. Н. Сапрыкина, А Абарыков, А. Григорьев. Сертификация российских IT-компаний, PCWeek, #41(311)
  11. John Smitm. A Comparision of RUP and XP, Rational Software White Paper, 2000
  12. Gary Pollice. Using The Rational Unified Process For Small Projects: Expanding Upon eXtreme Programming, Rational Software White Paper, 2000
  13. McConnell. Software Project Survival Guide, Microsoft Press, 1998
  14. Philippe Kruchten. The Rational Unified Process, An Introduction, Second Edition, Addison-Wesley, Addison-Wesley, 2000
  15. Tom DeMarko, Cutter Trends Report on light methodologies, 2000
  16. Jim Highsmith, E-Project Management: Harnessing Innovation And Speed, Cutter consortium, 2001, VOL 1, No. 1
  17. Kent Beck, Mike Beedle etc, Manifesto for Agile Software Development (http://agilealliance.org)
  18. Assessing the Rational Unified Process against ISO/IEC15504-5: Information Technology Software Process Assessment Part 5: An Assessment Model And Indicator Guidance. Rational Corporation Whitepaper, 2000
  19. Reaching CMM Levels 2 and 3 with the Rational Unified Process. Rational Corporation Whitepaper, 2000
  20. http://www.objectmentor.com/resources/articles/RUPvsXP.pdf
  21. A. Cockburn. Surviving Object-Oriented Projects (The Agile Series for Software Developers), Addison Wesley 1998

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

Генрик Мкртчян — сооснователь и генеральный директор агентства веб-разработки «Кодеры», рассказал, как под ключ организовать процесс разработки в компании: от постановки задач до релиза продукта.

У нас есть два основных принципа:

  1. Команда делает проекты качественно, в срок и с прибылью для компании;
  2. Большинство решений, связанных с реализацией проектов, команда принимает самостоятельно, так как основные процессы в компании автоматизированы и прозрачны.

Проект любого масштаба мы разделяем на семь обязательных этапов.

1. Выбираем методологию

От этого зависит состав команды, порядок и даже график работы. Можно выбрать классическую (waterfall) или гибкую (agile). 

При классической методологии:

Команда будет работать строго по ТЗ. Результат, который вы получите в итоге, будет ровно таким, каким вы его запланировали в самом начале.

При гибкой методологии:

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

Если вам нужно быстро запустить MVP-версию продукта и понять, в каком направлении его развивать – выбирайте гибкую методологию.

2. Определяем роли и состав команды

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

Классический отдел разработки состоит из следующих сотрудников:

  • менеджер проекта: контролирует рабочий процесс, дедлайны, оптимизирует работу сотрудников;
  • архитектор: определяет стек технологий, проектирует общую инфраструктуру проекта, его основные компоненты, модули и сервисы;
  • frontend- и backend-разработчик/fullstack-разработчик: первые занимаются визуальной и вычислительной частью проекта, а второй, как универсальный солдат, владеет знаниями разных технологий;
  • тестировщик: обеспечивает качество программного продукта с самого начала разработки и до его финальной сдачи;
  • тимлид: декомпозирует и делегирует задачи, проводит код-ревью и поддерживает боевой дух команды;
  • дизайнер: определяет внешний вид продукта, его интерфейс и юзабилити;
  • аналитик: проектирует и оптимизирует процессы, руководит внедрением новых IT-систем и адаптирует систему работы к новым задачам;
  • системный администратор: осуществляет бесперебойную работу серверов, настраивает площадки для разработчиков и обеспечивает техническую инфраструктуру.

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

3. Проводим CustDev, собираем требования с клиентов, пишем техническое задание

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

Уделите внимание техническому заданию. ТЗ – гарант, что вы не потратите время зря, не переплатите и получите нужный результат. Кроме того, оно обеспечивает техническое развитие продукта и поможет:

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

4. Обеспечиваем команду техническими инструментами

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

Настройте:

  • репозиторий для кодовой базы проекта;
  • общие инструменты организации процесса разработки, если они нужны – например, таск-трекер (Jira, Redmine, Trello и другие);
  • рабочее окружение: сервисы и приложения, от которых будет зависеть ваш продукт (например, Swagger для документации API).

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

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

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


Читайте также:
Разработка мобильного приложения: как создать прототип и зачем нужен MVP
Кроссплатформенная и нативная разработка мобильных приложений в 2021 году
12 шагов к успешному запуску детского приложения


5. Планируем работу команды

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

Составляя график, учитывайте сдвиг сроков задач (например, увеличение сроков из-за исправлений ошибок) и продумайте, как одна задача зависит от другой.

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

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

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

6. Делегируем задачи, контролируем их выполнение

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

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

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

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

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

7. Выкладываем, тестируем и дорабатываем продукт

Тестирование каждой задачи повышает качество продукта и бережет вас от дефектного релиза с ошибками. Не забудьте про код-ревью — проверку кода, который написал разработчик. Обычно ревью проводит тимлид проекта или кто-то из старших разработчиков. Если возникают спорные моменты, привлекайте автора кода.

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

После этого продукт выкатывается в боевую среду, его финально проверяют тестировщики.

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

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

Чтобы организовать процесс разработки, который будет работать без вашего участия:

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

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

Фото: Joyseulay / Shutterstock

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

«Хорошее управление не гарантирует успешного завершения проекта, но плохое управление обязательно приведет к его провалу.»

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

Программный продукт нематериален

Не существует стандартных процессов разработки ПО

Большие программные проекты — это часто «одноразовые» проекты

Процессы управления:

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

Планирование и составление графика работ по созданию ПО. На этапе планирования проекта определяются процессы, этапы и

91

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

Оценивание стоимости проекта.

Контроль за ходом выполнения работ. Менеджер должен постоянно отслеживать ход реализации проекта и сравнивать фактические и плановые показатели выполнения работ с их стоимостью.

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

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

Планирование проекта

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

92

Алгоритм планирования проекта можно представить следующим образом:

Определение проектных ограничений Первоначальная оценка параметров проекта

Определение этапов выполнения проекта и контрольных отметок while пока проект не завершится или не будет остановлен

loop

Составление графика работ Начало выполнения работ

Ожидание окончания очередного этапа работ Отслеживание хода выполнения работ Пересмотр оценок параметров проекта Изменение графика работ

План управления конфигурацией

План аттестации

План качества

План

Описание

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

необходимых для аттестации программной системы Описывает структуру и процессы управления конфигурацией Предлагает план мероприятий, требующихся для

План сопровождения сопровождения ПО в процессе его эксплуатации, а ПО также расчет стоимости сопровождения и необходимые

для этого ресурсы План по управлению Описывает мероприятия, направленные на повышение

персоналом квалификации членов команды разработчиков

план должен максимально подробно описывать все этапы реализации проекта.

Таблица 11 – Планирование проекта

93

Пересмотр проектных ограничений if (возникла проблема) then

Пересмотр технических или организационных параметров проекта

end if end loop

План проекта:

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

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

3.Анализ рисков. Описание возможных проектных рисков, вероятности их проявления и стратегий, направленных на их уменьшение.

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

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

6.График работ. В этом графике отображаются зависимости между отдельными процессами (этапами) разработки ПО, оценки времени их выполнения и распределение членов команды разработчиков по отдельным этапам.

94

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

Контрольные отметки— вехи, отмечающие окончание определенного этапа работ.

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

Рисунок 57 — Контрольные отметки

95

Рисунок 58 — График работ

Рисунок 59 – Сетевая диаграмма

Таблица 12 – Описание сетевой диаграммы

96

Этап

Длительность

Зависимость

(дни)

Т1

8

Т2

15

Т3

15

Т1 (М1)

Т4

10

Т5

10

Т2, Т4 (М2)

Т6

5

Т1, Т2 (М3)

Т7

20

Т1 (М1)

Т8

25

Т4 (М5)

Т9

15

Т3, Т6 (М4)

Т10

15

Т5, Т7 (М7)

Т11

7

Т9 (М6)

Т12

10

Т11 (М8)

Рисунок 60 – Временная диаграмма

97

Рисунок 61 – Диаграмма распределения исполнителей по этапам

Таблица 13 – Распределение исполнителей

Этап

Исполнитель

Т1

Джейн

Т2

Анна

Т3

Джейн

Т4

Фред

Т5

Мэри

Т6

Анна

Т7

Джим

Т8

Фред

Т9

Джейн

Т10

Анна

Т11

Фред

Т12

Фред

98

Соседние файлы в папке Lect_trpo

  • #
  • #
  • #
  • #
  • #

Структура работы ИТ-компании, занимающейся разработкой программного обеспечения, можно разделить на две части:

  • Создание программного обеспечения
  • Управление проектами программного обеспечения

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

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

Программный проект

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

Необходимость управления программным проектом

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

Time_Cost_Quality

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

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

Менеджер программных проектов

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

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

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

Управление людьми

  • Выступать в качестве руководителя проекта
  • Связь с заинтересованными сторонами
  • Управление человеческими ресурсами
  • Настройка иерархии отчетов и т. Д.

Управление проектом

  • Определение и настройка масштаба проекта
  • Управление деятельностью по управлению проектами
  • Мониторинг прогресса и производительности
  • Анализ рисков на каждом этапе
  • Сделайте необходимый шаг, чтобы избежать или выйти из проблем
  • Выступать в качестве представителя проекта

Деятельность по управлению программным обеспечением

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

  • Планирование проекта
  • Управление областью
  • Оценка проекта

Планирование проекта

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

Управление областью

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

Во время управления содержанием проекта необходимо:

  • Определите сферу
  • Решите его проверку и контроль
  • Разделите проект на различные более мелкие части для удобства управления.
  • Проверьте область
  • Управляйте областью, внося изменения в область

Оценка проекта

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

Оценка проекта может включать в себя следующее:

  • Оценка размера программного обеспечения

    Размер программного обеспечения может быть оценен либо в единицах KLOC (Kilo Line of Code), либо путем расчета количества функциональных точек в программном обеспечении. Строки кода зависят от практики кодирования, а функциональные точки различаются в зависимости от требований пользователя или программного обеспечения.

  • Оценка усилий

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

  • Оценка времени

    Как только размер и усилия оценены, можно оценить время, необходимое для производства программного обеспечения. Требуемые усилия подразделяются на подкатегории в соответствии со спецификациями требований и взаимозависимостью различных компонентов программного обеспечения. Задачи программного обеспечения подразделяются на более мелкие задачи, действия или события с помощью Work Breakthrough Structure (WBS). Задачи запланированы на ежедневной основе или в календарных месяцах.

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

  • Оценка затрат

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

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

Размер программного обеспечения может быть оценен либо в единицах KLOC (Kilo Line of Code), либо путем расчета количества функциональных точек в программном обеспечении. Строки кода зависят от практики кодирования, а функциональные точки различаются в зависимости от требований пользователя или программного обеспечения.

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

Как только размер и усилия оценены, можно оценить время, необходимое для производства программного обеспечения. Требуемые усилия подразделяются на подкатегории в соответствии со спецификациями требований и взаимозависимостью различных компонентов программного обеспечения. Задачи программного обеспечения подразделяются на более мелкие задачи, действия или события с помощью Work Breakthrough Structure (WBS). Задачи запланированы на ежедневной основе или в календарных месяцах.

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

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

Методы оценки проекта

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

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

Техника Разложения

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

Есть две основные модели –

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

Методика эмпирической оценки

Этот метод использует эмпирически полученные формулы для оценки. Эти формулы основаны на LOC или FP.

  • Модель Putnam

    Эта модель сделана Лоуренсом Х. Путнэмом, который основан на распределении частот Нордена (кривая Рэлея). Модель Putnam отображает время и усилия, необходимые с размером программного обеспечения.

  • COCOMO

    COCOMO расшифровывается как COnstructive COst MOdel, разработанная Barry W. Boehm. Он делит программный продукт на три категории программного обеспечения: органическое, полуотдельное и встроенное.

Эта модель сделана Лоуренсом Х. Путнэмом, который основан на распределении частот Нордена (кривая Рэлея). Модель Putnam отображает время и усилия, необходимые с размером программного обеспечения.

COCOMO расшифровывается как COnstructive COst MOdel, разработанная Barry W. Boehm. Он делит программный продукт на три категории программного обеспечения: органическое, полуотдельное и встроенное.

Планирование проекта

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

Для составления расписания проекта необходимо:

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

Управление ресурсами

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

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

Управление ресурсами включает в себя –

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

Управление рисками проекта

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

  • Опытный персонал, покидающий проект, и новый персонал.
  • Изменения в организационном управлении.
  • Изменение требования или неверное толкование требования.
  • Недооценка необходимого времени и ресурсов.
  • Технологические изменения, экологические изменения, деловая конкуренция.

Процесс управления рисками

В процессе управления рисками участвуют следующие виды деятельности:

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

Выполнение проекта и мониторинг

На этом этапе задачи, описанные в планах проекта, выполняются в соответствии с их графиками.

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

Эти меры включают в себя –

  • Мониторинг активности – все действия, запланированные в рамках какой-либо задачи, можно отслеживать на ежедневной основе. Когда все действия в задании завершены, оно считается выполненным.
  • Отчеты о состоянии. Отчеты содержат сведения о состоянии работ и задач, выполненных в течение определенного периода времени, обычно за неделю. Статус может быть помечен как завершенный, ожидающий или незавершенный и т. Д.
  • Контрольный список этапов – Каждый проект разделен на несколько этапов, на которых выполняются основные задачи (этапы) на основе этапов SDLC. Этот контрольный список этапов составляется раз в несколько недель и содержит информацию о состоянии этапов.

Управление коммуникациями проекта

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

Общение может быть устным или письменным. Процесс управления связью может иметь следующие этапы:

  • Планирование – этот этап включает в себя определение всех заинтересованных сторон в проекте и способ общения между ними. Он также учитывает необходимость каких-либо дополнительных средств связи.
  • Обмен – После определения различных аспектов планирования, менеджер сосредотачивается на том, чтобы делиться правильной информацией с правильным человеком в правильное время. Это позволяет каждому участнику проекта быть в курсе прогресса и статуса проекта.
  • Обратная связь – Руководители проектов используют различные меры и механизм обратной связи и создают отчеты о состоянии и эффективности. Этот механизм гарантирует, что вклад от различных заинтересованных сторон поступает к руководителю проекта в качестве обратной связи.
  • Закрытие – В конце каждого важного события, в конце фазы SDLC или в конце самого проекта, официально объявляется административное закрытие, чтобы обновить всех заинтересованных лиц, отправив электронное письмо, распространив бумажную копию документа или другим способом эффективного общения.

После закрытия команда переходит к следующему этапу или проекту.

Управление конфигурацией

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

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

Как правило, после того, как SRS будет завершен, вероятность внесения изменений со стороны пользователя будет меньше. Если они происходят, изменения рассматриваются только с предварительного одобрения высшего руководства, поскольку существует вероятность перерасхода средств и времени.

базисный

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

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

Смени управление

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

Изменение конфигурации продукта проходит через следующие шаги –

  • Идентификация – запрос на изменение поступает из внутреннего или внешнего источника. Когда запрос на изменение идентифицирован формально, он надлежащим образом документируется.

  • Валидация – проверяется действительность запроса на изменение и подтверждается процедура его обработки.

  • Анализ – Влияние запроса на изменение анализируется с точки зрения графика, стоимости и необходимых усилий. Общее влияние предполагаемого изменения на систему анализируется.

  • Контроль. Если предполагаемое изменение затрагивает слишком много объектов в системе или является неизбежным, обязательно получить одобрение вышестоящих органов, прежде чем изменение будет включено в систему. Решено, стоит ли вносить изменения или нет. Если это не так, запрос на изменение отклоняется формально.

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

  • Запрос на закрытие – изменение проверяется для правильной реализации и объединения с остальной системой. Это новое внесенное изменение в программное обеспечение задокументировано надлежащим образом, и запрос официально закрыт.

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

Валидация – проверяется действительность запроса на изменение и подтверждается процедура его обработки.

Анализ – Влияние запроса на изменение анализируется с точки зрения графика, стоимости и необходимых усилий. Общее влияние предполагаемого изменения на систему анализируется.

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

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

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

Инструменты управления проектами

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

Доступны инструменты, которые помогают эффективно управлять проектами. Некоторые описаны –

Диаграмма Ганта

Диаграммы Ганта были разработаны Генри Ганттом (1917). Он представляет график проекта относительно периодов времени. Это горизонтальная гистограмма с столбцами, представляющими действия и время, запланированное для действий проекта.

Диаграмма Ганта

Диаграмма PERT

Диаграмма PERT (Program Evaluation & Review Technique) – это инструмент, который изображает проект в виде сетевой диаграммы. Он способен графически представлять основные события проекта как параллельно, так и последовательно. События, которые происходят одно за другим, показывают зависимость более позднего события от предыдущего.

Диаграмма PERT

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

Гистограмма ресурса

Это графический инструмент, который содержит гистограмму или диаграмму, представляющую количество ресурсов (обычно квалифицированного персонала), необходимых в течение определенного времени для события (или фазы) проекта. Ресурсная гистограмма является эффективным инструментом планирования и координации персонала.

Таблица гистограммДиаграмма гистограмм

Анализ критического пути

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

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

В статье рассказывается:

  1. Понятие разработки программного обеспечения
  2. Методы анализа для проектирования ПО
  3. Этапы разработки программного обеспечения
  4. Вспомогательные процессы при разработке ПО
  5. Факторы, влияющие на разработку ПО
  6. Модели разработки программного обеспечения
  7. Гибкие подходы к разработке программного обеспечения
  8. Навыки и умения разработчика ПО
  9. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.

    Бесплатно от Geekbrains

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

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

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

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

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

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

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

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

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

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

Методы структурного анализа для проектирования ПО

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

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

Методы структурного анализа для проектирования ПО

Методы структурного анализа для проектирования ПО

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

  • У каждого «черного ящика» должна быть одна единственная функция.
  • Функции этих «ящиков» должны быть просты для понимания, даже если их сложно реализовать на практике.
  • Взаимосвязь между элементами системы должна создаваться только в том случае, если взаимосвязаны их функции. Скажем, в бухгалтерии один из таких «черных ящиков» нужен для определения размера общей заработной платы работника, а другой — для определения размера налогов. Очевидно, что между ними должна быть связь. Ведь чтобы высчитать размер налогов, необходимо знать размер зарплаты.
  • Любые взаимосвязи между «черными ящиками» должны быть максимально простыми. Благодаря этому они становятся независимыми друг от друга.

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

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

Скачать файл

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

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

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

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

Методы структурного анализа для проектирования ПО

Методы структурного анализа для проектирования ПО

В процессе структурного анализа и проектирования применяется множество моделей, которые описывают:

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

pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ ресурсов об IT-сфере

Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT

pdf иконка

ТОП 50+ сервисов и приложений от Geekbrains

Безопасные и надежные программы для работы в наши дни

Уже скачали 20515 pdf иконка

Выделим несколько самых часто встречаемых моделей из первых трёх категорий:

  • функциональная модель SADT (Structured Analysis and Design Technique);
  • модель IDEF3;
  • DFD (Data Flow Diagrams) — диаграммы потоков данных. Модель «сущность — связь» (ERM — Entity-Relationship Model), которая описывает отношения между данными. Обычно применяется в структурном анализе и проектировании. При этом она является подмножеством объектной модели предметной области.

Этапы разработки программного обеспечения

Первая стадия работы над ПО — подготовка

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

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

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

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

Full-stack разработчик: кто такой и как им стать

Читайте также

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

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

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

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

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

Этапы разработки программного обеспечения

Этапы разработки программного обеспечения

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

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

Следующий этап — опытная эксплуатация

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

Только до 27.04

Скачай подборку тестов, чтобы определить свои самые конкурентные скиллы

Список документов:

Тест на определение компетенций

Чек-лист «Как избежать обмана при трудоустройстве»

Инструкция по выходу из выгорания

Чтобы получить файл, укажите e-mail:

Подтвердите, что вы не робот,
указав номер телефона:


Уже скачали 7503

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

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

Опытная эксплуатация

Опытная эксплуатация

Конечный этап любого проекта — завершение

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

Вспомогательные процессы при разработке ПО

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

  • Документирование. Исполнитель формирует документацию и руководства пользователя к создаваемому программному продукту, как во время разработки, так и после. Такие документы позволяют программистам разбираться в структуре и коде даже по прошествии длительного времени после их создания. При этом документация помогает пользователям взаимодействовать с системой.
  • Управление конфигурацией. Речь идет о работах по управлению наборами создаваемых компонентов программного обеспечения, а также по управлению версиями программного продукта.
  • Обеспечение качества. Данный процесс необходим для обеспечения соответствия ПП предварительным требованиям к разработке и нормам организации исполнителя и заказчика.
  • Верификация. Позволяет обнаружить ошибки, которые были допущены при разработке ПО. Кроме того, благодаря верификации можно выявить несоответствия между разрабатываемым ПО и сформированной архитектурой.
  • Аттестация. Она необходима для подтверждения соответствия получаемых величин принятым стандартам. Иными словами, выходные данные должны иметь погрешность, которая удовлетворяет всем требованиям и нормам.
  • Совместная оценка. Данный процесс направлен на контроль и проверку состояния персонала и создаваемого ПП. Осуществляется заказчиком и исполнителем в течение всего проекта.
  • Аудит. Необходим для независимой оценки текущей ситуации, характеристики проекта, документации и различных отчетов. Данный процесс позволяет сравнить реальное положение дел с договором и документами, в которых прописаны требования. Аудит может проводиться как одной, так и двумя сторонами.
  • Разрешение проблем. Устраняются ошибки, которые были обнаружены на этапах контроля и оценки.

Факторы, влияющие на разработку ПО

Перечислим факторы, которые непосредственно влияют на результат разработки ПО:

  • Классы решаемых задач. Определяют смысловое содержание создаваемых программ.
  • Применяемые методологии. Они задают особенности организационного и технического выполнения базовых этапов создания ПО.
  • Методы и парадигмы программирования. От них зависят стили кодирования и архитектуры виртуальных машин;
  • Аппаратные и системные программные средства. Они являются виртуальными и физическими ресурсами, благодаря которым становится возможным применение ПО.

Соотношение данных факторов формирует разнообразие вариантов организации разработки. Выделим базовые составляющие этого процесса.

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

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

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

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

Факторы, влияющие на разработку ПО

Факторы, влияющие на разработку ПО

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

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

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

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

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

Waterfall (каскадная модель, или «водопад»)

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

Преимущества:

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

Недостатки:

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

Waterfall предназначена для создания проектов в медицинской и космической сферах. В данных областях уже имеется крупная база данных (включая СНиПы и спецификации). Благодаря этим документам можно гораздо быстрее формировать требования к будущему продукту.

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

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

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

V-образная модель (разработка через тестирование)

Данную модель можно назвать улучшенной версией «водопада». Заказчик совместно с командой разработчиков формирует требования к системе и описывает, каким образом будет выполняться ее тестирование на каждой стадии. V-образную модель начали использовать в 1980-х.

Преимущества:

  • Минимальное количество ошибок в архитектуре программного обеспечения.

Полиморфизм: суть, проблемы применения

Читайте также

Недостатки:

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

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

Incremental Model (инкрементная модель)

Английское слово increment можно перевести как «приращение». Данную модель начали использовать ещё в 1930-х. В качестве примера возьмём разработку социальной сети.

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

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

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

Incremental Model

Incremental Model

Преимущества:

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

Недостатки:

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

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

Iterative Model (итеративная модель)

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

Преимущества:

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

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

Недостатки:

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

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

Spiral Model (спиральная модель)

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

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

Преимущества:

  • Сосредоточение внимания на анализе рисков.

Недостатки:

  • Вероятность того, что разработка слишком зациклится на самой начальной стадии.
  • Повышенная стоимость и длительность разработки.

Гибкие подходы к разработке программного обеспечения

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

Гибкие подходы к разработке программного обеспечения

Гибкие подходы к разработке программного обеспечения

Суть данного подхода заключается в дифференцировании процесса разработки на несколько отдельных задач. Программисты могут выполнять эти задачи с высоким уровнем независимости друг от друга. Каждый день организовываются встречи команды (Scrum), в рамках которых проговаривается нынешнее состояние проекта. Разработку дифференцируют на несколько стадий-спринтов (Sprint). Во время прохождения этих спринтов разработчики должны выполнить поставленные цели.

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

Преимущества:

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

Блоки CSS: принципы вёрстки современных сайтов

Читайте также

Недостатки:

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

В рамках данного подхода применяется целый ряд всевозможных техник, методологий и приемов. Выделим некоторые из них:

  • Scrum. Участники проекта находятся в постоянном взаимодействии и обсуждают текущий прогресс.
  • Kanban. Используется виртуальная доска с задачами. Последовательность выполнения таких задач не определяется.
  • RUP. Наличие четких стадий планирования, уточнения и построения новых итерация программного обеспечения.
  • Extreme Programming. Частые обновления версии продукта и отыскивание наиболее скоростных решений.

Гибкие подходы к разработке программного обеспечения

Гибкие подходы к разработке программного обеспечения

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

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

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

Навыки и умения разработчика ПО

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

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

Такой специалист должен обладать следующими навыками:

  • знание как минимум одного языка программирования;
  • понимание принципов ООП, алгоритмом и структур данных;
  • умение работать с ОС, сетевыми протоколами и методами обмена информацией по сети;
  • владение инструментами тестирования и отладки кода.

Фрондендеру необходимо уметь:

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

Бэкендер выполняет следующие задачи:

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

Full stack представляет собой программиста широкого профиля. Он может выполнять все задачи связанные с созданием ПО, включая формирование клиентской и серверной части продукта. Ему необходимо обладать следующими умениями:

  • знание нескольких языков программирования, распространенных библиотек и фреймворков;
  • навыки работы в системе управления версиями Git, применение для сборки и развертывания приложения Docker или Kubernetes;
  • понимание шаблонов проектирования и владение гибкими методологиями (скажем, Agile).

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

  • Авторы
  • Резюме
  • Рецензия
  • Файлы
  • Ключевые слова
  • Литература


Кочеткова Л.И.

1

Сенкевич Л.Б.

1


1 ФГБОУ ВО «Тюменский индустриальный университет»

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

план управления проектом

программное обеспечение

IT-проект

жизненный цикл

моделирование

система

1. Гухман А.А. Введение в теорию подобия. – М.: Изд-во ЛКИ, 2010. – 296 с.

2. Ньютон Р. Управление проектами от А до Я. – М.: Альпина Паблишер, 2013. – 192 c.

3. Определение целей, результатов и продуктов проекта [Электронный ресурс]. – Режим доступа: http://pm-way.com/materials/material/show/157 (дата обращения 20.05.2017).

4. Романова М.В. Управление проектами: учебное пособие. – М.: ИНФРА-М, 2010. – 253 с.

5. Руководство к Своду знаний по управлению проектами (Руководство PMBOK). – 4-е изд. – М.: Олимп-Бизнес, 2010. – 496 с.

6. Солдатов В.П. Управление программными проектами. – М.: Бином-Пресс, 2010. – 382 c.

7. Эрик Синк. Бизнес для программистов. – СПб.: Питер, 2008. – 256 с.

8. Яворский В.В., Сергеева А.О., Пошанов Р.Т. Подготовка специалистов в сфере информационных технологий // Международный журнал экспериментального образования. – 2015. – № 11–4. – С. 554–556.

Сфера разработки программного обеспечения (ПО) – одна из самых активно развивающихся в настоящее время. В области разработки программного обеспечения на данный момент задействовано около 19 миллионов инженеров.

Результативное и успешное управление проектами разработки программного обеспечения обусловлено качеством и эффективной организацией работ в условиях ограничения стоимости и времени.

Согласно открытым данным исследований группы Standish Group в 2016 г., из 50 тысяч изученных программных проектов по всему миру, по причине неэффективного управления 19 % оказались провальными, 52 % спорными, что потребовало дополнительных вложений финансов и затрат времени и только 29 % проектов оказались успешными. По данным этого же исследования, бюджет проектов превышается на 179 %, а затраченное время на 202 % превышает изначально рассчитанное. Наряду с этим, реализуется в среднем всего 68 % объявленной в спецификации функциональности. Результаты исследования графически показаны на рис. 1.

pic_kochetkov_1.tif

pic_kochetkov_1_2.tif

Рис. 1. Диаграмма результатов данных исследований Standish Group

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

Существующие системы управления ресурсами рассчитаны на контролирование проектами на стадии их реализации и применяются изначально для разрешения таких необходимых задач, как [5]:

– представление общих норм проекта;

– представление логической организации работ, многоуровневого описания проекта;

– установление объединенного организационного состава исполнителей, имеющихся средств и перечня материалов;

– подготовка плана проекта, представленного в виде перечисления совокупности работ, связанных без учета ограниченности средств;

– регулирование плана проекта с учетом ограниченности средств;

– установление кризисного плана и запаса времени исполнения работ проекта;

– установление требований к проекту в финансировании, ресурсах и техническом обеспечении;

– подготовка плана разделения во времени загрузки восстановляемых ресурсов;

– оценка вероятности рисков и проектирование расписания с учетом рисков;

– извлечение, подборка и обобщение работ по срокам, средствам, видам и т.д.;

– введение фактических показателей состояния решения поставленных задач, объемов выполненных работ и применения средств;

– оценка несоответствия в порядке выполнения работ от поставленного плана и прогнозирование основных норм проекта в будущем;

– наглядное изображение хода выполнения работ проекта в виде схем, диаграмм и т.д., предоставление отчетов, необходимых для прогнозирования, планирования и проверки;

– объединение системы управления проектами в корпоративные управленческие системы.

Выбор необходимой системы управления обуславливается такими критериями, как [6]:

– объемом и затруднительностью проекта (объем работ, средств, времени, календарей);

– необходимый объем организованных порядков работ;

– обязательность объединенной работы над проектами и потенциал обмена информацией через Internet;

– потребность ввода и вывода данных из других систем и баз данных;

– потребность исполнения расчетов по формулам, заданным пользователем;

– потребность планирования средств между несколькими проектами, учитывая приоритет проекта;

– простота овладения и практичность графического интерфейса;

– наиболее допустимая цена программы;

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

– единые правила компании по реализации специальных программных средств.

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

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

На первых стадиях управления проектом разработки программного обеспечения необходимо описать цели и рамки проекта, а также взаимосвязь данного проекта с другими, если такие существуют. Указываются запросы заказчика, на удовлетворение которых направлен проект, а также описание целей проекта, программного продукта, который должен быть разработан, чтобы достичь целей проекта. Также указывается, каким образом данный проект будет интегрироваться с другими проектами или процессами [7]. На этом этапе указывается выбранная модель жизненного цикла проекта, перечисляются все важные фазы проекта, их взаимосвязи, зависимости и последовательность выполнения. Проекты по разработке программного обеспечения обычно используют 2 модели: водопадная и инкрементная модели.

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

Фаза «Разработка требований» включает сбор требований заказчика и их формализацию. Требования – основа для всего проекта.

На фазе «Проектирование» проектная команда разрабатывает документы дизайнов в соответствии с требованиями.

На фазе «Разработка» проектная команда производит продукт в соответствии с документами дизайнов.

На фазе «Верификация» продукт проходит верификацию и приёмку, для того чтобы убедиться, что требования реализованы корректно и продукт удовлетворяет требованиям заказчика.

После стадии «Верификация» проект переходит в фазу «Ввод в эксплуатацию». На данной фазе продукт должен быть развернут для эксплуатации и быть принят заказчиком [8].

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

Инкрементальная модель применима на проектах с плохо определёнными или не до конца определенными требованиями. Разработка производится итерациями (2–4-недельными циклами). Требования на итерацию оговариваются с заказчиком до старта итерации. Итерация планируется в соответствии с объёмом требований на итерацию, и каждая итерация включает проектирование, разработку и верификацию. Результаты первой итерации используются для уточнения требований на следующую итерацию. Итерации продолжаются, пока не достигнуты цели проекта, определенные в документе требований. Последняя версия построения продукта проходит полную проверку перед вводом в эксплуатацию [4].

pic_kochetkov_2.wmf

Рис. 2. Последовательность фаз в водопадной модели

pic_kochetkov_3.wmf

Рис. 3. Последовательность фаз в инкрементной модели

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

В качестве наиболее надежного и совершенного на практике аппарата аналогового моделирования предлагается применить теорию подобия [1].

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

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

– создание одной (первой) версии программного продукта группой разработчиков;

– создание аналогичной системы другой группой разработчиков;

– создание показательного прототипа системы.

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

Для использования аналогового моделирования программных проектов требуется установить:

– процессы, которые будут входить в класс;

– процессы, которые будут входить в группы (определить множество условий, определяющее подобие процессов реализации программных проектов) [1].

Параметры проекта и продукта определяют класс реализации проекта, соответственно:

– методом разработки (быстрая разработка, разработка по водопадной, спиральной, инкрементной, открытой и т.д. модели);

– типом разрабатываемого продукта (система обработки транзакций, система поддержки принятия решений, среда разработки, офисное приложение, учетное приложение и т.д.) [2].

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

Процессы реализации программных проектов при детальном сравнении с физическими процессами и явлениями имеют следующие сходные признаки:

– необходимый временной характер (программный продукт и физическое явление происходят во времени, причем внутри конечного, определенного промежут-ка времени);

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

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

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

– существует функциональная зависимость между входными и выходными данными системы;

– входные и выходные данные системы установлены на одном и том же множестве моментов времени;

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

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

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

– хранение общей информации о проекте: цели, задачи, заказчик, ключевые сроки;

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

– распределение ролей в проекте между сотрудниками фирмы-разработчика;

– формирование плана взаимодействия исполнителей и заказчиков в рамках IT-проекта;

– хранение данных о процедурах эскалации и приемки проекта;

– формирование планов оценки проекта, мониторинга и контроля, управления рисками;

– формирование технических планов проекта;

– формирование планов по поддержке программного продукта;

– контроль сроков выполнения задач;

– обеспечение возможности корректировки сроков и исполнителей по различным этапам проекта в случае незапланированной ситуации;

– формирование итогового плана управления проектом.


Библиографическая ссылка

Кочеткова Л.И., Сенкевич Л.Б. СТРУКТУРА ПЛАНА УПРАВЛЕНИЯ ПРОЕКТОМ В ОБЛАСТИ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ // Современные наукоемкие технологии. – 2017. – № 6.
– С. 62-66;

URL: https://top-technologies.ru/ru/article/view?id=36699 (дата обращения: 23.04.2023).


Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»

(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

Топ методов управления проектами при разработке софта: Waterfall, Agile, Scrum, Kanban и другие

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

Управление проектом было слишком неповоротливым, а отклонение от четкого плана грозило крушением рабочего процесса в целом.

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

Процесс разработки в Waterfall выглядит как поток процессов от этапа к этапу с четкими требованиями и условиями. Пока не завершен один этап — нет перехода к другому.

В 1990-х годах на смену неповоротливым методам пришло семейство гибких

Конечно, мы говорим об Agile (agile software development, от англ. agile — проворный) методах разработки программного обеспечения. Новый подход к методологии управления проектами ворвался в IT и позже перешел в производство, инженерию, разработку искусственного интеллекта и т.д.

Первыми гибкими методами были: RAD (с ориентиром на качество при минимальном бюджете и ограниченном сроке), XP (экстремальное программирование с коллективным владением кодом), SCRUM (где каждый участник команды несет ответственность за результат), Kanban (визуализация этапов разработки на доске) и другие.

Четыре Agile-идеи, которые важно знать:

  • Люди в команде и взаимодействие между ними важнее процессов
  • Взаимодействие с заказчиком важнее согласования условий договора
  • Работающий продукт на первом месте. Документация — второстепенна
  • Готовность быстро реагировать на изменения важнее заранее утвержденного плана

Прежде, чем мы перейдем к описанию основных конкурентов Waterfall, их преимуществам/недостаткам для разработки и управлении проектами, предлагаем сравнительную таблицу Agile и Waterfall:

Таблица сравнения

Agile Waterfall
Гибкость рабочих процессов и внесение изменений при первой необходимости Каскадная модель разработки с жесткой последовательностью процессов
Готовый продукт важнее документации Документация важнее готового продукта
Личная ответственность каждого участника команды за результат Ответственность за результат в целом на команде
Взаимодействие с заказчиком в процессе разработки Заказчик не привлекается к рабочему процессу.
Максимальное вовлечение владельца продукта в рабочий процесс Владелец продукта минимально задействован в рабочем процессе
Рабочий процесс разбивается на короткие спринты. Обычно от 1 недели до 1 месяца Каждый рабочий процесс — отдельная фаза, которая длится до тех пор, пока не проходит этап тестирования и одобрения

Популярные системы управления проектами в Agile

Рассмотрим те, которые «прижились» и чаще всего используются в разработке софта.

Scrum

Гибкий подход к разработке софта, где одна задача — один спринт. Спринт при Скрам подходе может длиться от 1 недели до 1 месяца.

Для кого подходит Scrum?

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

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

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

Scrum = команда, владелец продукта и скрам-мастер, которые работают совместно и каждый отвечает лично за результат.

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

+ Плюсы

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

— Минусы

В Scrum нет жестких рамок и требований, но есть место экспериментам, меняющимся бюджетам и срокам. В работе с клиентами, для которых важен четкий план и наличие подписанного договора Scrum не подойдет.

Например: если нужно создать продукт для государственной организации, где заключение договора приоритетно — Scrum не подойдет. Здесь отчеты на предпоследнем (и даже последнем) месте. На первом: готовый продукт и только после — документация, отчеты о работе и тд.

Пример управления проектами по методу Scrum

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

Когда один спринт закончится — ту же начинается другой. Идеально, когда спринты при использовании Scrum подхода одинаковы по продолжительности.

Контроль скорости завершения спринтов — важный элемент Scrum

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

Kanban

Визуализация рабочего процесса и поэтапное перемещение задачи от «Принято в работу» (например) до «Готово». Между этими двумя станциями может быть еще несколько: «Разработка», «Тестирование», «Оптимизация» и т.д. Канбан визуально представляет собой доску, по которой мы перетягиваем однотипные задачи со станции на станцию. И когда задача приходит на конечную станцию «Готово» — она завершена.

Kanban — максимальная гибкость и адаптация к изменениям в любой момент.

Scrum и Kanban — гибкие подходы к управлению проектами. Но Канбан, все-таки, более гибкий и вот почему:

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

+ Плюсы

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

Гибкость Канбана — лучшее, что можно придумать для ведения проектов с частыми изменениями исходных данных или постоянным потоком новых задач.

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

— Минусы

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

Пример управления проектами по Канбан

Есть задача: снять обучающее видео для клиента. Для съемки обучающего ролика будет создан ряд однотипных задач: «Написание сценария», «Съемка», «Черновой монтаж», «Пост-обработка». Каждая из задач на Канбан доске будет отдельной колонкой.

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

Канбан или Скрам? Какая система управления проектами нужна

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

Scrum на старте работы над новым продуктом даст больше контроля и управляемости

Если Kanban — это максимальная гибкость, то Scrum — больше о контроле и управляемости. Когда процесс отлажен и все понятно — приходит на помощь Канбан. Он идеален для работы с однотипными задачами.

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

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

Как выбрать инструмент управления проектами?

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

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

Кто-то воспринимает работу в таск-менеджере — как дополнительный контроль и недоверие. Здесь важно объяснить всей команде, что таймер, например, это необходимость, а не контроль или недоверие. Таймер — это как дополнительный инструмент для улучшения эффективности работы, прозрачности процесса и результата для клиента. Кстати, таймер — это еще и возможность обосновать необходимость в оплате труда сверх нормы (если для выполнения задачи понадобилось больше времени, чем заложили в задачу изначально).

6 признаков того, что таск-менеджер выбран правильно:

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

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

FAQ

Какие бывают методы управления проектами?

Каскадная (водопадная) и гибкая (итерационная) — две основные на сегодняшний день методологии управления проектами, включающие в себя набор методов. Каскадная: PERT, метод критического пути и освоенного объема, а также некоторые другие.
Итерационная («Agile Umbrella»): Scrum, Kanban, Feature Driven Development, XP (Extreme Programming), Lean, Six Sigma, PRINCE2. Ключевые принципы гибкой методологии Agile: участники проекта и коммуникация между ними приоритетнее процессов; эффективное взаимодействие с заказчиком приоритетнее, чем согласование условий договора; главное — работающий продукт, документы второстепенны; готовность к оперативному реагированию на произошедшие изменения важнее первоначального плана.

Что такое управление проектами?

Управление проектом (проектный менеджмент, Project Management) — совокупность действий, направленных на согласование участников проекта, процессов, инструментов и навыков для достижения поставленных перед проектом целей и запланированных результатов, в соответствии с выдвигаемыми требованиями.
Грамотное управление проектами помогает повысить процент успеха, прозрачность и наглядность, оптимизировать коммуникацию, и способствует оптимальному распределению имеющихся ресурсов (люди, время, финансы).

Как управлять проектами?

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

Каким проектам лучше всего подходит гибридная методология?

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

Для чего нужно управление проектами?

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

Что должен делать менеджер проекта?

Менеджер проекта (рroject-manager) — специалист, в круг обязанностей которого входит управление проектом, что включает в себя: создание технического задания проекта, создание проектной группы, настройка процесса работы над проектом, налаживание коммуникации между командой и заказчиком, устранение преград для участников проектной команды, контроль за соблюдением сроков, качества выполнения проекта и выделенного бюджета и ведение отчетности.

Что такое методология управления ИТ проектом?

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

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

Генрик Мкртчян — сооснователь и генеральный директор агентства веб-разработки «Кодеры», рассказал, как под ключ организовать процесс разработки в компании: от постановки задач до релиза продукта.

У нас есть два основных принципа:

  1. Команда делает проекты качественно, в срок и с прибылью для компании;
  2. Большинство решений, связанных с реализацией проектов, команда принимает самостоятельно, так как основные процессы в компании автоматизированы и прозрачны.

Проект любого масштаба мы разделяем на семь обязательных этапов.

1. Выбираем методологию

От этого зависит состав команды, порядок и даже график работы. Можно выбрать классическую (waterfall) или гибкую (agile). 

При классической методологии:

Команда будет работать строго по ТЗ. Результат, который вы получите в итоге, будет ровно таким, каким вы его запланировали в самом начале.

При гибкой методологии:

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

Если вам нужно быстро запустить MVP-версию продукта и понять, в каком направлении его развивать – выбирайте гибкую методологию.

2. Определяем роли и состав команды

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

Классический отдел разработки состоит из следующих сотрудников:

  • менеджер проекта: контролирует рабочий процесс, дедлайны, оптимизирует работу сотрудников;
  • архитектор: определяет стек технологий, проектирует общую инфраструктуру проекта, его основные компоненты, модули и сервисы;
  • frontend- и backend-разработчик/fullstack-разработчик: первые занимаются визуальной и вычислительной частью проекта, а второй, как универсальный солдат, владеет знаниями разных технологий;
  • тестировщик: обеспечивает качество программного продукта с самого начала разработки и до его финальной сдачи;
  • тимлид: декомпозирует и делегирует задачи, проводит код-ревью и поддерживает боевой дух команды;
  • дизайнер: определяет внешний вид продукта, его интерфейс и юзабилити;
  • аналитик: проектирует и оптимизирует процессы, руководит внедрением новых IT-систем и адаптирует систему работы к новым задачам;
  • системный администратор: осуществляет бесперебойную работу серверов, настраивает площадки для разработчиков и обеспечивает техническую инфраструктуру.

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

3. Проводим CustDev, собираем требования с клиентов, пишем техническое задание

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

Уделите внимание техническому заданию. ТЗ – гарант, что вы не потратите время зря, не переплатите и получите нужный результат. Кроме того, оно обеспечивает техническое развитие продукта и поможет:

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

4. Обеспечиваем команду техническими инструментами

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

Настройте:

  • репозиторий для кодовой базы проекта;
  • общие инструменты организации процесса разработки, если они нужны – например, таск-трекер (Jira, Redmine, Trello и другие);
  • рабочее окружение: сервисы и приложения, от которых будет зависеть ваш продукт (например, Swagger для документации API).

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

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

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


Читайте также:
Разработка мобильного приложения: как создать прототип и зачем нужен MVP
Кроссплатформенная и нативная разработка мобильных приложений в 2021 году
12 шагов к успешному запуску детского приложения


5. Планируем работу команды

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

Составляя график, учитывайте сдвиг сроков задач (например, увеличение сроков из-за исправлений ошибок) и продумайте, как одна задача зависит от другой.

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

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

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

6. Делегируем задачи, контролируем их выполнение

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

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

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

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

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

7. Выкладываем, тестируем и дорабатываем продукт

Тестирование каждой задачи повышает качество продукта и бережет вас от дефектного релиза с ошибками. Не забудьте про код-ревью — проверку кода, который написал разработчик. Обычно ревью проводит тимлид проекта или кто-то из старших разработчиков. Если возникают спорные моменты, привлекайте автора кода.

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

После этого продукт выкатывается в боевую среду, его финально проверяют тестировщики.

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

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

Чтобы организовать процесс разработки, который будет работать без вашего участия:

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

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

Фото: Joyseulay / Shutterstock

Понравилась статья? Поделить с друзьями:
  • Мовалис инструкция уколы внутримышечно от чего помогает взрослым отзывы
  • Телефоны руководство ростелекома
  • Цветалон для изменения цвета гортензий инструкция по применению
  • Инструкция по применению пирантела в таблетках взрослым дозировка
  • Троксерутин тонизирующий охлаждающий гель для ног инструкция