Tải bản đầy đủ (.pdf) (51 trang)

Software Engineering Departmnet – Hanoi University of Technology Faculty of Information pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.37 MB, 51 trang )


Software Engineering Departmnet Hanoi University of Technology
Faculty of Information Technology







UML OOAD

phân tích thiết kế phần mềm
hớng đối tợng và hớng thành phần


1. Đỗ Văn Uy
2. Nguyễn Ngọc Bình
3. Thạc Bình Cờng
4. Lơng Mạnh Bá
5. Huỳnh Quyết Thắng
6. Bùi Thị Hoà
7. Lê Tấn Hùng
8. Lê Đức Trung

Các nghiên cứu đợc hỗ trợ kinh phí từ đề tài nghiên cứu khoa học cơ
bản KHCB 230701


LUu HANH NOI BO
Hà nội 2001



Chơng 1. Tổng quan về UML
1.1. Giới thiệu
Trong thập kỷ vừa qua có nhiều phơng pháp và ngôn ngữ phân tích và thiết
kế hớng đối tợng đã đợc pháp triển. Mặc dù các phơng pháp này đều có một
mục đích chung tuy nhiên chúng đều có thuật ngữ và ký hiệu khác nhau nên gây
nhiều khó khăn khi so sánh các mô hình và dùng lại các thiết kế. Các phơng
pháp này không có phơng pháp nào nổi bật hơn những phơng pháp khác.
Trong tình hình đó UML ra đời, và đa ra một ngôn ngữ chuẩn cho mô hình hoá
hớng đối tợng.
UML - Unified Modeling Language - là ngôn ngữ mô hình hợp nhất. Nó là một
phơng tiện giúp cho các tổ chức có thể nhận thức một cách tốt nhất lợi thế cạnh
tranh thông qua việc nắm bắt, truyền đạt, trao đổi và nâng cao tri thức trong lĩnh
vực công nghệ phần mềm. Chính xác hơn UML là một ngôn ngữ mô hình hóa
dùng để đặc tả, trực quan hóa, xây dựng và làm su liệu cho các hệ thống phần
mềm
Unified (hợp nhất) UML đợc đa ra lần đầu tiên bởi hãng Rational và ba
chuyên gia về phơng pháp luận hàng đầu trong lĩnh vực hệ thống thông tin/ kỹ
thuật công nghệ Grady Booch, James. Rumbaugh, Ivar Jacobson. Nó là sự hợp
nhất giữa những phơng pháp cũ (Booch, OMT, OOSE ), kết hợp với những kinh
nghiệm, những kiến thức thực tế.
Modeling (mô hình hóa) giúp chúng ta hiểu đợc thế giới thực, mô hình hóa
thế giới thực để có thể hiểu đợc những đặc trng, tính toán các thông số và dự
đoán kết quả sẽ đạt đợc.
Language (ngôn ngữ) chức năng của UML nh là một phơng tiện để bày tỏ
và trao đổi tri thức. Nó có bốn đặc điểm chủ yếu có thể phân biệt với các ngôn
ngữ mô hình hóa khác

General-purpose - đa mục đích
Broadly applicable - có thể ứng dụng rộng rãi

Tool-supported - đợc hỗ trợ bởi các công cụ

Industry standardized - chuẩn công nghiệp
UML là một ngôn ngữ mô hình hóa chuẩn nhng không phải là một qui trình
phát triển phần mềm chuẩn. Mặc dù UML phải đợc áp dụng trong phạm vi một
qui trình cụ thể, các qui trình phát triển này thờng khác nhau ở các tổ chức phát
triển phần mềm, ở các vấn đề thuộc các lĩnh vực khác nhau. Do đó, các nhà phát
triển UML đã cố gắng tập trung vào định nghĩa mức siêu mô hình (
metamodel) để
thống nhất các khái niệm về ngữ nghĩa và ký hiệu, có thể hỗ trợ cho nhiều ngôn
ngữ lập trình và qui trình phát triển phần mềm khác nhau.
UML là tổng hợp các phơng pháp của Booch, OMT và OOSE tạo thành một
ngôn ngữ mô hình hóa chung và có thể sử dụng rộng rãi cho những ngời trớc
đây đã quen với ba phơng pháp trên hay các phơng pháp khác. Ngoài ra, UML


2

mở rộng phạm vi mô hình hóa của các phơng pháp hiện có và có thể mô hình
hóa đầy đủ các hệ thống đồng thời hay phân tán. UML là ngôn ngữ có thể đợc
sử dụng cho nhiều mục đích khác nhau. UML cung cấp cơ chế tổ chức và phân
loại tri thức theo ngữ cảnh của vấn đề cần giải quyết. Các tri thức này đợc nắm
bắt đầy đủ bởi mô hình bao gồm nhiều thành phần và đợc thể hiện qua tập các
biểu đồ khác nhau có liên hệ chặt chẽ với nhau. Hơn nữa, mỗi biểu đồ nắm bắt
vấn đề ở những khía cạnh khác nhau qua các khái niệm, cấu trúc, các thành phần
mô hình thể hiện những ngữ nghĩa và tri thức khác nhau. Các biểu đồ này mô tả
nội dung giao tiếp giữa các thành viên trong qui trình phát triển phần mềm và
đợc tích hợp với nhau để tạo nên tri thức mô tả hệ thống, những vấn đề cũng
nh cách thức thực hiện để giải quyết chúng.
Các lợi ích của UML

