Стратегия проектирования
многослойных клиент-серверных приложений


Харитонова И.А. Астро Софт


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

Это объясняется множеством причин, субъективных и объективных, которые носят самый различный характер: организационный, научно-технический, технологический и пр. Обзор этих причин выходит далеко за рамки данной статьи. Однако общепризнанно, что едва ли не решающим фактором успеха разработки является качество проектирования. Мы попытаемся рассказать об опыте использования новейших технологий проектирования техническим отделом нашей фирмы масштаба предприятия. В качестве примера рассмотрен фрагмент из проекта, выполненного фирмой Астро Софт для САО ╚Росгосстрах≈Санкт-Петербург╩.


Проблемы проектирования систем масштаба предприятия
Какие требования мы предъявляем к современным программным системам масштаба предприятия?

Очевидно, что первое поколение клиент-серверных систем (двухслойные приложения) не удовлетворяют требованиям больших приложений. Второе поколение √ многослойные архитектуры √ обеспечивают необходимую масштабируемость и гибкость, но за счет увеличения сложности.

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


Что такое Microsoft Solution Framework и Solution Development Discipline
Поскольку Астро Софт является Solution Provider (Поставщик Решений) фирмы Microsoft, мы решили попробовать применить в наших проектах стратегию проектирования, которую фирма Microsoft рекомендует своим партнерам. Эта стратегия изложена в Microsoft Solution Framework (MSF).

Microsoft Solutions Framework ≈ это набор концепций и рекомендуемых моделей, которые позволяют разрабатывать и внедрять распределенные информационные системы масштаба предприятия на основе технологий и инструментальных средств фирмы Microsoft. Многие концепции MSF достаточно хорошо известны. Основное достоинство MSF ≈ это систематизация и структуризация информации в форме базы знаний, удобной для ознакомления и использования.

Составной частью MSF является дисциплина проектирования √ Solution Development Discipline (SDD), концепции которой мы и используем в своих проектах. Другие части касаются разработки компонент приложения, архитектуры предприятия и не относятся к теме данной статьи.


Три стадии проектирования
В соответствии с MSF процесс создания приложения можно разбить на три стадии по степени детализации проекта.

Первая ≈ концептуальное проектирование ≈ представляет собой описание бизнес-проблемы (проблем) и общее видение решения. На этой стадии проектировщики должны понять, что нужно пользователю. Концептуальный проект отражает точку зрения пользователя.

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

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

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

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

Каждая стадия требует применения соответствующих моделей, методов и инструментальных средств.


Концептуальное проектирование
Концептуальное проектирование в MSF включает следующие основные аспекты.

Составление сценариев является ключевым моментом концептуального проектирования. Для описания сценариев могут использоваться самые разнообразные средства:

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

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

РИСУНОК 1. Фрагмент схемы потоков данных разрабатываемого приложения


Логическое проектирование
Логическое проектирование является ядром процесса разработки. Именно в этой стадии таятся корни успехов и неудач. Центральной задачей логического проектирования является вычленение и спецификация бизнес-объектов, их свойств и методов. В терминах предлагаемой MSF модели приложения эти бизнес-объекты называются службами. Сюда же относятся проектирование схемы базы данных, разбиение системы на подсистемы и, как обычно, итеративная верификация логического проекта. К счастью, наиболее важный процесс логического проектирования в наибольшей степени подкреплен теоретическими, технологическими и инструментальными средствами. Такие концепции, как структурность, модульность, инкапсуляция, информационная прочность хорошо известны, и мы можем на них не останавливаться здесь. В качестве инструментального средства для проектирования служб и компонентов приложения мы используем Microsoft Visual Modeler 1.0. Ниже приведен снимок экрана Visual Modeler, на котором хорошо видна логическая схема взаимосвязи служб, поддерживающих рассматриваемый фрагмент сценария.

РИСУНОК═2. Логическая схема взаимосвязи служб приложения

Хорошо видно, что интерфейс пользователя состоит из трех форм, поддержанных соответствующими объектами, которые в совокупности образуют слой пользовательских служб. Объекты, которые находятся во втором слое бизнес-служб, выполняют семантическую обработку данных, характерных для страхового бизнеса. Например, именно объект Ware в слое бизнес-служб предоставляет остальным службам услугу по расчету величины регулярной выплаты страхователя в соответствии со списком страхуемого имущества. В слое управления данными можно отметить объект Data, который является службой для универсального доступа к данным. Прочие объекты доступа к данным просто преобразуют информацию из формата, используемого бизнес объектами в формат, используемый объектом Data. Это проектное решение обладает, например, тем достоинством, что в случае смены хранилища информации Persistent Storage потребуется подменить только объект Data и в то же время не требуется размножать абсолютно аналогичные рутинные операции чтения, записи и обновления данных для всех бизнес-объектов.


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

В рассматриваемом примере спроектированные объекты естественным образом пакуются в пять компонент, которые выполняются на трех компьютерах.


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


КОМПЬЮТЕР-ИНФОРМ