Вы находитесь на странице: 1из 27

Лекция 1

ВВЕДЕНИЕ
Основной движущей силой современного этапа развития
информационных технологий (ИТ) безусловно являются впечатляющие
успехи в области микроэлектроники, которые позволили не только выйти на
новые уровни производительности и создавать хранилища данных объемом в
миллиарды терабайт, но и решить еще более сложную задачу – многократно
уменьшить стоимость средств обработки и хранения информации, что
привело к беспрецедентному расширению сферы применения ИТ, которые
начали активно применяться в таких областях как медицина, предметы
домашнего обиходы, транспорт и многих других, где ранее использование
ИТ было невозможно по чисто экономическим соображениям. Другим
важным источником развития ИТ является наблюдаемый в настоящее время
прогресс с области телекоммуникационных технологий. В настоящее время
подавляющее большинство источников и средств обработки информации
оказываются связаны между собой каналами связи, при этом все чаще
становятся доступными широкополосные каналы, которы позволяют
передавать мультимедийный трафик. Результатом этого является появление
огромного объема данных, многие из которых требуется обрабатывать в
реальном времени, что приводит к необходимости применять все более
мощные информационные системы (ИС). Эту проблему называют проблемой
больших данных (Big Data).
Современные ИС становятся все более сложными, при этом постоянно
повышаются требования заказчиков в плане уменьшения стоимости систем,
сокращения сроков разработки, требований к безошибочной работе.
Увеличение сложности создаваемых ИС делает практически
невозможным для одного или нескольких ведущих разработчиков знать все
нюансы создаваемой ИС. Крупные современные ИС представляют собой
многоуровневые системы и разрабатываются крупными коллективами
разработчиков, которые используют промышленные методы проектирования.
В последнее время все большую популярность приобретают архитектурно-
ориентированные подходы к проектированию ИС, в соответствии с которым
пристальное внимание уделяется этапу архитектурного проектирования.
Под архитектурным проектированием при этом понимается
проектирование ИС на уровне блоков. При использовании архитектурного
подхода облегчает решение следующих задач.
1. Архитектура может рассматриваться как средство общения между
членами команды разработчиков и заказчиками ИС, в число которых могут
входить специалисты в самых разных предметных областях.
2. Современные средства проектирования ИС позволяют генерировать
код по архитектурному описанию.
3. Архитектурное описание или его элементы могут использоваться для
построения нескольких однотипных ИС.
При использовании архитектурно-ориентиронанных подходов к
проектированию ИС повышается роль ИТ архитектора и его команды.
Следует заметить, что работа ИТ архитектора является очень интересной,
престижной и востребованной на рынке труда, но требует обширных знаний
в области ИТ и опыта работы.
В Российской высшей школе подготовка дипломированных
специалистов – профессионалов в области ИТ осуществляется по ряду
направлений, из которых наиболее глубоко реализуется по направлению
230400 – «Информационные системы и технологии». Студентам,
обучающимся по этому направлению, в основном и предназначается данный
учебник. Учебник соответствует программе базовой дисциплины
«Информационные системы и технологии» Федерального государственного
образовательного стандарта III-го поколения и включает в себя 12 глав
основного материала. В отличие от первого издания материал второго
издания существенно переработан, в частности добавлены главы с описанием
архитектурного процесса проектирования.
Данный учебник может использоваться в качестве основной литературы
по курсу Архитектура ИС, который может читаться на 6-7 семестрах
обучения. Предполагается, что студенты прослушали курсы Объектно-
ориентированное программирование и База данных. Знакомство с курсом
Сети ЭВМ желательно, но не обязательно.
Первая глава посвящена общей характеристике архитектурного подхода
к ИС. Приведены основные понятия и определения, дана характеристика
информационной системы, как объекта архитектуры, показана взаимосвязь
архитектуры и процесса проектирования ИС, последовательно раскрываются
эволюция платформенных архитектур ИС.
Вторая глава посвящена архитектурным стилям, используемым в ИС.
Приводится понятие архитектурного стиля и классификация архитектурных
стилей. Последовательно рассматриваются различные архитектурные стили:
потоки данных, вызов с возвратом, независимые компоненты,
централизованные данные, системы, работающие по принципу виртуальной
машины.
В третьей главе рассматриваются архитектура и организация
распределенных систем.
В четвертой главе достаточно подробно рассматриваются вопросы
управления требованиями к ИС и инструментальные средства для работы с
требованиями.
Ключевыми являются пятая, шестая и седьмая главы. В пятой главе
рассматриваются современные проблемы проектирования ИС, в шестой
главе рассматриваются вопросы архитектурного проектировании ИС,
подробно рассматриваются задачи, решаемые ИТ архитектором. В седьмой
главе рассматриваются вопросы создания архитектурного описания.
В восьмой главе детально раскрываются паттерны, антипаттерны.
В девятой главе описываются современные фреймворки, определяется
их роль в в архитектуре ИС, рассматриваются примеры использования.
В десятой главе раскрываются компонентные технологии ИС.
Определяются основные понятия компонента, компонентных технологий.
Дается подробная характеристика технологий, основанных на объектной
модели компонентов. Значительное внимание уделено широко используемым
технологиям CORBA и Enterprise JavaBeans (EJB) .NET..
В одиннадцатой главе авторами приводится анализ сервисно-
ориентированных технологий реализации ИС, в состав которых включены:
микровервисные архитектуры и Web-сервисы. Рассматривается архитектура
REST, язык XML при работе с Web-сервисами, WSDL описание, UDDI
реестр, бизнес-реестр ebXML, спецификации WS-*.
В двенадцатой главе рассматриваются вопросы интеграции приложений.
Последовательно рассмотрены общие принципы организации
взаимодействий в ИС, системы, порталы и портлеты, корпоративные
сервисные шины, сервисно-ориентированная архитектура и сервисно-
ориентированная организация.
Методически учебник включает контрольные вопросы по каждой главе,
что даст возможность студенту проверить качество усвоения материала..
Авторы надеются, что данный учебник будет способствовать как
повышению качества подготовки бакалавров, а также будет полезен всем
читателям, интересующимся современным состоянием и перспективами
развития ИС и ИТ.
Глава 1. ОБЩИЕ СВЕДЕНИЯ ОБ ИНФОРМАЦИОННЫХ
СИСТЕМАХ

