ВЛИЯНИЕ ЧЕЛОВЕЧЕСКИХ ФАКТОРОВ НА ЭКОНОМИЧЕСКИЕ ПРОГНОЗЫ ПРОИЗВОДСТВА ЗАКАЗНЫХ ПРОГРАММНЫХ ПРОДУКТОВ
УДК 004.41(075.8)
Владимир Васильевич Липаев,
д.т.н., проф., главный научный сотрудник, Институт системного программирования РАН
Тел.: (499) 196-63-65 Эл.почта: [email protected]
Изложены особенности экономических характеристик производства программных продуктов в зависимости от свойств специалистов в модели СОСОМО II. Рассмотрено экономическое планирование производства сложных программных продуктов и применение для этого графиков Ганта. Представлены экономические характеристики и применение специалистов при тестировании и испытании комплексов программ, их влияние на организацию, экономику и управление качеством производства программных продуктов.
Ключевые слова: прогнозирование, экономические характеристики, человеческие факторы производства, программные продукты, модель СОСОМО II, планирование и качество программных продуктов, экономика тестирования и испытаний.
Vladimir V. Lipaev,
Doctorate of Engineering Science, Professor, Chief Research Scientist, Institute of System Programming of Russian Academy of Sciences Tel.: (499) 196-63-65 E-mail: [email protected]
THE INFLUENCE OF HUMAN FACTORS ON ECONOMIC FORECASTS OF PRODUCTION OF CUSTOM-MADE SOFTWARE PRODUCTS
Features of economic characteristics of the production products depending on the properties of the specialists in the model СОСОМО II are revealed. Economic planning of complex software products and applications of the Gantt Charts are considered. The author gives economic characteristics and application of specialists in testing of software complexes, their impact on an organization, the economy and the quality management of production of software products.
Keywords: forecasting, economic characteristics, human factors of production, software products, СОСОМО II model, planning and quality of software products, the economy of testing.
1. Влияние свойств специалистов на экономические характеристики производства программных модулей и компонентов в модели СОСОМО II
Основными факторами при прогнозировании экономических характеристик производства программных продуктов в основном, являются, сложность, размер - масштаб комплекса программ и доля повторного использования готовых программных компонентов. Это может быть достаточным при первичной оценке затрат, когда размер программ оценивается экспертно и приближенно по общему набору функций программного продукта [1, 2, 3]. Примеры таких оценок представлены в [4].
Для более точного экономического обоснования производства программных продуктов при детальном проектировании целесообразно учитывать влияние характеристик коллектива специалистов, требований качества и производственных факторов тестирования и испытаний. Разработка полного содержания функций и структуры программных компонентов, их взаимодействия и интерфейсов, архитектуры всего комплекса программ и базы данных, обычно позволяет до 10% повысить точность определения размера комплекса, с учетом особенностей языка программирования.
Важнейшим фактором при экономическом прогнозировании, отражающим производство программных продуктов являются люди - специалисты, с их уровнем профессиональной квалификации, а также с многообразием знаний, опыта, стимулов и потребностей. Быстрый рост сложности и повышение ответственности за качество привели к появлению новых требований к коллективам специалистам, обеспечивающим все этапы жизненного цикла комплексов программ - таблица 1 (см. [2, 4]). Структура коллектива разработчиков обычно в значительной степени отражает структуру разрабатываемого комплекса программ. Особенно это заметно при создании программных продуктов размером порядка 105-107 строк текста. При этом распределение функциональных программ локализуются по соответствующим группам специалистов с целью минимизации связей и взаимодействия, как между группами разработчиков, так и между создаваемыми ими компонентами комплексов программ. Процесс
Таблица 1. Влияние коллективизма разработчиков программных продуктов на трудоемкость их производства
Коллективизм Значения характеристик
Очень низкий Низкий Номинальный Высокий Очень высокий
Согласованность целей коллектива Минимальная Незначительная Относительная Значительная Полная
Способность членов коллектива адаптироваться к целям других Малая Незначительная Относительная Значительная Полная
Опыт работы в составе данного коллектива Нет Малый Незначительный Значительный Большой
Степень доверия и взаимодействия в коллективе Нет В малой степени В некоторой степени Значительная Большая
Обобщенная коллективно сть работ Некоторое взаимодействие в коллективе Сложное взаимодействие Зачастую коллективная работа Высокая степень взаимодействия Непрерывное взаимодействие
Обобщенный коэффициент влияния коллективности F4 5,48 4,38 3,29 2,19 1,10
Таблица 2. Характеристики разработчиков программного продукта
Характеристика Значение характеристики
Очень низкая Низкая Номинальная Высокая Очень высокая
Квалификация аналитиков М9 15% 35% 55% 75% 90%
Квалификация программистов М10 15% 35% 55% 75% 90
Тематический опыт М12 2 мес. 6 мес. 1 год 3 года 6 лет
Инструментальный опыт М13 2 мес. 6 мес. 1 год 3 года 6 лет
Опыт работы с языками М14 2 мес. 6 мес. 1 год 3 года 6 лет
Стабильность коллектива М11 48% 24% 12% 6% 3%
Таблица 3. Рейтинги характеристик разработчиков программного
продукта
Характеристика Рейтинги характеристики
Очень низкая Низкая Номинальная Высокая Очень высокая
Квалификация аналитиков М9 1,42 1,19 1,00 0,85 0,71
Квалификация программистов М10 1,34 1,15 1,00 0,88 0,76
Тематический опыт М12 1,22 1,10 1,00 0,88 0,81
Инструментальный опыт М13 1,19 1,09 1,00 0,91 0,85
Опыт работы с языками М14 1,20 1,09 1,00 0,91 0,84
Стабильность коллектива М11 1,29 1,12 1,00 0,90 0,81
производства сложных программных продуктов весьма трудоемок, а области применения специалистов различны. Поэтому трудно ожидать, что некий способ организации производства и команды специалистов будет во всех случаях предпочтительнее, чем альтернативные практические варианты.
В модели СОСОМО II изложены экспертные оценки для учета влияния квалификации и характеристикразличных специалистов на экономические характеристики производства программных продуктов (таблицы 2 и 3) [2, 3]. Аналогичные оценки особенностей специалистов и их влияния на экономические характеристики, базируются на отечественном опыте создания крупных программных продуктов [3]. Эти характеристики сводятся в основном к длительности и опыту работы в определенной области, и к экспертной оценке квалификации специалистов. Выбор и использование их значений при прогнозировании экономических характеристик требует высокой квалификации экспертов - руководителей и детального знания особенностей среды производства реального продукта. Для обеспечения возможности их использования при прогнозировании трудоемкости и длительности разработки сложных комплексов программ в модели СОСОМО II представлены соответствующие относительные рейтинги категорий специалистов - таблица 3. При применении этих рейтингов
следует учитывать, что некоторые из них взаимосвязаны, и целесообразно анализировать их корреляцию, возможность объединения или исключения при оценке экономических характеристик реальных проектов.
Среди множества характеристик коллектива разработчиков, наибольшее влияние на трудоемкость могут оказывать тематическая и технологическая квалификация специалистов, которые в таблицах 2 и 3 представлены совокупностью из шести факторов. Совместно эти факторы могут изменять трудоемкость производства компонентов и программных продуктов на 30-40%. Кроме того, в модели СОСОМО II выделен и обобщен на основе пяти характеристик коэффициент - комплексная коллективность участников проекта (см. таблицу 1), экономическое влияние которого может достигать пятикратного изменения трудоемкости.
Разработчики должны иметь в своем составе квалифицированных, проблемно-ориентированных аналитиков и системных архитекторов - М9, способных переводить функциональные требования и общие пожелания заказчика в конкретные спецификации и технические требования к комплексу программ и его компонентам (см. таблицы 2 и 3). Уровень квалификации аналитиков в СОСОМО II предлагается оценивать в процентах от высшей квалификации, что может снизить трудоемкость производства
почти на 30% от номинальной, которой соответствует средний рейтинг 1,00.
Трудоемкость творческой части затрат на производство программных продуктов в основном определяет человеческий фактор - квалификация и организация коллектива специалистов. Следствием этого является большой разброс трудоемкости, производительности труда и длительности создания аналогичных программных продуктов разными коллективами. Коллективы с наилучшими экономическими характеристиками могут служить ориентирами достижимых в ближайшие годы значений экономических характеристик для соответствующих классов программных продуктов. Однако неуклонно повышается размер и сложность комплексов программ, что вызывает возрастание затрат творческого труда на единицу размера продукта.
Затраты и труд при реализации крупного продукта, в экономике производства, традиционно принято распределять по двум категориям специалистов: разрабатывающим компоненты и комплекс в целом, и обеспечивающим производственную технологию и качество программного продукта. Организационное разделение специалистов, осуществляющих производство программного продукта (первая категория), и специалистов - технологов, контролирующих и управляющих его качеством в процессе производства (вторая категория), должно обеспечивать эффективное достижение заданных характеристик, а также независимый, достоверный контроль экономики и качества результатов производства.
Специалисты первой категории непосредственно создают компоненты и комплекс программ в целом с заданными показателями качества (см. таблицу 2 - М10, М13, М14). В процессе производства их функции заключаются в тщательном соблюдении принятой в предприятии технологии и в формировании всех предписанных руководствами исходных и отчетных документов. При этом предполагается, что выбранная технология способна обеспечить необходимые значения показателей качества компонентов и комплекса. Достижение заданных функциональных характеристик гарантируется тематической квалификацией М12 соответствующих специалистов и регулярным контролем этих характеристик в процессе производства. Стандартизация документирования частных работ должна обеспечить
объективное отражение качества компонентов и процессов их создания на всех этапах ЖЦ комплекса программ.
Разделение труда специалистов этой категории в крупных проектных коллективах приводит к необходимости их дифференциации по квалификации и областям деятельности [3, 5]:
- спецификаторы и аналитики - М9 подготавливают требования и описания функций соответствующих компонентов с уровнем детализации, достаточным для корректной разработки программистами текстов программных компонентов и их интерфейсов;
- разработчики программных компонентов программисты М10 создают компоненты, удовлетворяющие спецификациям требований, реализуют возможности компонентов продукта, отслеживают и исправляют ошибки, при производстве сложных программных компонентов, что требует детального знания высокоуровневых языков программирования, сетевых технологий и проектирования баз данных - М13, М14 в таблице 2;
- системные интеграторы сложных проблемно-ориентированных комплексов программ работают над продуктом в значительной степени отличными от программистов методами, на разных языках производства, используют различные средства автоматизации производства и имеют на выходе различные результаты: крупные функциональные компоненты и комплексы программ;
- тестировщики обеспечивают проверку функциональных спецификаций требований, пользовательских интерфейсов, разрабатывают стратегию, планы и выполняют тестирование на соответствие требованиям для выявления и устранения дефектов и ошибок каждого компонента и всего комплекса программ [6];
- управляющие сопровождением и конфигурацией отвечают за снижение затрат на модификацию и сопровождение программного продукта, обеспечение максимальной эффективности взаимодействия компонентов и производство версий программного продукта, принимают участие в обсуждениях интерфейсов и архитектуры программного продукта [7, 8];
- документаторы объектов и процессов жизненного цикла комплекса программ обеспечивают подготовку и издание сводных технологических и эксплуатационных документов на программный продукт в соответствие с требованиями стандартов.
Программистская квалификация специалистов - М10, М14 и опыт работы с языками программирования, из приведенных факторов квалификации относительно слабо отражается на производительности труда при сложном программном проекте. В данном факторе учитывается освоенность не только языка непосредственного программирования, но и всех компонентов инструментальных средств, используемых при создании программ (спецификаций, диалога, тестирования компонентов и их комплексирования). После двух-трех лет работы проявляются индивидуальные особенности конкретных специалистов, их творческие способности, тщательность в работе, рациональность использования средств автоматизации.
Однако в модели СОСОМО II в составе «команды» для производства сложного программного продукта не учитываются экономические характеристики специалистов таких важнейших квалификаций как:
- организаторы и планировщики процессов производства компонентов и программных продуктов;
- тестировщики и испытатели компонентов и комплексов программ;
- системные интеграторы компонентов сложных комплексов программ;
- управляющие сопровождением и конфигурацией комплексов программ.
Успех и качество при разработке сложных программных продуктов все больше зависит от слаженности работы и профессионализма коллектива специалистов на всех этапах и уровнях производства продуктов - от стабильности коллектива М11 (таблицы 2 и 3). Особенно важна не индивидуальная характеристика каждого специалиста, а, прежде всего, интегральный показатель квалификации «команды», реализующей некоторую, достаточно крупную функциональную задачу или весь проект комплекса программ [2, 5].
Тематическая квалификация и опыт - М12 специалистов в конкретной прикладной области, для которой разрабатывается программный продукт, приближенно может оцениваться продолжительностью работы по данной тематике. При низкой тематической квалификации допускаются наиболее грубые системные ошибки, требующие больших затрат для доработки программ. Имеются примеры, когда из-за таких ошибок, допущенных на этапе системного анализа, приходилось в процессе производства изменять до 70-90% программ.
В качестве показателя квалификации целесообразно использовать, значения длительности работы в определенной прикладной области. При этом квалификация системных аналитиков и непосредственных разработчиков программ в конкретной прикладной области особенно важна не столько как индивидуальная характеристика каждого специалиста, а прежде всего как интегральный показатель «команды», реализующей достаточно крупную функциональную задачу. Приводимые в разных работах оценки показывают, что при изменении опыта работы в данной области от 1 до 10 лет производительность труда может повышаться в 1,5-2 раза, что отражается величиной рейтингов М12.
Технологическая квалификация -М13 программистов в использовании инструментальной системы автоматизации производства программных компонентов отражает опыт применения методов, средств и всего технологического процесса при создании данного типа программных модулей и компонентов. Этот опыт можно характеризовать длительностью работы с конкретной инструментальной системой автоматизации или ее версиями, базирующимися на единых технологических концепциях, опыте и длительности работы с регламентированными технологиями, инструментальными комплексами автоматизации разработки, языками проектирования, программирования и тестирования программ. Особое значение имеет коллективный опыт организации и выполнения сложных проектов на базе современных автоматизированных технологий и инструментальных средств программной инженерии. Опыт применения конкретного комплекса автоматизации, языков проектирования и программирования может являться существенным фактором при выборе технологии для создания новых компонентов и обеспечении качества программных продуктов.
Квалификация специалистов существенно зависит от стабильности состава и психологического климата в коллективе, их способности к сотрудничеству и дружной совместной работе над единым проектом (см. таблицу 1 и М11 в таблицах 2 и 3). В данном факторе годы работы с конкретной технологической системой отражают не только опыт работы с инструментами, но и слаженность коллектива при проведении больших комплексных работ. Нарушение технологии, задержка при
разработке отдельных модулей или групп программ может приводить к болшим дополнительным затратам и значительной задержке производства продукта в целом. Это вызывает простои групп специалистов, соответствующее увеличение совокупных затрат и снижение производительности труда. Небольшое влияние этого фактора обусловлено также нивелирующим влиянием трудозатрат вспомогательного и руководящего персонала, которые практически не зависят от технологической квалификации и инструментального опыта.
2. Экономика и затраты труда специалистов при планировании производства компонентов и заказных программных продуктов
Для планирования и управления жизненным циклом крупных заказных программных продуктов, и обеспечения их качества в пределах допустимых экономических затрат, необходимы организационные действия менеджеров, направленные на подбор и обучение коллектива специалистов разных категорий и специализаций. Перечисленные выше специализации и квалификации персонала, участвующего в крупных проектах, требуют соответствующей их подготовки, отбора и обучения, которые являются самостоятельной, важной проблемой в экономике производства программных продуктов. Обучение представляет собой сложный процесс, требует организации и сопровождения обучаемого персонала. Должны быть разработаны и документированы планы, требования и цели обучения, а также разработаны материалы, используемые для обучения [5, 7, 8]. Может быть необходимым включение в подготовку, ознакомление со специфической (проблемно-ориентированной) областью, в которой будет работать данный программный продукт, и повышение квалификации специалистов в этой области.
Согласованные с заказчиком основные экономические характеристики проекта позволяют фиксировать базовый сценарий и план производства продукта, проводить предварительные расчеты распределений трудоемкости и длительности по этапам производства и по специалистам. По этим данным может проводиться детальное календарное экономическое планирование и контролирование работ всего проекта. Для расчета распределения трудоемкос-
ти, длительности и числа специалистов по этапам работ, желательно использовать аналогичные характеристики проектов подобного типа.
Технические и управленческие проверки экономических характеристик, анализ качества результатов промежуточных работ и компонентов, а также корректности их взаимосвязей должны обеспечивать руководителям и всем разработчикам уверенность достижения требуемого конечного результатов производства - получения продукта требуемого качества. Для этого необходима подготовка экономически эффективной технологии производства сложного программного продукта. Характеристики комплексов программ существенно зависят от качества технологии, стандартов и инструментальных средств, используемых разработчиками для обеспечения всего жизненного цикла. Оценивание достоинств (зрелости) технологической базы позволяет прогнозировать возможное качество программных продуктов и ориентировать заказчика и пользователей при выборе разработчика и поставщика для определенного проекта с требуемыми характеристиками. Поэтому определение зрелости технологической поддержки производственных процессов, организационного и инструментального обеспечения производства, непосредственно связано с прогнозированием реальных или возможных экономических характеристик и качества конкретного комплекса программ.
Цель планирования и определения технологической среды жизненного цикла комплекса программ состоит в том, чтобы установить производственные методы, инструментальные средства, процедуры, языки программирования и аппаратные средства, которые будут использоваться для производства, верификации, управления и подготовки документации программного продукта [2, 3, 5]. План должен включать стандарты, методы предотвращения ошибок и обеспечения отказоустойчивости, которые ограничивают возможность случайного внесения ошибок, и такие методы тестирования, которые гарантируют их обнаружение.
Подготовка и определение процессов планирования должны начинаться с установления требований к реализуемому продукту. Менеджер должен определить экономические возможности реализации планируемых процессов, проверяя наличие и достаточность ре-
сурсов, выделенных для выполнения и управления процессами, а также реальность сроков завершения производства программного продукта. План должен иметь в своем составе детальные графики, идентифицирующие: этапы работ; входные, выходные данные и описания решаемых задач; необходимые ресурсы и сроки выполнения; взаимосвязи и зависимости этапов и работ. Должно быть установлено организационно-техническое взаимодействие между различными группами специалистов, которые вносят свой вклад в процессы и обеспечение качества производства, а необходимая информация должна документироваться и регулярно анализироваться.
Входные проектные данные и требования к планам производства компонентов и комплекса программ, включая установленные законодательные и нормативные требования, должны быть оформлены документально, а их выбор проанализирован заказчиком на адекватность. Неполные, двусмысленные или противоречивые требования должны быть предметом урегулирования с лицами, ответственными за их предъявление. Спецификацию требований должен представить потребитель-заказчик. Однако по взаимному согласию ее может подготовить разработчик, в тесном сотрудничестве с потребителями для предупреждений разногласий путем, например, уточнения терминов, объяснения предпосылок и обоснования требований. Спецификация требований к планам может быть представлена и согласована в составе спецификации всей системы. При заключении контракта спецификация требований может быть определена не полностью, она может быть доработана в ходе реализации планов проекта.
Выходные проектные данные при реализации планов должны быть документально оформлены и выражены так, чтобы их можно было проверить и подтвердить соответствие входным проектным требованиям заказчика. Выходные проектные данные должны содержать критерии приемки продукта заказчиком или ссылки на них, а также идентифицировать те характеристики проекта, которые являются критическими для безопасного и надежного функционирования и применения программного продукта. К составу выходных проектных данных могут относиться:
- описание результатов испытаний и применения программного продукта;
- комплект оформленного программного продукта и эксплуатационной документации для пользователей;
- комплект технологической документации для обеспечения возможности модификации и сопровождения версий программного продукта.
При планировании менеджер должен подготовить планы для выполнения производственных процессов, которые должны содержать оценивания экономики соответствующих работ, а также обозначения создаваемых программных компонентов и продуктов. В планах должны быть:
- установлены графики своевременного решения конкретных задач;
- оценки трудозатрат, времени и ресурсов на их решение;
- распределение задач по исполнителям и их обязанности;
- используемые в процессах производства критерии и результаты управления качеством;
- обеспечение условий и инфраструктура выполнения плановых процессов.
Следует установить и поддерживать в рабочем состоянии документированные процедуры, гарантирующие производство компонентов и программного продукта в соответствии с заданными требованиями и согласно плану. В планах необходимо определять, каким образом следует управлять проектом, анализировать выполнение работ, а также установить вид и частоту отчетов для руководства проектом, потребителей и других заинтересованных сторон, принимая во внимание все конкретные требования заказчика.
Каждый представленный план должен четко отражать экономику и ресурсы, необходимые для его реализации, разделение работ на этапы и временной график выполнения этих этапов. При этом в планах рекомендуется:
- определить производственные процессы, которые необходимо выполнить и возможность достижения целей плана в рамках существующих ресурсов и экономических ограничений;
- выявить конкретных лиц и группы специалистов, создающих требуемые результаты при производстве продукта, определить им конкретные зоны ответственности, и обеспечить, чтобы обязанности были поняты и приняты, профинансированы и экономически достижимы;
- обеспечить инструментарий для того, чтобы планы проекта были формально разработаны, реализова-
ны, поддержаны и доступны лицам, вовлеченным в производство;
- регулярно оценивать процессы выполнения планов, принимать меры, для корректировки отклонений от каждого плана и предотвращения повторения проблем, выявленных в процессе производства.
Особого внимания требует сотрудничество разработчиков с заказчиком, своевременное предоставление ему нужной информации и решение оперативных вопросов для обеспечения качества заказного программного продукта. Целесообразно планировать и регулярно проводить разработчиком и заказчиком совместные анализы реализации планов проекта, либо проводить такие анализы в случае значительных проектных событий, чтобы охватить:
- состояние и развитие выполняемых работ по производству и модификации заказного программного комплекса и компонентов;
- результаты проверок текущего состояния проекта и степени готовности к приемочным испытаниям заказчика;
- состояние подготовки и обучения конечных пользователей разрабатываемого программного продукта и системы.
В процессе составления графиков производства сложных программных продуктов весь комплекс работ разбивается на отдельные этапы и оценивается время и затраты ресурсов, требующееся для выполнения каждого этапа. Особый вид ресурсов - это «команда» специалистов, привлеченная к выполнению проекта. Для представления графиков работ могут использоваться диаграммы Ганта - рис. 4. Графики Ганта - это методика планирования проектов, которую можно использовать для достижения нескольких целей, включая календарное планирование производства, финансовое планирование, планирование использования
специалистов и других ресурсов. График представляет собой гистограмму, где каждая горизонтальная линейка обозначает отдельный вид или компонент производственной деятельности. Линейки изображаются относительно временной шкалы планирования проекта. Длина каждой линейки пропорциональна продолжительности времени, запланированного на выполнение определенной работы или этапа. График работ по всему проекту обычно представляется в виде набора диаграмм, показывающих разбиение производственных работ на основные этапы, зависимости между работами, распределение специалистов и экономических затрат по этапам и работам (см. пример, на рис. 1 - шесть этапов, в числителе трудоемкость работ; в знаменателе - число необходимых специалистов). Для его детализации может использоваться обобщенный перечень этапов и работ при проектировании и производстве сложных программных продуктов реального времени. Визуализация плана в виде графика Ганта может быть произведена по укрупненным этапам жизненного цикла и множеству частных работ составляющих эти этапы (например, около 50 работ, стандарта ISO 12207:2008). В составе и экономических характеристиках работ и этапов можно отражать трудоемкость, длительность и число необходимых специалистов, а также их взаимодействие с предшествующими и последующими работами. Для каждого этапа, в свою очередь, может быть составлен детализирующий его частный график Ганта, и оценены его экономические характеристики. Необходимые временные, трудовые и другие ресурсы для выполнения и отражения работ на этих графиках, зависят от требований к детализации характеристик конкретного программного продукта и условий его производства.
Этап Время 1 1 1 1 1 | 1 |
1 2 8/40
14/70
22/140
3 24/150
4 24/120
5 8/100
6
Рис. 1
График Ганта можно использовать для оценивания и распределения экономических ресурсов и планирования кадрового обеспечения. Если необходимо спланировать работу и результаты конкретных специалистов по срокам, то можно воспользоваться графиком Ганта, на котором каждая полоса будет отражать работы одного из них. На таком графике специалисты являются ресурсами, и на нем можно отражать их нагрузку во время производства. Можно пометить соответствующие части полос для обозначения количества времени, которое каждый специалист предположительно должен тратить на выполнение той или иной работы.
3. Экономика обеспечения качества и испытаний программных продуктов
Возрастание сложности и ответственности современных задач, решаемых крупными системами, а также возможного ущерба от недостаточного качества программного продукта, значительно повысило актуальность освоения методов стандартизированного описания требований и оценивания характеристик качества производственных процессов, компонентов и продуктов на различных этапах жизненного цикла. Выявилась необходимость систематизации реальных характеристик качества, применения стандартов для выбора из них необходимой номенклатуры и требуемых экономических ресурсов для производства комплексов программ. Обещания разработчиков в контрактах с заказчиками создать высококачественные программные продукты в согласованные сроки во многих случаях не выполняются, как вследствие различий в понимании требуемого качества, так и вследствие неумения оценить экономические ресурсы, необходимые для достижения заданного заказчиком качества программного продукта.
При экономическом прогнозировании проектов сложных программных продуктов принципиальным путем улучшения экономических характеристик является сокращение творчества на тех этапах, где возможны типовые стандартные решения и заготовки компонентов, не требующие при их многократном применении высококвалифицированного творческого труда. Значительная доля труда специалистов на производство заказного программного продукта реального времени может приходиться на создание и эксплуатацию средств обеспечения дина-
мического тестировании и испытаний, которая может быть соизмеримой и даже превышать затраты на непосредственную разработку программного продукта. Сложность программного продукта зачастую адекватна сложности внешней среды и/или системы, являющейся источником обрабатываемой информации и потребителем обработанных данных, получаемых при функционировании программного продукта реального времени. Только для очень небольших программ можно вручную разработать достаточно полные наборы тестов для отладки, отражающие реальные условия их эксплуатации. Для средних и больших комплексов программ, необходимо создание и применение автоматизированных, динамических моделей внешней среды, в качестве источников тестовых данных в реальном времени, при тестировании программного продукта на соответствие требованиям заказчика. Затраты на них необходимо учитывать при экономическом прогнозировании и обосновании таких проектов.
Имитировать динамические тесты, особенно сложно, для комплексов программ, функционирующих в реальном времени, когда данные, отражающие внешнюю среду, должны поступать синхронно также в реальном времени. Анализ эффективности подобной имитации динамической внешней среды при производстве целесообразно делить на две части: оценка факторов, определяющих эффективность программных средств динамической имитации тестов, и оценка экономического выигрыша при моделировании внешней среды на компьютере по сравнению с натурными экспериментами. Программная имитация динамической внешней среды на компьютере позволяет:
- расширять диапазоны характеристик имитируемых объектов за пределы реально существующих или доступных источников данных и генерировать динамические потоки информации, отражающие перспективные характеристики создаваемых систем;
- создавать тестовые данные, соответствующие критическим или опасным ситуациям функционирования объектов внешней среды, которые невозможно или рискованно реализовать при натурных экспериментах;
- обеспечивать высокую повторяемость имитируемых данных при заданных условиях их генерации и возможность прекращения или приостановки реального времени имитации на любых
фазах моделирования внешней среды;
- проводить длительное непрерывное генерирование имитируемых данных для определения безопасности и надежности функционирования программного продукта в широком диапазоне условий, что зачастую невозможно при использовании реальных объектов внешней среды [3, 7].
Руководитель - управляющий заказным программным проектом должен гарантировать поставку продуктов в соответствии с условиями договора, включать в производство только те задания и функции стандартов, которые обеспечивают успешную реализацию требований заказчика и создание соответствующего продукта. Процесс управления производством должен начинаться с установления требований к каждому реализуемому процессу, компоненту и их качеству. После установления требований руководитель должен определить экономическую возможности их реализации, проверяя наличие, соответствие и применимость ресурсов, выделенных для выполнения и управления процессом производства (специалистов, технологии и условий среды), а также реальность установленных сроков производства продукта. При необходимости и по согласованию со всеми заинтересованными сторонами, требования к программному продукту могут быть изменены для удовлетворения критериям успешного завершения производства.
В установленные сроки руководитель должен отчитываться о реализации, качестве процессов и результатов производства, подтверждая выполнение утвержденных планов и преодолевая возникающие затруднения. Измерения экономических характеристик производства программного продукта должны быть использованы для поэтапной проверки соответствия между ожидавшимися затратами, функциями и характеристиками программного продукта и их реализацией. Руководитель программного проекта должен отвечать за соблюдение коммуникационных требований в коллективе специалистов, включая своевременность представления отчетов заказчику и заинтересованным лицам, распространение планов проверок и выдачу заданий, а при необходимости, отвечать за нарушения сроков, отчетности и документирования.
Любые испытания экономически ограничены допустимым количеством и объемом тестирования, а также длитель-
ностью работы комиссии испытателей, поэтому не могут гарантировать абсолютную проверку соответствия требованиям функций и характеристик качества программного продукта. Экономические ресурсы, определяющие прямые затраты на выполнение испытаний сложных заказных программных продуктов обычно находятся в пределах 10-15% бюджета проекта. Однако подготовка тестов и динамических моделей имитации внешней среды реального времени могут требовать больших экономических затрат соизмеримых со стоимостью разработки испытуемого комплекса программ. Поэтому при анализе экономики испытаний комплексов программ реального времени, особое внимание следует уделять средствам их инструментальной и тестовой поддержке на основе имеющихся прецедентов.
Испытания заказного программного продукта и системы в целом выполняется, чтобы продемонстрировать представителям заказчика, что удовлетворены все требования технического задания, а функции и характеристики качества соответствуют условиям контракта. Они должны покрывать все требования в спецификациях системы и подсистем, а также требования к интерфейсу с внешней средой. Испытания должны включать тестирование на объектной вычислительной системе или на альтернативной модели системы, одобренной представителем заказчика. В процессе системного тестирования проверяется интеграция отдельных частей, в совокупности составляющих систему в целом. Испытания на системном уровне обычно проводится специальной группой тестирования, которая должна провести анализ с целью определения требований и компонентов функциональности, которые могут вызывать наибольшее количество проблем.
Каждое проверяемое требование должно соответствовать конкретным, обоснованным характеристикам системы, иметь уникальный для проекта идентификатор, чтобы можно было провести тестирование и проследить его выполнение с помощью объективного теста. Для каждого требования должны выбираться квалификационные методы для функциональных подсистем и компонентов программного продукта, которые необходимо прослеживать в требованиях к системе. Степень детализации требований следует выбирать, учитывая в первую очередь те функции и характеристики
качества программного продукта, которые внесены в условия приемки системы, и отдавать приоритет тем из них, которые заказчик требует обеспечить обязательно.
Оценивание качества и соответствия требованиям программного продукта при приемо-сдаточных испытаниях должно проводиться комиссией заказчика, в которой участвует руководитель (главный менеджер) разработки и некоторые ведущие разработчики, или аттестованной сертификационной лабораторией [4, 6]. Комиссия при испытаниях должна руководствоваться следующими основными документами:
- утвержденными заказчиком и согласованными с разработчиком контрактом, спецификациями требований и экономическими ресурсами на программный продукт и систему;
- действующими государственными и ведомственными стандартами на жизненный цикл и испытания крупных комплексов программ, на технологическую и эксплуатационную документацию, а также стандартами де-факто, согласованными с заказчиком для использования;
- Программой и планом испытаний по всем требованиям контракта, технического задания и спецификаций;
- методиками испытаний и матрицей тестов, охватывающими каждый раздел требований технического задания, спецификаций и Программы испытаний;
- комплектом адекватной эксплуатационной и технологической документации на программный продукт.
В задачу комиссии испытаний входит представление технических и экономических результатов и выработка рекомендаций относительно готовности продукта к поставкам. Перечисленные документы по всей Программе испытаний обобщаются в акте о завершении испытаний и готовности к поставке и/или к предъявлению для сертификационных испытаний версии программного продукта. В результате должно делаться заключение о степени соответствия программного продукта требованиям заказчика и о завершении работы с положительным или отрицательным итогом. При выполнении всех требований технического задания заказчик обязан принять заказной программный продукт и документацию, рассчитаться за финансирование с разработчиками и проект считается завершенным.
Литература
1. Боэм Б.У Инженерное проектирование программного обеспечения. Пер.с англ. Под ред.А.А. Красилова. -М.: Радио и связь.1985.
2. Boehm B.W. et al. Software cost estimation with COCOMO II. Prentice Hall PTR. New Jersey. 2000.
3. Липаев В.В. Экономика производства программных продуктов. Издание второе. - М.: СИНТЕГ. 2011.
4. Липаев В.В. Прогнозирование экономических характеристик про-из-водства заказных программных продуктов. Экономика, статистика и информатика. Вестник УМО. МЭСИ. № 1.2012.
5. Липаев В.В. Человеческие факторы в программной инженерии: рекомендации и требования к профессиональной квалификации специалистов. Учебник. - М.: СИНТЕГ. 2009.
6. Липаев В.В. Тестирование компонентов и комплексов программ. Учебник. - М.: СИНТЕГ. 2010.
7. Фатрелл Р. Т., Шафер Д. Ф., Шафер Л. И. Управление программными проектами: достижение оптимального качества при минимальных затратах. Пер. с англ. - М.: Вильямс. 2003.
8. Соммервилл И. Инженерия программного обеспечения. 6-е издание. Пер. с англ. - М.: Вильямс. 2002.
References
1. Boem B.U. Engineering designing of Software. Per.s angl. Pod red.A.A. Krasilova. -M.: Radio i svyaz'.1985.
2. Boehm B.W. et al. Software cost estimation with COCOMO II. Prentice Hall PTR. New Jersey. 2000.
3. Lipaev VV The economics of software. Izdanie vtoroe. - M.: SINTEG. 2011.
4. Lipaev VV Forecasting economic characteristics of production custom software. Ekonomika, statistika i informatika. Vestnik UMO. MESI. № 1.2012.
5. Lipaev V.V. Human factors in software engineering: recommendations and requirements for professional qualification. Textbook. - M.: SINTEG. 2009.
6. Lipaev V.V. Testing of components and systems software. Textbook. - M.: SINTEG. 2010.
7. Fatrell R. T., Shafer D. F., Shafer L. I. Управление программными проектами: достижение оптимального качества при минимальных затратах. Per. s angl. - M.: Vil'yams. 2003.
8. Sommervill I. Software Engineering. 6th Edition. Per. s angl. - M.: Vil'yams. 2002.