Планирование и составление расписаний по разработке ПО — это деятельность, связанная с распределением работ между исполнителями и по времени их выполнения в рамках намеченных сроков и имеющихся ресурсов.
Управление издержками по разработке ПО — это деятельность, направленная на обеспечение подходящей стоимости разработки в рамках выделенного бюджета. Она включает оценивание стоимости разработки проекта в целом или отдельных его частей, контроль выполнения бюджета, выбор подходящих вариантов его расходования. Эта деятельность тесно связана с планированием и составлением расписаний в течение всего периода выполнения проекта. Основными источниками издержек являются затраты на аппаратное оборудование (hardware), вербовку и обучение персонала, оплату труда разработчиков.
Текущий контроль и документирование деятельности коллектива по разработке ПО — это непрерывный процесс слежения за ходом развития проекта, сравнения действительных состояния и издержек с запланированными, а также документирования различных аспектов развития проекта. Этот процесс помогает вовремя обнаружить затруднения и предсказать возможные проблемы в развитии проекта.
Подбор и оценка персонала коллектива разработчиков ПО — это деятельность, связанная с формированием коллектива разработчиков ПО. Имеющийся в распоряжении штат разработчиков далеко не всегда будет подходящим по квалификации и опыту работы для данного проекта. Поэтому приходится частично вербовать подходящий персонал и частично организовывать дополнительное обучение имеющихся разработчиков. В любом случае в формируемом коллективе хотя бы один его член должен иметь опыт разработки программных средств (систем), сопоставимых с ПО, которое требуется разработать. Это поможет избежать многих простых ошибок в развитии проекта.
Обеспечение качества. Качество ПО формируется постепенно в процессе всей разработки ПО в каждой отдельной работе, выполняемой по программному проекту. Не могут вноситься изменения по улучшению качества в уже созданную программу.
Для руководства этой деятельностью назначается специальный менеджер, подчиненный непосредственно директору, — менеджер по качеству. Ему непосредственно подчинены формируемые бригады по контролю качества. Для каждой работы организуется смотр (review) соответствующей бригадой. Смотру подлежат все программные компоненты и документы, включаемые в ПО, а также процессы их разработки. Смотр по контролю качества является функцией управления разработкой и связан с оценкой того, насколько результаты этой работы согласуются с декларированными требованиями относительно качества ПО.
Для оценки существуют программные стандарты. Они фиксируют удачный опыт высококвалифицированных специалистов по разработке ПО для различных его классов и для разных моделей качества.
Различают два вида таких стандартов:
• стандарты ПО (программного продукта);
• стандарты процесса создания и использования ПО.
Стандарты ПО определяют некоторые свойства, которыми должны обладать программы или документы ПО, т. е. определяют в какой-то степени качество ПО. К стандартам ПО относятся прежде всего стандарты на языки программирования, состав документации, структуру различных документов, различные форматы и др.
Стандарты процесса создания и использования ПО определяют, как должен проводиться этот процесс, т. е. подход к разработке ПО, структуру жизненного цикла ПО и его технологические процессы. Хотя эти стандарты непосредственно не определяют качества ПО, однако считается, что качество ПО существенно зависит от качества процесса его разработки.
12.2. СТРУКТУРА УПРАВЛЕНИЯ РАЗРАБОТКОЙ ПРОГРАММНЫХ СРЕДСТВ
Разработка ПО обычно производится в организации, в которой одновременно могут вестись разработки ряда других программных средств. Для управления всеми этими программными проектами используется иерархическая структура управления (рис. 12.1).
Рис. 12.1. Структура управления разработкой программных средств
Во главе иерархии находится директор программистской организации, отвечающий за управление всеми разработками программных средств. Ему непосредственно подчинены несколько менеджеров сферы разработок и один менеджер по качеству программных средств. В результате общения с потенциальными заказчиками директор принимает решение о начале выполнения какого-либо программного проекта, поручая его одному из менеджеров сферы разработок, а также решение о прекращении того или иного проекта. Он участвует в обсуждении общих организационных требований к программному проекту и возникающих проблем, решение которых требует использования общих ресурсов программистской организации или изменения заказчиком общих требований.
Менеджер сферы разработок отвечает за управление разработками программных средств (систем) определенного типа, например программные системы в сфере бизнеса, экспертные системы, программные инструменты и инструментальные системы, поддерживающие процессы разработки программных средств, и др. Ему непосредственно подчинены менеджеры проектов, относящихся к его сфере. Получив поручение директора по выполнению некоторого проекта, организует формирование коллектива исполнителей по этому проекту, участвует в обсуждении плана-проспекта программного проекта, относящегося к сфере разработок, за которую он отвечает, а также в обсуждении и решении возникающих проблем в развитии этого проекта. Он организует обобщение опыта разработок программных средств в его сфере и накопление программных средств и документов для повторного использования.
По каждому программному проекту назначается свой менеджер, который управляет развитием этого проекта. Ему непосредственно подчинены лидеры бригад разработчиков.
Менеджер проекта осуществляет планирование и составление расписаний работы бригад по разработке соответствующего программного средства.
Считается крайне нецелесообразным разработка большой программной системы одной большой единой бригадой разработчиков. Для этого имеется ряд серьезных причин. В частности, в большой бригаде время, затрачиваемое на общение между ее членами, может быть больше времени, затрачиваемого на собственно разработку. Отрицательное влияние оказывает большая бригада на строение ПО и на интерфейс между отдельными его частями. Все это приводит к снижению надежности ПО. Поэтому обычно большой проект разбивается на несколько относительно независимых подпроектов таким образом, чтобы каждый подпроект мог быть выполнен отдельной небольшой бригадой разработчиков (обычно считается, что в бригаде не должно быть больше 8—10 членов). При этом архитектура ПО должна быть такой, чтобы между программными подсистемами, разрабатываемыми независимыми бригадами, был достаточно простой и хорошо определенный системный интерфейс.
Наиболее часто применяемыми являются четыре подхода к организации бригад разработчиков: обычные бригады; неформальные демократические бригады; бригады ведущего программиста; бригада по контролю качества.
В обычной бригаде старший программист (лидер бригады) непосредственно руководит работой младших программистов. Недостатки такой организации непосредственно связаны со спецификой разработки ПО: программисты разрабатывают сильно связанные части программной подсистемы; сам процесс разработки состоит из многих этапов, каждый из которых требует особенных способностей от программиста; ошибки отдельного программиста могут препятствовать работе других программистов. Успех работы такой бригады достигается в том случае, когда ее руководитель является компетентным программистом, способным предъявлять к членам бригады разумные требования и умеющим поощрять хорошую работу.