1vendrov_a_m_proektirovanie_programmnogo_obespecheniya_ekonom
.pdfАнализ и проектирование программного обеспечения |
321 |
разрабатываться (при условии стабильности интерфейсов); размещаться в распределенной среде; изменяться без воздействия на остальные части системы;
•разделение системы на части из соображений ограничения доступа к основным ресурсам;
•представление существующих продуктов или внешних сис тем (компонентов), которые не подлежат изменениям.
Первым действием архитектора при выявлении подсистем является преобразование классов анализа в проектные классы (design classes). По каждому классу анализа принимается одно из двух решений:
•класс анализа отображается в проектный класс, если он простой или представляет единственную логическую абстракцию;
•сложный класс анализа может быть разбит на несколько классов, преобразован в пакет или в подсистему.
Объединение классов в подсистемы осуществляется, исходя из следующих соображений:
•функциональная связь: объединяются классы, участвующие в реализации варианта использования и взаимодействую щие только друг с другом;
•обязательность: совокупность классов, реализующая функ циональность, которая может быть удалена из системы или заменена на альтернативную;
•связанность: объединение в подсистемы сильно связанных классов;
•распределение: объединение классов, размещенных на конкретном узле сети.
Примеры возможных подсистем:
•совокупность классов, обеспечивающих сложный комплекс функций (например, обеспечение безопасности и защиты данных);
•фаничные классы, реализующие сложный пользовательс кий интерфейс или интерфейс с внешними системами;
•различные продукты: коммуникационное ПО, доступ к ба зам данных, общие утилиты (библиотеки), различные при кладные пакеты.
При создании подсистем в модели выполняются следующие преобразования:
•объединяемые классы помещаются в специальный пакет с именем подсистемы и стереотипом <<subsystem>>;
322 |
Глава 4 |
•спецификации операций классов, образующих подсистему, выносятся в интерфейс подсистемы — класс со стереотипом <<Interface>>;
•описание интерфейса должно включать:
имя интерфейса, отражающее его роль в системе; текстовое описание интерфейса размером в небольшой аб зац, отражающее его обязанности; описание операций интерфейса (имя, отражающее резуль
тат операции, алгоритм выполнения операции, возвращае мое значение, параметры с их типами); характер использования операций интерфейса и порядок их
выполнения документируется с помощью диаграмм взаимо действия, описывающих взаимодействие классов подсисте мы при реализации операций интерфейса, которые вместе с диаграммой классов подсистемы объединяются в коопера цию с именем интерфейса и стереотипом <<interface realiza tion»;
•в подсистеме создается класс-посредник со стереотипом <<subsystem ргоху>>, управляющий реализацией операций интерфейса.
Все интерфейсы подсистем должны быть полностью опреде лены в процессе проектирования архитектуры, поскольку они бу дут служить в качестве точек синхронизации при параллельной разработке системы.
В качестве примера (для системы регистрации) приведем подсистему CourseCatalogSystem, которая создана вместо гранич ного класса CourseCatalogSystem. Диаграммы классов и взаимо действия, описывающие данную подсистему и ее интерфейс, приведены на рис. 4.20—4.22. Классы DBCourseOfferring и CourseOfferringList отвечают за взаимодействие с БД каталога курсов в рамках JDBC. Объект CourseCatalogSystem Client на рис. 4.22 может принадлежать либо классу CloseRegistrationController, либо классу RegistrationController, в зависимости от того, в каком из вариантов использования запрашивается каталог курсов.
Формирование архитектурных уровней
Впроцессе анализа было принято предварительное решение
овыделении архитектурных уровней (в случае системы регистра ции — четырех уровней в соответствии с образцом «Уровни»). В процессе проектирования все элементы системы должны быть
3 2 4 |
|
|
Глава 4 |
: '4>Rati6riai Лб5ё^^Шт*ШЩШеШШШ№:^Ш |
|
|
|
^ Щ| |
gte g<Mt ^т .f^is^^j:^^im$iA ^?port |
^<»»У' looJ^^ |
^^'^ Ш^^ . ^ ^ nmlffi! Ш1 |
|
«Interface» |
|
|
|
IСоurseCataIоgSystem |
|
|
|
(from External System Interfaces) |
|
|
* |
getCourseOfferingsQ : CourseOfferingList |
|
|
+ initializeO |
|
|
|
|
^ |
'-^ |
CourseOfferingList |
|
|
(from University Artifacts) |
|
|
|
|
newQ |
|
«subsystem proxy» |
. - - " ^ |
addO |
|
~7Г |
||
|
CourseCatalogSystem |
getCourseOfferingsQ : CourseOfferingList initializeO
«entity» CourseOffering
(from University Artifacts)
JL
DBCourseOfferring
ereate0 readQ
initializeO
m
Рис. 4.21. Диаграмма классов подсистемы CourseCatalogSystem с точки зрения проектировщика
ЛО сказано выше, зависят от сложности предметной области и среды реализации. Подуровни могут формироваться, исходя из следующих критериев:
•фуппировка элементов с максимальной связанностью;
•распределение в соответствии со структурой организации (обычно это касается верхних уровней архитектуры);
•распределение в соответствии с различными областями компетенции разработчиков (предметная область, сети, коммуникации, базы данных, безопасность и др.);
Анализ и проектирование программного обеспечения |
325 |
|
4* Rational Яо5е,*::соШ*^ШрЩ1Ш1111в |
'^*';'"' *lsli£i |
|
Ш № £<lit aev» (^tna^ Irowst EkepOJ't |
Xoc^ ё^'^Ш |
|
CourseCatalogSystem Client
1: getCourseOfferingsO
t
:CourseCatalogSystem
2:read(strmg)
V
:DВCourseOfferring
|
|
3: new() |
4: new() |
, , |
6: add(CourseOffering) |
5:setData()// |
|
|
: CourseOfferIng |
: CourseOfferingList |
Ы
Рис. 4.22. Кооперативная диаграмма, описывающая реализацию операции интерфейса getCourseOfferings
•группировка отдельных компонентов распределенной сис темы;
•распределение в соответствии с различной степенью безо пасности и секретности.
Пример выделения архитектурных уровней и объединения элементов модели в пакеты для системы регистрации приведен на рис. 4.23.
Данное представление отражает следующие решения, приня тые архитектором:
•вьщелены три архитектурных уровня (созданы три пакета со стереотипом <<1ауег»);
•в пакете Application создан пакет Registration, куда включе ны граничные и управляющие классы;
Анализ и проектирование программного обеспечения |
327 |
•граничные классы BillingSystem и CourseCatalogSystem пре образованы в подсистемы;
•в пакет Business Services, помимо подсистем, включены еще два пакета: пакет External System Interfaces включает интер фейсы подсистем (классы со стереотипом <<Interface>>), а пакет University Artifacts — все классы-сущности.
Проектирование структуры потоков управления
Проектирование структуры потоков управления выполняется при наличии в системе параллельных процессов (параллелизма). Цель проектирования — выявление существующих в системе процессов, характера их взаимодействия, создания, уничтожения и отображения в среду реализации. Требование параллелизма возникает в следующих случаях:
•необходимо распределение обработки между различными процессорами или узлами;
•система управляется потоком событий (event-driven system);
•вычисления в системе обладают высокой интенсивностью;
•в системе одновременно работает много пользователей. Например, система регистрации курсов обладает свойством
параллелизма, поскольку она должна допускать одновременную работу многих пользователей (студентов и профессоров), каждый из которых порождает в системе отдельный процесс.
Понятие процесс (process) трактуется следующим образом:
•это ресурсоемкий поток управления, который может выпол няться параллельно с другими процессами;
•он выполняется в независимом адресном пространстве и в случае высокой сложности может разделяться на два потока или более;
•объект любого класса должен существовать внутри хотя бы одного процесса.
Поток (thread) — это облегченный поток управления, кото рый может выполняться параллельно с другими потоками в рам ках одного и того же процесса в общем адресном пространстве. Необходимость создания потоков в системе регистрации курсов диктуется следующими требованиями:
•если курс окажется заполненным в то время, когда студент формирует свой учебный фафик, включающий данный курс, то он должен быть извещен об этом (необходим неза-
330 |
|
|
|
Глава 4 |
ф Rational Rose - coursereg J e s i g n , f « ^ - К ^ Ш Ш ^ Ш И Я |
||||
@j efe ^dtt ^H F^rnat |row$« |
&®port, ^ry |
Iool$ 6dd-ln$ Шг\^кн t^lp |
||
<< process» |
|
-^ |
MainStudentForm |
|
StudentApplication |
|
(from Regtstrati on) |
||
|
|
|
|
°-4 |
|
|
|
|
«boundary» |
|
|
|
RegIste rFоrCo ursesFоrm |
|
|
|
|
|
(from Registration) |
|
|
|
|
1 |
|
|
|
|
1 V |
«process» |
|
|
|
«control» |
|
-^ |
Re g Istrati оn Contro Her |
||
CourseRegistrationProcess |
|
|||
1 |
|
(from Registration) |
||
|
1 |
|
|
|
^ |
1 |
1 |
|
«subsystem proxy» |
«process» |
|
|||
|
Cou rseCata10 gSystem |
Cou rse Cata 10 g Syste mAccess |
(from CourseCatalogSysiem) |
|
SL
«Interface» {Course Catalog System
(from External System irrterfaces)
Ш2^^Ш^
Рис. 4.25. Классы, связанные с процессами
Распределение процессов, составляющих структуру потоков управления, по узлам сети производится с учетом следующих факторов: