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

В Толковом словаре по информатике В.И. Першикова и ИМ. Савинкова [52] понятие стандартизацияопределяется как принятие соглашения по спецификации, производству и исполь­зованию аппаратных и программных средств вычислительной тех­ники; установление и применение стандартов, норм, правил и т.п. Стандарты имеют большое значение — они обеспечивают возможность разработчикам программного обеспечения использовать данные и программы других разработчиков, осуществлять экспорт/импорт данных.

Такие стандарты регламентируют взаимодействие между раз­личными программами. Для этого предназначены стандарты меж­программного интерфейса, например ОLE (Оbject Linking and Embedding — связывание и встраивание объектов). Без таких стандартов программные продукты были бы «закрытыми» друг для друга.

Стандарты занимают все более значительное место в направ­лении развития индустрии информационных технологий. Более 250 подкомитетов в официальных организациях по стандартиза­ции работают над стандартами в области информационных тех­нологий. Более 1000 стандартов или уже приняты этими организациями, или находятся в процессе разработки. Процесс стан­дартизации информационных технологий далеко не закончен (да, по нашему мнению, вряд ли когда-либо будет закончен, так как область информационных технологий постоянно динамично развивается).

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

С точки зрения пользователя, все многообразие ПО должно управляться единообразно. Должна быть единообразная нави­гация — перемещение по программе, единообразные органы уп­равления ПО и единая реакция программного обеспечения на действия пользователя. Для этого разработаны стандарты на пользовательский интерфейс — GUI(Graphical User Interfase). Все это регламентируется стандартами, действующими в сфере информационных технологий.

Необходимость стандартизации разработки программного обеспечения наиболее удачно описана во введении в стандарт ISO/IEC 12207: «Программное обеспечение является неотъемлемой частью информационных технологий и традиционных систем, таких, как транспортные, военные, медицинские и финансовые' Имеется множество разнообразных стандартов, процедур, мето­дов, инструментальных средств и типов операционной среды для разработки и управления программным обеспечением. Это раз­нообразие создает трудности при проектировании и управлении программным обеспечением, особенно при объединении про­граммных продуктов и сервисных программ. Стратегия разра­ботки программного обеспечения требует перехода от этого мно­жества к общему порядку, который позволит специалистам, прак­тикующимся в программном обеспечении, «говорить на одном языке» при разработке и управлении программным обеспечени­ем. Этот международный стандарт обеспечивает такой общий порядок».

Попробуем внести порядок в многообразие стандартов, дей­ствующих в сфере ИТ, и классифицировать их (рис. 1.3).

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

Стандарт «де-факто» термин, обозначающий продукт ка­кого-либо поставщика, который захватил большую долю рынка и который другие поставщики стремятся эмулировать, копиро­вать или использовать для того, чтобы захватить свою часть рынка.

Одна из главных причин значимости современной програм­мы стандартизации — осознание опасности злоупотребления стандартами «де-факто».В 60-е и 70-е годы XX века создание стандартов «де-факто»ставило пользователей в зависимое от про­изводителей положение при использовании основных средств об­работки данных и телекоммуникаций. Важный аспект сегодняш­ней работы по стандартизации — преодоление этой зависимости через продвижение стандартных интерфейсов. Долгое время такими стандартами были SQL (Structured Query Language) и язык диаграмм Д. Росса SADT (Structured Analysis and Design Technique).

 

 

               
 
 
       

 

 

 


Стандарт «де-юре» создается формально признанной стандартизующей организацией. Он разрабатывается при соблюдении правил консенсуса в процессе открытой дискуссии, в которой каждый| имеет шанс принять участие. Ни одна группа не может действовать независимо, создавая стандарты для промышленности. Если какая-либо группа поставщиков создаст стандарт, не учитывающий требования пользователей, она потерпит неудачу. То же самое проис­ходит, если пользователи создают стандарт, с которым не могут или не будут соглашаться поставщики, — этот стандарт также не будет успешным. Стандарты «де-юре» не могут быть изменены, не пройдя процесс согласования под контролем организации, разра­батывающей стандарты. Стандарты ОSI (Open System Interconnection reference model), Ethernet, POSIX, SQL и большинство стандартов языков — примеры такого рода стандартов.

