... Я учу вас только одному - как делать больше прибыли. (У. Деминг)

Проблемы обеспечения качества сложных программных средств

В.В. Липаев


Состояние обеспечения качества сложных программных средств

      Областей применения компьютеров становится все больше, и их корректная работа часто является определяющей для управления объектами, успеха предприятий или безопасности человека.
      Тщательное специфицирование, оценивание и достижение высоких значений показателей качества программных средств - ключевой фактор обеспечения их эффективного применения в информационных системах.
      Во многих случаях современные контракты и предварительные планы на создание сложных программных средств (ПС) и баз данных (БД) для информационных систем (ИС) подготовляются и оцениваются небрежно, на основе неформализованных представлений заказчиков и разработчиков о требуемых функциях и характеристиках систем. Значительные ошибки в определении требуемых показателей качества, в оценке трудоемкости, стоимости и длительности создания ПС являются весьма массовыми и типичными.
      В результате многие системы не соответствуют исходному, декларированному назначению и первоначальным спецификациям требований, часто не укладываются в согласованные графики и бюджет разработки. Имеющийся огромный опыт разных организаций, а также успешно реализованные планы и процессы разработки предшествующих ПС высокого качества, как правило, игнорируются, не обобщаются и не используются в качестве реальной базы для прогнозирования и планирования новых проектов. Вследствие этого во многих проектах информационных систем:
  • не полностью реализуются цели и требования заказчика к функциям и качеству комплексов программ;
  • низка достоверность первичных оценок необходимых бюджета, сроков и ресурсов для разработки ПС и БД при заключении контрактов, вследствие чего не выполняются требования заказчика;
  • плохо контролируется ход проекта, из-за чего велик риск отсутствия у конечного продукта заданного качества, нарушения начальных планов, невыполнения функциональных и экономических разделов контрактов на разработку ПС.
          Непрерывное повышение сложности функций, реализуемых программами в информационных системах, непосредственно приводит к увеличению их объема и трудоемкости создания. Соответственно изменениям сложности программ еще быстрее возрастает число выявляемых и остающихся в них дефектов и ошибок, что отражается на их качестве. Достаточно часто разрабатываются комплексы программ объемом в миллионы строк текста, которые принципиально не могут быть безошибочными. Поэтому проблема обнаружения и устранения ошибок обостряется по мере увеличения сложности задач, решаемых программами, и грозит катастрофами в ИС, выполняющих критические функции управления крупными, дорогими и особо важными объектами или процессами.
          По мере расширения применения ИС выделились области, в которых ошибки или недостаточное качество программ или данных могут нанести ущерб, значительно превышающий положительный эффект от их использования. В этих критических случаях недопустимы аномалии функционирования ИС при любых искажениях исходных данных, сбоях и частичных отказах аппаратуры и других нештатных ситуациях. Очень высокие требования к качеству программ для подобных систем иногда принципиально не могут быть выполнены из-за реальных ограничений всех видов ресурсов: бюджета, допустимой длительности разработки, характеристик вычислительных систем и квалификации специалистов. Применение таких систем при недостаточной их надежности и безопасности теряет смысл и может оказаться не только бесполезным, но и опасным. Это обусловило появление, развитие и активное применение за рубежом методов и средств автоматизации, обеспечивающих создание ПС с заданными высокими показателями качества при реальных ограничениях на использование ресурсов разработки.
          Наличие и рост ошибок и дефектов можно интерпретировать как увеличение "энтропии" программных комплексов при возрастании их сложности и объема. Жесткое регламентирование процессов разработки и всего жизненного цикла ПС, а также применение систем обеспечения качества направлены на сдерживание роста их "энтропии" и должны обеспечивать ее уменьшение. Однако отдельные некоординированные изменения программ могут приводить к резкому и даже катастрофическому возрастанию "энтропии", что может угрожать полным провалом проекта. Задача состоит в том, чтобы обеспечить требуемое качество функционирования ПС с учетом того, что некоторое неизвестное число ошибок и дефектов всегда остается в сложных комплексах программ и должно быть блокировано или сокращено их негативное воздействие до допустимого уровня.
          В связи с этим стратегическая задача в жизненном цикле современных информационных систем - обеспечение качества программных средств и баз данных. Увлечение многих отечественных заказчиков и разработчиков ПС и БД расширением номенклатуры и совершенствованием алгоритмов решения функциональных задач ИС вошло в противоречие с недостаточным качеством их практической реализации во всем многообразии внешних условий. Многочисленные провалы проектов ИС показали необходимость формализации взаимодействия и обеспечения взаимопонимания разработчиков с заказчиком или потенциальным пользователем создаваемого ПС с самого начала проекта с целью конкретизации функций и уточнения требований к качеству разрабатываемого ПС.
          Многие ошибки, обусловленные неопределенностью или некорректностью технических заданий и спецификаций требований, могут и должны быть выявлены на ранних стадиях проектирования, что способствует его ускорению и повышению качества. Тем самым должен обеспечиваться поступательный ход процесса разработки ПС без возвратов для уточнения или переделки компонентов или даже всего комплекса программ. Обширной практикой доказано, что обнаружение и устранение ошибок и дефектов в комплексах программ на начальных этапах проектирования в десятки и сотни раз быстрее и дешевле, чем в процессе завершения разработки и испытаний.
          Наибольшие достижения в развитии и применении современных методов и средств обеспечения качества крупномасштабных ПС сосредоточены в фирмах, работающих по заказам министерства обороны (МО) США. В 1987 г. в МО США была опубликована первая версия методологии обеспечения качества сложных программных средств СММ (Capability Maturity Model) - система и модель оценки зрелости применяемых технологических процессов для реализации жизненного цикла (ЖЦ) ПС. Она основана на использовании пяти уровней зрелости технологий, которые определяют достигаемое качество создаваемых на предприятии комплексов программ. Чем выше уровень зрелости, тем выше статус предприятия среди поставщиков, доверие к его продукции и ее конкурентоспособность. Эти уровни характеризуются степенью формализации, измерения и документирования процессов и продуктов ЖЦ ПС, широтой применения стандартов и инструментальных средств автоматизации работ, наличием и полнотой функций, систем обеспечения качества технологических процессов. Методология обеспечения качества ПС в дальнейшем активно развивалась и теперь поддержана рядом методических документов и инструментальных средств.
          Имеются случаи успешного и эффективного применения СММ за рубежом для ответственных, крупномасштабных проектов ПС, однако внедрение системы требует больших усилий и затрат. Это ограничило ее массовое использование для относительно простых и средней сложности проектов. Поэтому только несколько процентов компаний США достигло четвертого и пятого уровней зрелости применения СММ, а подавляющее большинство фирм оценивается вторым - третьим или даже первым уровнями. Опубликован еще ряд методологий (Trillium, Cleanroom, Scope*Procept), ориентированных на системное улучшение и совершенствование всех процессов ЖЦ ПС, которые идеологически близки к СММ и отличаются степенью детализации технологических процессов и используемыми инструментальными средствами.
          Трудности и длительность освоения методологий подобных СММ заставили МО США обратиться к поиску фрагментарных рецептов, способных значительно повысить качество ПС, путем применения ограниченной совокупности ключевых мероприятий по обеспечению качества программ и эффективному управлению проектами. Специальное подразделение экспертов SPMN (Software Program Managers Network) разработало стратегию использования критически важных практических приемов СВР (Critical Best Practices), которая относительно быстро, за несколько месяцев, позволяет предприятию достигнуть третьего - четвертого уровня зрелости СММ. Рекомендации по применению СВР простые и достаточно очевидные, и совместно они могут давать хороший эффект. Они предлагают:
                сосредоточиться на количественных параметрах завершения проекта;
                регулярно измерять продвижение к цели и активность реализации проекта;
                как можно раньше выявлять ошибки и логические неувязки;
                детально планировать работу;
                сводить к минимуму неконтролируемые изменения.
          Девять групп ключевых рекомендаций сосредоточены в следующих разделах: управление рисками; соглашения об интерфейсах; формальные проверки состояния проекта; управление проектами на основе метрик; контроль качества продукта на детальном уровне; доступность для специалистов информации о ходе проекта; отслеживание причин возникновения ошибок; конфигурационное управление; управление персоналом.
          В России методы и опыт создания сложных комплексов программ высокого качества в 60-80-е годы были сосредоточены на предприятиях оборонной промышленности. Сегодня этот опыт в значительной степени утрачен, и современные молодые специалисты должны вновь, почти "с нуля", создавать и осваивать проектирование крупномасштабных ПС с требуемым качеством. При этом многие вузы до сих пор при обучении студентов программированию ограничиваются только небольшими простейшими программками и не готовят системных аналитиков, архитекторов и менеджеров, специалистов по комплексированию и обеспечению качества крупных проектов ПС. Они не знают современных методов, технологий и международных стандартов, поддерживающих и регламентирующих жизненный цикл ПС, системы обеспечения качества, а также верификацию, тестирование и сертификацию сложного программного продукта. Это определяет низкую системотехническую квалификацию многих отечественных фирм, берущихся за создание крупных информационных систем. В результате многие проекты сложных ПС оказываются недостаточного качества и требуют длительной доработки для устранения множества системных и технических дефектов и ошибок.


    Основные понятия в области качества программных средств

          Имеется множество определений понятия качество, которые, по существу, сводятся к совокупности технических, технологических и эксплуатационных характеристик продукции или процессов, посредством которых они способны отвечать требованиям потребителя и удовлетворять его при применении. Остроумное определение в этой области приводится в [1]: "Высокое качество - это когда к разработчику возвращается заказчик, а не продукция этого разработчика". В соответствии со стандартами обеспечение качества - это "совокупность планируемых и систематически проводимых мероприятий, необходимых для уверенности в том, что продукция или процессы удовлетворяют определенным требованиям к качеству". Для реализации этого положения предназначены системы качества, каждая из которых включает "совокупность организационной структуры, ответственности, процедур, процессов и ресурсов, обеспечивающую осуществление общего руководства качеством" [2].
          Применительно к программным средствам система обеспечения качества - это совокупность методов и средств организации управляющих и исполнительных подразделений предприятия, участвующих в проектировании, разработке и сопровождении комплексов программ с целью придания им свойств, обеспечивающих удовлетворение определенных потребностей заказчиков и потребителей при минимальном или допустимом расходовании ресурсов. Для сложных ПС с высокими требованиями к качеству, проектирование, развитие и применение таких систем должны сопровождать весь жизненный цикл основной продукции - комплексы программ [3]. Различия фактических и требуемых показателей качества объектов или процессов квалифицируются как дефекты или ошибки и являются первичными стимулами для принятия и реализации решений по изменению измеряемых значений качества. Для этого необходимы экономические и моральные причины, а также воля руководителей, организация исполнителей, методы и технология для управления качеством и корректировки программ.
          Основой для формирования необходимых показателей ПС является анализ свойств, характеризующих качество его функционирования с учетом технологических возможностей разработчика. При этом под качеством функционирования понимается множество свойств, обусловливающих пригодность ПС обеспечивать надежное и своевременное представление требуемой информации потребителю для ее дальнейшего использования по назначению. Адекватный набор показателей качества программ зависит от функционального назначения и свойств каждого ПС. В соответствии с принципиальными задачами и особенностями ПС, необходимых для эффективного применения пользователями, при проектировании должны выбираться номенклатура и значения показателей качества, которые впоследствии отражаются в технической документации и в спецификации требований на конечный продукт.
          Каждый критерий может использоваться, если определена его метрика и указан способ ее измерения и сопоставления с требующимся значением. Для конкретных ПС доминирующие критерии качества выделяются и определяются при системном проектировании требованиями ТЗ и его функциональным назначением. Программы для ЭВМ как объекты проектирования, разработки, испытаний и оценки качества характеризуются следующими обобщенными показателями:
  • проблемно ориентированной областью применения, техническим и социальным назначением программного комплекса;
  • конкретным типом решаемых функциональных задач с достаточно определенной областью применения соответствующими пользователями;
  • объемом и сложностью совокупности программ и базы данных, решающей единую целевую задачу данного типа;
  • необходимыми составом и требуемыми значениями показателей качества функционирования программ и величиной допустимого ущерба из-за недостаточного их качества;
  • степенью связи решаемых задач с реальным масштабом времени или допустимой длительностью ожидания результатов решения задач;
  • прогнозируемыми значениями длительности эксплуатации и перспективой создания множества версий комплекса программ;
  • предполагаемым тиражом производства и применения комплекса программ;
  • степенью необходимой документированности программ.
          На практике важно оценивать качество программ не только в завершенном виде, но и в процессе их проектирования, разработки и сопровождения. Качество этого процесса в значительной степени определяется совокупными затратами, необходимыми для достижения заданного качества конечного продукта - программного средства. В результате достигаемое качество ПС определяется качеством методов и инструментальных средств, применяемых для обеспечения всего их жизненного цикла.
          Качество ПС в среде пользователей может отличаться от качества в среде разработчиков, поскольку некоторые функции могут быть невидимы пользователю или не использоваться им. Пользователь оценивает только те атрибуты ПС, которые видимы и полезны ему в процессе реального применения. Поэтому к дефектам комплексов программ следует относить не только прямые потери при их применении пользователями, но и избыточные свойства, которые не нужны пользователям и потребовали дополнительных затрат ресурсов. Иногда атрибуты ПС, специфицированные пользователем на этапе анализа требований, впоследствии не удовлетворяют его надежды при применении продукта вследствие изменения взглядов и понятий, а также из-за трудностей специфицирования неявных потребностей в начале проектирования.
          Качество изменяется в течение ЖЦ ПС, т. е. требуемое качество в начале ЖЦ почти всегда отличается от фактически достигнутого при завершении проекта и качества поставляемого продукта. Кроме того, оценки показателей качества могут быть субъективными и отражать различные точки зрения специалистов. Необходимо уметь определять и примирять различные представления о качестве и их изменения, чтобы управлять качеством должным образом на каждом этапе ЖЦ ПС.
          Для различных стадий ЖЦ международными стандартами определены следующие представления о качестве программного средства:
          целевое качество - необходимое и достаточное качество, которое отражает реальные потребности заказчика или пользователя;
          требуемое качество продукта - это показатели, фактически установленные в спецификации требований к качеству;
          качество проекта - качество, представленное в основных частях или в структуре проекта, например, в архитектуре ПС, структуре программ и стратегии проектирования интерфейсов пользователей;
          оценочное (или прогнозируемое) качество продукта - характеристики, оцененные или предсказанные для ПС на каждой стадии ЖЦ и базирующиеся на качестве процессов и технологии его обеспечения;
          качество поставленного продукта - качество готового к применению ПС, обычно прошедшего испытания в моделированной среде с имитированными данными;
          качество в использовании - это качество системы, содержащей ПС, которое воспринимается пользователями и измеряется скорее в терминах результатов использования ПС, чем свойств самого комплекса программ.
          Комбинированный результат характеристик качества ПC для конечного пользователя определен как качество в использовании. Стандарты описывают метрики качества ПС на основе их внутренних атрибутов и внешнего поведения вычислительной системы. Эти типы метрик применимы при определении требований к качеству и целей проекта ПС, включая промежуточные продукты.
          Общее представление о качестве ПС стандартами рекомендуется отражать тремя взаимодействующими и взаимозависимыми группами показателей, характеризующими:
          внутреннее качество, проявляющееся в процессе разработки;
          внешнее качество, заданное требованиями заказчика;
          качество при использовании в процессе нормальной эксплуатации и результативностью достижения потребностей пользователей с учетом затрат.
          Особым показателем качества ПС является стоимость или затраты на приобретение, создание, модификацию и эксплуатацию комплексов программ. Эта характеристика непосредственно влияет практически на остальные показатели качества и определяет рентабельность покупки или создания конкретного продукта. Это означает, что качество является относительным понятием, которое зависит от субъектов, осуществляющих его оценку с позиции эффективности использования, а также от состояния рынка соответствующей продукции, ее производителей и технологий. Ориентация на потребителя подразумевает анализ его нужд и определение возможностей рынка удовлетворить эти потребности. При этом следует учитывать рыночную конкуренцию двух видов: между поставщиками готовых к применению программных средств с фиксированным качеством и разработчиками, обеспечивающими жизненный цикл ПС или их существенную часть с показателями качества, необходимыми заказчику. В последнем случае на требуемые показатели качества могут оказывать влияние не только заказчик и непосредственные пользователи, но и различные посредники, организационные и торговые структуры, а также исполнители проекта.
          Важнейший фактор конкурентоспособности ПС - соотношение между ценностью имеющегося или предполагаемого продукта с позиции его применения и стоимостью его в условиях реального рынка [4, 5]. Для удовлетворения потребностей пользователей необходимы их затраты на приобретение готового или на заказ разработки и обеспечения жизненного цикла соответствующего продукта. При этом потенциальному потребителю необходимо сравнивать соотношения предлагаемых показателей качества и стоимости соответствующего продукта для выбора рентабельного поставщика или разработчика. Возможны ситуации, когда имеются варианты выбора поставщиков или разработчиков ПС с достаточно подходящими значениями качества и различной стоимостью, которая определяется конъюнктурой рынка, а также ситуации одного реального поставщика, который может быть даже не полностью удовлетворяет заказчика качеством, но диктует стоимость. В последнем случае особое значение имеет технико-экономическое обоснование и системное проектирование всего жизненного цикла ПС. Поэтому особое внимание следует уделять системному проектированию, разработке технического задания и спецификаций, чтобы выбрать первичный набор показателей качества, который в течение ЖЦ следует конкретизировать и развивать. Рыночные механизмы, регулирующие взаимосвязь функциональных показателей качества комплексов программ и их стоимость, практически не изучены, сильно зависят от быстро изменяющегося состояния рынка в конкретных областях их применения.



  • СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
         1. Крайер Э. Успешная сертификация на соответствие нормам ИСО серии 9000: Пер. с нем. - М.: ИздАТ, 1999.
         2. Сборник действующих международных стандартов ИСО серии 9000. Т. 1, 2, 3. - М.: ВНИИКИ, 1998.
         3. Encyclopedia of Software Engineering. Vol.1 A-N; Vol. 2 O-Z. Editor - In - Chief John J. Marciniak. John Wiley & Sons.Inc. 1995.
         4. Глудкин О.П. и др. Всеобщее управление качеством: Учебник для вузов. - М.: Радио и связь, 1999.
         5. Гличев А.В. Основы управления качеством продукции. - М.: МАИ, 1998.


    Окончание следует

    Обзор подготовлен по материалам издательства Стандарты и Качество



    Подготовлено при поддержке:



    Следующая статья в этом разделе: Проблемы обеспечения качества сложных программных средств (часть 2)

    Rambler's Top100
    Rambler's Top100 Яндекс цитирования