1.1. Понятие ИС

Современные информационные технологии (ИТ) находят все более


широкое применение в самых разных аспектах человеческой деятельности,
при этом сфера их применения постоянно расширяется. Идет интенсивный
процесс интеграции информационных и телекоммуникационных технологий
и уже сегодня можно говорить о информационно-телекоммуникационных
технологиях как единым целом. Без преувеличения можно сказать, что
подавляющее население Земли так или иначе связано с ИТ, по крайней мере,
в качестве пользователей.
В настоящее время не существует единого устоявшегося и
общепринятого определения понятия «информационная система» (ИС).
Вызывает сомнение, что определение, удовлетворяющее все
заинтересованные стороны, когда-нибудь появится. Дело в том, что
современные ИС обычно имеют сложную структуру и ее адекватное
описание возможно только при использовании нескольких точек зрения.
Понятие ИС можно определить по-разному, в зависимости от того,
чьими глазами на них смотреть. В самом общем виде ИС можно определить
как систему, созданную на основе информационных или информационно-
телекоммуникационных технологий. Практическая полезность такого
определения достаточно сомнительная, поскольку требуется определить
понятия информационные и информационно-телекоммуникационные
технологии, поэтому обычно пользуются другими определениями.
В качестве официального определения данного понятия можно
рассматривать определение, которое дает Федеральный закон Российской
Федерации. В законе Российской Федерации «Об информации,
информационных технологиях и о защите информации» [1], в котором под
ИТ понимаются процессы, методы поиска, сбора, хранения, обработки,
предоставления, распространения информации и способы
осуществления таких процессов и методов, а ИС определяется как
совокупность содержащейся в базах данных информации и
обеспечивающих ее обработку информационных технологий и
технических средств. Это определение является достаточно широким, и, в
большей степени, отражает пользовательский взгляд на ИС, причем
обращает на себя внимание тот факт, что во главу угла ставится понятие базы
данных.
Достаточно хорошо известно еще одно определение, в соответствии с
которым, в понятие информационной системы помимо данных, программ,
аппаратного обеспечения и людских ресурсов также включаются
телекоммуникационное оборудование, языковые средства и
информационные ресурсы, которые в совокупности образуют систему,
обеспечивающую «поддержку динамической информационной модели
некоторой части реального мира для удовлетворения информационных
потребностей пользователей» [2].
Более узкое понимание информационной системы ограничивает её
состав данными, программами и аппаратным обеспечением, так, например,
ГОСТ РВ 51987 [3] подразумевает под ИС «автоматизированную систему,
результатом функционирования которой является представление выходной
информации для последующего использования».
Кроме приведенных выше определений в сети можно найти и другие
определения. В настоящем учебнике в качестве базового принимается
определение [1], при этом в качестве основного предмета рассмотрения
выступает программная компонента ИС. Аппаратные средства, системное
программное обеспечение (ПО) и телекоммуникационная компонента не
рассматриваются, поскольку практически все современные ИС являются
преимущественно программными системами (software-intensive systems),
которые строятся на базе готовых аппаратных средств, и именно
программная компонента определяет их функциональность, а разработка в
основном сводится к разработке прикладного программного обеспечения
(ПО) [5, 6].
1.2. Краткая история развития информационных и программных
систем
Развитие ИТ и, в частности ИС, самым тесным образом связано с
развитием вычислительной техники. Начало современного этапа развития
обычно связывают с появлением цифровых вычислительных машин (ЦВМ),
в основу построения которых положена машина с хранимой программой
(машина фон Неймана). Подобные машины появились еще в 40-е годы
прошлого века. В соответствии с общепринятой методикой оценки развития
вычислительной техники, ЦВМ принято разделять на поколения. В основу
разделения положена используемая элементная база.
К первому поколению относят ламповые компьютеры, ко второму —
компьютеры, использующие в качестве элементной базы транзисторы и
магнитные сердечники, к третьему — компьютеры на интегральных схемах,
а к четвёртому — компьютеры на базе микропроцессоров. Вопрос о том, что
такое компьютеры пятого поколения до сих пор не имеет однозначного
ответа. Одним и первых проектов компьютеров пятого поколения был
японский национальный проект, который был анонсирован в середине 80–х
годов прошлого века. Авторы этого проекта считали, что компьютеры пятого
поколения – это компьютеры, построенные с использованием сверхбольших
интегральных схем (СБИС), ориентированные на работу со знаниями.
Предполагалось, что компьютеры пятого поколения будут иметь не-фон
Неймановскую, а основным языком программирования станет язык Пролог.
В целом, проект оказался неудачным. Развитие ИТ не пошло путем создания
специализированных процессоров, язык Пролог не получил широкого
применения. После неудачи японского проекта машин пятого поколения
стало ясно, что в обозримом будущем развитие ИТ пойдет путем
стандартизации архитектур процессоров, наращивания их мощности за счет
помещения нескольких процессорных ядер на кристалл. Все прочие задачи
решаются на программном уровне, хотя в последние годы возрос интерес к
аппаратным решениям, посредством использования технологий система на
кристалле.
По мере развития ИТ, наблюдалась устойчивая тенденция роста доли
программного компонента в составе ИС. В компьютерах первого и отчасти
второго поколения программирование осуществлялось в машинных кодах, а
затем на ассемблере. Компьютеров было очень мало, и они были очень
дороги, использовались преимущественно в военных и в научных целях.
Компьютеры имели крошечную по современным понятиям внутреннюю и
внешнюю память и, поэтому сами программы имели очень небольшой
размер. Основные усилия разработчиков были направлены на создание
самого компьютера. Часто в качестве программистов и сервисных инженеров
выступали сами разработчики.
Однако даже на базе транзисторов и памяти на магнитных сердечников
удалось создать достаточно мощные компьютеры, обладающие уже
значительной оперативной и внешней памятью. Число компьютеров
увеличилось в десятки и сотни раз. Они стали применяться не только в
научных лабораториях и военных организациях, но и в крупных фирмах для
решения задач бизнеса. Сами программы стали значительно более
сложными, увеличилось число программистов. Это привело тому, что
расходы на разработку прикладного программного обеспечения резко
выросли. Стала ощущаться нехватка программистов. Выход из сложившейся
ситуации был найден в конце 50-х годов и был связан с использованием
языков высокого уровня (ЯВУ). В 1958 году был создан широко известный
язык ALGOL, который после доработки стал известен как ALGOL 60. В
середине 60-х годов появился используемый до сих пор язык FORTRAN и
много ряд других ЯВУ. Появление ЯВУ можно назвать первой революцией в
области разработки ПО, что позволило освободить прикладного
программиста от необходимости детально знать аппаратную архитектуру
компьютера. Теперь программист мог сосредоточиться на решении
прикладной задачи. Большинство языков, созданных в этот период можно
отнести к процедурно-ориентированным языкам. Господствующим стилем
программирования было структурное программирование. Программа должна
была иметь четко определенную структуру и состояла из произвольного
числа вложенных друг в друга подпрограмм. Это был достаточно удобный
подход. Главный программист определял общую структуру программы и
интерфейсы отдельных программных модулей и поручал их разработку
членам своей команды. Постепенно по мере увеличения мощности и
увеличения числа компьютеров стали появляться проблемы, связанные с
использованием структурного программирования, основная из которых
состояла в том, что, несмотря на все усилия разработчиков, каждое новое
приложение приходилось писать «с нуля», что существенно увеличивало
стоимость разработки.
Решение было найдено в переходе на объектно-ориентированные
языки программирования (ООЯП). Переход к использованию объектно-
ориентированного подхода к созданию ПО можно рассматривать как вторую
революцию в сфере разработки программного обеспечения. В рамках
внедрения объектно-ориентированного подхода в практику проектирования
ИС можно выделить 3 фазы: использование ООЯП, использование
методологии объектно-ориентированного проектирования (ООП) и
использование подхода к разработке, известного как Архитектура,
управляемая моделью (Model Driven Architecture, MDA).
Идеи, положенные в основу объектно-ориентированных ООЯП состоят
в следующем:
1. Всё является объектом.
2. Вычисления осуществляются путём обмена данными между
объектами.
3. Каждый объект имеет независимую память, которая состоит из
других объектов.
4. Каждый объект является представителем класса, который выражает
общие свойства объектов.
5. В классе задаётся поведение объекта, Все объекты, которые
являются экземплярами одного класса, могут выполнять одни и те же
действия.
6. Классы организованы в единую древовидную структуру с общим
корнем, которую называют иерархией наследования. Память и поведение
автоматически доступны любому классу, расположенному ниже в
иерархическом дереве.
Сила ООЯП состоит в том, программист может использовать готовые
классы, создавать из них собственные классы, используя механизмы
наследования. ООЯП появились достаточно давно. В частности, еще в 60-х
годах появился язык Simula-67, который мог работать с объектами, классами,
виртуальными методами и др. Широкого практического применения этот
язык не получил. Значительно позже появился другой достаточно известный
ООЯП - Smalltalk-80. Широкое распространение ООЯП связано с языком С+
+, ранние версии которого стали доступны с начала 80-х годов, хотя стандарт
на этот язык был согласован только в 1998 году. Успех С++ связан с 2
моментами. Во, первых он построен на базе повсеместно распространенного
языка С, в во-вторых, он позволяет пользователю постепенно приобщаться к
объектно-ориентированному программированию. В настоящее время наряду
с С++ используются много других языков ООЯП, Java, Delphi, C#, Python,
Ruby и др.
Второй фазой «объектно-ориентированной революции» можно считать
появление объектно-ориентированного проектирования (ООП). Идея ООП
состоит в следующем. Объектно-ориентированная парадигма может быть
использована не только для создания алгоритмического языка, но и для
моделирования поведения объектов реального мира, в частности, с
использованием графических языков моделирования. Наибольшее
распространение получил Unified Modeling Language (UML) —
унифицированный язык моделирования — язык графического описания для
объектного моделирования в области разработки программного обеспечения,
моделирования бизнес-процессов, системного проектирования и
отображения организационных структур. Первая версия UML появилась в
1997 году. Более подробно UML будет рассмотрен ниже. Основная
привлекательность данного языка состоит в том, что, используя
соответствующие инструментальные средства, от UML-моделей можно
перейти к программному коду на ЯВУ. В этом плане UML-модели
становятся основным рабочим инструментом прикладного программиста.
Третьей фазой «объектно-ориентированной революции» является
использование модельно-ориентированного подхода к разработке ПО, в
частности, подхода известного как Архитектура, управляемая моделью
(Model Driven Architecture, MDA), суть которого состоит в построении
абстрактной метамодели управления и обмена метаданными (моделями) и
задании способов ее трансформации в поддерживаемые технологии
программирования. Более подробно MDA подход будет рассмотрен ниже.
Третьей революцией в области разработки ПО стал перевод процесса
разработки на промышленные рельсы. Если на первых этапах развития ИТ
программирование часто считалось уделом избранных и качество
создаваемого ПО могло зависеть от квалификации отдельного
программиста, а само программирование было сродни искусству, то к концу
80-х годов стала очевидна недопустимость подобного подхода, и осознана
необходимость ставить разработку ПО на промышленные рельсы, что
разработка ПО должна вестись с использованием сертифицированных
технологий, должна существовать система контроля качества. Работы по
решению данной проблемы велись в 3 основных направлениях: разработка
методологий проектирования ПО, разработка систем контроля качества
разрабатываемого ПО и разработка вопросов организации процесса
проектирования. Последние 2 аспекта выходят за рамки настоящего
учебника. Современные подходы к тестированию ПО достаточно подробно
рассмотрены, например, в [7], а вопросы организации процесса
проектирования достаточно подробно рассмотрены в [8].
Программные архитектуры являются одним из важных компонентов
современного подхода к проектированию программных систем. Термин
«программная архитектура» впервые появился в 1991 году [9] и быстро стал
очень популярным. В 90-х годах велись интенсивные исследования и
разработки в области программных архитектур. Были описаны основные
архитектурные стили и паттерны, предложен ряд языков описания
архитектур (Architecture Description Languages (ADL). После 2000 года
программные архитектуры стали развиваться еще активнее. Если раньше
обычно говорили о некоторой архитектурной фазе проектирования, то в
2000-х годах все чаще начинают говорить об архитектурном подходе к
проектированию, ставя архитектуру во главу угла процесса проектирования.
Важной вехой на пути программных архитектур послужило появление
в 2000 году первого стандарта IEEE 1471-2000. В середине 2003 года вышла
первая версия языка объектно-ориентированного моделирования UML. В это
же время появляется свободно распространяемая система поддержки
архитектурного проектирования ArchStudio.
Можно выделить еще 2 важные вехи в становлении современного
подхода к проектированию программных систем - это компонентно-
ориентированный и сервисно-ориентированные подходы. Это достаточно
значимые парадигмы, но эти подходы нельзя назвать революционными. Эти
парадигма будут рассмотрены в последующих главах.
Следует заметить, что теория и практика работы с программными
архитектурами постоянно совершенствуется. В настоящее время на повестке
дня стоят такие вопросы как построения систем, которые могут определить
идентичность архитектурного описания и реализации, автоматическая
генерация тестов в соответствии с архитектурным описанием и, наконец,
выход на решение проблемы получения архитектурного описания по
описанию требований заказчика и последующей генерацией кода по
архитектурному описанию. Следует отметить, что решение этих задач вряд
ли возможно без перехода на уровень работы со знаниями.

1.3. Понятие архитектуры ИС

Современные ИТ и ИС достигли такого уровня развития, когда на


первый план выходит бизнес-оценка проектов, а не личные пристрастия
разработчиков или заказчиков. В связи с этим большое внимание в
настоящее время уделяется архитектуре ИС.
Термин "архитектура" в применении к ИС уже давно стал привычным,
так как грамотное построение ИС, эффективно и надежно
функционирующей, является не менее сложной задачей, чем проектирование
и возведение современного многофункционального здания.
Архитекту́ра (лат. architectura ) - искусство проектировать и строить здания и
другие сооружения (также их комплексы), создающие материально
организованную среду, необходимую людям для их жизни и деятельности, в
соответствии с современными техническими возможностями и
эстетическими воззрениями общества. Постепенно классическое определение
архитектуры трансформировалось в применении к техническим системам,
как принципиальное устройство чего-либо сложного, общий вид, без
указания конкретных инженерных расчетов.
Когда речь заходит об архитектуре ИС, то, прежде всего, следует
задаться вопросом, зачем нужно само понятии архитектура и какую пользу
можно извлечь из его существования. Ответ на этот вопрос применительно к
программным системам можно найти, в частности, в [10], где ответ
формулируется следующим образом.
Программная архитектура – это абстракция или модель, а точнее одна из
ряда моделей, описывающих ИС, которая обычно создаются на этапе
архитектурного проектирования, при этом ИС ставится в соответствие
архитектурное описание, которое может быть полезным для решения, по
крайней мере, 3 важных задач проектирования ИС.
1. Архитектурное описание, выполненное в соответствии с
определенными правилами, может использоваться как язык общения между
заинтересованными сторонами (архитектор, аналитик, программист,
покупатель, пользователь) в процессе, как проектирования, так и
эксплуатации.
2. Архитектурное описание, наряду с другими, более
детализированными описаниями, может использоваться для генерации кода
приложения. Такой подход называют проектированием с помощью моделей.
Этот подход более подробно будет рассмотрен ниже.
3. Архитектурное описание может быть полезно при проектировании
линеек или семейств продуктов, которые могут строиться на базе одной и той
же архитектуры, что позволяет уменьшить стоимость разработки и
уменьшает риски. Следует заметить, никогда не возникало недостатка в
определениях понятия архитектура. На сайте SEI (Software Engineering
Institute) имелся даже специальный раздел, посвященный определениям
архитектуры, где их собрано более ста [11].
Рассмотрим несколько вариантов определения понятия "Архитектура
ИС" [10]:
Архитектура – это организационная структура системы.
Архитектура ИС – концепция, определяющая модель, структуру,
выполняемые функции и взаимосвязь компонентов информационной
системы.
Архитектура – это базовая организация системы, воплощенная в ее
компонентах, их отношениях между собой и с окружением, а также
принципы, определяющие проектирование и развитие системы.
Архитектура – это набор значимых решений по поводу организации
системы программного обеспечения, набор структурных элементов и их
интерфейсов, при помощи которых компонуется система, вместе с их
поведением, определяемым во взаимодействии между этими элементами,
компоновка элементов в постепенно укрупняющиеся подсистемы, а также
стиль архитектуры, который направляет эту организацию – элементы и их
интерфейсы, взаимодействия и компоновку.
Архитектура программы или компьютерной системы – это структура
или структуры системы, которые включают элементы программы, видимые
извне свойства этих элементов и связи между ними.
Архитектура – это структура организации и связанное с ней поведение
системы. Архитектуру можно рекурсивно разобрать на части,
взаимодействующие посредством интерфейсов, связи, которые соединяют
части, и условия сборки частей. Части, которые взаимодействуют через
интерфейсы, включают классы, компоненты и подсистемы.
Архитектура программного обеспечения системы или набора систем
состоит из всех важных проектных решений по поводу структур программы
и взаимодействий между этими структурами, которые составляют системы.
Проектные решения обеспечивают желаемый набор свойств, которые должна
поддерживать система, чтобы быть успешной. Проектные решения
предоставляют концептуальную основу для разработки системы, ее
поддержки и обслуживания.
Для того чтобы разобраться в этом многообразии определений,
выделим наиболее существенные стороны архитектуры ИС.
Основным критерием выбора архитектуры и инфраструктуры ИС в
условиях рыночной экономики является минимизация совокупной стоимости
владения системой. Из этого следует два основных тезиса.
В проектах построения ИС, для которых важен экономический эффект,
должна выбираться архитектура системы с минимальной совокупной
стоимостью владения.
Совокупная стоимость владения информационной системой состоит из
плановых затрат и стоимости рисков. Стоимость рисков определяется
стоимостью бизнес-рисков, вероятностями технических рисков и матрицей
соответствия между ними. Матрица соответствия определяется архитектурой
информационной системы.
Термин «Архитектура ИС» обычно довольно согласованно понимаются
специалистами на уровне подсознания, и столь же несогласованно
определяются.
Два основных класса определений архитектур — определения
«конструктивные» и «идеологические».
Основные идеологические определения архитектуры ИС таковы:
«Архитектура ИС — это набор решений, наиболее существенным
образом влияющих на совокупную стоимость владения системой».
«Архитектура ИС — это набор ключевых решений, неизменных при
изменении бизнес-технологии в рамках бизнес-видения».
Оба эти определения согласованы в том смысле, что если ключевое
решение приходится изменять при изменении бизнес-технологии в рамках
бизнес-видения, то резко возрастает стоимость владения системой.
Следствием этих определений является понимание важности принятия
архитектуры системы как стандарта предприятия, ввиду значимости
архитектурных решений и их устойчивости по отношению к изменениям
бизнес-технологии. Еще одно важное следствие первого определения —
архитектура системы на самом деле должна строиться еще на стадии
технико-экономического обоснования системы.
Выделим несколько наиболее значимых и принципиально различных
типов рисков:
 проектные риски при создании системы;
 технические риски, состоящие в простоях, отказах, потере или
искажении данных и т. п.;
 риски бизнес-потерь, связанные с эксплуатацией системы
(возникающие, в конечном счете, из-за технических рисков). Такие риски
бизнес-потерь назовем бизнес-рисками. Каждый бизнес-риск принадлежит,
по крайней мере, одному из вариантов бизнес-использования (business use
case) системы. Например, для интернет-магазина бизнес-риски «Покупатель
не может сделать заказ и уходит» и «Покупатель делает заказ, но уходит
рассерженный функционированием системы» принадлежат вариантам
бизнес-использования «Сделать заказ».
 риски бизнес-потерь, связанные с вариативностью бизнес-
процессов. При этом потери происходят оттого, что:
а) бизнес-процессы надо изменять, а информационная система не готова
к этому, и потери связаны с неоптимальным функционированием бизнеса;
б) приходится платить за модификацию системы.
Такие риски бизнес-потерь назовем неопределенностями (RUP
упоминает аналогичные по смыслу «варианты изменения», change cases).
Затраты на создание и эксплуатацию системы с некоторой точностью
оцениваются достаточно стандартно. Динамические же бизнес-риски
количественно учесть невозможно, и их следует оценивать исключительно
качественно (на уровне понимания, насколько бизнес-процессы в
организации являются определенными/застывшими/неустоявшимися).
Наиболее интересная часть совокупной стоимости владения системой —
статические бизнес-риски и риски разработки.
Каждый вариант бизнес-использования реализуется с помощью набора
операций соответствующих бизнес-процессов, а бизнес-риск возникает по
причине неисполнения одной или нескольких операций. Такие риски мы
называем операционными. Таким образом, операционные риски являются
источниками бизнес-рисков.
Например, источниками риска «Покупатель не может сделать заказ и
уходит» могут быть операционный риск «Информация о заказе не может
быть передана для обработки в систему».
В свою очередь операционные риски для автоматизированных операций
могут возникать по причине технических рисков. Например, операционный
риск «Информация о заказе не может быть передана для обработки в
систему» может возникнуть по причине реализации технического риска
«Обрыв канала связи».
С другой стороны, бизнес-риск может быть парирован соответствующей
организацией процесса и/или архитектурным решением.
Конструктивно архитектура обычно определяется как набор ответов на
следующие вопросы:
 что делает система;
 на какие части она разделяется;
 как эти части взаимодействуют;
 где эти части размещены.
