Основы проектирования корпоративных систем Зыков Сергей
В состав проектной документации при разработке корпоративных систем входит большое количество диаграмм, разработать которые вручную не представляется возможным. Поэтому используют специальные средства, при должном навыке работы они дают возможность существенно улучшить производительность труда, организовать командную работу и в итоге существенно уменьшить трудозатраты, сократить сроки и сделать систему более надежной, так как подобные средства включают в себя средства тестирования и трассировки. С помощью этих средств можно, например, производить сравнение требований к системе с определенными характеристиками диаграмм, что позволяет улучшить качество программного обеспечения корпоративного типа.
Речь пойдет о попытках классификации CASE-средств. Их существует великое множество, и их число непрерывно растет. В последнее время популярна тема DSL (Domain Specific Languages) – предметно-ориентированных языков, которые нацелены на какие-то конкретные, узкие предметные области. Для них существуют как большие CASE-средства, такие как Microsoft Visual Studio, в который можно встроить такого рода языки и поддержку диаграмм, так и специальные средства, которые появляются достаточно часто. В любом случае причина появления подобных средств понятна (они будут рассмотрены более подробно), но прежде следует подвести некоторые итоги того, что было рассмотрено в предыдущей части курса моделей и методологий, а также сделать краткие выводы, чтобы перейти к практической части более естественным образом.
По поводу моделей и методологий нужно заметить, что это наиболее абстрактная формализация всего жизненного цикла ПО. Как правило, методологии включают все этапы ЖЦ, за редким исключением. Правильный выбор модели и методологии (если речь идет о жизненном цикле, то лучше употреблять термин «модели», методологии – это просто набор практических приемов реализации этого ПО того или иного программного проекта или программного продукта). Выбор модели критическим образом сказывается в целом на успехе проекта, поскольку он определяет архитектуру проекта, архитектуру решения, из какого количества компонентов будет состоять решение, какие технологии будут использоваться, как эти компоненты будут взаимодействовать. Во многом определяется экономика проекта, поскольку существует глобальный документ – план проекта, тесно связанный с той моделью и методологией, которая принимается для разработки. И в этом плане, естественно, трудозатраты будут указываться в соответствии с выбранной моделью. Некоторые модели, скажем каскадная, поддерживают проектирование в один проход, являются документоориентированными, другие – неполный жизненный цикл, например модель Build-and-fix (модель проб и ошибок), либо итеративную или эволюционную разработку, когда на каждом этапе после завершения каждого частичного цикла появляется в общем готовый с точки зрения надежности продукт, пусть и не полнофункциональный. Здесь тоже во многом можно вести речь о раннем начале сопровождения, т. е. тоже об экономике проекта. Конечно, модель, также как и методология, должна учитывать опыт проектной команды. Естественно, если вести речь о больших системах, команда должна иметь опыт работы с той или иной моделью, с теми или иными стандартами. Конечно, серьезные модели требуют определенной дисциплины при проектировании и зрелости проектной команды, нужно соблюдать стандарты и знать в том числе CASE-средства, используемые командой для всех этапов проектирования и реализации системы. Поэтому стоит обсудить CASE-средства более подробно.
Универсальной модели не существует так же, как и универсального CASE-средства, несмотря на то, что есть линейка Rational, которая поддерживает практически все этапы жизненного цикла, Microsoft Visual Studio – достаточно серьезное средство, в том числе и для командной работы. Поэтому в ряде случаев хорошим подходом является комбинирование. Конечно, у всех моделей, также как и у всех CASE-средств, есть свои определенные преимущества и недостатки, они ранее упоминались. Так, спиральная модель требует оценки рисков, что, с одной стороны, является преимуществом, а с другой – влечет достаточно серьезные затраты, поэтому ее лучше применять для внутренних проектов, где разработчик может получить от заказчика полную информацию о рисках и сложностях, с которыми можно столкнуться в проекте с точки зрения представления предметной области. Преимущества и недостатки имеют смысл только в контексте проекта, исходя из этого следует выбирать не только модель жизненного цикла и методологию разработки, но и те технологические средства и архитектурные особенности, которые будут лежать в основе поддержки этого проекта.
По поводу проектирования и управления базами данных необходимо напомнить, что в основе корпоративных систем лежат базы данных достаточно большого объема, измеряемые тера-, а в ряде случаев – петабайтами (1015 байт). Размер, которого они могут достигать, достаточно быстро возрастает, примерно в 2 раза за пять лет. Это можно считать экспоненциальным ростом при достаточно больших базовых объемах, поэтому достаточно важно рассмотреть базы данных как элемент корпоративных систем.
Когда речь идет о поддержке корпоративных систем базами данных, возникает та же проблема, что и при построении корпоративных систем. То есть сначала нужно выстроить общую архитектуру, в данном случае это ER-модель (структура отношений), а с другой стороны, нужно подумать о физической структуре хранения, о том, каким образом будет осуществляться резервирование для обеспечения надежности, восстановление базы данных, в каком режиме, при какого рода сбоях. Бывают сбои «мягкие», бывают «жесткие», которые вызываются отключением электропитания, более серьезными отказами оборудования, и в ряде случаев может помочь только относительно свежая резервная копия. При этом теряются данные, актуальность, и в этой связи нужно рассмотреть стратегию резервного копирования и восстановления данных, а также механизмы доступа к данным. При этом кроме проектирования, важным вопросом которого является формирование ограничения целостности и ряд других аспектов, нужно учитывать еще и семантическое моделирование, т. е. подходить к базе данных как к модели предметной области (декомпозиция предметной области должна адекватно отображаться структурой базы данных, с тем чтобы изменения, которые могут возникнуть в предметной области, вели к минимальной коррекции общей схемы отношений в базе данных и их взаимодействий).
Еще один важный аспект, который нужно отметить, – это многопользовательский характер работы с корпоративными системами. Здесь используются механизмы, связанные с транзакциями, с атомами функциональности при операциях на низком уровне с базой данных. Достаточно сложно обеспечить устойчивое манипулирование пользователей с данными при необходимости поддержки требований изоляции, т. е. каждый пользователь в идеале должен работать с данными таким образом, как будто кроме него никто с этими данными не работает. То есть ему должно казаться, что за исключением обстоятельств, вызванных временем реакции системы, на самом деле ничего экстраординарного с данными не происходит. Все изменения, которые вносит пользователь, отражаются на структуре данных, и пользователь не должен ощущать того, что одновременное присутствие сотен (а иногда тысяч и десятков тысяч) пользователей усложняет работу. Для этого необходимо обеспечить грамотную стратегию администрирования. Ранее речь шла о том, каким образом это следует делать.
При создании корпоративных систем и построении их при помощи CASE-средств необходимо принимать во внимание также и основы архитектуры. Надо понимать, что вслед за организационной структурой корпорации, которая является распределенной территориально (часто глобально распределенной), архитектура тоже является распределенной. При этом она следует концепции открытых систем, которые поддерживают стандартные интерфейсы, протоколы взаимодействия между компонентами корпоративного программного комплекса, и посредством концепции открытых систем можно обеспечивать плавное наращивание функций и (или) производительности на основе относительно недорогой замены отдельных компонентов или внесения изменений в эти компоненты.
В основе корпоративных архитектур программных систем лежит принцип специализации, т. е. разделения функций, и прежде всего выделения компьютеров или логических объектов, которые обеспечивают обслуживание пользователей и компонентов или программных объектов, производящих запросы на предоставление определенного рода ресурсов. Речь идет о клиентах и серверах. При этом возможна дальнейшая специализация: кроме файл-серверов или серверов приложений можно выделить телекоммуникационные серверы, серверы баз данных и т. д. При этом современные архитектуры клиент-серверного типа, как правило, для корпоративных приложений реализуются в трехзвенной версии, т. е. выделяются явным образом презентационная логика, бизнес-логика и логика доступа к ресурсам. В зависимости от организации распределения этих трех уровней по клиентам и серверам выделяется тонкий клиент и толстый. Тонкий клиент включает только презентационную логику, т. е. фактически веб-браузер на компьютере пользователя, все остальное – и бизнес-логика, и логика доступа к ресурсам – располагается на сервере или различных серверах. Толстый клиент оставляет на сервере только или в основном логику доступа к ресурсам. Тонкий клиент эффективнее с точки зрения возможности реконфигурирования обновлений, поскольку обновления приходится вносить фактически только в серверную часть, а клиентских мест в корпоративной системе, как правило, достаточно много (они измеряются сотнями, тысячами, иногда десятками тысяч), поэтому реконфигурацию производить достаточно накладно. Кроме того, специализация существует и в отношении сервера: иногда бизнес-логика выделяется в особый слой (физически это необязательно отдельно стоящий компьютер), это отдельное приложение со своими ресурсами, которое называется сервером приложения.
Перспективны для корпоративных архитектур подходы, связанные с интегрированными или федеративными базами данных достаточно большого уровня – масштаба государства, поскольку, например, министерство и другие крупные структуры могут также быть названы корпорациями распределенной структуры с общими бизнес-задачами или общими задачами, необязательно именно бизнеса или производственной деятельности. Кроме того, выделяются мультибазы данных, это ограниченное представление интегрированных баз данных, когда корпоративные системы внедрены туда лишь отчасти, поскольку некоторые критичные данные корпорация считает нецелесообразным открывать.
Еще одна интересная особенность перспектив функционирования корпоративных архитектур связана с GRID – глобальной высокопроизводительной сетью, которая при необходимости может гибко наращивать ресурсы, обеспечивать сложные высокопроизводительные вычисления. На сегодняшний день корпоративные системы в отношении GRID еще не так активны, но, вероятно, достаточно скоро настанет время, когда этот подход будет широко использоваться корпорациями.
Таким образом, подводя итоги рассмотрения моделей, методологий и инструментария, можно резюмировать, что комбинация этих аспектов и ее правильный выбор действительно критически важны для проектов. Конечно, нужно учитывать знания проектной команды в предметной области, например в нефтегазовой, если проектируется решение для этой сферы. С другой стороны, необходима определенная дисциплина, знание стандартов и инструментальных средств, которые будут описаны далее.
Конечно, перспективны компонентные корпоративные приложения, как в архитектуре. NET или Java Bins, масштабируемые, мобильные, естественно, существуют и мобильные версии приложений. Компонентный подход. NET предполагает и мобильную версию. Например, мобильный смартфон на платформе Windows Mobile 5.0 также имеет. NET Framework, семейство классов. NET, и на том же самом языке C#, о котором пойдет речь, можно вести проектирование так же, как и на большой системе. Корпоративные клиенты могут получать доступ к данным с таких устройств. Как на платформе. NET, так и на платформе Java возможны подобные решения. Речь идет о клиент-серверных решениях, причем, как правило, трехзвенных, с явным выделением прикладной логики в отдельный слой. Перспективные направления развития корпоративных систем – это кроссплатформенность, т. е. возможность миграции с платформы на платформу (здесь под платформой можно понимать операционную систему и более высокий прикладной уровень), также интероперабельность и безопасность, это достаточно важные тенденции. Интероперабельность связана с компонентным проектированием, т. е. с возможностью гибкого наращивания функциональности или производительности за счет небольшой локальной доработки отдельных компонентов.
В основе моделей жизненного цикла, которые были рассмотрены ранее, должны лежать математические модели. Но нужно понимать, что существует еще более инвариантный слой, который лежит в основе и связан с чисто математическими моделями, оперирующими прежде всего понятиями объекта.
Как уже было отмечено, важные составляющие корпоративных систем – это база данных и СУБД. Перечислим основные стандарты, которым имеет смысл следовать, определившись со стратегией и тактикой реализации корпоративного приложения. В частности, большое значение имеют стандарты UML, Rational Unified Process и Microsoft Solution Framework. Существуют корпоративные стандарты, ряд объектных стандартов, например COM, DCOM, COM+, объектные модели Microsoft, модель Java Bins, компонентная модель Java, модель брокеров объектных запросов CORBA и целый ряд других. Здесь, может быть, нет строгой математической интерпретации, но тем не менее это некая формализация и во многом официальный стандарт, которого следует придерживаться.
В сложных системах, как правило, возникает понятие объекта, как и в современных базах данных. И соответственно проектирование и реализацию этих систем нужно вести с учетом понимания природы этих объектных моделей, и, конечно, для корпоративных систем необходимо использовать достаточно строгие методологии, такие как RUP, MSF, которые дают возможность, с одной стороны, адаптироваться к требованиям заказчика, а с другой – обеспечить достаточно полный набор проектной документации и должной детализации выхода по проекту. Следует напомнить, что выход по проекту и программный продукт – это не только программный код, но и документация, техническое задание или список требований, функциональных и других проектных ограничений, целый ряд диаграмм, описывающих сценарии использования, прецеденты, классы, которые будут проектироваться, динамику взаимодействия (диаграммы переходов состояния, диаграммы последовательностей, взаимодействия, потоков данных, клиент – объект, которые ведут нас к ответственному проектированию, и др.), документация к коду, находящаяся внутри кода к каждому модулю, построчная документация к коду модуля, документация к модульным интерфейсам и общая документация, которая включает документацию для специалистов по установке программ, настройке, конфигурированию, и пользовательская документация, в том числе краткая и полная инструкции по эксплуатации программного обеспечения.
Теперь уже предметно рассмотрим CASE-средства, которые помогают автоматизировать проектирование корпоративных приложений. Попробуем выделить несколько направлений классификации CASE-средств, принципы их упорядочивания, организации, поскольку их действительно достаточно много и многие из них реализуют целый ряд полезных идей, которые было бы целесообразно использовать при производстве корпоративных приложений. Рассмотрим классификации по масштабам применения, видам моделирования (здесь речь идет не совсем о математических моделях, хотя есть CASE-средства, которые используют раскрашенные сети Петри и другие интересные математические формализации, но их не так много) и функциональному назначению. Дадим определение CASE-средств, рассмотрим их основные функции и состав, а также достаточно большое количество примеров с описанием функций основных CASE-средств, которые популярны прежде всего в нашей стране. На Западе традиционно используется немного иной набор CASE-средств. Например, в России достаточно популярно CASE-средство Borland Delphi, а в США оно практически не используется, т. е. срез распространенности, или популярности, CASE-средств в нашей стране и за рубежом выглядит иначе.
Что такое CASE, или Computer Aided Software Engineering? Software Engineering – это программная инженерия, та самая дисциплина, которая и ведет к построению качественных, надежных, производительных, масштабируемых, больших программных систем и комплексов, в том числе в масштабах корпорации. А CASE – это инструментальные средства, которые поддерживают создание таких систем, т. е., по сути, весь жизненный цикл корпоративных приложений. Рассмотрим основные этапы жизненного цикла и задачи, которые пользователи CASE-средств или разработчики решают в ходе создания корпоративных приложений. Во-первых, это анализ и спецификация требований к функционалу и других проектных ограничений к программному обеспечению, которое будет создаваться, проектирование прикладного программного обеспечения и баз данных, т. е. речь идет о диаграммировании и архитектурном проектировании. CASE-средства позволяют в отношении баз данных строить схему базы данных по ER-модели, по ER-диаграмме. Кодогенерация в определенной мере производится также автоматически, например, по диаграмме классов можно строить сигнатуры классов автоматизированно, а также вести трассировку проектных спецификаций.
Когда речь идет о модели Microsoft, или модели синхронизации и стабилизации, следует заметить, что эта модель достаточно сложна, поскольку она требует автоматизации тестирования. Также стоит отметить, что средства тестирования, такие как Rational Robot, достаточно широко распространены в мире CASE-средств. Есть похожее средство и у Microsoft.
Рассмотрим средства документирования. Когда речь идет о большом количестве билдов, большом количестве релизов ПО, нужно поддерживать каждый релиз своей версией документации, которая также имеет версии. Вести контроль этих версий и изменений, которые были внесены, достаточно сложно, особенно если документирование ведется вручную и документация имеет большой объем, вполне сопоставимый, а иногда и превосходящий объем кода. Скажем, документация только для пользователей по одному модулю Oracle Applications – это книга объемом примерно 700 страниц с большим количеством иллюстраций, перекрестными ссылками, глоссарием и целым рядом других вещей для быстрого поиска информации. Конечно, создавать такие документы вручную и отслеживать их взаимосвязи, что очень важно в проекте, в случае корпоративных систем без CASE-средств невозможно.
Далее речь пойдет о системах обеспечения качества, в том числе тестирования и трассировки спецификации. Рассмотрим управление конфигурацией. Как было отмечено ранее, проекты сложны, в них большое количество файлов (тысячи, может быть, десятки тысяч) и каждая версия характеризуется их уникальным набором. Если некорректно учитывать состав этой версии и собирать ее, ПО будет ненадежным или вообще неработоспособным. Когда речь идет о корпоративной системе, это, конечно, недопустимо. Поэтому управление конфигурацией, полный учет модулей и проектной документации, которая их сопровождает, – это тоже важная функция CASE-средств. Еще одной важной функцией является управление проектом, организация взаимодействия на основе, скажем, программного инструментального CASE-средства Microsoft Visual Studio Team System, и целый ряд других процессов.
На самом деле CASE-средства поддерживают весь жизненный цикл и все процессы, сопровождающие ЖЦ, которые приводят к построению надежного, устойчивого, масштабируемого, сопровождаемого, эргономичного ПО. Ведь CASE-средства поддерживают и тестирование, и пользовательский интерфейс, а это достаточно сложная задача, если решать ее вручную. В качестве примера можно привести проект создания системы учета, планирования, управления людскими ресурсами. В проекте достаточно гибкая цепочка ввода данных – порядка 20 форм, которые можно настраивать в зависимости от типа пользователя. То есть когда человек устраивается на работу, он должен заполнить анкету, состоящую на самом деле из последовательного ввода данных в формы. При этом в каждой форме существуют обязательные и необязательные поля, а также поля, которые подразумевают только выбор из уже существующих вариантов, т. е. самостоятельно заполнять эти поля нельзя, и т. д. Настраиваются эти поля достаточно гибко. Понятно, что при создании такого количества форм проверить вручную нажатие всех кнопок и выбор всех вариантов не представляется возможным, поскольку сценарий ввода данных гибко настраивается в зависимости от типа пользователя. Такого рода сложные интерфейсы и позволяют тестировать специализированные CASE-средства.
Какие компоненты входят в состав современных CASE-средств? Это прежде всего репозиторий (единое хранилище метаданных), здесь поддерживается средство хранения версий. Как уже упоминалось, существуют основные или базовые версии, к которым пристраиваются «ветви», или определенные направления, ветвления попыток совершенствования системы. В определенный момент их замораживают или закрывают на замок (lock), делают операцию замыкания и некий стабильный релиз, который полностью обособлен и может быть использован, скажем, на этапе приемки работ или этапе завершения какой-то определенной фазы жизненного цикла ПО. Очень важно при этом поддерживать синхронизацию. Например, если кто-то из разработчиков откомпилировал и сохранил новую версию файла, то нужно добиться, чтобы эта локальная версия файла переходила в глобальный билд как компонент, когда он уже готов и протестирован вместе с соседними модулями. Контроль целостности – тоже важный аспект в случае баз данных. Скажем, если удалить последнего сотрудника из отдела, что должно происходить с отделом? Кроме того, ведется контроль целостности не только на уровне структур данных, но и на уровне проектных спецификаций. Нужно убедиться в том, что они полны, непротиворечивы и те диаграммы, которые разрабатываются, в том числе с помощью CASE-средств, действительно являются адекватным отображением ранних шагов моделирования жизненного цикла ПО.
CASE-средства включают также графические средства как для анализа и проектирования, так и для последующих шагов жизненного цикла. Это возможность создания и редактирования целого ряда диаграмм, например Microsoft Visual Studio, которая поддерживает большое количество диаграмм на основе интеграции со средством Visio. Линейка Rational поддерживает практически все виды UML-диаграмм, поскольку изначально ориентирована на этот язык и стандарт моделирования. Другой стандарт – это IDEF, диаграмма потоков данных, ER-диаграммы и ряд других диаграмм относятся к этому стандарту.
Другими компонентами CASE-средств являются средства, поддерживающие разработку прикладного ПО, т. е. создание программного кода. Здесь сразу следует отметить такие интересные возможности, как IntelliSense с цветовой подсветкой синтаксиса, выделением метаинформации, например, членов данных классов при вводе имени класса и т. д., которые существуют в Microsoft Visual Studio.NET.
Средства управления конфигурацией – это средства документирования, тестирования, управления проектами и реинжиниринга, т. е. средства, которые позволяют вести повторное проектирование, перепроектирование отдельных компонентов программного продукта.
Какого рода критерии классификации можно выделить, если вести речь о CASE-средствах? Их достаточно много. Первые CASE-средства появились в 1990-х гг. В журнале «Byte» от марта 1993 г., который был полностью посвящен CASE-средствам, были описаны методологии проектирования и поддерживающие их CASE-средства. Существовала методология Буч известного автора Гради Буча, сотрудничество которого с Якобсоном и Рамбо привело к созданию языка UML с целым рядом диаграмм. Ивар Якобсон тоже работал в те времена, когда происходило становление CASE-средств. Первые CASE-средства были основаны в том числе на диаграммах потоков данных, так как объектных моделей в полной мере тогда, наверное, не было или они были в начальном состоянии. Также широко использовались ER-диаграммы.
Итак, к основным критериям можно отнести степень интегрируемости, т. е. то, какую долю этапов жизненного цикла поддерживает это CASE-средство, предназначено ли оно только для анализа и проектирования или только для тестирования или для реализации и интеграции, или для документирования, или это CASE-средство или комплекс CASE-средств, которые поддерживают целый ряд этапов жизненного цикла (например комплекс CASE-средств от Rational поддерживает практически весь жизненный цикл). Существуют локальные, частично или полностью интегрированные CASE-средства, т. е. некоторые CASE-средства предназначены исключительно для работы в настольном режиме, однопользовательском, другие – преимущественно для командной работы, разработки больших корпоративных систем. Существуют полностью интегрированные средства, имеющие общий репозиторий, в котором все метаданные проекта хранятся вместе: это и общение по проекту, и конфигурация продукта, и документация. Фактически все эти артефакты хранятся вместе в общей базе метаданных и позволяют получить общий доступ с учетом ролей к тем или иным компонентам проекта.
Естественно, хорошим критерием классификации может явиться стандарт. Скажем, поддерживают ли CASE-средства UML-диаграммирование, или IDEF-диаграммы, или XML как формат хранения и т. д. Методологии проектирования тоже очень важны. Поддерживает ли это средство MSF или Rational Unified Process и в каком объеме, в каких аспектах? Какие модели корпоративных информационных систем, в частности баз данных, поддерживаются? Поддерживаются ли ER-модели и вообще реляционные модели данных или, может быть, поддерживается сетевая иерархическая модель данных, объектная модель определенного рода?
С какого рода СУБД эти CASE-средства интегрированы – еще один критерий. Может быть, эти средства рассчитаны только на кодогенерации, ведь структуры данных могут быть снабжены также ограничением целостности и триггерами и хранимыми процедурами на определенных языках. Скажем, существует язык PL/SQL, который предназначен специально для СУБД Oracle, и какие-то CASE-средства поддерживают только базы данных Oracle или ориентированы преимущественно на Oracle, другие ориентированы преимущественно на Microsoft SQL Server. Эти базы данных и SQL-серверы более подробно будут рассмотрены в дальнейшем.
Начнем по порядку рассматривать CASE-средства и отмечать те их аспекты, которые полезны и укладываются в ту или иную классификацию. Одним из первых CASE-средств, достаточно серьезных и хорошо известных в нашей стране, является BPwin. Как правило, оно используется в комплексе с Erwin, которое генерирует ER-диаграммы и по ER-диаграммам – схемы базы данных. Автором является Computer Associates. Здесь поддерживается методология IDEF0, DFD-диаграмма потоков данных, и основным назначением является функциональное моделирование и анализ деятельности предприятия. То есть речь идет об анализе и спецификации требований. Эта часть жизненного цикла в основном и реализуется CASE-средством BPwin.
В качестве модели данных используется не объектная модель данных, а диаграмма процессов, это очень похоже на DFD и является некоторым развитием. Это более ранняя технология, структурный анализ и проектирование (Structured Analysis and Development Technology, SADT), современный подход называется объектно-ориентированным (Object Oriented Analysis and Development, OOAD). При этом учитываются этапность, стоимость, длительность и периодичность процессов, т. е. в основе лежат диаграммы процессов, и с помощью этого средства возможно проанализировать бизнес-процессы на предприятии, их формальное описание и построение определенных диаграмм, которые позволят оценить стоимость затрат на внедрение системы, узкие места технологических цепочек и затратные центры – другими словами, точки, которые потребуют наибольших затрат.
Полезна интеграция с Erwin, которая поддерживает ER-модель как направление, и генерация отчетов в достаточно распространенных форматах офисных приложений MS Word, MS Excel. Связанным с этим CASE-средством является CASE-средство Erwin той же компании изначально. Это CASE-средство для проектирования и реализации баз данных, т. е. работа идет с IDEF1X-диаграммами, с ER-диаграммами стандартного вида. Здесь достаточно полный набор возможностей: можно строить, настраивать, проектировать в графическом виде ER-диаграммы с атрибутами сущностей, связей, поддерживать индексы и ограничение целостности на основе бизнес-правил.
При этом поддерживается достаточно большое количество SQL-серверов или серверов баз данных – это и Oraсle, и Microsoft, и целый ряд других (Informix, Sybase, Progress, DB2 от IBM) СУБД корпоративного типа. И кроме того, поддерживаются достаточно легкие настольные системы, большинство из них, конечно, уже устарело, но Microsoft Access, например, достаточно современная система, Clipper до сих пор используется, также как и СУБД Paradox, в свое время созданная корпорацией Borland, и целый ряд других систем. При этом важно, что по ER-диаграммам автоматически производится генерация SQL-кода и триггеров, т. е. процедуры, которые поддерживают ограничение целостности. Возможен реинжиниринг базы данных, т. е. по SQL-коду можно восстановить структуру базы. Поддерживает кроме большого количества серверов баз данных достаточно большое количество CASE-средств, и осуществляется возможность коллективной разработки баз данных. Здесь поддерживаются форматы Oracle, Sybase, Microsoft SQL Server.
Что интересно, кроме BPwin, возможна интеграция и с другими CASE-средствами от сторонних производителей, в том числе Delphi – достаточно популярным и распространенным в России CASE-средством.
Достаточно интересно CASE-средство, которое называется CASE 4.0. Оно работает по методологии Уорда Мелора, это тоже структурный подход к анализу и проектированию, дообъектный. По сути, речь идет о расширении подходов Йордена, это одна из первых CASE-методологий, появившаяся в начале 1990-х, и Де Марка (тоже достаточно известный подход для информационных систем, которые функционируют в реальном времени). Это важно и для корпоративных приложений, поскольку очень часто нужно обеспечить быстрое построение консолидированных отчетов. Здесь функционирование в реальном времени или с достаточно быстрой обратной связью и небольшим временем реакции является важным требованием.
Поддерживаются следующие этапы жизненного цикла: системный анализ, проектирование, реализация. Естественно, системный анализ, или анализ требований, производится тоже на основе структурного подхода. В структурном подходе преимущественно учитывается какой-то один из аспектов – либо динамический, либо статический. В объектно-ориентированном подходе равное внимание уделяется и данным, и действиям, и динамике, и статике. То есть если мы посмотрим на класс, основное понятие объектно-ориентированного программирования, то увидим, что он содержит как атрибуты, так и методы, т. е. как некоторые статические числовые характеристики, так и методы, которые позволяют динамически изменять значения этих характеристик. Существует свой репозиторий, который позволяет этому CASE-средству поддерживать жизненный цикл, т. е. существует некое хранилище метаданных, ведется контроль целостности схем информационной системы и базы данных, поддерживается коллективная разработка, поэтому фактически речь идет о средстве создания корпоративных приложений. Кроме того, поддерживается целый ряд диаграмм: это устаревшие структурные карты Джексона и достаточно широко используемые ER-диаграммы, диаграммы переходов состояния (State Transition Diagram, STD) и диаграммы потоков данных (Data Flow Diagrams, DFD). В состав этого средства входят следующие компоненты: репозиторий; хранилище метаданных; визуальные редакторы диаграмм, которые позволяют вести визуальное проектирование, в том числе и командное; средства разработки диалоговых интерфейсов; средство кодирования, редактирования кода и производства документации; клиентская часть. Здесь стоит отметить общий репозиторий, который хранится на сервере, скажем, локальной сети, и серверную часть, которая является кроссплатформенной. Клиентская часть поддерживает только Windows, серверная – как Windows, так и целый ряд Unix-совместимых и других систем.
Еще одно CASE-средство, которое будет рассмотренно, – это Design/IDEF производства компании Meta Software. Здесь поддерживаются методологии, связанные с DFD и ER. То есть во многом очень похожи на предыдущие средства, но интересным является моделирование динамики бизнес-процессов на основе раскрашенных, или цветных, сетей Петри (Colored Petri Networks, CPN). Это достаточно интересная математическая модель, которая широко используется в моделировании – не только математическом, но и инженерном, в моделировании ПО. Какие этапы жизненного цикла поддерживаются? Это формализация требований, разработка и проверка проектных спецификаций, определение компонентов и связей, т. е. программных модулей и их интерфейсов, а также средство документирования. Кроме того, поддерживается имитационное моделирование бизнес-процессов корпорации. Какие функции поддерживаются? Это словари данных, т. е. фактически аналог диаграмм классов, если не подразумевать связи, по сути, речь идет о структуре данных, описании типов, которые входят в эту структуру, коллективная разработка, генерация отчетов, иерархическая декомпозиция, это производится на основе DFD. Кроме того, можно осуществлять генерацию кода на различных языках и дописывать свои языки. Подход, который позволяет дорабатывать, дописывать языки, создавая свой язык, – это подход, который близок к DSL (Domain Specific Languages), которые сейчас активно внедряются в Microsoft Visual Studio. Совместимость достаточно широка – это и MacOS, и целый ряд Unix-систем, и Windows. Существует интеграция с аналитическими пакетами, динамического анализа и анализа Cost Benefits (функционально-стоимостной анализ).
Следующим CASE-средством является комплекс из двух продуктов – Designer 2000 и Developer 2000 от Oracle. Сейчас есть Web Developer и целый ряд других средств от Oracle, которые продолжают эту линейку, но тем не менее это достаточно известное средство, связанное с автоматизацией проектирования корпоративных приложений, корпоративных систем. Oracle Designer предназначен как раз для проектирования корпоративных информационных систем, а Developer – в большей мере для реализации. При этом Oracle Developer ориентирован на корпоративную методологию Oracle CDM (Custom Development Methods). В его основе лежит каскадная модель, подход основан на структурном анализе и проектировании, т. е. достаточно жесткий дообъектный подход, возможно, не самый удачный. Поэтому эта методология существенно менее популярна, чем MSF. Плюсом MSF является наличие тренингов, книг. Рассматриваемая же технология локализована в корпорации Oracle и за ее пределы выходит достаточно редко.
Что включает в себя это средство? Репозиторий, т. е. хранилище метаинформации, поддержка коллективной, командной разработки и централизованное администрирование. Методология CDM поддерживает визуальный анализ бизнес-процессов предприятия и выявление источников их оптимизации, т. е. выявление узких мест, с одной стороны, и дублирование определенных или противоречивых бизнес-процессов, с другой. Детализация происходит на основе иерархических диаграмм. Здесь, конечно же, используется диаграмма потоков данных, которая как раз и является основой для моделирования бизнес-процессов, это классический структурный подход, дообъектный. С другой стороны, широко используются ER-диаграммы как средство проектирования структуры базы данных.
Поскольку речь идет о продукте корпорации Oracle, очевидно, что в основе лежит СУБД Oracle, и, кроме того, рядом находится сервер приложений Oracle Applications семейства прикладных систем корпоративного типа Oracle Applications. Естественно, поддерживается автоматическая генерация структуры данных на основе ER-диаграмм, по ним генерируются таблицы Oracle, поддерживаются диаграммы взаимодействия и ряд других диаграмм. При этом осуществляется поддержка распределения функционала, управляющего базой данных, на клиентскую и серверную часть. Клиентская часть содержит генерацию форм и отчетов (известный продукт Oracle Forms, Oracle Reports). Серверная часть содержит SQL-код с процедурным расширением на языке PL/SQL. Система ориентирована преимущественно на Windows и подразумевает возможность коррекции кода. Естественно, весь комплекс ориентирован на СУБД Oracle, что является существенным ограничением инструментальных средств автоматизированного проектирования ПО, Developer и Designer 2000. Oracle Developer Suite интегрируется с Oracle Designer и поддерживает кроссплатформенность – здесь операционные системы, как Windows, так и Unix, в частности Solaris и Linux, поддерживаются.
Конечно, речь идет о проектировании корпоративных приложений, т. е. поддерживается командная работа в распределенной среде и достаточно большое внимание уделяется интернет-технологиям. Oracle является одним из первых создателей ПО для проектирования корпоративных порталов, которое так и называется – Oracle Portal. В этой связи поддерживаются открытые стандарты на основе API-интерфейса, интерфейсов прикладных программных систем. Поддерживается средство быстрого прототипирования и быстрой реализации Oracle Application Development (OAD), процедурный язык запросов PL/SQL, о котором мы упоминали и который является специфическим для СУБД Oracle, в других СУБД он не используется. Используется стандарт UML для моделирования классов и бизнес-процессов. Также имеется сетевой репозиторий с возможностью контроля версий или релизов программных систем. На основе стандарта XML производится интеграция данных со сторонними CASE-средствами, и нестрого структурированные данные хранятся тоже в формате XML. Поскольку Oracle декларирует тот факт, что СУБД Oracle Enterprise Server является объектно-реляционной СУБД начиная с 8-й версии (сейчас уже существуют 11-я и 12-я версии), описание объектов и их характеристик является ключевым звеном этого продукта и здесь используется стандарт XML для этих описаний. И естественно, присутствует управление командной разработкой, в том числе централизация этого управления, администрирования, и достаточно широкая совместимость как с Unix-, так и с Windows-системами.
Еще одно достаточно известное CASE-средство – Vantage TeamBuilder использует методологии Йордена и структурных карт Константена. Того самого Лари Константена, который явился одним из пионеров CASE-средств и CASE-технологий. Поддерживается целый ряд диаграмм, но в основном опять-таки структурное проектирование, DFD, ER-диаграммы. При этом возможно двунаправленное построение диаграмм – как восходящее, так и нисходящее. Следует напомнить, что при проектировании систем на основе диаграмм потоков данных фактически производится структурная декомпозиция – разбиение относительно общих процессов на более детальные, конкретные составляющие. Здесь это возможно как снизу вверх, так и сверху вниз. Вообще при проектировании систем гибридная интеграция, гибридное проектирование как снизу вверх, так и сверху вниз является предпочтительным, поскольку позволяет достаточно хорошо протестировать проекты, обеспечить качество как модулей верхнего уровня, которые отвечают за основы бизнес-логики, так и модулей нижнего уровня, отвечающих за конкретные функциональные особенности программного кода программного продукта. Существует возможность проверки целостности моделей и диаграмм, которые используются, возможность кодогенерации, включая использование языков четвертого поколения, основанных фактически на скриптах, т. е. на некоторых небольших фрагментах кода, небольших программах, которые активизируются в зависимости от тех или иных пользовательских или системных событий и управляют системой. Естественно, проектирование ведется в визуальном интерфейсе. Поддерживается генерация схемы базы данных и SQL-запросов. То есть речь идет о проектировании как информационной системы, в том числе корпоративного типа, так и базы данных. Возможна настройка представления диаграмм в соответствии с различными стандартами, принятыми как организациями – законодателями этих стандартов, так и конкретными коллективами разработчиков. Возможно настраивать также интерфейсы, атрибуты и шаблоны кодогенерации. Платформа Microsoft поддерживается здесь в меньшей степени, поддерживаются Unix-системы и другие ОС, достаточно хорошая степень интеграции со сторонними CASE-средствами. В частности, поддерживается интеграция с языками программирования четвертого поколения, в том числе с языком C, а также с рядом СУБД – Informix, Oracle, Sybase. Видно, что платформа Microsoft здесь в меньшей степени присутствует как с точки зрения операционной системы, так и сточки зрения СУБД.
Еще одна связка CASE-средств – S-Designer и PowerBuilder производства компании Sybase, которая является также автором SQL-сервера, т. е. сервера баз данных. Эта связка нацелена на проектирование информационных систем и баз данных, в том числе корпоративного типа, клиент-серверных приложений. Основным назначением S-Designer является проектирование баз данных, и здесь используются ER-диаграммы, логические/физические модели данных и также ODBC (Object Data Base Connectivity) драйверы – средства взаимодействия с различными СУБД. Таким образом, интеграция с СУБД достаточно гибкая, большое количество поставщиков баз данных и основные производители здесь представлены: это Oracle, Informix, Sybase, Microsoft, причем как SQL Server, который предназначен для разработки корпоративных приложений с базами данных, так и настольная система Microsoft Access, и целый ряд CASE-средств. Обратим внимание, что используются CASE-средства производства как той же компании Sybase (PowerBuilder, предназначенное для реализации приложений), так и сторонних систем. Работа осуществляется под управлением операционной системы Windows. PowerBuilder работает в связке с S-Designer и также имеет язык четвертого поколения, который позволяет осуществлять написание управляющих процедур в терминах реакции на те или иные события пользователя или системы, и, естественно, существует визуальный интерфейс для реализации процедур на этом языке. Язык похож во многом на C++, это язык объектно-ориентированный.
Следующим CASE-средством, которое будет рассмотрено, является Silver Run. Оно поддерживает практически полный цикл программного обеспечения: это моделирование бизнес-процессов, архитектурное проектирование, детальное проектирование, реализация и сборка или интеграция модулей в полный программный продукт. Используется целый ряд методологий, достаточно ранних. Что интересно, могут использоваться сторонние методологии пользователей, это достаточно открытая система на основе экспертной системы с языковым интерфейсом, т. е. пользователи могут работать в привычных для них терминах той области, в которой они работают, системной аналитики, кадров, финансов, иных корпоративных ресурсов. При этом происходит автогенерация структуры реляционной СУБД. Поддерживается целый ряд систем управления базами данных – Oracle, Microsoft SQL Server, IBM DB2 и другие СУБД. В основе лежат диаграммы, которые нацелены на структурный подход (более ранний, чем объектно-ориентированный) к анализу и проектированию SIDT, т. е. ER-модель и диаграмма потоков данных, которые представляют собой средства описания и декомпозиции бизнес-процессов. Поддерживается целый ряд языков четвертого поколения, в том числе язык PowerBuilder и ряд других. Достаточно хорошая совместимость с большим количеством операционных систем программных платформ – как Windows, так и Unix-систем и MacOS.
Еще одно CASE-средство – это Visible Analyst от Visible Systems. Здесь используется коллективная разработка больших систем, и особенностью является Forward and Reverse Engineering, т. е. проектирование – как прямое, так и обратное. Интересно, что ряд CASE-средств позволяет восстановить модели данных на уровне диаграмм по коду или по схеме базы данных ER-модель. Примерно такого рода операции можно осуществить при помощи этого CASE-средства, которое поддерживает ER-диаграммы или IDEF1X, IDEF0, DFD и некоторые более старые нотации. В основном речь идет о структурном анализе, т. е. о статическом моделировании, в том числе с использованием структурных карт Константена. Поддерживается распределенное командное проектирование с общим сетевым репозиторием, применяются средства верификации – определения корректности переходов от одного этапа жизненного цикла к другому, можно осуществить трассировку требований к ПО и переход от этих требования (предположим, от сценариев использования к диаграммам). Поддерживается некоторое количество СУБД – Oracle и Informix (Microsoft SQL Server не поддерживается), а также достаточно большой спектр языков программирования четвертого поколения, включая PowerBuilder, о котором мы упоминали.
Еще одним достаточно мощным CASE-средством является ARIS производства IDS Scheer AG. Это очень большое и сложное CASE-средство, поддерживается более 80 типов диаграмм, достаточно сложная методология производства больших корпоративных систем, нацеленная на производство систем по учету планирования и управления корпоративными ресурсами (ERP-систем). Здесь можно осуществлять детальный анализ требований, поддерживается весь жизненный цикл – моделирование бизнес-процессов, функций и данных оргструктуры. Достаточно гибким является подход к детализации, написанию спецификаций. Используется целый ряд специфических аспектов, таких как функционально-стоимостной анализ, имитационное моделирование, поэтому это достаточно большое, тяжелое средство и для использования, и для обучения, и для производства больших мощных систем, одной из которых является SAP ERP. Конечно, используются и UML-диаграммы, и целый ряд специфических диаграмм, общее представление которых, если изобразить их графически, называется «домиком ARIS» и представляет собой пирамидальную структуру.
Еще одно мощное средство, которое будет рассмотрено, – это Microsoft Visual Studio.NET, которое предназначено для коллективной разработки больших систем распределенных приложений на основе компонентных интероперабельных приложений. При этом используется визуальный интерфейс. Какие основные функции можно обозначить при описании этого средства? Это построение быстрых прототипов, т. е. достаточно быстро можно осуществить визуальное проектирование, создать формы, элементы управления, командные кнопки, выпадающие меню и т. д., все это будет хорошо соответствовать современному интерфейсу Windows, оформить эти элементы управления соответствующими скриптами, скажем, на языке C#, короткими фрагментами кода, которые будут по тем или иным событиям наступать и выполняться, и таким образом осуществить быстрое прототипирование ПО. Кроме того, это разработка, тестирование, сопровождение крупных приложений корпоративного типа, прежде всего связанных с интернет-средой, потому что Visual Studio.NET основано на технологии веб-сервисов и использует ряд других технологий распределенной работы и обработки данных, включая remoting, технологии ASP.NET, Windows Forms, Web Forms и целый ряд других технологий Microsoft. Еще одна важная функция инструментальных средств – анализ и генерация структур информационных систем и баз данных. Под базой данных понимается преимущественно Microsoft SQL Server, управление бизнес-требованиями и т. д. Используется единая среда вычислений, внутри которой на основе общей виртуальной машины можно создавать гетерогенные проекты на различных языках программирования (поддерживается несколько десятков языков) и, более того, разрабатывать собственные языки программирования. При этом удается обеспечить достаточно высокий процент повторного использования компонентов, шаблонов архитектуры приложения корпоративного уровня, есть специальные библиотеки классов для корпоративных приложений (об этом речь пойдет позднее). Другое важное направление – средства создания требований к ПО, кодогенерации. В основе лежат протоколы или стандарты XML, SOA для сервисно-ориентированной архитектуры, абстрактная машина. NET, технология ADO (активных объектов данных) и целый ряд других технологий.
Еще одним важным стандартом, на который ориентируется Microsoft, является UML. Существенным недостатком (но на сегодня уже не столь значимым, поскольку Internet Explorer является достаточно распространенным браузером) является ориентация на платформу Microsoft, но основной недостаток по-прежнему остается в том, что это не только браузер, но и вся платформа, операционная система. К сожалению, интеграция с другими операционными системами и СУБД не слишком хороша, это является существенным ограничением.
В отличие от данного продукта средства, предлагаемые корпорацией IBM, линейка Rational, которая в свое время была приобретена у компании Rational, являются кроссплатформенными, т. е. поддерживают как Windows, так и Unix-диалекты, достаточно большое количество операционных систем. По сути, здесь также поддерживается весь жизненный цикл ПО, в том числе создание, анализ, коррекция, верификация архитектуры информационных систем. Все это происходит на основе открытых стандартов того же самого SOA, UML, SQL стандарта ANSI и ER-диаграмм или IDE-F1X и фактически поддерживается весь жизненный цикл ПО. Это и моделирование предметной области в терминах бизнес-процессов или инжиниринг, проектирование схемы БД, в том числе на основе визуальных технологий, разделение интерфейса и бизнес-логики, визуальный анализ и спецификация требований, поддержка различных языков программирования, в частности интеграция с C, C++, Java, Smalltalk, ADA (это язык, который поддерживает большие корпоративные системы для реального времени, язык, разработанный Пентагоном, используется во многом для военных систем) и целым рядом других языков. Поддерживается большое количество СУБД, прежде всего IBM DB2, Microsoft SQL Server, Oracle. Также существует большое количество шаблонов. Порядка 15 средств, которые отвечают за реализацию жизненного цикла ПО, используются в этом пакете: анализ и формализация требований – Requisite Pro, тестирование – Test Manager, контроль версий – Clear Case, формирование отчетов и целый ряд других процедур. Это семейство программных продуктов является интегрированным, и поддерживается сквозная унифицированная визуальная модель, в том числе для встроенных систем и мобильных устройств на основе открытой сервисно-ориентированной архитектуры SOA (Service Oriented Architecture). Преимущества таковы, что поддерживается кроссплатформенность, фактическая независимость от операционной системы и во многом от среды реализации, т. е. различные языки программирования, большой процент повторного использования, автоматическая генерация и оптимизация кода различных языков программирования. Система ориентирована на производство кроссплатформенных динамических интернет-приложений для различных устройств, как больших машин, так и мобильных устройств – смартфонов, коммуникаторов и т. д.
Обсудив основные CASE-средства (основные в том смысле, что они часто используются в нашей стране и на их основе реализован целый ряд больших и крупных корпоративных информационных систем), перейдем к классификации этих систем. Можно выделить три основные направления классификации – по масштабам применения, функциональному использованию (назначению) и видам моделирования, т. е. какого рода модели (стандарты) используются этими CASE-средствами. Естественно, все эти деления достаточно условные, это только один из вариантов возможных классификаций.
По масштабам применения CASE-средства можно разделить на локальные закрытые, средние открытые комплексные и крупные открытые комплексные.
Локальные закрытые – однопользовательские настольные системы с простыми нотациями для локальных информационных систем и небольших систем – до 100 одновременных пользователей. Это такие системы, как Design/IDEF, отечественное средство CASE-аналитик и ряд других.
Средние открытые – это ERwin, BPwin. Здесь подразумеваются интеграция со средствами быстрой разработки приложений и расширенные графические нотации, т. е. определенная открытость с точки зрения интерфейса уже присутствует.
Крупные открытые – комплексные системы, которые поддерживают комплексные графические нотации, встроенные средства прототипирования и быстрой разработки приложений (Rapid Application Development). Одним из примеров является S-Designer и PowerBuilder, т. е. речь идет о конвейерном производстве систем, о некоторых конвейерах, которые поддерживают достаточно большую долю жизненного цикла (итераций, связанных с ЖЦ программных систем). Большие системы для производства корпоративных приложений, крупные открытые комплексы поддерживают целый ряд графических нотаций, хорошо стыкуются с известными корпоративными методологиями и ориентированы на производство больших программных систем, т. е. имеют средства командной разработки, быстрого прототипирования и поддерживают весь жизненный цикл ПО. Это линейка Rational, которая была рассмотрена ранее, это конвейер Designer-Developer, который ориентирован преимущественно на Oracle, но тем не менее и на большие корпоративные СУБД и корпоративные приложения класса ERP, системы учета и планирования корпоративных ресурсов, ну и, конечно, Visual Studio.NET от Microsoft.
По функциональному назначению можно выделить следующие виды CASE-средств.
Комплексно-технологические конвейеры. О них мы уже упоминали, это Oracle Designer-Developer, Microsoft Visual Studio и линейка IBM Rational, которые представляют собой действительно большие комплексы программных средств и достаточно сложные программные средства, такие как Microsoft Visual Studio Team Suite, и предназначены для создания больших и сложных корпоративных систем с высокой степенью масштабируемости, со средствами прототипирования и поддержкой основных этапов жизненного цикла.
Проектный инструментарий для решения исследовательских задач. Рассматривалось средство, которое было связано с раскрашенными сетями Петри, есть специальные средства, такие как Protg, основанные на использовании онтологических моделей, т. е. средства, которые предназначены преимущественно для исследовательских задач. Какие области следует здесь выделить? Это реинжиниринг бизнес-процессов (Business-Process Reengineering, BPR), когда в корпорации имеет смысл решить задачу оптимизации, перепланирования критических бизнес-процессов, расшивки узких мест и оптимизации затрат, скорости и качества обслуживания, что достаточно актуально в кризисный период.
Системный анализ и проектирование. Речь идет о построении новых или перспективных моделей функционального и информационно-событийного моделирования приложений, которые уже эксплуатируются либо будут создаваться.
По видам моделирования: моделирование бизнес-процессов, функциональное и событийно-информационное моделирование. Здесь речь идет в основном о методологиях, стандартах, которые используются, – объектно-ориентированный анализ и проектирование, структурный анализ и проектирование.
Моделирование бизнес-процессов. Бизнес-процессы формализуются IDEF0– и DFD-диаграм мами (диаграммы потоков данных) на основе методологий структурного анализа. Используются здесь такие CASE-средства, как BPwin и Design/IDEF. Важным недостатком является то, что статическая модель IDEF0 или DFD и подход на основе структурного анализа и проектирования не вполне отвечают динамическим, быстро изменяющимся требованиям внутри корпорации, которые связаны с бизнес-процессами. Здесь могут использоваться специфические модели на основе цветных, или раскрашенных, сетей Петри – это Design/CPN и Design/IDEF, которые блокируются друг с другом, используются совместно CASE-средства. Другой вариант использования специфических моделей для бизнес-процессов, в том числе тоже на основе CPN (раскрашенных сетей Петри).
Функциональное моделирование. Как правило, в России используются CASE-средства, поддерживающие те же нотации DFD (диаграмм потоков данных) и структурный анализ и проектирование, событийное моделирование расширяется управляющими потоками и процессами, т. е. расширенные диаграммы потоков данных, и, кроме того, используются такие диаграммы, как State Transition Diagram (диаграммы переходов состояния), диаграммы последовательностей, взаимодействи и другие UML-диаграммы, здесь речь идет уже о применении UML-стандарта.
Информационное моделирование. Моделирование структур данных или баз данных с использованием IDEF1X или методологии ER-диаграмм (ER-методологии).
CASE-средства Designer-Developer от Oracle как комплексный пакет и Visual Studio.NET поддерживают моделирование и бизнес-процессов, и функций данных, и событий. И линейка Rational является всеобъемлющей с этой точки зрения, поддерживаются все четыре вида моделей. Другие средства содержат меньшее количество моделей, т. е. специализируются на каких-то отдельных видах моделирования.
По сферам применения можно отметить те же CASE-средства – Rational, Microsoft Visual Studio, Oracle Designer-Developer, которые поддерживают весь жизненный цикл программных продуктов. Другие поддерживают выборочно – либо анализ и проектирование, либо реализацию и тестирование, либо проектирование баз данных. Есть еще целый ряд специфических средств, которые нацелены на анализ бизнес-процесса с выявлением узких мест или выявления оценки рисков, бизнес-планирования и оценки трудоемкости.
По моделям данных или методологиям, которые поддерживаются, здесь можно выделить также несколько основных направлений. Самыми распространенными методологиями являются IDEF1X (ER-модель) и различные UML-диаграммы, они поддерживаются достаточно большим количеством средств. Можно заметить, что существует большое количество методологий, которые на самом деле практически никакие CASE-средства не поддерживают. Самыми хорошими примерами поддержки большого количества методологий являются линейка IBM Rational, где поддерживается весь спектр UML-диаграмм и ряд других, а также Microsoft Visual Studio.NET, который тоже поддерживает широкий спектр диаграмм стандарта UML.
Завершая обсуждение CASE-средств, средств автоматизации проектирования систем, в том числе корпоративных приложений, следует сделать некоторые выводы. Итак, современные CASE-средства представляют собой комплексные конвейеры, если говорить о больших корпоративных приложениях, которые позволяют вести быстрое прототипирование и разработку приложений, т. е. существует объединение или интеграция с Oracle Application Development средствами: Oracle Designer-Developer, Microsoft Visual Studio, линейка Rational и отчасти Sybase, которая представлена S-Designer – средством проектирования и PowerBuilder – средством быстрой реализации и прототипирования. Основной стандарт визуального проектирования сегодня – это UML, достаточно большое количество диаграмм, которые позволяют моделировать и динамические, и статические процессы, происходящие при проектировании ПО. При выборе CASE-средств для проектирования и реализации корпоративных приложений следует отдавать приоритет аппаратно и, желательно, программно независимым и с высокой совместимостью, преимущественно Java, интероперабельным (т. е. системам, которые позволяют гибко конфигурировать корпоративные приложения на основе большого количества интероперабельных компонентов, это. NET и Java-технологии), распределенным (в частности, сегодня это интернет-технологии, уже не локальные сети) и компонентно-ориентированным, портируемым, поддерживающим как большое количество операционных систем, так и различные устройства доступа – от небольших смартфонов и коммуникаторов до полномасштабных офисных машин.
Глава 8
Программная платформа Microsoft.NET
В данной главе будет более подробно рассмотрен подход Microsoft к созданию корпоративных систем. Прежде всего речь пойдет о Visual Studio.NET и вообще о. NET подходе. Не стоит ограничивать. NET чисто технологическим аспектом, так как. NET – это платформа в достаточно широком и глубоком смысле этого слова, т. е. это идеология проектирования программного обеспечения, которая имеет в основе такие принципы, как сервисная ориентированность, интернет-распределенность, командная работа, компонентная ориентированность (интероперабельность) и, что еще интереснее, языковая интероперабельность – создание гетерогенных проектов с компонентами, написанными на разных языках и разными людьми в разных точках земного шара. По сути, речь идет об идеологии производства систем корпоративного типа, при этом платформа является достаточно общей и имеет единую среду в форме виртуальной машины, которая предназначена для создания и поддержки таких систем. На основе математических моделей, разработанных Юрием Гуревичем, моделей абстрактных машин с состояниями, построена виртуальная машина, на основе которой происходит создание приложений Microsoft Visual Studio.NET, являющихся уже технологической надстройкой, т. е. NET – это во многом еще и идеология и модель. Рассмотрим ее более подробно.
Хотелось бы выделить четыре аспекта в подходе. NET как платформы для разработки корпоративных приложений:
1) концепция, т. е. общий подход;
2) вычислительная модель – в ее основе лежит достаточно формальная математическая модель. Это некая более реальная реалистичная формализация, но тем не менее тоже фактически модель вычисления на компьютере достаточно общего вида. Так же, как в Java-подходе, имеется виртуальная Java-машина, которая работает на любой платформе, так и здесь есть виртуальная машина высокого уровня, в терминах которой компилируется код на различных языках программирования, но эта платформа ограничена множеством ОС Windows;
3) технологическая платформа;
4) инструментальная средства Visual Studio.NET.
Достаточно важным является подход к реализации системы управления этой виртуальной машиной, которая называется Common Language Runtime (CLR) и подразумевает выполнение компонентов программы, написанных на различных языках. Платформа включает среду реализации, среду вычисления с точки зрения абстрактных (виртуальных) машин и. NET Framework общей надстройки, которая представляет собой семейство базовых системных классов. При этом система типов также является достаточно универсальной, т. е. общей common type system (CTS). По сути, с одной стороны, это система типов, которая принята в C#, а с другой – в эту систему типов подгружается на самом деле система типов любого языка программирования, который написан для этой среды.
Одним из достаточно ранних курсов, реализованных в Санкт-Петербургском государственном университете для. NET, является курс создания компилятора для. NET. Он был написан для студентов второго курса, которые за один семестр могли создать компилятор некоего подмножества языка C# для. NET. То есть речь идет о том, что не только на тех языках, которые реализованы для. NET, но и вообще на этой платформе возможно реализовать произвольный язык, если правильно погрузить его в термины виртуальной машины, и, конечно, типы языка, каким бы он ни был, будут оттранслированы в семейство CTS.
Еще одним важным принципом реализации концепции. NET является предоставление ПО как сервиса. На самом деле эта идеология присуща не только Microsoft, но и Java или подходу IBM SOA, но в рамках подхода. NET есть множественные реализации, которые связаны с различным образом организованными сервисами: это веб-сервисы, технология Remoting, более поздняя технология WCF и др., скажем ASP, технологии, связанные с веб-формами, и целый ряд других технологий, которые предназначены для реализации ПО как сервиса и распространении SOA по сети Интернет.
Первое, что приходит на ум при словах «распространение по Интернету», – это вирусы. В этой связи нужно сказать, что важным акцентом после известных событий 11 сентября для Microsoft является безопасность. Платформа. NET во многом ориентирована на реализацию этого принципа безопасности, и компоненты, которые создаются в рамках платформы. NET, учитывают это.
Одним из направлений реализации и принципом подхода SDL (Secure Development Lifecycle) является Seсure by Design, т. е. собственно проектирование ПО ведется таким образом, что оно является изначально безопасным. Во многом на это нацелена идеология. NET и ее компонентная ориентированность механизма сборок assembler, т. е. самодостаточных компонентов для разворачивания ПО, который является основой идеологии. NET и защищен такими средствами, как цифровая подпись, имя автора и версии сборки и целый ряд других аспектов, позволяющих обеспечивать высокую безопасность создаваемого ПО как покомпонентно, так и в целом для корпоративных приложений, строящихся на основе интероперабельности – постоянно взаимодействующих и меняющихся объектов.
Далее рассмотрим компонентный подход: как строятся компоненты, в чем идеология их создания, почему их можно создавать на разных языках и на основе чего они взаимодействуют при этом, как осуществляется реализация общих интерфейсов.
Прежде всего речь пойдет о технологии Windows Forms и Web Forms, достаточно важных технологиях создания, в том числе и корпоративных приложений, которые обеспечивают стандартизацию пользовательских интерфейсов и взаимодействие в среде Интернет на основе этих интерфейсов. Конечно, мы посмотрим на. NET. Отчасти в сравнении с Java весь San Microsystems тоже имеет достаточно древний и апробированный подход, который называется EJB, по сути, компонентное проектирование тоже на основе виртуальной машины, и даже в различных ОС, не только Windows. Но с языковой точки зрения интероперабельность – подход немного беднее. Мы обсудим некоторые параллели, преимущества и недостатки. NET, которые выявлены и существуют, в том числе и в аспекте проектирования корпоративных приложений.
Не совсем верно рассматривать. NET как исключительно технологическое средство, платформу. По сути, это достаточно комплексная идеология проектирования ПО, в том числе и корпоративного типа.
NET включает следующие основные аспекты (послойно, от более абстрактного уровня к более конкретному):
1) идеология проектирования и реализации программного обеспечения;
2) модель эффективной поддержки жизненного цикла прикладных систем;
3) унифицированная, интегрированная технологическая платформа;
4) современный, удобный в использовании, безопасный инструментарий для создания, размещения и поддержки программного обеспечения.
Прежде всего это идеология, подход к проектированию и реализации, потому что речь идет о создании большой системы, коммерческой разработке, использовании различных языков программирования на общей платформе, компонентах проектирования реализации с открытыми интерфейсами.
Кроме того, это модель, в том числе и математическая, достаточно эффективной поддержки ЖЦ программных систем – от концептуальной постановки задачи проектирования до реализации, внедрения, разворачивания по сети Интернет одним кликом приложения и сопровождения. Это технология, обеспечивающая унифицированное проектирование с точки зрения использования открытых протоколов и средств взаимодействия SOA, HTTP, XML, UDDI, WSDL, других стандартов и, наконец, это современный, удобный в использовании и безопасный инструментарий командной разработки больших систем, который поддерживает все этапы ЖЦ – создания, разворачивания, размещения и сопровождения поддержки ПО.
Итак, рассмотрим более подробно основные аспекты. NET.
В чем состоит видение Microsoft этой идеологии?
По сути, речь идет действительно об идеологии, которая появилась на рубеже тысячелетий в 2000 г., может чуть раньше, и явилась программой развития корпораций, как минимум, десятилетия. Эта идеология доминирует до сих пор и претерпевает небольшие изменения, но концептуально остается в целом постоянно верной своим принципам.
NET как идеология (vision) – это:
1) легкость развертывания приложений в глобальной среде Интернет;
2) экономичная разработка программного обеспечения;
3) бесшовная, гибкая интеграция программных продуктов и аппаратных ресурсов;
4) предоставление программного обеспечения как сервиса;
5) новый уровень безопасности и удобства использования. Во-первых, само обозначение. NET говорит о том, что эта технология ориентирована на Интернет, на открытую среду взаимодействия компонентных приложений на глобальную среду, это веб-браузер, который работает на различных программно-аппаратных платформах – и смартфоны, и коммуникаторы, и при этом обеспечивается доступ к ресурсам в неких центрах данных, если речь идет о корпоративных системах.
1. Важным аспектом является легкость разворачивания приложения в глобальной среде Интернет. На сегодня в Microsoft реализован инструментарий ClickOnce, который позволяет осуществить разворачивание программных системы одним щелчком мыши.
2. Еще один аспект идеологии. NET – экономичная разработка ПО. Здесь речь идет и об экономии средств людских, временных ресурсов при командной работе, которую обеспечивает Visual Studio.NET как инструмент технологический, и собственно о том, что идеологически проектирование представляет собой создание компонентов, неких молекул функциональности, из которых и строится то самое вещество программного продукта корпоративного типа, который благодаря открытым интерфейсам может достаточно гибко и в относительно сжатые сроки с небольшими трудозатратами трансформироваться согласно требованиям программной среды и большого количества различных типов пользователей.
3. Также важным идеологическим аспектом. NET является интеграция программных продуктов и аппаратных ресурсов, которую можно охарактеризовать как бесшовную, гибкую. Вообще, если рассматривать производство ПО как задачу, то можно заметить, что изначально это было искусство, т. е. фактически ручное изготовление штучного товара. Позже наступил период, когда кустарей-одиночек сменили программные проектные команды, создающие ПО с использованием более серьезного инструментария. В настоящее время существующие сборочные конвейеры, такие как Visual Studio.NET и др., позволяют во многом стандартизировать режим и на основе стандартных компонентов вести сборку очень сложных систем, включающих сотни тысяч индивидуальных программных моделей, достаточно сложно взаимодействующих друг с другом. Сегодня все, что строится в мире ПО, во многом связано с интеграцией, т. е. в идеале новое ПО не производится, принципиально новая функциональность даже при создании нового продукта составляет от силы 10–15 %, все остальное – это уже ранее использованное решение, которое просто повторно применяется, и интеграция новых функциональных моделей компонентов с уже реализованными частями, фрагментами программ продуктов.
4. Еще один важный элемент идеологии – предоставление программного обеспечения как сервисов. То есть, с точки зрения пользователей, это фактически может выглядеть как некий сайт со средствами, которые предоставляют достаточно гибкие возможности для выполнения запросов в стандартном интерфейсе, и, по сути, функция ПО может быть реализована как сервис, распределена по интернет-сети и доступна по правилам доступа большому количеству пользователей.
5. Еще два важных аспекта идеологии. NET – новый уровень безопасности и удобства использования.
По поводу удобства: Microsoft удалось завоевать достаточно большое количество пользователей во многом потому, что ОС, которые она предоставляет, являются достаточно удобными с точки зрения удобства пользования (usability) – это хорошие средства, позволяющие достаточно быстро решать сложные или типовые задачи одним щелчком или с помощью мастеров для решения типовых задач. В Microsoft одна из самых сильных команд специалистов по usability. И многие пользователи уже привыкли к интерфейсу Microsoft.
Безопасность – это стратегический приоритет корпорации, и, конечно, NET как идеология не может не отмечать важность этого приоритета и широко его применять.
1. Компонентный подход как развитие объектно-ориентированной модели.
2. Универсальная система типизации: «всякая сущность есть объект»; унификация данных и метаданных.
3. Строго иерархическая организация кода, пространств имен и классов.
4. Универсальный интерфейс. NET Framework (включая поддержку различных подходов к программированию).
5. Высокая вариативность экземпляров реализации (в частности, на основе веб-сервисов).
Рассмотрим особенности вычислительной модели работы. NET, как подхода к созданию, в том числе больших корпоративных систем.
Прежде всего платформа. NET использует компонентный подход. По сути дела, это развитие объектно-ориентированной модели, компонент – это несколько большее понятие, чем объект, и достаточно важное, по сути дела, это некий программный модуль, на основе которого строятся приложения, взаимозаменяемый, стандартного рода модуль, который представляет собой молекулу функциональности.
Еще одним важным аспектом вычислительной модели является универсальная или обобщенная система типизации Common Type System. Здесь реализуется достаточно инновационный подход Microsoft, который сводится к декларации, что каждая сущность есть объект. То есть речь идет о чисто объектно-ориентированном подходе и попытке реализовать эту идею, а также об унификации данных и метаданных. Во всяком случае появляется достаточно хорошее средство использования метаданных. Репозиторий метаданных реализован достаточно эффективно, в частности, следует отметить средство Reflection, которое позволяет восстановить код по метаданным класса. Сборка или представление компонента включают в себя все метаданные, которые необходимы для разворачивания этого компонента как части программного продукта.
Кроме того, существует строго иерархическая организация кода. Поскольку речь идет о создании больших корпоративных систем, необходимо очень четкое определение местонахождения кода и управление этим кодом. Существует понятие «пространство имен и классов», в рамках которого на иерархической основе осуществляются хранение, поиск и управление кодом, из которого строятся большие программные проекты.
Обобщенный интерфейс. NET Framework базовых, системных классов является надстройкой над OC Windows и позволяет, кроме всего прочего, осуществить интеграцию различных подходов к программированию, таких как ООП, функциональный, логический и др.
Для. NET реализован целый ряд языков программирования, которые транслируются во внутреннюю среду абстрактной или виртуальной машины. NET. Это прежде всего родной язык. NET Си#; это F#, который, по сути, является развитием языка SML, т. е., с одной стороны, он во многом является функциональным языком, но с другой – реализует и некоторые аспекты ООП, поскольку функция является объектом модели и язык моделирует объектный подход; ряд языков Cobol, Fortran, которые использовались в большом количестве унаследованных проектов, и. NET, позволяет портировать проекты унаследованных приложений, в том числе корпоративных, которых очень много.
Языки логического программирования, такие как Prolog, поддерживаются в. NET, и любой новый или известный язык в виде компилятора для. NET можно реализовать самостоятельно.
Кроме того, важным является использование вариативности, т. е. возможность адаптировать различные экземпляры реализации применительно к требованиям пользователей, в том числе на основе веб-сервисов, гибко конфигурировать и вносить изменения в небольшие фрагменты кода.
Перечислим основные особенности технологической платформы. NET.
Многоязыковая поддержка. Нет ни одной другой платформы, на которой можно использовать так много языков программирования, как в. NET: всего их насчитывается около сотни.
NET интересна как платформа для обучения программированию, можно познакомиться с различными аспектами.
Использование веб-сервисов позволяет обеспечить как масштабируемость, так и интероперабельность, т. е. гибкое взаимодействие различных приложений на основе разного рода сервисов, входящих в их состав, которые управляют различного рода компонентами.
Независимо от языка программирования и программной модели поддерживается унификация доступа к библиотекам за счет общего интерфейса с виртуальной машиной. NET. Здесь используется аналог API-интерфейса, т. е. открытого интерфейса на основе классов, который можно достаточно гибко настраивать.
Также важно отметить, что. NET во многом соответствует современным технологическим стандартам. Язык C# сейчас фактически стандартизован европейской ассоциацией стандартов, и во многом используются стандартные протоколы обмена и стандарты таких данных, как HTTP, XML, UML, SOAP, протоколы взаимодействия.
Как инструментальное средство, NET является достаточно универсальным, поскольку поддерживает многоязыковую среду Common Language Runtime (CLR), которая, как упоминалось ранее, поддерживает разработку компонентов на различных языках. При этом важной особенностью является возможность построения фрагментов проекта на наиболее подходящих для этого языках.
При реализации бизнес-логики и интерфейса их, конечно, необходимо разделять. Бизнес-логику лучше реализовать на Прологе как набор условий и логических альтернатив, другой подход – сделать это на функциональном языке, таком как F#, а интерфейс можно достаточно легко реализовать на C#, который включает все механизмы взаимодействия с Windows и библиотеками. NET Framework наиболее быстрым и прозрачным способом, т. е. различные компоненты достаточно быстро реализуются.
И в этом смысле у. NET практически нет альтернатив, такого большого спектра языков и разнообразия подходов больше не найти. Причем сервисные средства. NET, такие как отладка, анализ кода и т. д., поддерживаются для всех без исключения языков, реализованных в рамках Visual Studio. То есть на каком бы языке ни велась разработка, программист получает все сервисные возможности, интегрированные в среду разработки. Как было сказано ранее, можно разрабатывать собственные языки программирования, это достаточно интересно и актуально. Одним из современных направлений развития программной инженерии является создание программного обеспечения на основе DSL – предметно-ориентированных языков, т. е. языков для приложений того или иного рода, той или иной предметной области.
Можно заметить, что одни языки разработаны Microsoft, другие – сторонними организациями и т. д. То есть существует бесконечное их разнообразие, поскольку есть возможность создать любой язык, погрузить его в. NET и экспериментировать.
Посмотрим на архитектурную схему: сбоку, интегрируя все доступные сервисы (рис. 8.1), начиная с уровня естественного языка, с уровня исходного кода на языке программирования, находится Visual Studio.NET – как средство разработки, оно интегрирует все особенности платформы. Основой для программирования являются различные языки программирования. Работа происходит в исходном тексте, в стандартном редакторе Visual Studio.NET, при этом на любом языке. Типы этого языка, какими бы своеобразными они ни были, транслируются автоматически при трансляции кода в стандартные системные типы. NET, т. е. имеют место трансляции в типы Common Language Specification (CLS). Далее используются на уровне пользовательского интерфейса различные веб-формы, веб-сервисы, скажем, средства SP.NET Windows Forms, технологии, связанные с. NET Remoting, и т. д. На уровне взаимодействия с данными используются технологии ADO.NET и т. д., слабоструктурированные данные могут преобразовываться по средствам форматов в стандарты XML. Естественно, все взаимодействие со средой выполнения строится на основе базовых классов. NET Framework, которые едины для любого языка программирования, строятся на основе компонентов, берущих свое начало в базовых классах. И все трансляции осуществляются в термины ассемблера высокого уровня – это ассемблер Common Language Runtime (CLR), т. е. виртуальной машины. NET (рис. 8.2).
Рис. 8.1. Архитектурная схема. NET Framework и Visual Studio.NET
Рис. 8.2. Схема компиляции в Common Language Runtime
При компиляции некоторого модуля программного текста, который написан на том или ином языке, запускается компилятор, зависящий от языка программирования, но среда у них общая, и в итоге получается сборка в форме DLL или EXE, который содержит все необходимые метаданные, чтобы развернуть и запустить эту сборку в составе корпоративного приложения.
Естественно, трансляция осуществляется в терминал языка MSIL – это ассемблер высокого уровня, который в 3–5 раз плотнее, чем обычный ассемблер, если рассматривать, например, процессор Intel 8086 или ассемблер Z80.
Рис. 8.3. Схема выполнения CLR
При этом в ряде случаев не представляется возможным осуществить безопасную компиляцию в управляемый код. К сожалению, работа с некоторыми механизмами, например с памятью, небезопасна, и в этом случае программист обязан пометить этот фрагмент кода как неуправляемый код. Он транслируется по другому пути, без MSIL, и объединяется с родным кодом уже как неуправляемый объект – и в этом случае ответственность за безопасность лежит на программисте. В любом другом случае компилятор преобразует сборку в исходный текст. После чего осуществляется сборка с использованием JIT-компилятора на платформе CLR, и, по сути, идет работа в терминах операционной системы, т. е. взаимодействие со средой Windows уже скомпилированного и собранного приложения.
Основные возможности, которые предоставляет среда CLR:
• поддержка стандартных типов и правил создания новых типов;
• межъязыковая интеграция:
– включение в код на одном ЯП классов на другом ЯП;
– обработка исключений из программы на одном ЯП программой на другом ЯП;
– и т. д.
• единый набор библиотек классов для всех поддерживаемых ЯП;
• самоописываемые компоненты – не требуют дополнительных файлов (IDL, TLB, Proxy/Stub и т. п.); компонент является самодостаточным, имеет всю необходимую информацию для встраивания его в программный продукт и разворачивания;
• поддержка версий компонентов и сборок кода;
• сервисы безопасности (запрет неавторизованного доступа к ресурсам для пользователей – Role-Based Security, доступ на основе безопасности кода – Code-Based Security и автор кода, версия сборки и др.).
Рассмотрим работу универсальной системы типизации (рис. 8.4).
В основе лежит понятие базисного типа, который в. NET называется System.Object (это очень похоже на Java). Он делится на две категории – типы-ссылки и типы-значения, при этом типы-значения и типы-ссылки различным образом хранятся и используются. Типы-значения при создании экземпляра класса каждый раз вводятся в память и т. д.
Типы-ссылки – это классы, интерфейсы, массивы, делегаты и т. д.
Типы-значения – это перечислимые типы структуры и простые типы, такие как целочисленный, логический и т. д. Все типы, определяемые пользователями, фактически являются типами-ссылками. Таким образом, имеет место строгая иерархия классов.
Рис. 8.4. Универсальная система типизации (UTS)
В основе архитектуры. NET лежит понятие «сборка».
Сборка кода (assembly) – группа ресурсов, типов и метаданные, описывающие эти ресурсы и типы, необходимые для функционирования компонентов. Сборка реализуется как единое целое. Сборка – это самодостаточная единица кода.
К особенностям сборок кода прежде всего относятся следующие:
• сборка распространяется и реализуется как единое целое;
• метаданные сборки содержат информацию о зависимостях между ресурсами, версиях и т. п.;
• сборка характеризуется номером версии (последняя, специфичная и т. п.).
На уровне сервисов архитектура выглядит следующим образом:
• принцип. NET – «ПО как сервис»;
• следующий уровень архитектуры – уровень сервисов (рис. 8.5);
• сервисы доступны на уровне классов любого ЯП для. NET.
На нижнем уровне архитектуры существуют системные сервисы Microsoft Windows. На более высоких уровнях – различные надстройки, сервисы для работы с данными, сервисы интерфейсные и т. д. Сервисы. NET находятся на более высоком уровне, чем сервисы для Windows.
Рис. 8.5. Архитектура. NET – уровень сервисов
И для любого языка программирования, который реализован для. NET, мы можем использовать эти системные сервисы. NET, это фактически просто элементы классов. NET, которые доступны для любого языка.
Абстрактная машина. NET. CLR располагается над уровнем сервисов ОС (Windows CE, Windows ME, Windows 2000, Windows.NET).
Системные сервисы располагаются над CLR (доступ – через библиотеки классов): доступ к функциям ОС, управление данными, отладка, другие сервисы и т. п.; еще выше – компоненты и сервисы для разработки веб-узлов, веб-сервисов, пользовательских интерфейсов (GUI).
Веб-приложения – архитектура клиент – сервер с доступом пользователей к данным через веб-браузер (технология ASP.NET).
Распределенные приложения на основе иных механизмов удаленного взаимодействия компонентов XML Web Services – на основе открытых стандартов, NET Remoting – на основе внутренних протоколов Microsoft и целый ряд других подходов.
По сути, NET представляет собой виды базовых классов для сервисов:
• доступ к сервисам ОС (Windows CE, ME, 2000, NET);
• доступ к графическим функциям (двумерная графика, обработка изображений, шрифты, в том числе технология ClearType, интеграция с GDI и DirectX);
• сетевые функции;
• управление потоками;
• глобализация;
• криптография;
• доступ к данным (библиотека классов ADO+ и OLE DB-драйверы);
• классы для средств разработки (отладка, трассировка, управление ресурсами, компиляция, установка ПО, протоколирование событий и т. д.);
• другие классы (в том числе поддержка протокола SOAP).
Назначение Windows Forms – обеспечение разработки традиционных Windows-приложений на основе сервисов Microsoft.NET и соответствующих библиотек классов.
Особенности разработки – унификация доступа:
• к библиотекам классов;
• механизмам распространения сервисов;
• механизмам поддержки версий;
• сервисам безопасности.
Вывод: создание Windows-приложений в архитектуре Microsoft.NET дает разработчикам существенные преимущества, поскольку огромное количество классов уже реализовано, и остается заполнить пробелы только с реализацией бизнес-логики по сравнению с традиционным API-ориентированным подходом.
Назначение Web Forms — основа веб-сервисов и веб-приложений в архитектуре Microsoft.NET.
Особенность – программная модель основана на ASP+ – новом поколении активных серверных страниц (эволюция технологии ASP – более 1 млн разработчиков).
Идея веб-форм (из Visual Basic 6): отделение логики веб-приложения от интерфейса (за счет объединения в рамках формы ASP– и HTML-кода).
Преимущества:
• более строгая структурированность приложений;
• широкий спектр (серверных) интерфейсных элементов;
• простая и мощная объектная модель;
• легкость разработки (и масштабирования) веб-приложений.
Основное средство для разработки приложений и сервисов в архитектуре. NET – Microsoft Visual Studio.NET (современная версия Microsoft Visual Studio).
Вот какого рода веб-сервисы можно создавать в. NET, так выглядит общая архитектура (рис. 8.6).
Рис. 8.6. Веб-сервисы в. NET
Веб-сервисы в. NET:
1) программируемые компоненты приложений, доступные посредством стандартных интернет-протоколов;
2) центральная часть архитектуры. NET;
3) распределяют функциональность по глобальной сети;