Технология разработки программного обеспечения

9 ОЦЕНКА КАЧЕСТВА ПРОЦЕССОВ СОЗДАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

Текущий период на рынке программного обеспечения характеризуется переходом от штучного ремесленного производства программных продуктов к их промышленному созданию. Соответственно возросли требования к качеству разрабатываемого программного обеспечения, что требует совершенствования процессов их разработки. На настоящий момент существует несколько стандартов, связанных с оценкой качества этих процессов, которое обеспечивает организация-разработчик. К наиболее известным относят:

  • международные стандарты серии ISO 9000 (ISO 9000 - ISO 9004);
  • СММ - Capability Maturity Model - модель зрелости (совершенствова ния) процессов создания программного обеспечения, предложенная SEI (Software Engineering Institute - институт программирования при универси тете Карнеги-Меллон);
  • рабочая версия международного стандарта ISO/IEC 15504: Informa tion Technology - Software Process Assessment; эта версия более известна под названием SPICE - (Software Process Improvement and Capability dEtermi- nation - определение возможностей и улучшение процесса создания про граммного обеспечения).
Стандарты в области обеспечения качества ПО

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

В настоящий момент в Российской Федерации и за рубежом действуют следующие стандарты в области качества программного обеспечения:

  • ГОСТ 28195-89. Оценка качества программных средств. Общие положения;
  • ГОСТ 28806-90. Качество программных средств. Термины и определения;
  • ГОСТ Р ИСО/МЭК 9126-93. Информационная технология. Оценка программной продукции. Характеристики качества и руководства по их применению;
  • ISO/IEC TR 9126-1-4:2001-2004. Software engineering — Product quality.
    • - Part 1: Quality model (Модель качества),
    • - Part 2: External metrics (Внешние показатели),
    • - Part 3: Internal metrics (Внутренние показатели),
    • - Part 4: Quality in use metrics (Качество при использовании показателей);
  • ISO/IEC 14598-5:1998. Information technology - Software product evaluation - Part 5: Process for evaluators [32];
  • ISO/IEC 14598-6:2001. Software engineering - Product evaluation - Part 6: Documenta-tion of evaluation modules;
  • ISO/IEC 25000:2014. Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) - Guide to SQuaRE;
  • ISO/IEC 25001:2014. SQuaRE - Planning and management;
  • ISO/IEC 25010:2011. SQuaRE - System and software quality models;
  • ISO/IEC 25012:2008. SQuaRE - Data quality model;
  • ISO/IEC 25020:2007. SQuaRE - Measurement reference model and guide;
  • ISO/IEC 25021:2012. SQuaRE - Quality measure elements;
  • ISO/IEC 25030:2007. SQuaRE - Quality requirements;
  • ISO/IEC 25040:2011. SQuaRE - Evaluation process;
  • ISO/IEC 25041:2012. SQuaRE - Evaluation guide for developers, acquirers and inde-pendent evaluators;
  • ISO/IEC 25045:2010. SQuaRE - Evaluation module for recoverability;
  • ISO/IEC 25051:2014. SQuaRE - Requirements for quality of Ready to Use Software Product (RUSP) and instructions for testing;
  • ISO/IEC TR 25060:2010. SQuaRE - Common Industry Format (CIF) for usability: Gen-eral framework for usability-related information;
  • ISO/IEC 25062:2006. SQuaRE - Common Industry Format (CIF) for usability test re-ports;
  • ISO/IEC 25063:2014. SQuaRE - Common Industry Format (CIF) for usability: Context of use description;
  • ISO/IEC 25064:2013. SQuaRE - Common Industry Format (CIF) for usability: User needs report;
  • ГОСТ Р ИСО/МЭК 15504-1-3:2009. Информационная технология. Оценка процес-са — Часть 1. Концепция и словарь. Часть 2. Проведение оценки [50]. Часть 3. Руководство по проведению оценки. Часть 4. Руководство по применению для улучшения и оценки возможностей процесса;
  • ISO/IEC 15504-5-9:2008-2013. Information technology — Process assessment.
    • - Part 5: An exemplar Process Assessment Model (Пример модели оценки процесса);
    • - Part 6: An exemplar system life cycle process assessment model (Пример модель оценки процессов жизненного цикла системы);
    • - Part 7: Assessment of organizational maturity (Оценка организационной завершенности);
    • - Part 8: An exemplar process assessment model for IT service management (Модель образца оценки процесса для управления услугами IT);
    • - Part 9: Target process profiles (Профили целевого процесса).

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

СММ. СММ представляет собой совокупность критериев оценки зрелости организации-разработчика и рецептов улучшения существующих процессов.

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

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

1. Начальный уровень (initial level) - описан в стандарте в качестве осно вы для сравнения со следующими уровнями. На предприятии такого уровня организации не существует стабильных условий для создания качественного программного обеспечения. Результат любого проекта целиком и полностью зависит от личных качеств менеджера и опыта программистов, причем успех в одном проекте может быть повторен только в случае назначения тех же ме неджеров и программистов на следующий проект. Более того, если эти мене джеры или программисты уходят с предприятия, то резко снижается качест во производимых программных продуктов. В стрессовых ситуациях процесс разработки сводится к написанию кода и его минимальному тестированию.

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

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

4. Управляемый уровень (managed level) - в организации устанавливаются количественные показатели качества как на программные продукты, так и на процесс в целом. Таким образом, более совершенное управление проектами достигается за счет уменьшения отклонений различных показателей проекта. При этом осмысленные вариации в производительности процесса можно отличить от случайных вариаций (шума), особенно в хорошо освоенных областях.

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

Сертификационная оценка соответствия всех ключевых областей проводится по 10-балльной шкале. Для успешной квалификации данной ключевой области необходимо набрать не менее 6 баллов. Оценка ключевой области осуществляется по следующим показателям:

  • заинтересованность руководства в данной области, например, планируется ли практическое внедрение данной ключевой области, существует ли понимание у руководства необходимости данной области и т. д.;
  • насколько широко данная область применяется в организации, напри мер, оценке в 4 балла соответствует фрагментарное применение;
  • успешность использования данной области на практике, например, оценке в 0 баллов соответствует полное отсутствие какого-либо эффекта, а оценка в 8 баллов выставляется при наличии систематического и измеримо го положительного результата практически во всей организации.

В принципе, можно сертифицировать только один процесс или подразделение организации, например, подразделение разработки программного обеспечения компании IBM сертифицировано на пятый уровень. Кстати, в мире существует совсем немного компаний, которые могут похвастаться наличием у них пятого уровня СММ хотя бы в одном из подразделений - таких всего около 50-ти. С другой стороны, насчитывается несколько тысяч компаний, сертифицированных по третьему или четвертому уровням, т. е. существует колоссальный разрыв между оптимизированным уровнем зрелости и предыдущими уровнями. Однако еще больший разрыв наблюдается между количеством организаций начального уровня и числом их более продвинутых собратьев - по некоторым оценкам, свыше 70 % всех компаний-разработчиков находится на первом уровне СММ.

SPICE. Стандарт SPICE унаследовал многие черты более ранних стандартов, в том числе и уже упоминавшихся ISO 9001 и СММ. Больше всего SPICE напоминает СММ. Точно так же, как и в СММ, основной задачей организации является постоянное улучшение процесса разработки программного обеспечения. Кроме того, в SPICE тоже используется схема с различными уровнями возможностей (в SPICE определено 6 различных уровней), но эти уровни применяются не только к организации в целом, но и к отдельно взятым процессам.

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

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

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

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