Введение

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

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

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

Процесс разработки программного обеспечения в основном касается производственного аспекта разработки программного обеспечения, в отличие от технического аспекта, такого как программные инструменты. Эти процессы существуют прежде всего для поддержки управления разработкой программного обеспечения и, как правило, ориентированы на решение бизнес-задач. Многие процессы разработки программного обеспечения могут выполняться аналогично процессам общего управления проектами. Примеры: межличностное общение, управление конфликтами и их разрешение. Активное, частое и честное общение является наиболее важным фактором для повышения вероятности успеха проекта и смягчения проблемных ситуаций. Команда разработчиков должна стремиться к вовлечению конечных пользователей и поощрять их вклад в процесс разработки. Отсутствие участия пользователей может привести к неверной интерпретации требований, нечувствительности к изменяющимся потребностям клиентов и нереалистичным ожиданиям со стороны заказчика. Разработчики программного обеспечения, пользователи, руководители проектов, клиенты и спонсоры проектов должны регулярно и часто общаться. Информация, полученная в результате этих обсуждений, позволяет команде проекта анализировать сильные и слабые стороны, возможности и угрозы (SWOT) и использовать эту информацию для извлечения выгоды из возможностей и минимизации угроз. Даже плохие новости могут быть полезными, если о них сообщается относительно рано, поскольку проблемы можно смягчить, если их не обнаружить слишком поздно. Например, непринужденные беседы с пользователями, членами команды и другими заинтересованными сторонами часто позволяют выявить потенциальные проблемы раньше, чем на формальных встречах. Все сообщения должны быть интеллектуально честными и подлинными, а регулярная, частая и качественная критика работы по разработке необходима, если она предоставляется спокойно, уважительно, конструктивно, без обвинений и гнева. Частые неформальные контакты между разработчиками и конечными пользователями, а также между руководителями проектов и клиентами необходимы для того, чтобы проект оставался актуальным, полезным и эффективным для конечных пользователей и укладывался в рамки того, что можно завершить. Эффективная межличностная коммуникация, управление конфликтами и их разрешение являются ключевыми факторами управления программными проектами. Ни одна методология или стратегия улучшения процессов не может преодолеть серьезные проблемы в общении или неэффективное управление межличностными конфликтами. Более того, результаты, связанные с такими методологиями и стратегиями улучшения процессов, улучшаются за счет улучшения коммуникации. Коммуникация должна быть сосредоточена на том, понимает ли команда устав проекта и добивается ли она прогресса в достижении этой цели. Конечные пользователи, разработчики программного обеспечения и руководители проектов должны часто задавать элементарные, простые вопросы, которые помогают выявить проблемы до того, как они перерастут в серьезные неудачи. Хотя участия конечных пользователей, эффективной коммуникации и командной работы недостаточно, они необходимы для обеспечения хорошего результата, а их отсутствие почти наверняка приведет к плохому результату. Управление рисками — это процесс измерения или оценки риска и последующей разработки стратегий управления этим риском. В общем случае используемые стратегии включают передачу риска другой стороне, избежание риска, снижение негативного воздействия риска и принятие некоторых или всех последствий конкретного риска. Управление рисками в управлении программными проектами начинается с обоснования для начала проекта, которое включает анализ затрат и выгод, а также список запасных вариантов на случай неудачи проекта, называемый планом действий в чрезвычайных ситуациях. Подмножеством управления рисками является управление возможностями, что означает то же самое, за исключением того, что потенциальный результат риска будет иметь положительное, а не отрицательное влияние. Хотя теоретически это обрабатывается одинаково, использование термина «возможность», а не несколько негативного термина «риск», помогает команде сосредоточиться на возможных положительных результатах любого данного реестра рисков в их проектах, таких как спин-офф проекты, непредвиденные выгоды и бесплатные дополнительные ресурсы. Управление требованиями — это процесс выявления, сбора, документирования, анализа, отслеживания, приоритизации и согласования требований, а также контроля изменений и информирования соответствующих заинтересованных сторон. Проблема может быть ошибкой, запрошенной функцией, задачей, отсутствующей документацией и так далее. Например, OpenOffice.org раньше называл свою модифицированную версию Bugzilla IssueZilla, а с сентября 2010 года они называют свою систему Issue Tracker.

Управление эмиссией

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

Философия

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