Có thể mô hình hóa nhiều loại hệ thống, có thể dùng trong những giai
đoạn khác nhau của qui trình phát triển phần mềm. UML là sự thống nhất
các khái niệm mô hình hóa của những nhà nghiên cứu và phát triển công
nghệ hớng đối tợng. UML cung cấp một số tính năng sau
Đầy đủ ngữ nghĩa và ký hiệu để giải quyết trực tiếp các vấn đề hiện
tại trong mô hình hóa.
Đầy đủ ngữ nghĩa để giải quyết một số khó khăn tơng lai trong
mô hình hóa đặc biệt có liên quan đến công nghệ thành phần, xử lý
phân tán, framework và executability.
Cơ chế mở rộng siêu mô hình cho mô hình hóa các ứng dụng đặc
biệt. Cơ chế này cũng khiến cho các hớng tiếp cận mô hình hóa
tơng lai có thể phát triển dựa trên nền tảng UML.
Đầy đủ ngữ nghĩa để dễ dàng chuyển đổi mô hình giữa các công cụ
hỗ trợ phân tích thiết kế khác nhau cũng nh định rõ giao tiếp với
các repository để lu trữ và chia xẻ các thành phần mô hình.
Đối với ngời sử dụng UML cung cấp một ngôn ngữ mô hình hóa trực
quan mang tính diễn đạt cao để phát triển và trao đổi giữa các mô hình.
Một ngôn ngữ mô hình hóa nói chung đợc cấu trúc dựa trên các thành
phần cơ bản nhất ở mức siêu-siêu mô hình. Nếu cấu trúc này thay đổi
theo một tập các khái niệm mô hình hóa khác nhau theo các phơng pháp
khác nhau thì việc chuyển đổi giữa các mô hình sẽ không tránh khỏi mất
thông tin. Để khắc phục vấn đề này, UML đã tập hợp các khái niệm mô
hình hóa cốt lõi (core modeling concepts) đợc sử dụng trong nhiều
phơng pháp và công cụ mô hình hóa khác nhau. Các khái niệm này có
thể hỗ trợ cho phạm vi lớn các ứng dụng. Ngoài ra, các khái niệm mô
hình hóa ở mức thấp hơn và cụ thể hơn cho việc giao tiếp cũng đợc định
nghĩa cho ngời sử dụng để mô hình hóa một hệ thống cụ thể.
UML cung cấp cơ chế mở rộng và đặc biệt hóa để mở rộng các khái niệm
cơ sở.
Dựa trên những khái niệm đã đợc định nghĩa này, OMG mong đợi ở

UML khả năng biến đổi để đáp ứng các yêu cầu mới của những phạm vi


3

ứng dụng đặc biệt. Các nhà phát triển UML không muốn rằng mỗi khi có
thay đổi. thì các khái niệm cốt lõi phải đợc định nghĩa lại. Vì vậy, họ tin
rằng việc đa ra cơ chế mở rộng cho UML sẽ hỗ trợ những xu hớng phát
triển mới. Ngời sử dụng có thể khai thác các tính năng sau của UML
Xây dựng mô hình bằng cách sử dụng những thành phần cơ bản đã
đợc định nghĩa không sử dụng cơ chế mở rộng cho hầu hết các
ứng dụng thông thờng.
Thêm các khái niệm và ký hiệu mới cho những vớng mắc không
giải quyết đợc với các khái niệm cơ bản.
Đặc biệt hóa các khái niệm, ký hiệu và ràng buộc cho một phạm vi
ứng dụng (application domain) cụ thể.
UML đẩy mạnh tái sử dụng trong nền công nghệ phần mềm. Tái sử dụng
là một trong những vấn đề đợc quan tâm hàng đầu trong công nghệ phần
mềm. Nguyên tắc của tái sử dụng là dựa trên các thành phần hiện có đã
đợc kiểm chứng về chất lợng và chỉ xây dựng các thành phần mới khi
thực sự cần thiết. Điều này không những giúp đơng đầu với mức độ phức
tạp ngày càng cao của ứng dụng mà còn giảm chi phí, giảm thời gian phát
triển và tăng khả năng cạnh tranh của nhà phát triển phần mềm. UML cho
phép tái sử dụng hiệu quả các thành phần của một hệ thống vì đợc xây
dựng trên nền tảng hớng đối tợng. Ngoài ra, UML còn hỗ trợ các khái
niệm phát triển phần mềm mức cao nh collabarations, frameworks,
patterns và components. Ngữ nghĩa của chúng đợc định nghĩa rất rõ
ràng và điều này giúp đạt đợc những giá trị thực sự đầy đủ của hớng
đối tợng và tái sử dụng.
1.2. Kiến trúc của UML

Siêu mô hình UML định nghĩa các ngữ nghĩa đầy đủ để biểu diễn các mô
hình sử dụng UML. Nó sử dụng tập con khái niệm của UML và các ngữ nghĩa để
xác định bản thân nó. siêu mô hình UML đợc định nghĩa nh là một trong các
tầng của kiến trúc siêu mô hình bốn tầng, đợc minh hoạ trong hình 4.1.
Tầng Mô tả Ví dụ
Siêu-siêu mô hình
(meta-metamode)
Là cơ sở để mô hình
hoá kiến trúc. Định nghĩa
ngôn ngữ xác định các siêu
mô hình
MetaClass,
MetaAttribute
Siêu mô hình
(metamode)
Một thể hiện của siêu-
siêu mô hình. Định nghĩa
ngôn ngữ để xác định mô
hình.
Class, Attribute
Mô hình (model) Một thể hiện của siêu
mô hình. Định nghĩa ngôn
ngữ để mô tả loại thông tin.



4

Đối tợng ngời sử
dụng (User object)

Một thể hiện của mô
hình. Định nghĩa một loại
thông tin cụ thể.

Hình 4.1. Kiến trúc UML
Tầng siêu-siêu mô hình gồm có các thành phần cơ bản nhất trên đó UML
dựa vào khái niệm Thing để biểu diễn bất cứ những gì có thể định
nghĩa. Mức trừu tợng này đợc sử dụng để hình thức hoá khái niệm và
định nghĩa một ngôn ngữ để xác định các siêu mô hình.
Tầng siêu mô hình gồm những thành phần cấu tạo nên UML, bao gồm
các khái niệm từ các biểu đồ hớng đối tợng và hớng thành phần. Mỗi
khái niệm trong tầng này đều là một thể hiện của khái niệm siêu - siêu mô
hình Thing. Tầng trừu tợng này đợc sử dụng để hình thức hoá các
khái niệm của biểu đồ và định nghĩa ra một ngôn ngữ để xác định các mô
hình.
Tầng mô hình gồm có các mô hình UML. Đây là tầng mà tại đó việc mô
hình hoá các bài toán, các lời giải hay các hệ thống đợc thực hiện. Mỗi
khái niệm trong tầng này là một thể hiện của khái niệm trong tầng siêu
mô hình. Tầng trừu tợng này đợc sử dụng để hình thức hoá các khái
niệm và định nghĩa một ngôn ngữ để trao đổi các từ ngữ về một chủ để
cho trớc. Các mô hình trong tầng này thờng đợc gọi là các mô hình
lớp hay mô hình kiểu.
Tầng các đối tợng ngời sử dụng bao gồm các thành phần để minh hoạ
các mô hình UML. Mỗi khái niệm trong tầng này là một thể hiện của
khái niệm trong tầng mô hình. Tầng trừu tợng này đợc sử dụng để hình
thức hoá các từ ngữ cụ thể về một chủ đề cho trớc. Các mô hình trong
tầng này thờng đợc gọi là các mô hình đối tợng hay mô hình thể hiện.
Trong ngữ cảnh này, khái niệm siêu đợc sử dụng để biểu thị mối quan hệ
giữa một tập các phi-siêu khái niệm (non-metaconcepts) và siêu khái niệm của
chúng. Khái niệm siêu không phải là đặc tính của mô hình, nhng lại có vai