Таким образом архитектура ИС является логическим построением, или
моделью, и влияет на совокупную стоимость владения через набор связанных
с ней решений по выбору средств реализации, СУБД, операционной
платформы, телекоммуникационных средств и т. п. — то есть через то, что
мы называем инфраструктурой ИС. Еще раз подчеркнем, что инфраструктура
включает решения не только по программному обеспечению, но и по
аппаратному комплексу и организационному обеспечению. Это вполне
соответствует пониманию системы в наиболее современных стандартах типа
ISO/IEC 15288 [12].
В результате длительных обсуждений, которые происходили в течение
90-х годов прошлого века были выпущены 2 стандарта [5] и [6]. Первый
стандарт назывался «Рекомендации по архитектурному описанию
программных систем (IEEE Recommended Practice for Architectural Description
of Software-Intensive Systems) появился в 2000 году, а второй появился в 2011
году и называется «Системная и программная инженерия – архитектурное
описание». Второй стандарт является новой редакцией первого. В нем
архитектура системная и программные архитектуры определяются
следующим образом. Стандарт [6] определяет архитектуру как принципы
организации системы, в терминах основных компонентов, их взаимосвязей,
окружения и принципов проектирования и эволюции, а архитектурное
описание как набор артифактов, составляющих описание архитектуры.
Появление стандартов фактически положило конец дискуссиям о том, что
такое системная и программная архитектура. Однако использовать данное
определение применительно к корпоративным ИС затруднительно,
поскольку корпоративные системы – это, прежде всего, многоуровневые
системы. Кроме того, они имеют очень длительный жизненный цикл,
длительность которого может измеряться десятилетиями. На протяжении
всего жизненного цикли они постоянно развиваются.
Остановимся более подробно на КИС. С КИС обычно связывают такие
понятия как корпоративная архитектура, корпоративная информационная
система.
Корпоративная архитектура (Enterprise architecture (EA)) – эта
методология для формирования проактивной холлистической реакции
организации на внешние деструктивные воздействия посредством
идентификации, анализа и формирования реакции с целью получения
желаемого состояния бизнеса и результатов его функционирования. ЕА
должна представлять руководству и, в частности, ИТ менеджерам, готовую
информацию для принятия решений, выработку политик и формирование
политик, направленных достижение максимальной эффективности
функционирования организации [13].
Корпоративная информационная система (Enterprise Information
System (EIS)) (КИС) – любая ИС, предназначенная для совершенствования
реализуемых в организации бизнес-процессов посредствам их интеграции.
КИС может работать на любых уровнях. Термин «корпоративная» (enterprise)
в данном случае используется в самом широком смысле. Это может быть
либо транснациональная корпорация, небольшая коммерческая фирма,
образовательное учреждение, больница, некоммерческая организация и т.д.
Особо следует отметить, что речь идет не только об организации в
классическом понимании, но это может быть и виртуальная организация.
Корпоративная информационная архитектура (Enterprise information
architecture (EIA)) (КИА) – это часть корпоративного архитектурного
процесса. КИА предназначена для описания текущего состояния и
прогнозировать изменение состояния с целью повышения качества
функционирования системы. КИА оперирует такими понятиями требования,
принципы, модели [14].
Из приведенных определений видно, что термин «корпоративная
архитектура» определяется как система поддержки принятия решений, КИС
– это, прежде всего, интеграционная система, а КИА – это элемент
архитектурного процесса.
Приведенные определения фактически отражают только требования, но
не дают никакой информации о принципах организации и функционирования
КИС. Эта информация содержится в документе, который называется
Корпоративный архитектурный фреймворк (Enterprise Architecture
framework) [14]. В данном случае под термином фреймворк понимается
эталонная реализация. Эта модель восходит к предложенной еще в 1988 году
модели NIST Enterprise Architecture Model (Национальный институт
стандартов и технологий - одного из агентств Министерства торговли США),
в соответствии с которой модель описывается как 5 уровневая модель, в
которой определяются следующие уровни (рис. 1.1).
 бизнес архитектура (Business architecture);
 ИТ архитектура (Information Technology Architecture) или
