Сергей Зыков.

Основы проектирования корпоративных систем



скачать книгу бесплатно

© Зыков С.В., 2012

© Оформление. Издательский дом Высшей школы экономики, 2012


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


© Электронная версия книги подготовлена компанией ЛитРес (www.litres.ru)

Предисловие

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

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

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

1) математического моделирования концептуального представления;

2) анализа и проектирования архитектурной схемы;

3) реализации, интеграции и адаптации/расширения программных систем.

Естественно, все перечисленные уровни необходимы, взаимозависимы и взаимосвязаны: математические модели адекватно поддержаны промышленными технологиями, инструментально-программными средствами и приводят к отраслевым внедрениям гетерогенных корпоративных программных комплексов с практически приемлемыми эксплуатационными характеристиками.

Для построения генерализации корпоративных программных комплексов на уровне моделей – как для представления данных, так и для манипулирования ими – потребовался творческий синтез основных положений целого ряда математических теорий, связанных с объектными моделями.

В основе рассматриваемых моделей лежит так называемый аппликативный подход к вычислениям, при котором в фокусе внимания находится операция приложения функции к аргументу. Дальнейшее развитие созданной методологии разработки программных систем корпоративного типа – поддержка разработанных моделей программными технологиями, системными архитектурами и инструментальными средствами.

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

Автор выражает искреннюю благодарность ведущим экспертам университета Carnegie Mellon (G. Taran, N. Bier и др.), а также профессорам С.М. Авдошину (НИУ ВШЭ) и В.Э. Вольфенгагену (МИФИ, МФТИ) за методическую помощь при подготовке монографии.

Отдельно следует отметить целый ряд студентов НИУ ВШЭ и МФТИ (в первую очередь К. Лузгину, Е. Первушину, А. Ядройцева, а также многих других), ассистировавших при предварительном редактировании теста и активно способствовавших выходу в свет настоящей публикации.

Автор полагает, что книга окажется полезной системным аналитикам и архитекторам, разработчикам крупномасштабных приложений, а также студентам, аспирантам и другим категориям исследователей корпоративных программных систем и комплексов.

Раздел I
Модели, методологии и архитектуры разработки корпоративных систем

Глава 1
Введение в разработку корпоративных систем

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

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

Предметом исследования выступают корпоративные информационные системы. Здесь значимо каждое слово. И корпоративная специфика – специфика крупных распределенных предприятий, и понятие системы, т. е. достаточно сложной совокупности различных компонентов, и, конечно, собственно информационной системы как вполне определенного подвида. Назначение данной книги состоит в том, чтобы: дать базовые, фундаментальные представления о предмете, продемонстрировать применение моделей к разработке корпоративных систем, правда, не совсем в математическом понимании этого слова; ввести основные понятия, обозначить их взаимосвязи и применение к корпоративной специфике, описать современную теорию и практику разработки корпоративных приложений.

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

Цель курса – формирование целостной концепции проектирования и реализации, иными словами, разработки, корпоративных приложений в современных условиях. Будет применяться подход Карнеги-Мелонского университета к дисциплине «Software engineering» (программная инженерия), в том смысле, что некоторые его математические модели будут далее упомянуты. В целом необходимо сосредоточиться на теории, которая адекватно поддерживает практику, и именно в том необходимом объеме, который поможет правильно составить систему понятий. А также придерживаться этой системы в соответствии с той многочисленной литературой, которая имеется по предмету, для того чтобы иметь возможность грамотно и с хорошим теоретическим обоснованием говорить о таком непростом и многообразном предмете, как корпоративные информационные системы.

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

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

Естественно, предмет, имеющий технический характер и нацеленный на разработку приложений, прикладных систем, предназначен преимущественно для студентов и магистрантов, которые специализируются на разработке приложений.

Необходимая основа – некоторое понимание моделей, на которых базируется объектный подход к проектированию и реализации программных систем. С математической точки зрения моделью объекта может являться функция. Часто речь будет идти о ?-исчислении и других моделях об исчислении функций, которые представляют собой фундамент моделирования, в том числе информационных систем, и вообще фундамент для объектных моделей. Что касается основ проектирования и программирования – желательны знания в области объектно-ориентированного подхода к проектированию и разработке приложений и основ технологий Microsoft, в частности Microsoft.NET.

В конце книги будут даны некоторые практические решения: на базе группы компаний «Итера» и на основе технологий Microsoft, в том числе программного обеспечения Microsoft Dynamics. Будет использована открытая информация, которая имеется на сайтах Microsoft, связанных с Dynamics, а также другие открытые источники информации.

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