trong trong mối quan hệ giữa các mô hình: một siêu - siêu mô hình quan hệ với
một siêu mô hình theo cách giống nh một siêu mô hình quan hệ với một mô
hình và cũng giống nh cách mà một mô hình quan hệ với đối tợng ngời sử
dụng. Về cơ bản thì biểu diễn siêu khái niệm của siêu khái niệm trong đó khái
niệm trừu tợng bao gồm việc đa vào siêu khái niệm và biểu diễn bao gồm thí
dụ minh hoạ (hay dẫn chứng cụ thể) một siêu khái niệm là sự trừu tợng một tập
các phi - siêu khái niệm.





5





6


Chơng 2. Ngữ nghĩa và cú pháp các phần tử trong
UML (UML Semantic)
2.1. Giới thiệu
UML gồm có siêu mô hình UML và mô hình UML. siêu mô hình UML giữ
chức năng định nghĩa các phần tử và cú pháp UML. Mô hình UML mô tả ký hiệu
các phần tử và các biểu đồ dựa trên siêu mô hình UML.
siêu mô hình UML bao gồm các phần tử và một số quy tắc về cú pháp. Ngoài
việc phần tử UML mang một ý nghĩa xác định, cú pháp UML còn mô tả cách
liên kết những phần tử nào với nhau để tạo ra ý nghĩa nào đó. ở góc độ mô hình

hóa, các phần tử UML có thể phân chia làm ba loại là các phần tử mô hình hóa
tĩnh, các phần tử mô hình hóa tơng tác và các phần tử quan hệ có chức năng liên
kết giữa hai phần tử trên với nhau. siêu mô hình UML giữ vai trò hớng dẫn
ngời sử dụng UML về cú pháp trong mô hình hóa. Ngoài ra, siêu mô hình UML
còn đợc sử dụng bởi các nhà phát triển CASE tool để mô hình hóa dữ liệu cho
một CASE tool hỗ trợ UML. Mô hình dữ liệu này sử dụng lại định nghĩa phần tử
UML để thiết kế các lớp cơ bản và bổ sung thêm các lớp mới tùy theo chức năng
CASE tool cung cấp cho ngời sử dụng.
Mô hình UML là biểu diễn ký hiệu của các phần tử UML đồng thời cung cấp
cho ngời sử dụng các biểu đồ UML cụ thể để mô hình hóa cũng nh làm ngôn
ngữ giao tiếp giữa các thành viên của nhóm trong quá trình phát triển phần mềm.
Nói cách khác, các biểu đồ trong Mô hình UML là thể hiện của các cú pháp
tơng ứng trong siêu mô hình UML. siêu mô hình UML đợc chia thành nhiều
gói thành phần (package) dựa trên ý nghĩa của cú pháp đợc mô tả. Mỗi gói định
nghĩa các phần tử khác nhau và mô tả một nhóm cú pháp dựa trên các phần tử
này. Trong mỗi gói lại có thể bao gồm các gói con. Việc phân chia này giúp cho
định nghĩa của siêu mô hình UML rõ ràng hơn, chỉ quan tâm đến các phần tử
trong gói và loại bỏ các phần tử không cần thiết vợt ra khỏi phạm vi ngữ nghĩa
cần mô tả của gói. Gói đợc biểu diễn nh sau

Tên gói

Hình 2.1. Ký hiệu gói

2.2. Tổng quan về các loại quan hệ giữa các phần tử
Trong quá trình định nghĩa phần tử cần phải mô tả các mối liên hệ giữa phần
tử này với các phần tử khác nên UML sử dụng một tập hợp các quan hệ. Mỗi


7


quan hệ có một ý nghĩa xác định. Các quan hệ này bao gồm quan hệ tổng quát
hóa (generalization), quan hệ kết hợp (association), quan hệ phụ thuộc
(dependency).
Mỗi phần tử đều có ngữ nghĩa riêng. Để biểu diễn phần tử và quan hệ giữa
các phần tử, UML sử dụng các ký hiệu riêng. Một phần tử có ký hiệu nh sau:

Tên phần tử
Các thuộc tính

Hình 2.2. Ký hiệu phần tử

Phần sau trình bày sơ lợc các loại quan hệ. Chi tiết về các loại quan hệ giữa
các phần tử đợc trình bày trong chơng sau.

2.2.1. Quan hệ tổng quát hoá (generalization)
Quan hệ tổng quát hoá là quan hệ giữa một phần tử tổng quát hơn và một
phần tử đặc biệt hơn. Phần tử đặc biệt hơn chứa đầy đủ các đặc điểm của phần tử
tổng quát hơn và ngoài ra còn có những thông tin riêg. Quan hệ tổng quát hóa có
ký hiệu nh sau:

Hình 2.3. Ký hiệu quan hệ tổng quát hoá

2.2.2. Quan hệ kết hợp (association)
Quan hệ kết hợp thể hiện liên hệ về mặt ngữ nghĩa giữa hai phần tử. Nghĩa là
phần tử này có sử dụng hay nhận biết các thông tin của phần tử kia. Quan hệ kết
hợp có thể bao gồm hai loại con là quan hệ ngữ nghĩa thông thờng (association)
và quan hệ kết tập (aggregation). Quan hệ ngữ nghĩa thông thờng

Hình 2.4 Ký hiệu quan hệ kết hợp


