Стандарты программной инженерии
Существует определенное количество организаций, профилирующими направлениями деятельности которых есть разработка и сопровождение стандартов. В зависимости от области применения стандарт может иметь статус международного, ведомственного или стандарта предприятия. Главным органом установления международных стандартов является международная организация по стандартизации (The International Standards Organization или сокращенно ISO), которая работает в сотрудничестве с международной электротехнической комиссией (The International Electrotechnical Commission или сокращенно IEC). Все утвержденные ими совместно стандарты имеют идентификатор, который состоит из префикса ISO/IEC, серийного номера стандарта и даты выпуска, например: ISO/IEC 12207: 1995 – 08–11.
Каждый стандарт ISO/IEC имеет также название, которое при ссылках указывается после идентификатор. ISO/IEC имеет десятки технических профильных комитетов, в частности технический комитет "Информационные технологии", одним из технических подкомитетов которого является подкомитет по программной инженерии. Существуют также международные объединения по отдельным проблемным областям, которые выпускают стандарты для соответствующих приложений. Каждое цивилизованное государство имеет свои национальные органы стандартизации.
Большинство национальных комитетов по стандартизации признает стандарты ISO/IEC и входит в ее состав, и проводят для стандартов ISO/IEC процедуру гармонизации, т.е. их приспособление к национальным условиям и особенностям применения ( как например, национальные алфавиты, метрические системы, валютные знаки и т.п.).
Главным источником стандартов является профессиональные объединения, в частности для программной инженерии – IEEE Computer Society. На данное время существует свыше 300 стандартов IEEE для программной инженерии, значительная часть которых принимается во внимание широким кругом разработчиков программных систем. Практически большинство стандартов программной инженерии исторически появляются как стандарты IEEE, а со временем, после испытания опытом использования, вносятся как кандидаты в стандарты ISO/IEC.
Процедура утверждения стандартов ISO довольно сложная. Имеется несколько стадий прохождения кандидата в стандарт, для любой из них предусмотрена рассылка предложений на экспертизу всем национальным комитетам, сбор замечаний, их обработка и голосование для создания новой версии.
Эта процедура для некоторых стандартов может длиться годами относительно официальных стандартов или стандартов де–юре. Бюрократизированная процедура приводит к тому, что технически доведенные до кондиции стандарты могут за время утратить свою значимость для индустрии программного обеспечения и соответствие действующему уровню технологии.
Тем временем индустрия создает так называемые "стандарты де–факто", которые фактически находят массовое использование независимо от того, утверждены они компетентными плановыми органами или нет, так как они являются наиболее актуальными в индустрии программных систем.
Термином "стандарт де–факто" обозначаются спецификации на проект стандарта (или внутренний стандарт), которые публикуются некоторым консорциумом (группой учреждений, которые официально работают для общей цели стандартизации) или фирмой, получившие общее одобрение от других разработчиков, и этот проект стал восприниматься как необходимое современное направление технологии.
Например, проектные решения консорциума Object Management Group (OMG) по управлению транзакциями стали стандартом де–факто и утверждены комитетом ISO, модель UML фирмы Rational Rose определена как стандарт моделирования артефактов программной инженерии, язык JAVA – претендент на стандарт, который активно используется на рынке, и др.
Стандарты де–факто, благодаря своему соответствию актуальным потребностям рынка, распространяются и внедряются довольно быстро, потому что их отработка и апробация проходит внутри групп, которые их создают, а публикация этих стандартов обозначает, как "зрелые" решения.
Учитывая вышесказанное, влиятельные международные организации и, в первую очередь ISO, которые являются разработчиками стандартов де–юре, признали, что они не являются монопольными и компетентными источниками всех стандартов и поэтому ввели процесс преобразования стандартов де–факто на стандарты де–юре, которые в этом случае получили название общедоступной спецификации (Public–Available Specifications – сокращенно PAS).
Объекты стандартизации. Согласно эталонной модели программной инженерии, в ней определены такие главные элементы :
– процессы разработки ПО;
– продукты разработки;
– ресурсы, которые используют процессы для создания программного продукта.
Важным элементом моделирования проблем предметной области является клиент (заказчик), который заказывает программную систему. Требования заказчика определяют состав и качество указанных элементов. Объектами стандартизации любого стандарта в программной инженерии являются аспекты указанных выше элементов или их соединений.
Больше всего стандартов существует для разных видов процессов. Так в стандарте ISO/SEC 12207 базовых процессов – 42, а всего процессов в нем более 200. Надо сказать при этом, что усовершенствование процессов, как правило, ведет к усовершенствованию создаваемых продуктов и эффективному использованию ресурсов.
Определен детальный перечень процессов и действий, которые составляют процессы, для всех этапов жизненного цикла разработки и большинства аспектов рассмотрения указанных этапов. Наибольшего успеха и широкого использования приобрел стандарт [2] для процессов жизненного цикла программного обеспечения. Этот стандарт стал определенным каркасом для рассмотрения всех проблем программной инженерии.
Первым измерением классификации является отношение стандарта к продукту, процессу, ресурсу или взаимодействию с заказчиком. В [3] предложено второе измерение классификации стандартов по уровням обобщения регламентаций, которые подаются в стандарте.
Отдельные группы разработчиков стандарта в программной инженерии создают:
– терминологию,
– общие рекомендации,
– принципы действий,
– стандартизированные элементы,
– рекомендации для прикладных применений,
– рекомендации относительно инструментов и методов разработки (например, классификация аномалий выполнения),
– планы управления качеством,
– планы валидации и верификации.
В соответствии с предложенной классификацией ниже приведены наиболее значимые и существующие стандарты программной инженерии.
ISO/IEC 12207:1996 Information Technology – Software life–cycle processes;
12207/FPDAM 1.2 – Software Engineering – Life Cycle Processes // ISO/IEC JTC1/SC7 N2413, Software & System Engineering Secretariat, Canada. – 2001. – 62p.
DTR 15271 Information Technology – Guide for ISO/IEC 12207 (Software Life Cycle Processes);
IEEE/IEA Std. 12207.1:1997 Software Life Cycle processes – Life Cycle data;
ISO/IEC JTC1/SC7 N2172a (Draft ISO/IEC TR 16326:1999). Software Engineering – Guide for the Application of ISO/IEC 12207 to Project Management;
ISO/IEC TR 15504 Information Technology – Software Process Assessment Part 1 – Part 9;
IEEE Std. 1058:1998 IEEE Standard for Software Project Management Plans
IEEE Std. 1044:1993 IEEE Standard Classification for Software Anomalies
IEEE Std. 1044–1:1995 IEEE Guide to Classification for Software Anomalies
ISO/IEC 15026:1998 Information Technology – System and Software Integrity Levels;
ISO/IEC JTC1/SC7 N2207:1999 IEC 60300: Dependability management – Part 3–13: Application Guide – Project risk management;
ISO/IEC JTC1/SC7 N2198:1999 2nd Working Draft On Risk Management Terminology и др.