информационная архитектура (Information Architecture),
 архитектура данных (Data Architecture),
 архитектура приложения (Application Architecture) или программная
архитектура (Software Architecture),
 техническая архитектура (Hardware Architecture). Совокупность
данных архитектур и является архитектурой ИС
Бизнес архитектура или архитектура уровня бизнес процессов
определяет бизнес стратегии, управление, организацию, ключевые бизнес
процессы в масштабе предприятия, причем не все бизнес процессы
реализуются средствами ИТ технологий. Бизнес архитектура отображается
на ИТ архитектуру.
Бизнес
архитектура

ИТ архитектура

Архитектура данных

Программная архитектура

Техническая архитектура

Рис. 1.1. Архитектурные уровни

ИТ архитектура рассматривается в трех аспектах:


 обеспечивает достижение бизнес целей посредством
использования программной инфраструктуры, ориентированной на
реализацию наиболее важных бизнес приложений;
 среда, обеспечивающая реализацию бизнес приложений;
 совокупность программных и аппаратных средств, составляющая
информационную систему организации и включающая, в частности, базы
данных и промежуточное программное обеспечение.
Архитектура данных организации включает логические и физические
хранилища данных и средства управления данными. Архитектура данных
должна быть поддержана ИТ архитектурой. В современных ИТ системах,
ориентированных на работу со знаниями, иногда выделяют отдельный тип
архитектуры – архитектуру знаний (Knowledge Architecture).
Программная архитектура отображает совокупность программных
приложений. Программное приложение – это компьютерная программа,
ориентированная на решение задач конечного пользователя. Архитектура
приложений – это описание отдельного приложения, работающего в составе
ИТ системы, включая его программные интерфейсы. Архитектура
приложения базируется на ИТ архитектуре и использует сервисы,
предоставляемые ИТ архитектурой.
Техническая архитектура характеризует аппаратные средства,
системное ПО и включает такие элементы, ОС, процессор, память, жесткие
диски, периферийные устройства, элементы, используемые для их
соединения, а также сетевые средства.
Часто нельзя провести четкой границы между ИТ архитектурой и
архитектурой отдельного приложения. В частности, в случае, когда
некоторую функцию требуется реализовать в нескольких приложений, то она
может быть перенесена на уровень ИТ архитектуры. Обычно приложения
интегрируются средствами ИТ архитектуры.