Quan hệ kết tập: phần tử này chứa phần tử kia theo nghĩa vật lý.


8


Hình 2.5 Ký hiệu quan hệ kết tập

2.2.3. Quan hệ phụ thuộc (dependency)
Quan hệ phụ thuộc thể hiện sự phụ thuộc chức năng của một hay nhiều phần
tử nhận vào một hay nhiều phần tử cho. Quan hệ phụ thuộc kém chi tiết về mức
độ ngữ nghĩa hơn quan hệ kết hợp và thờng sử dụng để mô tả sự phụ thuộc lẫn
nhau giữa các gói.

Hình 2.6 Ký hiệu quan hệ phụ thuộc

2.3. Tổng quan về các phần tử và cấu trúc siêu mô hình UML
2.3.1. Phân loại phần tử trong siêu mô hình UML
ở góc độ định nghĩa, các phần tử trong UML có thể đợc chia làm hai loại là
phần tử trừu tợng và phần tử cụ thể. Các phần tử trừu tợng có tính tổng quát
cao giữ chức năng tham gia vào định nghĩa các phần tử khác. Các phần tử cụ thể
thờng có quan hệ tổng quát hóa qua nhiều tầng với các phần tử trừu tợng,
ngoài ra còn có các quan hệ kết hợp (association) với các phần tử khác. Chỉ các
phần tử cụ thể mới có ký hiệu trong Mô hình UML và đợc sử dụng trong mô
hình hóa.
2.3.2. Cấu trúc siêu mô hình UML
Siêu mô hình UML bao gồm ba gói chính nh sau
Foundation
Model Management

Behavioral
Elements

Hình 2.7. Các gói chính của UML



9

Foundation Package (Gói nền tảng) là gói bao gồm phần lớn các phần tử trừu
tợng và một số phần tử cụ thể mang tính chất cơ bản. Các phần tử trong gói này
đợc sử dụng bởi hai gói là
BehavioralElements Package (gói phần tử hành vi) và
ModelManagement Package (gói quản trị mô hình).
BehavioralElements Package là gói định nghĩa các phần tử sử dụng cho việc mô
tả quá trình vận động của một phần tử hay tơng tác giữa các phần tử trong thế
giới thực.
ModelManagement là gói định nghĩa các phần tử cho việc quản lý mô hình của
ngời sử dụng.
2.4. Package Foundation Package (gói nền tảng)
Foundation Package định nghĩa những phần tử UML cơ bản. Foundation
Package bao gồm ba gói con là Core Package (gói cơ bản), gói các Data Types
Package
(gói kiểu dữ liệu) và Extension Mechanism Package (gói kỹ thuật mở
rộng).
Data Types
Core
Extension
Mechanism


Hình 2.8 Core Package

Core Package định nghĩa những phần tử cơ bản bao gồm cả các phần tử quan
hệ và đa số là ở mức trừu tợng.
Extension Mechanism Package định nghĩa cơ chế
mở rộng cho các phần tử UML để bổ sung các phần tử mới.
Data Types Package
định nghĩa các kiểu dữ liệu đợc sử dụng trong siêu mô hình UML. Các thuộc
tính của các phần tử trong siêu mô hình UML có kiểu dữ liệu thuộc về
Data
Types
.

2.4.1. Core Package (gói cơ bản)
Core package bao gồm các phần tử cơ bản và đợc mô tả bởi năm mô hình là
Backbone (xơng sống), Relationships (quan hệ), Dependencies (phụ thuộc),
Classifiers (phân loại) và Auxiliary Elements (bổ sung). Core package giới thiệu cú
pháp cho mô hình hóa tĩnh, không quan tâm đến quá trình vận động và tơng tác
giữa các đối tợng trong thế giới thực.



10

2.4.1.1. Mô hình Backbone (xơng sống)
Element
ElementOwnerShip
visibility: VisibilityKind
isSpecification:Boolean
Model Element

name :Name
Feature
ownerscope: ScopeKind
visib ility: VisibilityKind
NameSpace GeneralizableElement
isRoot:Boolean
isLeaf:Boolean
isAbstract:boolean
Parameter
defaultValue: Expression
kind: ParameterDirectionKind
Constraint
body: BooleanExpression
Classifier
StuctualFeature
multiplicity: M ultiplicity
changeability:ChangeableKind
tagetScope: ScopeKind
BehavioralFeature
isQuery:Boolean
Attribute
initialvalue: Expression
Operation
concurency:CallConcurencyKind
isRoot:Boolean
isLeaf:Boolean
isAbstract:boolean
sp ecification: String
Method
body: ProcedureExpresstion

+ ownedElement
+ nameSpace
*
0 1
+ constraintElement
+ constraint
1 *
*
{ordered}
*
0 1
+ feature
+ owner
*
1
+ type
1
*
+ specification
+ type1
*
0 1
*
+ parameter
{ordered}

Hình 2.9. Mô hình BackBone
Backbone chủ yếu định nghĩa phần tử Classifier. Classifier là phần tử trừu tợng
đóng vai trò tổng quát hóa trực tiếp của phần lớn các phần tử cụ thể khác. Ngoài
ra, các phần tử cơ bản của UML đợc định nghĩa trong

Core bao gồm attribute
(thuộc tính),
operation (hoạt động) và method (phơng thức), parameter (tham số)

constraint (ràng buộc).
Để phục vụ cho quá trình định nghĩa Classifier, UML đa ra các phần tử trừu
tợng có vai trò là tổng quát hóa (trực tiếp hay gián tiếp) của
Classifier. Các phần
tử này có quan hệ với nhau và có quan hệ với
Classifier đợc mô tả trong mô hình
Backbone bao gồm:
Element (phần tử) : Element là một phần tử trừu tợng ở mức cao nhất, tổng
quát nhất trong các phần tử UML.
ModelElement (phần tử mô hình) : ModelElement là phần tử đợc định danh
trong mô hình và là tổng quát hóa cấp cao nhất thứ hai cho các phần tử khác sau
Element. ModelElement là phần tử đợc xác định qua tên.
Namespace (không gian các phần tử tham chiếu theo tên): Namespace là tập
hợp các phần tử
ModelElement với điều kiện định danh của một ModelElement
trong một
Namespace là duy nhất.
ElementOwnership: ElementOwnership định nghĩa tầm vực (visibility) của một
phần tử chứa trong
Namspace (không gian các phần tử). ElementOwnership quy
định tầm vực của một phần tử đợc giới hạn trong
Namespace (chỉ có thể đợc
tham chiếu bởi các phần tử trong
Namespace) hay vợt khỏi Namespace (có thể
đợc tham chiếu bởi các phần tử ngoài
Namespace).



