Санкт-Петербургский государственный университет
Опубликован: 02.03.2007 | Доступ: свободный | Студентов: 3463 / 1137 | Оценка: 4.27 / 4.03 | Длительность: 07:12:00
ISBN: 978-5-9556-0104-5
Лекция 4:

Документирование, сопровождение, реинжиниринг и управление качеством

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >

Кроме таких "первичных" данных о качестве, идущих непосредственно от потребителя, в роли показателей могут выступать: число строк кода в стандартном модуле, количество выявленных ошибок на 1000 строк кода, вероятность появления специфических ошибок, параметры сложности программы, стоимость единицы кода, цена "человеко-месяца", статистические характеристики процессов (математические ожидания, дисперсии, корреляционные функции и т. д.) и другие оценочные параметры.

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

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

Ранее было отмечено, что из-за отсутствия адекватных систем управления качеством во многих проектах (особенно крупных) временные и экономические показатели значительно выше запланированных. Но даже превышение показателей не гарантирует выполнения технических требований. Ряд крупных IT-проектов, как в Европе, так и в Америке, не достигли заявленных результатов, будучи не в состоянии реализовать требуемые технические и технологические параметры, хотя отпущенные время и средства были значительно превышены.

Система управления качеством является частью системы управления организацией. Цели в сфере качества дополняют основные (стратегические) задачи организации. Различные части системы управления организации-разработчика могут быть объединены вместе с системой менеджмента качества в единую, унифицированную систему управления с общими элементами. Это способствует эффективному планированию, распределению ресурсов, установлению взаимодополняющих целей и реальной оценке эффективности.

Инициативы внедрения систем качества в широких масштабах в Японии в начале 50-х годов, поддержанные правительственными программами, обеспечили быстрый рост конкурентоспособности и выход страны на лидирующие позиции в ряде областей промышленности. Активное внедрение новых решений, направленных на обеспечение качества, в США и Европе началось в начале 60-х годов.

Если говорить о программировании, то идеи реализации качества на базе создания стандартного процесса разработки и сопровождения ПО пришли в эту область из промышленности в ответ на программный кризис конца 60-х годов [Wheeler Sh., Duggins Sh. Improving software qualityACM 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.

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

  • команда разработчиков, как правило, состоит из творческих личностей, которых часто бывает трудно привести к "общему знаменателю";
  • каждый программный продукт неизбежно содержит ошибки, отражающие квалификацию и индивидуальный стиль разработчика – разнообразие и нестандартность ошибок сильно усложняет процесс достижения стандартных целей в области качества;
  • каждый успешный проект по-своему уникален. Он подобен мозаике со сложным рисунком, поэтому очень трудно выделить из него некий базовый процесс-клише, который можно было бы применить в дальнейших разработках;
  • по сходной причине трудно поставить производство сложного и уникального ПО на поток, так как часто для его разработки требуется создание сопутствующего специального программного "инструментария" для проектирования, оптимизации и тестирования;
  • одна из специфических проблем программирования состоит в том, что продуктивность в этой области растет очень медленно, если растет вообще – по некоторым оценкам, средний программист способен создать 10-50 строк операторов в день. Кроме того, эти оценки должны быть уменьшены для больших систем, так как увеличенная нагрузка требует значительных затрат (в относительных единицах). Это обстоятельство резко отделяет программирование от других видов деятельности, где поточное производство радикально уменьшает цену единицы продукта. Вся экономика строится на этом далеко не новом принципе – но только не производство программного обеспечения!

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

Продукт (методики разработки) Проект (методики менеджмента проектов) Персонал (методики управления персоналом)
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 Отслеживание хода разработки проекта

Наилучшие практики, взятые на вооружение ведущими компаниями, образовали так называемые "Тридцать четыре необходимые компетенции для управления программными проектами, стандартизации процесса разработки ПО и реализации его качества".

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

< Лекция 3 || Лекция 4: 12345 || Лекция 5 >