1.4. Классификация ИС

В виду многообразия ИС остановимся на их классификации. В


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

Схемы классификации архитектур ИС, основанная на доменном


подходе, показаны на рис. 1.2 и 1.3. На верхнем уровне выделяются 2 типа
доменов: домены задач (Problem domains) (рис. 1.2) и домены решений
(Solution Domains) (рис. 1.3).
ИС (домен задач)

Характер решаемых Предметная Степень


Тип домена Масштаб системы
задач область автоматизации

Крупномасштабные Информационно- Системы управления Автоматизированные


Персональные ИС
задачи вычислитель- управляющие системы организацией ИС
ного характера
Управляющие Телекоммуникацион- ИС для использования
Информационно- Автоматические ИС
системы ные системы группой людей
справочные ИС
Системы мониторинга Геоинформационные
системы
Корпоративные ИС
Системы поддержки и управления
принятия решений ресурсами

Торговые ИС Глобальные ИС
Системы управления
Коммуникационные
производством
системы
Встроенные системы
управления
ИС, ориентированные
Системы управления
на предоставление
доступом
услуг

Рис. 1.2. Классификация архитектур ИС, основанная на домене задач


Можно выделить следующие основные характеристики домена задач:
 характер решаемых задач
 тип домена
 предметная область
 степень автоматизации
 масштаб системы.