11

GeneralizableElement (phần tử có thể tổng quát hóa hay đặc biệt hóa):
GeneralizableElement là các phần tử có thể tham gia vào quan hệ tổng quát hóa
hay đặc biệt hóa. Do đó một
GeneralizableElement có thể là tổng quát hóa hay đặc
biệt hóa của một
GeneralizableElement khác.
Feature (đặc tính) : mô tả các đặc tính của một Classifier chủ yếu là tầm vực
(visibility) của đặc tính. Tầm vực này xác định một đặc tính của
Classifier có thể
đợc tham chiếu bởi các
Classifier khác hay chỉ đợc sử dụng bởi chính Classifier
chứa đặc tính đó.
StructuralFeature (đặc điểm cấu trúc) : đợc thừa kế từ Fearture,
StructuralFeature mô tả đặc tính về mặt cấu trúc của một Classifier, mô tả cấu trúc
này có thể thay đổi hay cố định qua thuộc tính
changeability của StructuralFeature.
StructualFeature có một đặc biệt hóa là Attribute (thuộc tính).
BehavioralFeature (đặc điểm hành vi) Đợc kế thừa từ Feature và biểu diễn các
đặc tính về mặt hành vi của một
Classifier đồng thời mô tả đặc tính hành vi này có
ảnh hởng lên trạng thái của
Classifier hay không qua thuộc tính isQuery.
BehavioralFeature gồm hai đặc biệt hóa là Operation (hoạt động) và Method (phơng
thức). Ngoài ra, mô hình
Backbone còn định nghĩa các phần tử cụ thể đóng vai trò
quan trọng bậc nhất là

Attribute (thuộc tính), Method (phơng thức), Operation (mô
tả phơng thức),
Parameter (tham số) và Constraint (ràng buộc).
Attribute (thuộc tính) : Attribute mô tả các giá trị mà một Classifier có thể sử
dụng để thể hiện trạng thái.
Attribute có các thuộc tính chính là name (tên), initial
value
(giá trị khởi đầu)
Operation (mô tả phơng thức): Operation là phơng thức có thể đợc yêu cầu
từ một
Classifier chứa Operation để tác động lên Classifier này. Operation có quan hệ
kết hợp (association) với
Parameter (tham số) nghĩa là Operation sử dụng một tập
tham số để khởi đầu cho việc thi hành. Một
Operation có thể đợc kế thừa từ các
Operation khác.
Method (phơng thức) : Method có quan hệ kết hợp với Operation (mô tả
phơng thức) mô tả cụ thể cách thức thực hiện một phơng thức bao gồm các
quy trình và các thuật toán.
Method có tác động đến kết quả của phơng thức.
Parameter (tham số) : Parameter là tham số có thể thay đổi, gửi và nhận. Một
Parameter có thể bao gồm tên, kiểu dữ liệu và quan hệ với các phần tử khác giao
tiếp với nó. Parameter đợc sử dụng trong
Operation (mô tả phơng thức),
Templates (mẫu)
Constraint (ràng buộc) : Constraint là các điều kiện về mặt ngữ nghĩa hay các
giới hạn cho một phần tử, có thể diễn tả ở dạng văn bản hay một biểu thức logic
của một ngôn ngữ mô tả ràng buộc. Ngoài việc định nghĩa phần tử ràng buộc
Constraint, UML còn định nghĩa một ngôn ngữ cho mô tả ràng buộc là ngôn ngữ
ràng buộc đối tợng(Object Constraint Language). Giữa các

Classifier có quan hệ
tổng quát hóa. Do
Classifier là phần tử trừu tợng nên tất cả các phần tử thừa kế
Classifier đều có tính chất này.
2.4.1.2. Mô hình Relationships (các quan hệ)


12


AsosicationEnd
isNavigable: Boolean
ordering: OrderingKind
aggregation:AggregationKind
multiplicity: Multiplicity
changeability:ChangeableKind
visibility: VisibilityKind
Model Element
name :Name
Relationship
Flow
GeneralizableElement
isRoot:Boolean
isLeaf:Boolean
isAbstract:boolean
Asosication
body: BooleanExpression
Classifier
Class
isActive: Boolean

Assosication Class
Generalization
dicrimonator: Name
Attribute
initialvalue: Expression
+ source
+ target
*
*
+ target Flow
*
+ source Flow
*
+ generalization
*
+ child
1
*
1
+ specialization + parent
*
0 1
+ powertypeRange
+ powertype
+ specialization
+ type
*
1
**
+ qualifier + asosicationEnd

*
0 1
{ordered}
{ordered}
+ connection
2 *
1

H×nh 2.10. M« h×nh Relationships


13

Mô hình Relationships định nghĩa các quan hệ giữa các phần tử UML bao
gồm hai loại quan hệ cơ bản là
generalization (quan hệ tổng quát hóa), association
(quan hệ kết hợp).
Generalization đợc định nghĩa là sự liên hệ giữa hai phần tử. Phần tử đặc
biệt hơn gọi là phần tử con (child) và phần tử tổng quát hơn là phần tử cha
(parent).
Association (Quan hệ kết hợp) mô tả nhiều Classifier tham gia vào nhiều
AssociationEnd (mối kết hợp). Association thờng gặp là quan hệ kết hợp có hai
AssociationEnd (mối kết hợp). Mỗi mối kết hợp gắn với một Classifier. Association
mô tả sự liên hệ về ngữ nghĩa giữa các Classifier.
AssociationClass (Lớp kết hợp), Thừa kế từ Class và Association,
AssociationClass vừa có tính chất của một Class vừa có tính chất của một
Association. AssociationClass nối một tập các classifier với nhau và có các thuộc
tính riêng đặc trng cho quan hệ giữa các
classifier này.
Nhân sự

Tiền lơng
Nhân sự
1 *
Công ty
0 *

Hình 2.11. Ví dụ lớp kết hợp
2.4.1.3. Mô hình Classifiers (các đặc biệt hóa của classifiers)
Mô hình Classifiers mô tả các đặc biệt hóa của Classifier bao gồm các phần tử
Class (lớp), Interface (giao diện), DataType (kiểu dữ liệu), Node (nút) và
Component (thành phần)



14

isActive: Boolean
Class DataType
Interface
Node Component
visibility: VisibilityKind
Element
ModelElement
+resident
+deploymentLocation
*
*
*
*
+resident

+ImplementationLocation
Classifier

Hình 2.12. Các lớp đặc biệt của Classifier

Class (lớp)
Class là tập hợp các đối tợng có cùng các thuộc tính, hành động và ngữ
nghĩa. Một
Class có thể là trừu tợng (abstract) nghĩa là không có thể hiện (đối
tợng) nào đợc tạo ra trực tiếp từ nó.
Class là phần tử cụ thể có biểu diễn ký
hiệu trên Mô hình UML. Là đặc biệt hóa của
Classifier, Class bao gồm các
Attribute (thuộc tính), Operation (mô tả phơng thức) và Method. Giữa các Class
có quan hệ tổng quát hóa, quan hệ kết hợp.

Th ký
Kế toán viênCông việc
Phòng ban
Tên nhân viên
Nhân viên
Lấy thông tin nhân viên()
Thực hiện
Trực thuộc
Quan hệ
kết hợp
Tổng quát hoá
Thuộc tính
Phơng thức


Hình 2.13. Ví dụ về lớp và quan hệ giữa các lớp


15



Interface (giao diện)
Interface là tập các operation (phơng thức) của một Classifier. Mỗi Interface
cung cấp một dịch vụ của
Classifier bao gồm một nhóm các operation có quan hệ
với
Interface đó. Mỗi Classifier có thể cung cấp nhiều dịch vụ khác nhau qua các
Interface khác nhau.

DataType (kiểu dữ liệu)
DataType mô tả kiểu dữ liệu của ngời sử dụng. UML không định nghĩa các
kiểu dữ liệu cụ thể. Việc định nghĩa các kiểu dữ liệu của ngời sử dụng tùy
thuộc vào môi trờng phát triển phần mềm nên thờng các CASE tool đảm
nhận chức năng định nghĩa các kiểu dữ liệu này.

Node (nút)
Node là phần tử đại diện cho một tài nguyên vật lý có bộ nhớ và khả năng
xử lý tính toán. Các
node thờng đại diện cho các máy tính và mô tả việc phân
bố các máy tính trên mạng.

Component (thành phần)
Component là một phần riêng biệt ở mức vật lý của hệ thống. Component
đóng gói các phơng thức xử lý và cung cấp tập các dịch vụ xử lý này qua một

tập
interface (giao diện) khác nhau. Mỗi giao diện bao gồm nhiều phơng thức
khác nhau để phục vụ cho một mục đích cụ thể. Các phơng thức có thể là các
đoạn mã thi hành đợc, các script hay lệnh. Một
component thờng cung cấp
nhiều loại dịch vụ khác nhau liên quan đến một đối tợng cụ thể.
<<COM>>
MSBind
DBindingColectionEvents
Giao diện
Component
DBindingColection
DBinding
Một MSBind là một
component nối một control
của Window với một
recordset. MSBind cung cấp
nhiều dịch vụ, trong đó dịch
vụ gắn control vào recordset
là Bindding

Hình 2.14. Ví dụ về component và interface


16


2.4.1.4. Mô hình Dependencies (các quan hệ phụ thuộc)
Dependency mô tả sự phụ thuộc chức năng giữa hai thành phần cho và thành
phần nhận. Thành phần cho đóng vai trò cung cấp dịch vụ cho thành phần nhận.

Dependency định nghĩa phụ thuộc giữa hai phần tử ModelElement nên hầu nh tất
cả các phần tử cụ thể thừa kế
ModelElement đều có thể có quan hệ phụ thuộc.
Quan hệ phụ thuộc có các đặc biệt hóa là Binding (gắn), Abstraction (trừu
tợng hóa),
Usage (sử dụng) và Permisson (cho phép).

Relation
name: Name
ModelElement Dependency
Binding
1 *
1 *
*
*
+ supplier
+ client
+ clientDependency
+ supplierDependency
Usage
mapping: MappingExpression
Abstraction Permission
+ argument
{ordered}
1 *
0 1

Hình 2.15. Mô hình Dependence

Binding (gắn)

Binding định nghĩa quan hệ giữa một Template (mẫu) là thành phần cho của
Dependency với một thành phần đợc tạo từ Template đó là thành phần nhận của
Dependency. Binding bao gồm các đối số phù hợp với các tham số của Template.

Abstraction (trừu tợng hóa)
Abstraction mô tả mối liên hệ giữa các phần tử ở các mức trừu tợng hóa
khác nhau. Ví dụ nh chuyển một khái niệm ở mức phân tích sang mức thiết kế
bằng quan hệ
Abstraction.



17

Usage (sử dụng)
Usage là quan hệ giữa một phần tử ModelElement có sử dụng phơng thức
của một phần tử
ModelElement khác.



Permisson (cho phép)
Permisson cung cấp quyền hạn cho một phần tử ngoài Namespace (không
gian các phần tử) tham chiếu các phần tử khác trong
Namespace. Phần tử nhận
là một
ModelElement phần tử cho bắt buộc là một Namespace.

2.4.1.5. Mô hình AuxiliaryElements (các phần tử bổ sung)


TemplateParameter
name:Name
ModelElement
Element
PresentationElement
+ defaultElement
1 *
0 1
+ subject
{ordered}
+ templateParameter
+presentation
+ annotatedElement
**
Element
+argument
{ordered}
0 1
*
*
Comment
*
*

Hình 2.16. Mô hình AuxiliaryElements

Template Parameter (tham số cho mẫu)
Tham số cho mẫu là tham số cho các phần tử Template. Ví dụ nh trong một
môi trờng ngôn ngữ lập trình hỗ trợ
Template, ta có thể xây dựng lớp mới bằng

cách cung cấp các lớp tham số cho
Template. TemplateParameter định nghĩa quan


18

