Architectural Design Topicsw Các khái niệm then chốt w Các cơ chế thiết kế và cài đặt w Các Design Class và Subsystem w Các khả năng tái sử dụng w Tổ chức mô hình thiết kế w Checkpoints.
Trang 1Phân tích và Thiết kế Hướng đối tượng
dùng UML
Module 8: Thiết kế kiến trúc
Trang 2Mục tiêu:
kiến trúc và thời điểm thực hiện công đoạn này
và cách gán chúng từ các cơ chế phân tích
trò của chúng trong kiến trúc hệ thống
subsystems
các quyết định về kiến trúc
Trang 3Designer
Architectural Analysis
Architecture Reviewer
Review the Design
Review the Architecture
Use-Case Analysis
Architectural Design Concurrency Describe Distribution Describe
Class Design
Subsystem Design
Use-Case Design Reviewer Design
Vò trí cuûa Phaân tích kieán truùc
Trang 4Specifications
Architectural Design
Software Architecture
Document
Design Guidelines
Glossary
Design Guidelines
Analysis Classes
Toång quan veà phaân tích kieán truùc
Trang 5Architectural Design Topics
w Các khái niệm then chốt
w Các cơ chế thiết kế và cài đặt
w Các Design Class và Subsystem
w Các khả năng tái sử dụng
w Tổ chức mô hình thiết kế
w Checkpoints
Trang 6Architectural Design Topics
w Các khái niệm then chốt
w Các cơ chế thiết kế và cài đặt
w Các Design Class và Subsystem
w Các khả năng tái sử dụng
w Tổ chức mô hình thiết kế
w Checkpoints
Trang 7Process View Deployment View
System engineering
Analysts/Designers
Structure
Mô hình kiến trúc “4+1 View”
Logical View là phần có ý nghĩa về mặt kiến trúc của Design Model
Trang 8Class Name
Nhắc lại: Class và Package
w Thế nào là class?
các trách nhiệm, mối quan hệ, các tác vụ, thuộc tính, và ngữ nghĩa.
w Thế nào là package?
thành các nhóm
các phần tử khác
Trang 9Foundation Classes
global
Các Global Package
w Toàn bộ package được sử dụng bởi tất cả các package khác
w Những package này được đánh dấu là global
Trang 10Architectural Design Topics
w Các khái niệm then chốt
w Các cơ chế thiết kế và cài đặt
w Các Design Class và Subsystem
w Các khả năng tái sử dụng
w Tổ chức mô hình thiết kế
w Checkpoints
Trang 11Các cơ chế thiết kế và cài đặt
Remote Method Invocation (RMI)
Persistency
Analysis Mechanism (Conceptual)
Design Mechanism (Concrete)
Implementation Mechanism (Actual)
Trang 12w Các cơ chế kiến trúc có thể xem như các khuôn mẫu (pattern)
Documenting Architectural Mechanisms
Pattern Name
Template Parameters
Trang 13Ví dụ: Persistency: RDBMS: JDBC
ResultSet
(from java.sql)
Connection(from java.sql)
Statement(from java.sql)
DriverManager getConnection(url, user, pass) : Connection
(from java.sql)
DBClass
create() : PersistentClass read(searchCriteria : string) : PersistentClassList update(c : PersistentClass)
delete(c : PersistentClass)
<<role>>
1 1
(from SamplePersistentClass)
<<role>>
PersistentClassList
new() add(c: PersistentClass)
Roles sẽ được điền bởi designer
áp dụng cơ chế
Trang 14Ví dụ: Persistency: RDBMS: JDBC: Khởi tạo
DriverManager
1 getConnection(url, user, pass)
Trang 15Ví duï: Persistency: RDBMS: JDBC: Create
: Connection : Statement
: PersistencyClient : DBClass PersistentClass :
1 create( )
1.1 New()
1.3 createStatement( )
1.4 executeUpdate(String) 1.2 getData( )
Trang 16Ví duï: Persistency: RDBMS: JDBC: Read
: Connection : Statement : ResultSet
returns a Statement
1.3 new( ) Create a list to hold all retrieved data
1.7 add(PersistentClass)
Add the retrieved course offering
Repeat these operations for
each element returned from
the executeQuery()
command.
The PersistentClassList is
loaded with the data retrieved
from the database.
The SQL statement built by the DBClass using the given criteria is passed to executeQuery()
The criteria used to
access data for the
persistent class
Trang 17Ví duï: Persistency: RDBMS: JDBC: Update
: DBClass
: PersistencyClient PersistentClass : : Connection : Statement
1 update(PersistentClass)
1.2 createStatement( ) 1.1 getData( )
1.3 executeUpdate(string)
execute SQL statement
Trang 18Ví duï: Persistency: RDBMS: JDBC: Delete
: PersistencyClient : DBClass : Connection : Statement
1 delete(PersistentClass)
1.1 createStatement( )
1.2 executeUpdate(string)
execute SQL statement
Trang 19Tổng hợp JDBC: Các bước
thiết để cài đặt JDBC
Delete
Trang 20Ví dụ: Tổng hợp JDBC
Trang 21Architectural Design Topics
w Các khái niệm then chốt
w Các cơ chế thiết kế và cài đặt
w Các Design Class và Subsystem
w Các khả năng tái sử dụng
w Tổ chức mô hình thiết kế
w Checkpoints
Trang 22Analysis Classes Design Elements
Từ Analysis Classes đến Design Elements
<<boundary>>
<<control>>
<<entity>>
<<boundary>>
Trang 23Xác định các Design Class
w Analysis class ánh xạ thẳng thành design class nếu:
w Các analysis class phức tạp hơn có thể:
w Các analysis class đơn giản có thể trở thành
một design class
Trang 24sở hữu nó
Các phụ thuộc Package: Tính khả kiến của các ptử
Trang 25w Một dạng trung gian giữa package (có thể chứa các phần tử khác) và class (có hành vi)
w Hiện thực hoá 1 hoặc nhiều interface định
nghĩa hành vi của nó
Trang 26Class A2 X()
Subsystem và Interface (tt.)
w Các Subsystem:
interface rõ ràng (có tiềm năng tái sử dụng)
Trang 27So sánh Package với Subsystem
w Subsystem cung cấp hành vi, package không
w Subsystem hoàn toàn đóng gói nội dung của nó, package thì không
w Subsystem dễ dàng được thay thế
Trang 28Cách dùng Subsystem
về:
cao đối với các tài nguyên then chốt
bản thiết kế (chẳng hạn như các component)
Trang 29Các gợi ý giúp xác định các Subsystem
w Tìm kiếm sự cộng tác giữa các object
w Tìm kiếm sự tuỳ chọn
w Chú ý user interface của system
w Chú ý các Actor
w Tìm kiếm sự kết dính giữa các class
w Xem xét sự thay thế (các mức độ service)
w Xem xét sự phân bố
w Xem xét sự kém bền vững
Trang 30w Các Analysis classe có thể tiến hoá thành các subsystem
§ Các Class cung cấp các dịch vụ và/hoặc các tiện ích trọn vẹn
§ Các Boundary class (user interface và external system interface)
w Các sản phẩm sẵn có hoặc các system nằm ngoài thiết kế
§ Communication software
§ Database access support
§ Các kiểu và cấu trúc dữ liệu
§ Các tiện ích dùng chung
§ Các sản phẩm ứng dụng đặc thù
Các Subsystem tiềm năng
Trang 31<<Interface>>
Y() Z()
<<subsystem>> SubsystemK
ClassA
Y() Z()
“Superman Class”
Identifying Subsystems
?
Trang 32Identifying Interfaces
nhiệmvụ của chúng
cả các subsystem
Trang 33Interface Guidelines
w Đặt tên cho Interface
w Mô tả Interface
w Định nghĩa Operation
và kết quả
w Interface documentation
diagrams, kế hoạch kiểm chứng, …
Trang 34BillingSystem // submit bill()
Ví dụ: Các Design Subsystem
getCourseOfferings(forSemester : Semester) : CourseOfferingList
submitBill(forTuition : Double, forStudent : Student)
Trang 35Analysis Class Design Element
CourseCatalogSystem
BillingSystem
All other analysis classes map
directly to design classes
CourseCatalogSystem Subsystem BillingSystem Subsystem
Via duï: Analysis-Class-To-Design-Element Map
Trang 36<<subsystem proxy>> class
Qui ước mô hình hoá: Subsystem và Interface
Trang 37// is registration open?() // save schedule() // create schedule with offerings() // update schedule with new selections()
<<control>>
CloseRegistrationController
// is registration open?() // close registration()
Trang 38<<subsystem proxy>>
IBillingSystem submitBill(forTuition : Double, forStudent : Student)
<<Interface>>
Student
<<entity>>
0 1 1 +Biller
CloseRegistrationController
// is registration open?() // close registration()
<<control>>
Ví duï: Subsystem Context: Billing System
Trang 39Bài tập: Architectural Design, phần 1
w Cho biết các vấn đề sau:
Trang 40Bài tập: Architectural Design, phần 1 (tt.)
w Hãy xác định:
chúng với các phần tử thiết kế khác
kế
Trang 41Bài tập: Architectural Design, Part 1 (tt.)
w Hãy xây dựng các lược đồ sau:
class diagram
các phần tử thiết kế (design element)
Trang 42Architectural Design Topics
w Các khái niệm then chốt
w Các cơ chế thiết kế và cài đặt
w Các Design Class và Subsystem
w Các khả năng tái sử dụng
w Tổ chức mô hình thiết kế
w Checkpoints
Trang 43Xác định các khả năng dùng lại
w Mục đích
hay các component đã xây dựng dựa trên interface của chúng.
w Các bước
có sẵn
có sẵn
Trang 44Những cơ hội dùng lại
w Bên trong hệ thống đang xây dựng:
subsystem
w Bên ngoài hệ thống đang xây dựng:
đó
Trang 45Cơ hội dùng lại ngay bên trong hệ thống
Trang 46Architectural Design Topics
w Các khái niệm then chốt
w Các cơ chế thiết kế và cài đặt
w Các Design Class và Subsystem
w Các khả năng tái sử dụng
w Tổ chức mô hình thiết kế
w Checkpoints
Trang 47Hướng tiếp cận phân lớp truyền thống
General
functionality
Specific
functionality
Trang 48Layering Guidelines
§ Chỉ có các phụ thuộc giữa layer hiện tại và layer kế
thay đổi
§ Các phần tử có chức năng tổng quát ở các layer thấp
Trang 50Middleware <<layer>>
Application <<layer>>
Business Services
<<layer>>
Ví duï: Architectural Layers
Trang 51Các tiêu chuẩn phân chia
w Sự chồng lắp và kết dính
w Tổ chức của đơn vị sử dụng
w Năng lực và kỹ năng
w Sự phân bố của hệ thống
w Tính bảo mật
w Khả năng biến đổi
Hãy thử loại bỏ các phụ thuộc xoay vòng
Trang 52Package B
Ví duï: Partitioning
Trang 53Ví duï: Registration Package
Trang 54FulltimeStudent <<entity>> ParttimeStudent <<entity>>
0 *
0 2 alternateCourses
Vó dụ: University Artifacts Package
Trang 55IBillingSystem <<Interface>> ICourseCatalogSystem <<Interface>>
Ví duï: External System Interfaces Package
Trang 56<<layer>> Application
Ví duï: Application Layer
Trang 57Application <<layer>>
Business Services
<<layer>>
Security Registration
GUI Framework
External System Interfaces
Trang 58<<subsystem>>
CourseCatalogSystem <<subsystem>>
External System Interfaces
University Artifacts
ObjectStore Support
<<layer>>
Business Services
GUI Framework
Secure Interfaces
Security
<<subsystem>> Security Manager
Ví duï: Business Services Layer
Trang 59Middleware <<layer>>
Business Services
<<layer>>
java.sql com.odi
University Artifacts
Secure Interfaces
Security
<<subsystem>>
Security Manager
Ví duï: Business Services Layer Context
Trang 61Architectural Design Topics
w Các khái niệm then chốt
w Các cơ chế thiết kế và cài đặt
w Các Design Class và Subsystem
w Các khả năng tái sử dụng
w Tổ chức mô hình thiết kế
w Checkpoints
Trang 62những dịch vụ của các package khác nhau không?
cơ chế không?
hơn trong lãnh vực của ứng dụng không ?
phù hợp với toàn bộ mô hình không?
Trang 64§ Tên của role trong các aggregation và
association có diễn tả chính xác mối quan hệ?
Trang 65Nhắc lại: Architectural Design
w Mục tiêu của Architectural Design là gì?
w Thiết kế và cài đặt là gì?
w Mechanisms? Cho ví dụ.
w Interface là gì?
w Subsystem là gì? Khác package chỗ nào?
w Subsystem dùng để làm gì và làm sao để xác định được nó?
w Phân lớp và chia nhóm như thế nào?
Trang 66Bài tập: Architectural Design, Part 2
w Làm các việc sau:
class, subsystem, interface) và quan hệ của chúng
Trang 67Bài tập: Architectural Design, Part 2 (tt.)
w Hãy xác định
design class) trong kiến trúc (nghĩa là, xác định các package/layer chứa các design element)
Trang 68Bài tập: Architectural Design, Part 2 (tt.)
w Hãy xây dựng:
“sở hữu” chúng