ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
Часть 1
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
Часть 2
‹#› ЛЕКЦИЯ №8 Перспективы и паттерны .
Архитектура
Модель качества
Характеристики и подхарктеристики модели качества продукта
Сценарии атрибутов качества
Профиль качества продукта
ЛЕКЦИЯ №8 Перспективы и паттерны . 4
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• 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 Перспективы и паттерны . ‹#›
• Component-based
• Monolithic application aka "Big Ball of Mud" style
• Layered
• Pipes and filters
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• Shared Memory
• Data-centric
• Blackboard
• Rule-based
• Messaging
• Event-driven aka Implicit invocation
• Publish-subscribe
• Asynchronous messaging
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• Adaptable systems
• Plug-ins
• Microkernel
• Reflection
• Domain specific languages
• Distributed Systems
• Client-server (2-tier, 3-tier, n-tier exhibit this style)
• Shared nothing architecture
• Space based architecture
• Broker
• Peer-to-peer
• Representational State Transfer
• Service-oriented
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
ЛЕКЦИЯ №8
Перспективы и
паттерны .
Архитектурный элемент
Архитектура
Взаимосвязь
Система
Заинтересованные лица
Архитектурное описание
Состоит из
Обладает
Может иметь
Описывает архитектуру для
Удовлетворяет потребности
Связывает
Вопрос / Интерес
Имеет
Точка зрения (Viewpoint) Проекция (View)
Состоит из
Соответствует
Перспектива (perspective)
Уточняется Удовлетворяет
Удовлетворяет
‹#›
• Несмотря на то что совокупность всех проекций (view) системы описывает систему полностью , каждая из проекций является достаточно независимой.
• Кроме того, большая часть атрибутов качества системы проявляются и влияют на несколько проекций.
• Определение: Перспектива (perspective) это совокупность действий, приемов и руководств которые используются для представления реализации конкретного набора атрибутов качества которые требуют рассмотрения в нескольких архитектурных проекциях.
ЛЕКЦИЯ №8
Перспективы и
паттерны .
‹#›
• Применимость (Applicability)
– Описывает к каким проекциям наиболее вероятно может быть применена перспектива.
• Вопросы (Concerns)
– Определяет атрибут качества системы которому соответсвует перспектива
• Действия (Activities)
– Описание шагов по применению перспективы к проекции.
• Архитектурная тактика (Architectural tactics):
– Это признанная практика которую вы можете использовать для достижения определенного качества системы
• Проблемы и подводные камни:
• Контрольные списки
• Ссылки и рекомендации для углубленного изучения
ЛЕКЦИЯ №8
Перспективы и
паттерны .
‹#›
• Определение важных атрибутов качества 1
• Анализ проекций с точки зрения удовлетворения выделенных атрибутов качества 2
• Принятие архитектурных решений которые модифицируют и улучшают соответствующие проекции 3
ЛЕКЦИЯ №8
Перспективы и
паттерны .
‹#›
07.05.2013 Владелец продукта (Product Owner). Работа с требованиями в Agile среде
16
Rosenberg.Use.Case.Driven.Object.Modeling.with.UML.Jan.2007
Stand Up
Meeting at
9:00
Pair Up -- Quick
Design Session
Test Q&A
Code Refactor
Integrate or
Toss
Go Home at
17:00
‹#› ЛЕКЦИЯ №8 Перспективы и паттерны .
• Бизнес приложения – ERP, биллинг, credit scoring, logistics tracking
• Огромный объем сложных данных – Терабайтные хранилища содержащие сотни таблиц
• Множество одновременных пользователей
• Большое кол-во ролей пользователей
• Бизнес логика может быть сложной и иррациональной
• Большое кол-во систем с которыми приходится интегрироваться
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
Каждый слой это согласованное целое
Замещение слоев
Множество вышестоящих слоев над одним
Предупреждения:
• Некоторые вопросы нельзя инкапсулировать достаточно хорошо
• Может угрожать производительности
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• Презентационный – Взаимодействует с пользователем приложения
– Толстый/тонкий клиент, web сервис
• Домен – Бизнес правила , валидаторы , расчеты
• Данные (Data Source) – Интеграция
– Персистентность - способность ПО создавать и поддерживать перманентные объекты (Persistence): RDBMs
– Обмен сообщениями, Web сервисы ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
ЛЕКЦИЯ №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
‹#›
ЛЕКЦИЯ №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
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
Presentation
Domain
Data Source
Presentation
Business
Data Access
Kirtland, Designing Component Based Architectures, Microsoft Press
‹#›
• Transaction Script
• Domain Model
• Table Module
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
recognizedRevenue (contractNumber: long, asOf: Date) : Money
calculateRevenueRecognitions (contractNumber long) : void
Recognition Service
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
a Recognition
Service
calculateRecognitions (contractID)
a Data Gateway
a contract result
set
findContract (contract ID)
get data
* insert revenue recognition
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
recognizedRevenue (date)
calculateRecognitions
Contract
calculateRecognitions (contract)
Product
Recognition
Strategy
Complete
Recognition
Strategy
1
1
*
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
a Contract
calculateRecognitions
a Product
calculateRecognitions (a Contract)
a Recognition
Strategy
calculateRecognitions (a Contract)
a Revenue
Recognitionnew
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
CalculateRecognitions (ID)
Contract
GetProductType (ID)
Product
Insert (ID, amount, date)
RecognizedRevenue (contractID, date)
Revenue Recognition
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
a Contract
new (theDataSet)
calculateRecognitions (contractID)
a Product
new (theDataSet)
a Revenue
Recognition
new (theDataSet)
getProductType (productID)
* insert
‹#›
Преимущества :
Простая (процедурная) модель программирования
Простое взаимодействие с базой данных
Предупреждения:
• Дублирование логики в различных скриптах
• Сложность нарастает по мере усложнения предметной области
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
Преимущества :
Позволяет работать с предметной областью крайне высокой сложности
Предупреждения:
• Сдвиг парадигмы разработки
• Сложная стыковка с базой данных
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
Преимущества :
Единая структура данных для всех слоев (Record Set)
Организована для процедур
Предупреждения:
• Сложно работать со сложной предметной областью
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• Модель вид контролер (Model View Controller)
• Контроллер приложения (Application Controller)
• Контроллер Ввода\Вывода (Input Controller) – Page Controller
– Front Controller
• Представление (View) – Template View
– Transform View
– Two Step View
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• 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
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
an input controlleran application
controller
request
get domain command
a domain
command
run
get view
a view
forward
Централизованная точка для обработки навигации между экранами
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
Input Controller
View
Application
ControllerDomain Layer
‹#›
• Единая точка контроля для изменения порядка выполнения и навигации
• Может быть расположен в промежуточном слое между презентационным слоем и слоем бизнес логики (domain)
• Позволяет использовать разные слои представления
• Может быть протестирован отдельно от уровня презентации
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• Один контроллер для каждого действия или страницы
• Может использовать серверные страницы в качетсве обработчика
ЛЕКЦИЯ №8 Перспективы и паттерны .
-- handle http get
and post
-- decide which
model and view to
use
Page Controller -- domain logic
Model
-- display HTML
View
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
• Один контроллер ввода/вывода в приложении
doGet
doPost
Handler
process
Abstract
Command
process
Concrete
Command 1
process
Concrete
Command 2
‹#›
Контроллер страницы
• Легко сопровождать
• Не рекомендовано хранить логику контроллера в страницах
Центральный контроллер
• Единая точка для добавления поведения
• Позволяет добавлять поведение динамически (перехватывающий фильтр)
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
ЛЕКЦИЯ №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
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
transformAlbum
transformArtist
TransformerAlbum
Artist
Model
HTML
read
creates
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
artist: Artist
Album
renderAlbum
renderArtist
Stage 1
artist: Field
Screen
renderScreen
renderField
Stage 2
HTML
read
read
create
create
‹#›
• Шаблон представления – Следует естественным принципам редактирования
– Позволяет редактирование HTML не программистами
– Требует дисциплины для избежания скриплетов
• Преобразование представления – Может быть протестировано без использования Web сервера
– Хорош работает с XML (XSLT)
• Двух шаговое представление (Two Step View) – Легко осуществлять глобальное изменение дизайна
– Легко поддерживать шкуры (skins)
– Сложно в реализации
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• Table Data Gateway
• Row Data Gateway
• Active Record
• Data Mapper
• Structural Patterns
– Foreign Key Mapping, Identity Field, Association Table Mapping, Single Table Inheritance….
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
find (id) : RecordSet
findForCompany(company id) : RecordSet
update (id, lastname, firstname, numberOfDependents)
insert (lastname, firstname, numberOfDependents)
delete (id)
Person Gateway
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
insert
update
delete
find (id)
findForCompany(companyID)
lastname
firstname
numbeOfDependents
Person Gateway
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
find (id)
findForCompany(company id)
Person Finder
insert
update
delete
lastname
firstname
numbeOfDependents
Person Gateway
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
insert
update
delete
getExemption
isFlaggedForAudit
getTaxableEarnings
lastName
firstName
numberOfDependents
Person
Row Data Gateway plus domain logic in one class
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
insert
update
delete
Person Mapper
getExemption
isFlaggedForAudit
getTaxableEarnings
lastName
firstName
numberOfDependents
Person
‹#›
• Если используется Table Module
– Table Data Gateway
• Если используетсяTransaction Script и не Domain Model
– Table Data Gateway
– Row Data Gateway
– Выбирайте по принципу комфортности работы с record sets или row gateway objects
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• Если вы используете простую и сходную по структуре Domain Model
– Active Record
– Data Mapper: В случае использования специального инструментария
• Если используете сложную Domain Model
– Data Mapper
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• Remote Façade
• Data Transfer Object
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
Invoice Customer
Order Delivery
‹#›
• Детальное представление адреса: – getStreet
– setStreet
– getCity
– setCity
– getZip
– setZip
ЛЕКЦИЯ №8 Перспективы и паттерны .
• Укрупненное : – getAddressData
– setAddressData
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
getAddressData
setAddress(street, city, zip)
Address Facade
getStreet()
getCity()
getZip()
setStreet(arg)
setCity(arg)
setZip(arg)
Address
‹#›
ЛЕКЦИЯ №8 Перспективы и паттерны .
toXmlElement
readXml
title: String
artist: String
AlbumDTO
Album Assembler
title: String
Album
name: String
Artist
1
*
‹#›
• Fowler – Patterns of Enterprise Application Architecture –
martinfowler.com/eaaCatalog
• Hohpe and Woolf – Enterprise Integration Patterns –
enterpriseIntegrationPatterns.com
• Hohmann – Beyond Software Architecture -
lukehohmann.com
• Evans – Domain Driven Development – domainLanguage.com
• Alur, Crupi, and Malks – Core J2EE Patterns
• Marinescu – EJB Patterns По материалам ThoughtWorks martinfowler.com
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
• Software Systems Architecture : Working With Stakeholders Using Viewpoints and Perspectives
ЛЕКЦИЯ №8 Перспективы и паттерны . 62
•
•
•
•
•
•
•
•
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
Часть 1
ЛЕКЦИЯ №8 Перспективы и паттерны . ‹#›
Часть 2
‹#› ЛЕКЦИЯ №8 Перспективы и паттерны .