hệ giữa một phần tử ModelElement với các tham số (các tham số này là các phần
tử
ModelElement). ModelElement là một Template khi sử dụng ít nhất một
TemplateParameter.

Presentation Element (phần tử biểu diễn trực quan)
PresentationElement mô tả thông tin cho việc biểu diễn các ModelElement.
UML không định nghĩa cụ thể các thông tin này mà để cho các CASE tool tự do
định nghĩa.

2.4.2. Package Extension Mechanisms (gói kỹ thuật mở rộng)
2.4.2.1. Khái quát
Extension Mechanisms định nghĩa cách thức mở rộng ngôn ngữ UML bằng
cách đa ra cơ chế bổ sung các phần tử với ngữ nghĩa mới.
Package này định
nghĩa
Stereotypes, Constraint (ràng buộc) và Tagged Value (thẻ giá trị) là ba cơ
chế mở rộng của UML.
UML cung cấp cơ chế mở rộng để thêm các phần tử mới cho các lĩnh vực
đặc biệt mà UML chuẩn không định nghĩa. Các lĩnh vực cần các khái niệm mới
có thể tự định nghĩa các khái niệm này qua cơ chế mở rộng UML.
Việc mở rộng này không đơn giản là gắn tên
Stereotypes vào phần tử và quy
định ngữ nghĩa mới do đôi khi còn có các ràng buộc ngữ nghĩa trong thế giới

thực. Do đó các
stereotype thờng chứa các ràng buộc và các giá trị thẻ. Mỗi
StereoType quy định loại phần tử ModelElement mà stereotype này có thể tác
động. Phần tử đợc tác động này là các phần tử trong siêu mô hình UML ví dụ
nh
Class, Association, Component Khi gắn stereotype vào các phần tử này thì
đợc phần tử mới thừa kế phần tử cũ và có tên của
stereotype. Ví dụ nh
Component có các stereotype là "document,"executable,"table. Các stereotype
này bản chất cũng là component nhng "document" là một thành phần
(component) chứa các su liệu, "
executable" là thành phần chứa các dịch vụ xử
lý còn "
table" chứa các bảng trong một cơ sở dữ liệu.


19

ModelElement
(from Core)
Constraint
(from Core)
+ constraint
{ordered}
+ constrainedElement
1
0 1
+ taggedValue
GeneralizableElement
(from Core)

+ stereotype
icon:Geometry
baseClass:Name
Stereotype
1 *
*
*
+ constrainedElement
0 1
0 1
+ requiredTag
*
*
+ extendedElement
{xor}
Element
*
+ stereotypeConstraint

Hình 2.17. Mô hình Extension Mechanisms

2.4.2.2. Constraint (ràng buộc)
Là các ràng buộc ngữ nghĩa đợc gắn với một phần tử cần mở rộng để áp
đặt các điều kiện lên phần tử này và có tác dụng thay đổi hay giới hạn ngữ
nghĩa. Phần tử mở rộng phải thỏa mãn các ràng buộc này để đảm bảo sự chính
xác về ngữ nghĩa.
Constraint cũng có thể đợc gắn với stereotypes để tác động
lên các phần tử có quan hệ với
stereotypes này.


2.4.2.3. Stereotype
Là cơ chế phân loại một phần tử theo quan hệ kết hợp của phần tử này với
các
stereotype. Mỗi stereotype gắn một phần tử sẽ cho một phần tử mới thừa kế
phần tử cũ ngoài ra có thêm các thông riêng.
Stereotype chính là sự khác nhau
về ngữ nghĩa của hai phần tử cùng cấu trúc. Ví dụ nh trong quy trình phát triển
phần mềm Rational Unified Process, các
stereotype cho phần tử Class đợc định
nghĩa thêm trong đó có
stereotype "boundary. Stereotype này là một Class đóng
vai trò giao tiếp với các tơng tác bên ngoài hệ thống. Mục đích của mở rộng
này là phân loại các
Class theo chức năng phục vụ cho quá trình phân tích.


20

Class với
stereotype là
"boundary"
Giao diện ngời sử dụng
Giao diện ngời sử dụng
Phân tích

Hình 2.18. Ví dụ Stereotype

2.4.2.4. Tagged Value (thẻ giá trị)
Là các thuộc tính đính kèm cho một phần tử mở rộng. Tagged Value có thể
chứa những thông tin bất kỳ cần thiết bổ sung cho một phần tử mới.


2.4.3. Các kiểu dữ liệu trong siêu mô hình UML (Data Types)
2.4.3.1. Khái quát
DataTypes định nghĩa các kiểu dữ kiệu dùng riêng trong siêu mô hình UML
nghĩa là thuộc tính của các phần tử trong siêu mô hình UML có các kiểu dữ liệu
trong
Data Types. Data Types cần thiết cho sự tham khảo sâu hơn về các thuộc
tính và ý nghĩa mỗi thuộc tính của một phần tử trong
siêu mô hình UML.
Data Types không phải là kiểu dữ liệu của ngời sử dụng. Kiểu dữ liệu của
ngời sử dụng UML đợc định nghĩa bởi DataType là đặc biệt hóa của
Classifiers trong Core. Data Types không định nghĩa cú pháp nào cho ngời sử
dụng.

2.4.3.2. Các kiểu dữ liệu trong Data Types
ActionExpression : biểu thức cho kết quả là sự thi hành một Action.
AggregationKind : kiểu liệt kê bao gồm các giá trị none, aggregate, composite.
Các giá trị này xác định loại
Association.
ArgListsExpression :biểu thức trả về một danh sách các đối tợng (object).
Boolean : kiểu liệt kê bao gồm hai giá trị false và true.
BooleanExpression : biểu thức logic trả về kiểu Boolean.
CallConcurrencyKind : kiểu liệt kê bao gồm các giá trị sequential, guarded,
concurrent.
ChangeableKind : kiểu liệt kê quy định giá trị một AttributeLink hay một
LinkEnd có thể thay đổi bao gồm các none, frozen và addOnly.
Enumeration : định nghĩa kiểu liệt kê.


21


