В монографии рассматриваются важнейшие аспекты разработки прикладных программных систем для корпораций – крупных распределенных индустриальных структур, объединенных общими бизнес-целями. Особенностью подхода является исследование всего комплекса архитектурных уровней, необходимых для построения таких систем, – от моделей жизненного цикла и методологий их реализации до технологических платформ и инструментальных средств. Приведен ряд примеров, иллюстрирующих особенности применения современных технологий (в первую очередь, разработанных корпорацией Microsoft) для реализации и внедрения крупномасштабных программных систем в различных отраслях народного хозяйства.
Для студентов, аспирантов и исследователей, а также специалистов-практиков, область интересов которых связана с разработкой крупномасштабных программных систем.
Содержание:
-
Предисловие 1
-
Раздел I - Модели, методологии и архитектуры разработки корпоративных систем 1
-
Раздел II - Средства, платформы и технологии разработки корпоративных систем 30
-
Раздел III - Примеры отраслевых внедрений корпоративных систем 77
-
Заключение 93
-
Литература 93
-
Примечания 95
Сергей Викторович Зыков
Основы проектирования корпоративных систем
© Зыков С.В., 2012
© Оформление. Издательский дом Высшей школы экономики, 2012
Все права защищены. Никакая часть электронной версии этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами, включая размещение в сети Интернет и в корпоративных сетях, для частного и публичного использования без письменного разрешения владельца авторских прав.
© Электронная версия книги подготовлена компанией ЛитРес ()
Предисловие
Монография преследует несколько взаимосвязанных целей. Прежде всего, это систематизация знаний из областей, связанных с проектированием крупномасштабных, распределенных программных комплексов, состоящих из разнородных компонентов. На основе проведенной систематизации открывается возможность классификации программных систем с последующим методологическим обобщением для жизненного цикла исследуемого класса программных комплексов, которые как по характеру, так и по масштабу своего применения вполне соответствуют термину "корпоративные".
Современные корпоративные системы – это петабайты (тысячи терабайт) данных, как минимум, удвоение объема информации каждые пять лет, необходимость адаптации к требованиям бизнеса практически "на лету", архитектурная и структурная разнородность компонентов и, конечно, глобальная распределенность. В подобных условиях обобщения до уровня технологических схем и инструментальных средств, как правило, не приводят к адекватной интеграции гетерогенных приложений в унифицированные, крупномасштабные программные системы. Поэтому для управления жизненным циклом корпоративных программных комплексов необходимо прежде всего получить адекватное обобщение на уровне математических моделей с последующей конкретизацией представлений на уровне системной архитектуры, информационных технологий, а также конкретных инструментальных и программных средств и, наконец, практических внедрений.
Предлагаемое в настоящей работе методологическое обобщение включает весь спектр возможных (и, как оказывается, необходимых) уровней представления данных в корпоративных программных комплексах в ходе их разработки. К таковым следует отнести прежде всего уровни:
1) математического моделирования концептуального представления;
2) анализа и проектирования архитектурной схемы;
3) реализации, интеграции и адаптации/расширения программных систем.
Естественно, все перечисленные уровни необходимы, взаимозависимы и взаимосвязаны: математические модели адекватно поддержаны промышленными технологиями, инструментально-программными средствами и приводят к отраслевым внедрениям гетерогенных корпоративных программных комплексов с практически приемлемыми эксплуатационными характеристиками.
Для построения генерализации корпоративных программных комплексов на уровне моделей – как для представления данных, так и для манипулирования ими – потребовался творческий синтез основных положений целого ряда математических теорий, связанных с объектными моделями. В основе рассматриваемых моделей лежит так называемый аппликативный подход к вычислениям, при котором в фокусе внимания находится операция приложения функции к аргументу. Дальнейшее развитие созданной методологии разработки программных систем корпоративного типа – поддержка разработанных моделей программными технологиями, системными архитектурами и инструментальными средствами.
Структура книги во многом является отражением именно такого, методологически последовательного и концептуально наполненного подхода к организации жизненного цикла прикладных корпоративных систем – от моделей до примеров внедрения. Именно таким образом – путем последовательного уточнения – и происходит разработка прикладных систем, при этом окончательный вид конкретной детализации каждого элемента обобщенной методологии зависит от характера и масштаба приложений.
Отдельно следует отметить целый ряд студентов НИУ ВШЭ и МФТИ (в первую очередь К. Лузгину, Е. Первушину, А. Ядройцева, а также многих других), ассистировавших при предварительном редактировании теста и активно способствовавших выходу в свет настоящей публикации.
Раздел I
Модели, методологии и архитектуры разработки корпоративных систем
Глава 1
Введение в разработку корпоративных систем
В представленной монографии описана разработка корпоративных информационных систем, даны понятия информационных систем вообще и корпоративных в частности, а также то, для чего, собственно, нам необходимы эти знания и как их применять непосредственно в разработке.
Основные понятия, которые будут представлены далее, – это информационная система и корпорация, т. е. большое, территориально распределенное предприятие с общими задачами, для которого развитие информационных систем, их жизненного цикла происходит несколько иначе, чем информационных систем во обще. В монографии будет рассказано о жизненном цикле информационных систем, относящихся к классу корпоративных приложений, а также основных методологических подходах к их проектированию, реализации и разработке.
Предметом исследования выступают корпоративные информационные системы. Здесь значимо каждое слово. И корпоративная специфика – специфика крупных распределенных предприятий, и понятие системы, т. е. достаточно сложной совокупности различных компонентов, и, конечно, собственно информационной системы как вполне определенного подвида. Назначение данной книги состоит в том, чтобы: дать базовые, фундаментальные представления о предмете, продемонстрировать применение моделей к разработке корпоративных систем, правда, не совсем в математическом понимании этого слова; ввести основные понятия, обозначить их взаимосвязи и применение к корпоративной специфике, описать современную теорию и практику разработки корпоративных приложений.
Будут описаны приложения, т. е. специфичные информационные системы, которые играют существенную прикладную роль. Будет говориться как о практическом аспекте разработки этих приложений, массе аспектов, которые связаны с жизненным циклом системы, во взаимосвязи этапов развития и проектирования и реализации такого рода информационных систем, так и о теоретическом минимуме, который необходим для правильного понимания того, откуда эти системы возникли, как они развиваются, работают и почему нам необходимо планомерно их расширять, создавать и развивать.
Цель курса – формирование целостной концепции проектирования и реализации, иными словами, разработки, корпоративных приложений в современных условиях. Будет применяться подход Карнеги-Мелонского университета к дисциплине "Software engineering" (программная инженерия), в том смысле, что некоторые его математические модели будут далее упомянуты. В целом необходимо сосредоточиться на теории, которая адекватно поддерживает практику, и именно в том необходимом объеме, который поможет правильно составить систему понятий. А также придерживаться этой системы в соответствии с той многочисленной литературой, которая имеется по предмету, для того чтобы иметь возможность грамотно и с хорошим теоретическим обоснованием говорить о таком непростом и многообразном предмете, как корпоративные информационные системы.
Кроме того, речь пойдет о разработке хорошего стиля проектирования систем. Под хорошим стилем нужно понимать многофакторную оптимизацию, т. е. достаточно сложный процесс – совокупность процессов, которые сопровождают развитие информационных систем. В любом проекте по разработке корпоративных систем имеет место треугольник компромиссов: функциональность, стоимость, временные затраты. То есть существует ряд ограничений, которые необходимо учитывать, и для создания хорошего продукта следует уметь находить компромисс.
Кроме того, когда речь пойдет о жизненном цикле программных систем, этапах их развития, проектирования, реализации, внедрения и сопровождения, будут описаны практические примеры их внедрения, а также даны необходимые знания, которые требуются для получения основных навыков, характеризующих такого важного специалиста в разработке корпоративных информационных систем, как системный архитектор – человек, который отвечает за проектирование информационных систем с технологической точки зрения.
Естественно, предмет, имеющий технический характер и нацеленный на разработку приложений, прикладных систем, предназначен преимущественно для студентов и магистрантов, которые специализируются на разработке приложений.
Необходимая основа – некоторое понимание моделей, на которых базируется объектный подход к проектированию и реализации программных систем. С математической точки зрения моделью объекта может являться функция. Часто речь будет идти о λ-исчислении и других моделях об исчислении функций, которые представляют собой фундамент моделирования, в том числе информационных систем, и вообще фундамент для объектных моделей. Что касается основ проектирования и программирования – желательны знания в области объектно-ориентированного подхода к проектированию и разработке приложений и основ технологий Microsoft, в частности Microsoft.NET.
В конце книги будут даны некоторые практические решения: на базе группы компаний "Итера" и на основе технологий Microsoft, в том числе программного обеспечения Microsoft Dynamics. Будет использована открытая информация, которая имеется на сайтах Microsoft, связанных с Dynamics, а также другие открытые источники информации.
Во введении говорится о корпорации как о большой распределенной группе компаний с общими задачами, о программных системах, приложениях как конкретизации этого понятия для решения тех или иных прикладных задач, о жизненном цикле этих систем – от анализа и проектирования до реализации, внедрения, сопровождения и вывода из эксплуатации. Также речь идет о документации, которая сопровождает этот жизненный цикл и без которой, собственно говоря, программный продукт, передаваемый заказчику, таковым не является. Рассказано, что такое методология, как можно ее понимать в узком и широком смысле. Обсуждены основные этапы жизненного цикла программных систем, в том числе соответствующие жизненному циклу корпоративных систем, и, кроме того, представлены основные методологии разработки прикладных программных систем.
Описание корпоративных информационных системах следует начать с понятия корпораций. Под корпорацией понимается крупная (от 1000 сотрудников), территориально распределенная (часто по всему земному шару) глобальная, трансконтинентальная производстенная структура, т. е. бизнес-структура, которая нацелена на производство продукции. Достаточно большие корпорации, например нефтегазовые, – Газпром, известная крупная и распределенная структура реального сектора экономики, TNK-BP, где объединены ресурсы как отечественных, так и зарубежных производителей нефти и газа, и нефтегазовая группа компаний "Итера", объединяющая порядка 150 компаний в 24 странах мира с общей численностью персонала 10 тыс. человек. Несмотря на распределенность структуры, у корпорации, как правило, есть единый центр управления и общие бизнес-цели и задачи.
Следует отметить, что корпорацию можно понимать и шире. Можно относить к корпорациям и не вполне производственные, но тем не менее распределенные и объединенные общими бизнес-целями структуры. С точки зрения корпоративных информационных систем это вполне допустимый угол зрения. Так, в качестве примера корпоративной структуры можно рассматривать Минпромэнерго, научно-исследовательские учреждения, такие как ИПУ РАН, который включают не менее 10 филиалов по России, университеты, такие как МИФИ, НИУ ВШЭ. ВШЭ имеет около 20 различных площадок только в Москве, МИФИ является также достаточно распределенной структурой с точки зрения как студенческого городка, так и распределенности по территории России. Все эти и другие аналогичные структуры вполне можно отнести к корпорациям.
Теперь остановимся на программных системах. Они представляют собой совокупность программ под общим управлением, т. е. примерно так же, как и корпорация как группа компаний – это совокупность взаимодействующих программ. При этом программная система предназначена для решения либо некой замкнутой задачи, либо целого ряда взаимосвязанных задач. И если мы говорим о корпоративной системе, там таких задач достаточно много: это учет, планирование и управление различного рода ресурсами, прежде всего людскими, финансовыми и специфическими производственными ресурсами, основными средствами, процессом производства и целым рядом других процессов.
Приложения – это несколько более узкая сущность, нежели просто программа. Они предназначены для решения функциональных задач по обработке информации в рамках той или иной предметной области. Приложение так или иначе связано с предметной областью. Поэтому если говорить о корпоративных приложениях, корпоративных системах, то речь пойдет о решении функциональных бизнес-задач корпорации с помощью специализированных в каждом случае прикладных программ.
Некоторые отрасли и задачи, такие как планирование, управление, организация, учет, уже были перечислены. Конечно, в масштабе корпорации все эти контуры управления имеет смысл рассматривать не изолированно, а интегрированно. Таким образом, получаются интегрированные или согласованные программные системы, и открывается возможность консолидации данных и построения консолидированных отчетов, например, по персоналу в рамках корпорации в целом, отдельных ее компаний, более мелких подразделений, или такой же детализации, скажем, связанной с финансовой отчетностью и отчетностью по другим производственным ресурсам.
В любой информационной системе, и корпоративной в том числе, каждое приложение, которое функционирует в рамках этой системы, проходит определенные этапы своего становления и развития. Как правило, последовательность этих этапов остается неизменной. Хотя в зависимости от методологий проектирования и разработки применяемых корпоративных систем эта последовательность может претерпевать незначительные изменения, существует ряд этапов и фазы, которые определяют жизненный цикл программных систем. Первым этапом является постановка задачи, т. е. определение характера и масштаба того программного решения, которое будет разработано. Следующий этап связан с анализом требований, которые выдвигает заказчик к программной системе, с анализом того, насколько эти требования адекватны, корректны, полны, непротиворечивы, насколько они соответствуют характеру и масштабу проблемы и полно и точно описывают ту предметную область и задачу, которую должно решать программное обеспечение. Исходя из анализа требований строятся проектные спецификации – это следующий этап жизненного цикла программных систем. На основе проектных спецификаций в форме диаграмм, сценариев использования, т. е. определенных достаточно формально изложенных текстовых данных и технического задания в том числе, происходит проектирование программной системы. Это следующий этап жизненного цикла – построение в некотором абстрактном виде, прежде всего в форме диаграмм, основных функций, которые эта система будет реализовывать. По сути, речь идет о поэтапной детализации от абстрактного представления к конкретному в ходе развития системы вдоль ее жизненного цикла.
После проектирования, т. е. после того, как все основные объекты, которые будут реализованы в рамках информационной системы, получили свои очертания и становится известно, какими характеристиками они будут обладать, как будут взаимодействовать друг с другом, начинается этап реализации. Это – программирование, кодирование отдельных частей программной системы, которая декомпозирована на них в ходе этапа проектирования. Реализацию сопровождает тестирование программного продукта, которое призвано ответить на вопрос, насколько это программное обеспечение корректно, нет ли в нем внутренних ошибок. Еще один важный вопрос, на который должно ответить тестирование, – в какой мере разработанное программное обеспечение соответствует тем проектным спецификациям и требованиям, которые были к нему сформулированы. Если тестирование не выявляет существенного количества критического уровня ошибок, то можно переходить к фазе передачи заказчику, когда на основе специально созданной серии приемочных тестов осуществляют приемку и передачу в эксплуатацию созданной программной системы или компонента корпоративной информационной системы.