По характеру обработки данных ИС делятся на:
 системы, ориентированные на решение крупномасштабных задач
преимущественно вычислительного характера,
 информационно-справочные и информационно-поисковые ИС, в
которых нет сложных алгоритмов обработки данных, а целью системы
является поиск и выдача информации в удобном виде;
 автоматизированные системы управления и системы поддержки
принятия решений;
 коммуникационные системы;
 ИС, ориентированные на предоставление услуг (сервисов), таких
как доступ в Интернет, сервисы хранения данных, доступа к
вычислительным ресурсам, доступа к данным и т.п.
ИС
(Домен решений)

Программная архитектура Техническая архитектура

Подход к
Архитектурный
реализации Системы, Системы,
стиль
реализованные на реализованные на
одном хосте нескольких хостах
Монолитное
Потоки данных приложение

Многомодульная Системы,
реализация реализованные в
Независимые виде виртуального
компоненты сетевого ресурса
Способа
Способы
интеграции
реализации
компонентов в
Вызов с компонентов
систему
возвратом

Объект Сокеты
Независимые
компоненты
Вызов удаленных
Компонент
процедур
(методов)
Централизован-
ные данные Веб-служба
Очереди
сообщений
Виртуальные Грид-служба
машины
Бизнес-процессы
Агент