EnumerationLiteral : định nghĩa một giá trị thuộc một kiểu liệt kê.
Expression : biểu thức trả về một kiểu thuộc package DataType.
Integer : kiểu nguyên.
IterationExpression : chuỗi trả về cấu trúc kiểm soát lặp.
LocationReference : vị trí cho việc chèn một use case vào một use case khác.
Mapping : biểu thức chuyển đổi các ModelElement.
MappingExpression : biểu thức trả về kiểu Mapping.
MessageDirectionKind : kiểu liệt kê bao gồm các giá trị activation và return.
Muliplicity : tập các số nguyên không âm.
MultiplicityRange : miền giá trị số nguyên không âm.
Name : định danh cho một ModelElement.
ObjectSetExpression : biểu thức trả về danh sách các đối tợng.
OperationDirectionKind : kiểu liệt kê quy định một Operation là đợc yêu cầu
hay đợc cung cấp bởi một
Classifier bao gồm các giá trị provide và require.
ParameterDirectionKind : kiểu liệt kê bao gồm các giá trị in, inout, out và return.
Primitive : định nghĩa kiểu dữ liệu đơn.
ProcedureExpression : biểu thức trả về một Procedure.
ProgrammingLanguageType : kiểu dữ liệu trong một ngôn ngữ lập trình.
PseudostateKind : kiểu liệt kê bao gồm các giá trị initial, deepHistory,
shallowHistory, join, fork, branch, junction và final.
ScopeKind : kiểu liệt kê bao gồm các giá trị classifier và instance.
String : chuỗi văn bản.
Structure : kiểu dữ liệu có cấu trúc.
Time : kiểu giờ.
TimeExpression : biểu thức kiểu Time.
UnlimitedInteger : kiểu nguyên không giới hạn.
Uninterpreted : kiểu không xác định.
VisibilityKind : kiểu liệt kê bao gồm các giá trị public, protected và private.


2.5. Behavioural Elements Package (gói phần tử hành vi)
Behavioral Elements bao gồm các phần tử cùng với các cú pháp cho mô hình
hóa hành vi và tơng tác.
BehavioralElements bao gồm năm gói là Common
Behavior
(hành vi tổng quát), Collaborations (mô hình cộng tác), Use Cases (mô
hình chức năng),
State Machines (mô hình trạng thái) và Activity Graphs (mô hình
hành động).


22

Activity Graphs
State MachinesUse CasesCollaboration
Common
Behavior

Hình 2.19 Behavioural Elements Package

CommonBehavior định nghĩa các phần tử hành vi cơ bản.
Collaboration định nghĩa các phần tử và cú pháp cho biểu đồ
Collaboration và Sequence ở Mô hình UML. Collaboration mô tả tơng tác giữa
các phần tử để thực hiện một tác vụ cụ thể.
Use Cases bao gồm các phần tử mô hình hóa chức năng hệ thống cho từng
loại ngời sử dụng.
Use Cases giữ vai trò định nghĩa cho biểu đồ Use Case ở Mô
hình UML.
StateMachine bao gồm các khái niệm cho mô hình hóa quá trình thay đổi

trạng thái của một phần tử.
StateMachine định nghĩa biểu đồ StateChart trong Mô
hình UML.
Activity Graphs là dạng đặc biệt của StateMachine, đợc định nghĩa dựa trên
StateMachine, mô tả quá trình hành động của một hay nhiều phần tử. Activity
Graphs
định nghĩa biểu đồ Activity Graph trong Mô hình UML.

2.5.1. Package Common Behavior (gói hành vi tổng quát)
Common Behavior định nghĩa các phần tử cơ bản cho mô hình hóa tơng tác.
Common Behiavior đợc mô tả bằng các mô hình Signals (tín hiệu), Actions (hành
động),
Instances and Links (thể hiện và liên kết).


23

Classifier
(from Core)
Signal
Exception
BehavioralFeature
(from Core)
specification:String
isRoot:Boolean
isLeaf:Boolean
isAbstract:Boolean
Stereotype
+signal
0 *

+reception
*
+context+raisedSignal
1*

Hình 2.20. Mô hình Signals

2.5.1.1. Mô hình Signals (tín hiệu)
Mô hình này chủ yếu định nghĩa phần tử Signal (tín hiệu). Tín hiệu đợc tạo
ra từ một
BehavioralFeature (đặc điểm hành vi) của classifier này và gủi đến một
phần tử
Reception (nhận tín hiệu)của một classifier khác.

Reception (phần tử nhận tín hiệu)
Reception là phần tử nhận tín hiệu từ một classifier và giữ chức năng mô tả
các hành động (bằng chuỗi văn bản) của tín hiệu đến
classifier nhận.

Signal (tín hiệu)
Signal là các tác tơng tác không đồng bộ giữa các classifier và là phần tử độc
lập với các
classifier. Signal đợc tạo ra do các BehavioralFeature (đặc điểm hành
vi) của các
classifier này và gửi đến các classifier khác. Do BehavioralFeature là
phần tử hành vi trừu tợng nên tất cả các phần tử hành vi thừa kế
BehavioralFeature nh các operation (mô tả phơng thức) đều có thể tạo và gửi các
signal.




24

Exception (lỗi ngoại lệ)
Thừa kế signal, exception là tín hiệu đợc gửi đi khi có một lỗi trong quá
trình thi hành một hành vi.

2.5.1.2. Mô hình Actions (hành động)
Action đợc mô tả bằng mô hình Actions của siêu mô hình UML. Action là các
chỉ thị thi hành có gây ảnh hởng đến trạng thái của hệ thống
Model
(from Core)
recurrence:IterationExpression
target:ObjectSetExpression
isAsynchronous:Boolean
script:ActionExpression
Action
value:Expression
Argument
ActionSequence
CallAction SendAction UninterpretedAction
ReturnAction TerminateAction
Operation
(from Core)
Signal
DestroyAction
*
1
*
1

+instantiation
CreateAction
Class
(from Core)
0 *
1
+operation +signal
0 1 0 *
+actualArgument
{ordered}
{ordered}
+action
0 1

Hình 2.21. Mô hình Action

Argument (đối số)
Argument là đối số cho một Action, cung cấp giá trị tham số cho một Action.

Action (hành động)
Action là các chỉ thị thi hành trong một quy trình tính toán có ảnh hởng đến
trạng thái của hệ thống.
Action bao gồm các đặc biệt hóa sau
AssignmentAction : gán cho thuộc tính một giá trị mới.


25

×