Описание корпоративных информационных системах следует начать с понятия корпораций. Под корпорацией понимается крупная (от 1000 сотрудников), территориально распределенная (часто по всему земному шару) глобальная, трансконтинентальная производстенная структура, т. е. бизнес-структура, которая нацелена на производство продукции. Достаточно большие корпорации, например нефтегазовые, – Газпром, известная крупная и распределенная структура реального сектора экономики, TNK-BP, где объединены ресурсы как отечественных, так и зарубежных производителей нефти и газа, и нефтегазовая группа компаний «Итера», объединяющая порядка 150 компаний в 24 странах мира с общей численностью персонала 10 тыс. человек. Несмотря на распределенность структуры, у корпорации, как правило, есть единый центр управления и общие бизнес-цели и задачи.

Следует отметить, что корпорацию можно понимать и шире. Можно относить к корпорациям и не вполне производственные, но тем не менее распределенные и объединенные общими бизнес-целями структуры. С точки зрения корпоративных информационных систем это вполне допустимый угол зрения. Так, в качестве примера корпоративной структуры можно рассматривать Минпромэнерго, научно-исследовательские учреждения, такие как ИПУ РАН, который включают не менее 10 филиалов по России, университеты, такие как МИФИ, НИУ ВШЭ. ВШЭ имеет около 20 различных площадок только в Москве, МИФИ является также достаточно распределенной структурой с точки зрения как студенческого городка, так и распределенности по территории России. Все эти и другие аналогичные структуры вполне можно отнести к корпорациям.

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

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

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

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

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

После передачи заказчику наступает фаза сопровождения, которая собственно и является основной, наиболее важной, значимой и затратной частью жизненного цикла (ЖЦ) программной системы. Нужно понимать, что ЖЦ – это процесс прежде всего непрерывный, т. е. переход от стадии к стадии обязан происходить и происходит достаточно плавно, каждая предыдущая стадия является основой для последующей, в том числе и документация, которая выступает достаточно важной составляющей по программному продукту, во многих случаях является «сырьем» для начала и успешного завершения следующей стадии. Жизненный цикл – процесс замкнутый, потому как достаточно сложно переходить с одной стадии к другой, миновав промежуточную. Если говорить о корпоративных системах, то, как правило, это не вполне корректный переход. Кроме того, еще одна важная особенность жизненного цикла – его итеративность, т. е. то, что жизненный цикл происходит итерационно.

В ряде моделей жизненного цикла приходится иметь дело с последовательным приближением решения к цели. На определенном этапе получается не полномасштабный с точки зрения функциональности программный продукт, но продукт, который в полной мере уже можно назвать продуктом в том смысле, что он проходит все перечисленные стадии и после того, как передан на сопровождение в виде первичном, ограниченном по функциональности, продолжает развиваться и эволюционировать – начиная с коррекции анализа требований и проектных спецификаций. То есть происходит повторное проектирование и, по сути, повтор всего ЖЦ. Жизненный цикл нужно понимать как процесс или смену фаз, которая происходит во времени последовательно. Фазы, естественно, взаимосвязаны. Важная взаимосвязь между фазами определяется проектной документацией и документацией по программному продукту.

Если говорить о процессе разработки информационной системы, в том числе и корпоративной, то, по сути, в широком смысле речь идет о полном жизненном цикле. В разработке корпоративных информационных систем предполагается, что речь идет о жизненном цикле от начала до завершения в широком смысле. Однако если говорить более узко, то можно рассматривать лишь ту часть жизненного цикла, которая связана с кодированием и программированием, но в случае корпоративных систем это является слишком ограниченным подходом. Какие стадии связаны непосредственно с кодированием или программированием? Это проектирование системы, когда речь уже идет о построении скелета реализации, некоего наброска основы разрабатываемой программной системы, т. е., по сути, речь идет уже о работе с CASE-средствами, со средствами автоматизированного проектирования программного обеспечения, которые обладают возможностями кодогенерации для некоторых стандартных компонентов, составляющих основу программной системы. Затем происходит реализация системы – кодирование. После этого реализация ведется вместе с тестированием, и после реализации фрагментов программной системы происходит их интеграция, сборка, которая также связана с тестированием, и передача заказчику. Может быть также стадия сопровождения.

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

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



скачать книгу бесплатно

страницы: 1 2 3 4 5 6 7 8 9 10