Межагентные
Облачный сервис коммуникации.

Разделяемые
базы данных

Разделяемые
файлы

Рис. 1.3. Классификация архитектур ИС, основанная на домене решений


По принадлежности к базовому домену. Можно выделить следующие
базовые домены задач [15]: информационно-управляющие системы (ИУС) –
Management Information Systems, управляющие системы (УС) – Process
Control Systems, системы мониторинга и управления ресурсами (СМУР) –
Resource Allocation and Tracking Systems, системы управления производством
(СУП) – Manufacturing Systems, системы управления доступом (СУД) –
Access Control Systems.
По принадлежности к предметной области. Обычно ИС ориентированы
на использование и удовлетворение информационных потребностей в рамках
конкретной предметной области. В настоящее время ИС используются
практически повсеместно, то перечислить все области, в которых
используются ИС просто невозможно. В качестве примера можно указать
следующие области, в которых ИС активно используются:
 системы управления организацией — ИС, предназначенная для
выполнения функций управления на организацией (предприятием);
 телекоммуникационные системы – ИС, предназначенные для
реализации функций, связанных передачей данных;
 геоинформационные системы — ИС, обеспечивающие сбор,
хранение, обработку, доступ, отображение и распространение
пространственно-координированных данных (пространственных данных);
 торговые ИС;
 встроенные системы управления сложными объектами, такими как
