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

         

Проблемы анализа экономики производства программных продуктов


Экономические характеристики реальных завершенных разработок, собираются, накапливаются и обрабатываются с начала 80-х годов в разных отечественных организациях и за рубежом [1, 3]. Они позволили получать и прогнозировать основные обобщенные экономические показатели процессов производства комплексов программ. При оценке размера вновь созданных комплексов программ и трудоемкости их полной разработки обычно не учитывались компоненты операционных систем, драйверы, средства контроля и тестирования, а также повторно используемые компоненты. При этом обычно рассматривался полный технологический процесс производства от начала подготовки технического задания до завершения испытаний базовой версии продукта. Учитывались все категории специалистов, участвующих в создании программ и обеспечивающих разработку, а также все виды работ, связанные с созданием программного продукта на выделенном интервале времени.

Наиболее полно и подробно основные закономерности и влияние факторов на экономические характеристики процессов разработки в 80-е годы представлены в [1] для более десяти моделей прогнозирования. В 1981-м году на основе исследования процессов разработки 63 программных продуктов была опубликована модель прогнозирования под названием КОМОСТ [1]. В последующем эта модель была развита, детализирована и опубликована как СОСОМО, а в 2000-м году – под названием СОСОМО II [10]. В этой модели на основе анализа более 160 реальных проектов разработки комплексов программ различной сложности уточнены рейтинги влияния выделенных факторов на основные экономические характеристики.

Кроме того, в 1988-м году были опубликованы [3] результаты анализа экономических характеристик (комплексный проект ПРОМЕТЕЙ) на основе обобщения результатов разработки свыше 250 отечественных проектов сложных программных продуктов. В общем случае для оценки экономических характеристик новых проектов необходимы следующие исходные данные:

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


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

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

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

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


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

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

    [2, 5, 7, 8].

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

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


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

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



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

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


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


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


    Содержание раздела