Trang_danh_cho_Sinhvien - Nguyễn Thế Dũng Chapter5 tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn...
Trang 2Công Nghệ Phần Mềm 2
• 5.1 Thiết kế trong công nghệ phần mềm
• 5.2 Khái niệm thiết kế
• 5.3 Mô hình thiết kế
Trang 35.1 Thiết kế trong công nghệ phần mềm
Analysis Model
use-cases - text use-case diagrams activity diagrams swim lane diagrams
data flow diagrams control-flow diagrams processing narratives
state diagrams sequence diagrams
Da t a / Cla ss De sign Arc hit e c t ura l De sign Int e rf a c e De sign
Com pone nt -
Le v e l De sign
Design Model
Trang 5Thuộc tính chất lượng
• Chức năng (functionality): kèm theo tính an ninh
• Tiện dụng (usability): bao gồm cả tính mỹ thuật,
toàn vẹn và tư liệu
• Tin cậy (reliability): bảo đảm hoạt động, dùng The mean-time-to-failure (MTTF), Khả năng phục hồi từ lỗi
• Thực thi (performance): tốc độ xử lý, thời gian đáp ứng, sử dụng tài nguyên, hiệu quả…
• Khả năng hỗ trợ (suppotability): dễ mở rộng, khả năng ráp nối, khả năng phục vụ (3 thuộc tính của khả năng bảo trì), khả năng test, khả năng cấu hình, khả
năng tương thích…
Trang 6Công Nghệ Phần Mềm 6
Hướng dẫn thiết kế
• Một thiết kế phải đưa ra một kiến trúc mà
(1) Dùng mẫu (pattern) hay kiểu (style) kiến trúc
được thừa nhận
(2) Gồm những thành phần có đặc trưng thiết kế tốt
(3) Có thể thi hành theo cách tiến hóa
• Thiết kế phải module hóa
• Thiết kế phải trình bày riêng dữ liệu, kiến trúc, giao diện vàthành phần (component)
• Thiết kế phải đưa ra cấu trúc dữ liệu phù hợp với lớp thực thi và từ những mẫu dữ liệu được thừa nhận
• Thiết kế phải đưa ra những thành phần mà độc lập chức
năng
Trang 7Hướng dẫn thiết kế
• Thiết kế phải đưa ra những giao diện mà giảm sự phức tạp của việc kết nối giữa các thành phần, và với môi trường
ngoài
• Thiết kế được đưa ra từ việc dùng phương pháp lặp mà
được định hướng bởi thông tin đạt được suốt quá trình
phân tích yêu cầu phần mềm
• Thiết kế phải dùng những ký hiệu hiệu quả cao trong việc thông tin
Trang 8Công Nghệ Phần Mềm 8
Nguyên lý thiết kế
• Thiết kế phải tránh ‘tunnel vision’
• Thiết kế phải có thể lần vết ra mô hình phân tích
• Thiết kế phải không “reinvent the wheel”
• Thiết kế “minimize the intellectual distance” giữa phần mềm và những vấn đề trong thế giới thực
• Thiết kế phải thể hiện tính đồng nhất và tích hợp
Trang 9Nguyên lý thiết kế
• Thiết kế phải hỗ trợ sự thay đổi
• Thiết kế phải làm nhẹ đi những lệch lạc về dữ liệu
sự kiện hay điều kiện hoạt động
• Thiết kế không là code, code không là thiết kế
• Thiết kế phải được đánh giá chất lượng khi nó
đang được tạo không phải khi nó có vấn đề
• Thiết kế phải được kiểm tra để làm giảm thiểu
những lỗi khái niệm (semantic)
Trang 10Công Nghệ Phần Mềm 10
5.2 Khái niệm thiết kế
• Trừu tượng (Abstraction) - data, procedure, control
• Kiến trúc (Architecture) - the overall structure of the software
• Mẫu (Patterns) - ”conveys the essence” of a proven design
• Độc lập chức năng (Functional independence) -
single-minded function and low coupling
• Tinh chế (Refinement) - elaboration of detail for all
abstractions
• Phân tách (Refactoring) - a reorganization technique that
simplifies the design
Trang 11Khái niệm cơ bản
không thừa không thiếu
một phương thức thì lớp không thể cung cấp cách thức khác để thực hiện một điều tương tự
những điều đơn lẻ Vd lớp VideoClip
khác, cần giới hạn, làm cho khó hiện thực và test Các lớp chỉ nên truyền MSG với những lớp trong
cùng hệ thống con
Trang 13c o m po nent -lev el elem ent s
deplo y m ent -lev el elem ent s
Trang 14chúng, cộng tác
Trang 15Những thành phần trong mô hình thiết kế
• Giao diện (Interface)
những thực thể tạo hay tiêu thụ thông tin
• Thành phần (Component)
• Triển khai (deployment)
Trang 16swing direction inserts
lights type number weight opening mechanism
Trang 18Công Nghệ Phần Mềm 18
Thiết kế hướng đối tượng
• Lớp thiết kế
• Thừa kế (Inheritance) - all responsibilities of a
superclass is immediately inherited by all subclasses
to occur in the receiving object
• Đa hình (Polymorphism) - a characteristic that
greatly reduces the effort required to extend the design
Trang 19 Lớp biên được thiết kế với nhiệm vụ quản lý cách
thức mà những đối tượng của thực thể được thể hiện cho người dùng
• Lớp điều khiển được thiết kế để quản lý
Tạo hay update những đối tượng thực thể
Thể hiện đối tượng biên khi chúng nhận thông tin từ
những đối tượng thực thể
Truyền thông phức tạp giữa các đối tượng
Kiểm tra sự hợp lệ của các dữ liệu truyền thông giữa
các đối tượng hay giữa người dùng và ứng dụng
Trang 20định: nếu một lớp cao hơn trong hệ thống phân
cấp (superclass) chứa hầu hết thuộc tính và tác vụ được đòi hỏi thì lớp mới thừa kế từ superclass và
bổ sung thêm theo yêu cầu
Trang 21Đa hình(Polymorphism )
case of graphtype:
if graphtype = linegraph then DrawLineGraph (data);
if graphtype = piechart then DrawPieChart (data);
if graphtype = histogram then DrawHisto (data);
if graphtype = kiviat then DrawKiviat (data);
end case;
All of the graphs become subclasses of a general class called graph
Using a concept called overloading [TAY90], each subclass defines an operation called draw An object can send a draw message to any one
of the objects instantiated from any one of the subclasses The object
receiving the message will invoke its own draw operation to create the appropriate graph
graphtype draw
Conventional approach …
Trang 22với những thành phần khác
cầu phương thức
Trang 23Kiến trúc
kiến trúc phải xác định bằng cách nào để thiết kế
hệ thống đạt được những đòi hỏi về thi hành, khả năng, tính tin cậy, an toàn, khả năng kết nối và
các đặc trưng khác
những mẫu mà thường gặp trong những thiết kế tương tự Quan trọng là thiết kế phải có khả năng
sử dụng lại những khối xây dựng kiến trúc
Trang 24Công Nghệ Phần Mềm 24
easier to build, easier to change, easier to
Trang 25number of modules
module integration cost module development cost
Trang 27Che dấu thông tin
module
controlled interface
"secret"
clients
a specific design decision
Trang 28• Nhấn mạnh tới việc thông tin qua những
interface có điều khiển
• Ngăn cản việc dùng dữ liệu cục bộ
• Đưa tới việc đóng gói là một thuộc tính của
thiết kế chất lượng cao
• Làm cho phần mềm chất lượng cao hơn
Trang 29end repeat
Trang 30Công Nghệ Phần Mềm 30
Độc lập chức năng
COHESION - the degree to which a module performs one and only one function
COUPLING - the degree to which a module is "connected" to other
modules in the system.
Trang 31Couple và phụ thuộc
Uncoupled
Loosely Couple: Some Dependencies
Highly Couple: Many Dependencies
Trang 32Công Nghệ Phần Mềm 32
Phân chia module hiệu quả
• Có nhiều mức độ liên kết (từ cao đến thấp)
dung bên trong của module khác
được dùng để điều khiển thứ tự thực thi lện của
Trang 33Functional Sequential Communicational Procedural Temporal Logical Coincidental
Trang 34Công Nghệ Phần Mềm 34
Phân chia module hiệu quả
• Có nhiều mức độ kết dính (từ thấp đến cao)
quan tâm tới loại)
thực thi trong một khoảng thời gian
phải được thực hiện theo một trật tự nhất định
vùng dữ liệu nào đó
Trang 35Cohesion (từ cao đến thấp)
• Chức năng: mỗi thành phần trong 1 module thì cần thiết vàthiết yếu cho chỉ một chức năng
• Trình tự: mỗi thành phần của một module có liên quan
trong việc thực hiện những phần khác nhau của trình tự
hoạt động, output của hoạt động này là input của thành
phần kế tiếp
• Thông tin: những thành phần hoat động trên cùng dữ liệu
• Thủ tục: những thành phần của module là tất cả các phần của một thủ tục
• Thời gian: các thành phần trong module quan hệ với nhau theo thời gian, nhưng không cần phải xuất hiện trong một thứ tự chắc chắn hay hoạt động trên cùng dữ liệu
• Logic: Những thành phần của module tất cả hướng về phía thực hiện một tập những hoạt động xác định
• Ngẫu nhiên: Không có quan hệ thiết yếu
Trang 36Công Nghệ Phần Mềm 36
Phân chia module
• Độ kết dính (cohesion) và sự liên kết (coupling)
• Độ kết dính dùng để đo lường quan hệ về chức
năng của một module
• Sự liên kết đo lường sự liên kết giữa các module
• Thiết kế kiến trúc phần mềm: cố gắng tăng độ kết dính, giảm sự liên kết
Trang 37Width
Trang 38Công Nghệ Phần Mềm 38
Phân tách (Refactoring)
• Fowler [FOW99] xác định:
phần mềm trong cách thức mà không biến đổi hành vi bên ngoài của code (thiết kế) nhằm cải thiện cấu trúc bên trong của nó”
• Khi phần mềm được phân tách thiết kế sẽ được
Trang 39Module hiệu quả
module riêng biệt
nó là nhỏ nhất
module phải được che dấu khỏi các module khác
thật sự cần thiết
Trang 40trong vùng điều khiển của nó
phức tạp, dư thừa và tăng cường tính toàn vẹn
hạn chế các module nhiều ràng buộc
tránh những kết nối ở giữa module
Trang 41Giao diện (Interface)
Trang 42Công Nghệ Phần Mềm 42
Thành phần (Component)
SensorManagement
Sensor
Trang 43Thành phần
Trang 45Thiết kế Pattern
• Người thiết kế tốt có khả năng nhận ra những mẫu giải quyết vấn đề và những mẫu tương ứng để giải quyết vấn đề
• Mô tả mẫu thiết kế cũng xem xét một tập những
ảnh hưởng thiết kế (design force)
yêu cầu phi chức năng (dễ bảo trì, dễ mang
xách…) kết hợp với phần mềm mà mẫu áp dụng,
nó ảnh hưởng đến mẫu.
• Những đặc trưng mẫu (lớp, nhiệm vụ, cộng tác)
xác định thuộc tính của thiết kế mà có thể điều
chỉnh để cho phép mẫu giải quyết vấn đề
Trang 46Công Nghệ Phần Mềm 46
Pattern
the pattern in a short but expressive name
design situations in which the pattern is applicable
Trang 47required to implement the pattern
responsibilities of the classes that are required to
implement the pattern
participants collaborate to carry out their
responsibilities
forces” that affect the pattern and the potential
trade-offs that must be considered when the pattern
is implemented
related design patterns
Trang 48Công Nghệ Phần Mềm 48
Framework
• framework không là mẫu kiến trúc, đúng hơn là
một khung với nhiều điểm nối (móc hay khe) cho phép nó ráp nối với một miềm vấn đề đặc trưng
• Gamma et al:
Framework