самолеты и корабли;
 медицинская информационная система — ИС, предназначенные для
использования в больницах, поликлиниках и др. лечебных учреждениях.
Автоматизированные ИС предполагают участие человека в ее
функционировании. Автоматические ИС функционируют без участия
оператора.
По масштабности применения ИС делятся на:
 персональные ИС, предназначеные для использованием одним
человеком;
 ИС, предназначенные для совместного использования группой
людей, например, сотрудниками одного подразделения.
 корпоративные ИС, охватывающие информационные процессы
отдельной организации;
 глобальные ИС, охватывающие информационные процессы многих
организаций, или находятся в свободном доступе.
По степени автоматизации ИС делятся на автоматические и
автоматизированные.
Основными характеристиками домена решений являются программная и
техническая архитектуры.
Применительно к уровню программной архитектуры выделим
следующие характеристики: используемый архитектурный стиль; способ
реализации.
Существует пять групп архитектурных стилей: потоки данных; вызов с
возвратом; независимые компоненты; централизованные данные;
виртуальные машины. Более подробно архитектурные стили будут
рассмотрены ниже.
Реализация программной архитектуры может быть осуществлена двумя
альтернативными подходами: монолитное приложение; многомодульное
приложение.
Основными характеристиками многомодульных приложений являются:
подход к реализации моделей; способа интеграции компонентов в систему.
Основные подходы к реализации модулей:
 представление модуля как объекта;
 представление модуля как компонента;
 реализация модуля в виде веб-службы;
 реализация модуля в виде грид-службы;
 реализация модуля в виде облачного сервиса;
 реализация модуля в виде агента.
Основные подходы к интеграции модулей:
 вызов удаленных процедур (методов);
 очереди сообщений;
 бизнес-процессы;
 межагентные коммуникации;
 разделяемые базы данных;
 разделяемые файлы.
Применительно к уровню технической архитектуры ИС можно
разделить на следующие группы:
 системы, реализованные на локальном хосте;
 системы реализованные на нескольких хостах;
 системы, реализованные в виде виртуального сетевого ресурса.
Контрольные вопросы
1. Дайте толкование понятия архитектура применительно к
информационным системам.
2. Что такое (software-intensive systems)?
3. Перечислите и охарактеризуйте основные этапы развития
программного обеспечения?
4. В чем состоит сущность объектно-ориентированного подхода?
5. В чем состоит разница между архитектурой и архитектурным
описанием?
6. Сравните различные определения понятия «Архитектура ИС»
7. Что такое архитектурные уровни?
8. В чем суть доменного подхода?
9. Назовите основные классификационные признаки ИС?