В качестве примера перехода стандарта «де-факто» в стандарт «де-юре» рассмотрим историю развития и стандартизации языка SQL.

Работы по созданию языка SQL были начаты в 70-х годах прошлого столетия в исследовательских лабораториях компании IВМ. В настоящее время он стал одним из главных стандартов в области информационных систем и обеспечил технологию базо­вого языка для целого поколения СУБД, основанных на реляци­онной модели. Несмотря на то, что он был коммерчески реализо­ван в начале 80-х годов лишь для небольшой группы программ­ных продуктов, SQL, бесспорно, получил признание с принятием АNSI и ISOстандарта SQL-86. Позднее, при подготовке стан­дарта SQL-89, в язык был включен ряд дополнительных возмож­ностей.

Истоки SQL следует отнести к периоду рождения реляцион­ной модели данных (описанной в статье Э.Ф. Кодда) [65]. По­скольку в течение нескольких последующих лет не появилось ни­каких языков, подобных SQL, в исследовательских проектах, ини­циированных компанией 1ВМпосле публикации статьи Э.Ф. Кодда, придавалось особое значение необходимости создания языков интерфейса создаваемых СУБД для проверки возможнос­тей реляционной модели. Историю разработки языка SQL иллю­стрирует рис. 1.4.

Ожидаемое

Принятие SQL3

Работа над

SQL 3

 
 


Работа над

SQL 2

(SQL. 92)


SQL -89

SQL -86

Работа комитета

по стандартами

над SQL


Появление

Коммерческих

SQL -продуктов

 


Появление

реляционной Прототипы, основанные наSQL

модели

 
 


1970 1975 1980 1985 1990 1995 2000

Рис. 1.4.Схема истории и истоков SQL

 

В исследовательских лабораториях IBM в начале 70-х годов 20 века одновременно с работой над будущим языком SQL раз­рабатывались и другие проекты по созданию и эксперименталь­ной реализации реляционных языков. Вероятно, наиболее извес­тным из них является созданный М. Злуфом из лаборатории IВМ в Йорктаун-Хейтс примерно в одно и то же время с SEQUEL (ранней версией SQL) реляционный язык Query-By-Example (QВЕ). Этот язык используется в настоящее время во многих коммерчес­ких программных продуктах наряду с SQL.

В 1974 г. Дональд Д. Чамберлин из Исследовательской лабо­ратории IВМ в Сан-Хосе предложил спецификации реляционно­го языка, названного SEQUEL (Structured English QUEry Language). Пересмотренная версия этого языка (SEQUEL /2) была разработана в 1976—1977 годах, и он приобрел свое окончатель­ное название — SQL (Structured Query Language).

Еще перед тем, как коммерческие продукты IВМ в начале 80-х годов 20 века вышли на рынок программного обеспечения, ком­пания Relation Software Inc. (называющаяся теперь Огас1е Corporation) объявила о выпуске реляционной СУБД, основан­ной на языке SQL. Эта система в результате ее эволюции стала одной из доминирующих коммерческих систем и носит название ORACLE.

Продукт ORACLE с его языком SQL столкнулся с конкурен­цией в сфере средних ЭВМ и мини-ЭВМ со стороны продуктов ряда других разработчиков, в частности СУБД Ingres с языком QUEL компании Relation Technology Inc., а также продукта Rdb/ VMS с языком RDML компании Digital Equipment Corporation.

Одной из причин преуспевания SQL послужило формирование Американским национальным институтом стандартов (American National Standarts Institute, ANSI) комитета ХЗН2, учрежденного для разработки стандартов языков баз данных. Представитель IВМ предложил использовать в качестве предварительных специфика­ций реляционного языка результаты ранее проведенной IВМ ра­боты над SEQUEL/2, и разработчики стандарта приступили к ра­боте. Документ, озаглавленный «SQL», представлял собой по боль­шей части трактат о различных формах SQL , используемых в коммерческих программных продуктах.

