Кроме таких "первичных" данных о качестве, идущих непосредственно от потребителя, в роли показателей могут выступать: число строк кода в стандартном модуле, количество выявленных ошибок на 1000 строк кода, вероятность появления специфических ошибок, параметры сложности программы, стоимость единицы кода, цена "человеко-месяца", статистические характеристики процессов (математические ожидания, дисперсии, корреляционные функции и т. д.) и другие оценочные параметры.
Отсюда следует "генеральная" задача разработчика ПО – на основе анализа взаимной корреляции ранжированных потребительских, технологических и технических характеристик создать систему целевых показателей (метрик), которая задает ориентиры разработки и критерии оценки ее качества.
Такая задача трудна даже для искушенного разработчика, однако использование ранее наработанного опыта и знаний, накопленных в межпроектных базах данных и отраженных в корпоративных и международных стандартах, позволяют существенно уменьшить "размерность" задачи.
Ранее было отмечено, что из-за отсутствия адекватных систем управления качеством во многих проектах (особенно крупных) временные и экономические показатели значительно выше запланированных. Но даже превышение показателей не гарантирует выполнения технических требований. Ряд крупных IT-проектов, как в Европе, так и в Америке, не достигли заявленных результатов, будучи не в состоянии реализовать требуемые технические и технологические параметры, хотя отпущенные время и средства были значительно превышены.
Система управления качеством является частью системы управления организацией. Цели в сфере качества дополняют основные (стратегические) задачи организации. Различные части системы управления организации-разработчика могут быть объединены вместе с системой менеджмента качества в единую, унифицированную систему управления с общими элементами. Это способствует эффективному планированию, распределению ресурсов, установлению взаимодополняющих целей и реальной оценке эффективности.
Инициативы внедрения систем качества в широких масштабах в Японии в начале 50-х годов, поддержанные правительственными программами, обеспечили быстрый рост конкурентоспособности и выход страны на лидирующие позиции в ряде областей промышленности. Активное внедрение новых решений, направленных на обеспечение качества, в США и Европе началось в начале 60-х годов.
Если говорить о программировании, то идеи реализации качества на базе создания стандартного процесса разработки и сопровождения ПО пришли в эту область из промышленности в ответ на программный кризис конца 60-х годов [Wheeler Sh., Duggins Sh. Improving software quality – ACM Proceedings of the 36th annual conference on South-East regional conference, April 1998].
Среди стандартов в области разработки систем качества, оценки качества процессов и уровня зрелости компаний, разрабатывающих программное обеспечение, сегодня наиболее популярными являются: ISO 9000 (версии 1994 и 2000 гг.), ISO 12207, TickIT, SEI SW-CMM, Trilium, ISO 15504 (SPICE), CMMI.
Компьютерная программа представляет собой материальный объект, но она строится на абстрактных идеях и состоит из сложнейших виртуальных конструкций. Это в корне отличает ее от физических объектов, с которыми имеет дело обычное производство, и поэтому невозможно создать качественное ПО, не решив ряд типичных проблем:
В последние годы постепенно сложилась определенная культура, появились традиции и стиль работы в сфере создания программных продуктов.
Продукт (методики разработки) | Проект (методики менеджмента проектов) | Персонал (методики управления персоналом) | |||
---|---|---|---|---|---|
1 | Определение продукта (состав, клиентская среда и требования) | 1 | Оценка стоимости проекта в целом (как правило, в человеко-месяцах) | 1 | Набор персонала (как правило, на конкурсной основе) |
2 | Процессы оценивания (определения критериев) | 2 | Документирование общего и оперативных планов | 2 | Отбор команды проекта и обучение персонала |
3 | Оценка альтернативных подходов к реализации продукта | 3 | Оценка трудозатрат в структуре проекта | 3 | Создание команды проекта и распределение ответственности |
4 | Управление требованиями | 4 | Оценка и менеджмент рисков | 4 | Оценка потенциальных возможностей участников проекта |
5 | Управление субподрядом | 5 | Создание структуры пооперационного перечня работ | 5 | Создание структуры пооперационного перечня работ |
6 | Выполнение начальной оценки | 6 | Оценка ключевых стадий и составление графика работ | 6 | Взаимодействие и общение на уровне групп и команды в целом |
7 | Отбор инструментов, методов, стандартов, разработка внутренних стандартов | 7 | Отбор инструментов управления проектом | 7 | Обучение проектных команд для получения оптимальных результатов |
8 | Настройка процессов на выполнение требований ТЗ | 8 | Знание стандартов процесса и настройка стандартов на процесс | 8 | Эффективное представление и использование навыков |
9 | Понимание действий по разработке продукта (полное представление о необходимых действиях в течение всего ЖЦ) | 9 | Формирование метрических показателей для измерения параметров процессов и управления процессами | 9 | Успешное ведение переговоров с внешними и внутренними участниками проекта, совместные обсуждения и оценки |
10 | Управление изменениями | 10 | Отслеживание процессов (процессный мониторинг и совершенствование качества) | 10 | Организация эффективных встреч для планирования совместных работ |
11 | Отслеживание качества продукта в ходе разработки (мониторинг качества рабочих продуктов) | 11 | Отслеживание процесса разработки (мониторинг соответствия стандартного процесса разработки ПО принятым требованиям) | 11 | Вопросы индивидуальной и коллективной интеллектуальной собственности |
12 | Отслеживание хода разработки проекта |
Наилучшие практики, взятые на вооружение ведущими компаниями, образовали так называемые "Тридцать четыре необходимые компетенции для управления программными проектами, стандартизации процесса разработки ПО и реализации его качества".
Эти "компетенции" нашли отражение в большом количестве национальных и корпоративных стандартов разных стран, которые послужили основой для создания нескольких международных стандартов, широко применяемых в настоящее время.