Эффективность программных проектов и паттерны конфигурационного управления

А.В. Юрченко
Тульский государственный университет,
г. Тула


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

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

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

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

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

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

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

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

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


Назад к списку