Международная организация по стандартизации (International Standarts Organization, ISO) в рамках технического комитета ТС97 (называемого теперь как ISO/IЕС JTC1) также вела работу по

созданию стандарта языков реляционных баз данных. В середине 80-х годов как АNSI, так и ISO одобрили стандарты SQL (ANSI — в 1986 г., а ISO — в начале 1987 г.).

Первый стандарт SQL в связи со способом его разработки был весьма неполным в части функциональных возможностей систем ,и'| данных, и многие из поставщиков продолжали вносить в свои Программные продукты большой ряд расширений к стандарту. В ЧК9 I. была принята пересмотренная версия стандарта SQL, которая отличалась от стандарта 1986 г. главным образом именно возможностями поддержки целостности по ссылкам.

Однако еще до 1989 г. как в ANSI, так и в ISO началась работа по радикальным расширениям SQL. Эта работа, первоначально днем инфицированная как «SQL2», началась в 1987 г., и ее результаты были спустя пять лет приняты в качестве стандарта SQL -92.

Добавляет путаницы еще и то обстоятельство, что работа над

SQL 2 перекрывалась работой над SQL З, новой версией стандар­та SQL, которая еще до сих пор находится в стадии разработки. Работа над SQL 3 началась еще в 1990 г. параллельно с SQL2, глав­ным образом как над «запасным резервуаром» для возможнос­тей, которые предполагалось не включать по тем или иным при­чинам в SQL 2. SQL З включает объектно-ориентированные рас­ширения языка, а также дополнительные реляционные возмож­ности, которым не нашлось места в SQL 2 [53].

Проиллюстрируем на рис. 1.5 с привязкой к оси времени про­цесс разработки различных стандартов SQL.

 

Работа над SQL3

Работа над SQL – 92 (SQL2) Значительные

Изменения стандарта

(SQL -92)

 

Начальное Первый стандарт SQL Добавлена целостность

Предложение (SQL -86) по ссылкам (SQL - 89)

 
 

 


1984 1986 1989 1992

 

 

Рис. 1.5. Схема истории стандартизации SQL

 

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

Но рынок живет по несколько иным законам. Первый подход обладает инертностью, проблема уже назрела, ее надо решать, я неизвестно, когда соберутся эксперты и разработают необходимый стандарт. Во втором случае компании — разработчики ПО разрабатывают каждая свое решение, и самое популярное, массовое с точки зрения частоты использования решение обретает статус стандарта (необязательно юридически). Так, SQL стал стан­дартом языка обращения к базам данных, что называется «де-факто», хотя потом статус стандарта был закреплен юридически.

Недостаток этого подхода состоит в том, что стандартом ста­новится не самое сильное, а самое массовое коммерческое решение.

В качестве еще одного примера появления стандарта можно привести появление ныне популярного UML — Unified Modeling Language. Основные разработки по методам объектно-ориенти­рованного анализа и проектирования появились между 1988 и 1992 гг. К 1994 г. было большое количество неформальных лиде­ров разработчиков-практиков (около полутора десятков), кото­рые продвигали свои методологии. Все их методы были схожи, при этом зачастую отличия между ними заключались во второстепен­ных деталях. Назревал разговор о стандартизации. Команда из ОМG пыталась рассмотреть проблему стандартизации, но в ответ получила открытое письмо с протестом от всех авторов. В 1996 г. три ведущих специалиста в области объектно-ориентированного анализа и проектирования Джеймс Рамбо ( James Rumbaugh), Гради Буч (Grady Booch), Ивар Якобсон (Ivar Jacobson) объедини­лись, и появился на свет Унифицированный метод версии 0.8, в 1996 г. «трое друзей» работали над своим методом, который полу­чил название Unified Modeling Language. В январе 1997 г. различ­ные организации представили свои предложения по стандартиза­ции методов, предусматривающие в первую очередь возможность обмена информацией между различными моделями. В результате сейчас имеется единственное предложение — стандарт UML.