4. Архитектура
Модель качества
Характеристики и подхарктеристики
модели качества продукта
Сценарии атрибутов качества
Профиль качества продукта
ЛЕКЦИЯ №8 Перспективы и паттерны . 4
7. • An architectural style is a specific
method of construction,
characterized by the features that
make it notable. A style may include
such elements as form, method
of construction, materials, and
regional character.
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
8. • Component-based
• Monolithic application aka "Big Ball of Mud"
style
• Layered
• Pipes and filters
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
12. ЛЕКЦИЯ №8
Перспективы и
паттерны .
Архитектурный
элемент
Архитектура
Взаимосвязь
Система
Заинтересованные
лица
Архитектурное
описание
Состоит из
Обладает
Может иметь
Описывает
архитектуру для
Удовлетворяет
потребности
Связывает
Вопрос / Интерес
Имеет
Точка зрения
(Viewpoint) Проекция (View)
Состоит из
Соответствует
Перспектива
(perspective)
Уточняется
Удовлетворяет
Удовлетворяет
‹#›
13. • Несмотря на то что совокупность всех проекций (view) системы
описывает систему полностью , каждая из проекций является
достаточно независимой.
• Кроме того, большая часть атрибутов качества системы
проявляются и влияют на несколько проекций.
• Определение: Перспектива (perspective) это совокупность
действий, приемов и руководств которые используются для
представления реализации конкретного набора атрибутов
качества которые требуют рассмотрения в нескольких
архитектурных проекциях.
ЛЕКЦИЯ №8
Перспективы и
паттерны .
‹#›
14. • Применимость (Applicability)
– Описывает к каким проекциям наиболее вероятно может быть применена
перспектива.
• Вопросы (Concerns)
– Определяет атрибут качества системы которому соответсвует
перспектива
• Действия (Activities)
– Описание шагов по применению перспективы к проекции.
• Архитектурная тактика (Architectural tactics):
– Это признанная практика которую вы можете использовать для достижения
определенного качества системы
• Проблемы и подводные камни:
• Контрольные списки
• Ссылки и рекомендации для углубленного изучения
ЛЕКЦИЯ №8
Перспективы и
паттерны .
‹#›
15. • Определение важных атрибутов
качества1
• Анализ проекций с точки зрения
удовлетворения выделенных атрибутов
качества2
• Принятие архитектурных решений
которые модифицируют и улучшают
соответствующие проекции3
ЛЕКЦИЯ №8
Перспективы и
паттерны .
‹#›
20. • Бизнес приложения
– ERP, биллинг, credit scoring, logistics tracking
• Огромный объем сложных данных
– Терабайтные хранилища содержащие сотни таблиц
• Множество одновременных пользователей
• Большое кол-во ролей пользователей
• Бизнес логика может быть сложной и
иррациональной
• Большое кол-во систем с которыми приходится
интегрироваться
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
21. Каждый слой это согласованное целое
Замещение слоев
Множество вышестоящих слоев над одним
Предупреждения:
• Некоторые вопросы нельзя
инкапсулировать достаточно хорошо
• Может угрожать производительности
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
22. • Презентационный
– Взаимодействует с пользователем приложения
– Толстый/тонкий клиент, web сервис
• Домен
– Бизнес правила , валидаторы , расчеты
• Данные (Data Source)
– Интеграция
– Персистентность - способность ПО создавать и
поддерживать перманентные объекты
(Persistence): RDBMs
– Обмен сообщениями, Web сервисыЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
23. ЛЕКЦИЯ №8 Перспективы и паттерны .
Presentation
Controller / Mediator
Domain
Data Mapping
Data Source
Presentation
Domain
Data Source
Application Controller
Data Mapper
Brown et al, Enterprise Java Programming with IBM Websphere,
Addison-Wesley
‹#›
24. ЛЕКЦИЯ №8 Перспективы и паттерны .
Client
Presentation
Business
Integration
Resource
Presentation
Domain
Data Source
Client side
Server Side
External
systems
Alur, Crupi and Malks, Core J2EE
Patterns, Prentice Hall
‹#›
25. ЛЕКЦИЯ №8 Перспективы и паттерны .
Presentation
Domain
Data Source
Presentation
Business
Data Access
Kirtland, Designing Component Based Architectures, Microsoft Press
‹#›
26. • Transaction Script
• Domain Model
• Table Module
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
28. ЛЕКЦИЯ №8 Перспективы и паттерны .
a Recognition
Service
calculateRecognitions (contractID)
a Data Gateway
a contract result
set
findContract (contract ID)
get data
* insert revenue recognition
‹#›
30. ЛЕКЦИЯ №8 Перспективы и паттерны .
a Contract
calculateRecognitions
a Product
calculateRecognitions (a Contract)
a Recognition
Strategy
calculateRecognitions (a Contract)
a Revenue
Recognition
new
‹#›
32. ЛЕКЦИЯ №8 Перспективы и паттерны .
a Contract
new (theDataSet)
calculateRecognitions (contractID)
a Product
new (theDataSet)
a Revenue
Recognition
new (theDataSet)
getProductType (productID)
* insert
‹#›
33. Преимущества :
Простая (процедурная) модель
программирования
Простое взаимодействие с базой данных
Предупреждения:
• Дублирование логики в различных скриптах
• Сложность нарастает по мере усложнения
предметной области
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
34. Преимущества :
Позволяет работать с предметной областью
крайне высокой сложности
Предупреждения:
• Сдвиг парадигмы разработки
• Сложная стыковка с базой данных
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
35. Преимущества :
Единая структура данных для всех слоев
(Record Set)
Организована для процедур
Предупреждения:
• Сложно работать со сложной предметной
областью
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
36. • Модель вид контролер (Model View Controller)
• Контроллер приложения (Application Controller)
• Контроллер ВводаВывода (Input Controller)
– Page Controller
– Front Controller
• Представление (View)
– Template View
– Transform View
– Two Step View
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
37. • Model
– The domain object
• View
– Presents information to user
• (Input) Controller
– Handles user input
ЛЕКЦИЯ №8 Перспективы и паттерны .
Model
View Controller
Separation of Presentation (View/Controller)
from Domain (Model)
Separation of View and Controller
‹#›
38. ЛЕКЦИЯ №8 Перспективы и паттерны .
an input controller
an application
controller
request
get domain command
a domain
command
run
get view
a view
forward
Централизованная точка для обработки
навигации между экранами
‹#›
40. • Единая точка контроля для изменения
порядка выполнения и навигации
• Может быть расположен в промежуточном
слое между презентационным слоем и
слоем бизнес логики (domain)
• Позволяет использовать разные слои
представления
• Может быть протестирован отдельно от
уровня презентации
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
41. • Один контроллер для каждого действия или страницы
• Может использовать серверные страницы в качетсве обработчика
ЛЕКЦИЯ №8 Перспективы и паттерны .
-- handle http get
and post
-- decide which
model and view to
use
Page Controller -- domain logic
Model
-- display HTML
View
‹#›
42. ЛЕКЦИЯ №8 Перспективы и паттерны .
• Один контроллер ввода/вывода в приложении
doGet
doPost
Handler
process
Abstract
Command
process
Concrete
Command 1
process
Concrete
Command 2
‹#›
43. Контроллер страницы
• Легко сопровождать
• Не рекомендовано
хранить логику
контроллера в страницах
Центральный контроллер
• Единая точка для
добавления поведения
• Позволяет добавлять
поведение динамически
(перехватывающий фильтр)
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
44. ЛЕКЦИЯ №8 Перспективы и паттерны .
Book
Author
Model
<HTML><P><B>
<jsp:getProperty
name="bookHelper"
property="title"/></B>
<BR/>
Author:
<jsp:getProperty
name="bookHelper"
property="author"/>
</P>
</HTML>
getTitle
getAuthor
Book Helper
‹#›
45. ЛЕКЦИЯ №8 Перспективы и паттерны .
transformAlbum
transformArtist
Transformer
Album
Artist
Model
HTML
read
creates
‹#›
46. ЛЕКЦИЯ №8 Перспективы и паттерны .
artist: Artist
Album
renderAlbum
renderArtist
Stage 1
artist: Field
Screen
renderScreen
renderField
Stage 2
HTML
read
read
create
create
‹#›
47. • Шаблон представления
– Следует естественным принципам редактирования
– Позволяет редактирование HTML не программистами
– Требует дисциплины для избежания скриплетов
• Преобразование представления
– Может быть протестировано без использования Web сервера
– Хорош работает с XML (XSLT)
• Двух шаговое представление (Two Step View)
– Легко осуществлять глобальное изменение дизайна
– Легко поддерживать шкуры (skins)
– Сложно в реализации
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
48. • Table Data Gateway
• Row Data Gateway
• Active Record
• Data Mapper
• Structural Patterns
– Foreign Key Mapping, Identity Field, Association
Table Mapping, Single Table Inheritance….
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
50. ЛЕКЦИЯ №8 Перспективы и паттерны .
insert
update
delete
find (id)
findForCompany(companyID)
lastname
firstname
numbeOfDependents
Person Gateway
‹#›
51. ЛЕКЦИЯ №8 Перспективы и паттерны .
find (id)
findForCompany(company id)
Person Finder
insert
update
delete
lastname
firstname
numbeOfDependents
Person Gateway
‹#›
52. ЛЕКЦИЯ №8 Перспективы и паттерны .
insert
update
delete
getExemption
isFlaggedForAudit
getTaxableEarnings
lastName
firstName
numberOfDependents
Person
Row Data Gateway plus
domain logic in one class
‹#›
53. ЛЕКЦИЯ №8 Перспективы и паттерны .
insert
update
delete
Person Mapper
getExemption
isFlaggedForAudit
getTaxableEarnings
lastName
firstName
numberOfDependents
Person
‹#›
54. • Если используется Table Module
– Table Data Gateway
• Если используетсяTransaction Script и не
Domain Model
– Table Data Gateway
– Row Data Gateway
– Выбирайте по принципу комфортности работы
с record sets или row gateway objects
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
55. • Если вы используете простую и сходную по
структуре Domain Model
– Active Record
– Data Mapper: В случае использования
специального инструментария
• Если используете сложную Domain Model
– Data Mapper
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
56. • Remote Façade
• Data Transfer Object
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›