Опубликован: 20.08.2004 | Уровень: специалист | Доступ: платный | ВУЗ: Новосибирский Государственный Университет
Лекция 1:

Менеджмент в разработке программных изделий

Лекция 1: 123 || Лекция 2 >

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

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

  • кто участвует в разработке;
  • какие этапы проходит проект в своем развитии.

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

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

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

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

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

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

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

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

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

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

Представленные выше общие положения, на которых базируется материал курса, сегодня практически всегда берутся за основу изложения в книгах по программной инженерии (см., например, [27]). Но следовать им недостаточно. Требуется общий взгляд на предмет, который позволит систематизировать знания. Выработка такого взгляда у читателя — одна из основных целей данного курса.

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

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

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

Лекция 1: 123 || Лекция 2 >
Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Илья Макаренко
Илья Макаренко

Добрый день.

Вопрос №1

Какова стоимость получения диплома о мини-МБА по данному курсу? Или ориентироваться на указанную на сайте?

Вопрос №2

Возможно ли начать обучение без потери результатов, не отправив документы на зачисление, а отправку выполнить позже?

Евгений Летенков
Евгений Летенков
Россия, Москва, РУДН, 2005
Алексей Корзинин
Алексей Корзинин
Россия