67
1 CNPM/NN CÔNG NGHỆ PHẦN MỀM Chương 6 Thiết kế phần mềm MÔN HỌC TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM

MÔN HỌC CÔNG NGHỆ PHẦN MỀM - Nguyen Nam | … ·  · 2015-04-18Thiết kế là gì? ... tiên phải thực hiện là xây dựng mô hình tổ chức hệ ... trừu

Embed Size (px)

Citation preview

1CNPM/NN

CÔNG NGHỆ PHẦN MỀM

Chương 6Thiết kế phần mềm

MÔN HỌC

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM

2CNPM/NN

Thiết kế phần mềm

1. Thiết kế?2. Thiết kế mô hình hệ thống.3. Thiết kế điều khiển.4. Thiết kế Module.5. Các mẫu thiết kế.

3CNPM/NN

4CNPM/NN

1. Thiết kế?

5CNPM/NN

Thiết kế là gì?

Thiết kế tạo ra một biểu diễn hay mô hình của phần mềm hướng thực thi

Mô hình thiết kế cung cấp các thông tin về kiến trúc (architecture), Giao tiếp (interfaces), thành phần (components) và dữ liệu (data)

2 hướng thiết kế

7CNPM/NN

Hướng dẫn thiết kế Một thiết kế phải đưa ra một kiến trúc mà

Dùng mẫu (pattern) hay kiểu (style) kiến trúc được thừa nhận

Gồm những thành phần (component) có đặc trưng thiết kế tốt

Có thể thi hành theo cách tiến hóa Thiết kế phải có tính module, thiết kế phải đưa ra những

thành phần mà độc lập chức năng Thiết kế được đưa ra từ việc dùng phương pháp lặp

8CNPM/NN

Kiến trúc (Architecture)? Kiến trúc phần mềm là một sự tổ chức có tính căn bản

của một hệ thống chứa những thành phần, những mối quan hệ lẫn nhau của các thành phần này và của các thành phần này với môi trường, nó chứa đựng những nguyên lý định hướng cho việc thiết kế và tiến hóa kiến trúc

Kiến trúc có tính tổng thể Kiến trúc cho ta một hình ảnh về hệ thống phần mềm Module và hệ thống con (sub-systems):

Module là một thành phần hệ thống mà cung cấp dịch vụ cho những thành phần khác nhưng không được xem là một hệ thống riêng biệt

Một hệ thống con hoạt động có tính độc lập cao

9CNPM/NN

"four bedrooms, three baths,lots of glass ..."

customer requirements

architectural designKiến trúc

10

Target system: Security function

Superordinate systems

Actors

Ví dụ : ACD(Architectural Context Diagram) của SafeHome

uses

uses

Peers

Subordinate systems

Depends on

Used by

Homeowner

Control panelSurveillancesystem

Sensors Sensors

Safehomeproduct

Internet-basedsystem

11CNPM/NN

12CNPM/NN

Thiết kế dữ liệu ở mức kiến trúc

Thiết kế một hay nhiều cơ sở dữ liệu để hỗ trợ kiến trúc ứng dụng

Thiết kế cách thức khai thác nhiều CSDL Duyệt các CSDL Kho dữ liệu (data warehouse) có thể truy cập tới nhiều CSDL

Thiết kế dữ liệu ở mức thành phần Xây dựng các cấu trúc dữ liệu

2. Thiết kế mô hình hệ thống

Trong quá trình thiết kế kiến trúc hệ thống, hoạt động đầutiên phải thực hiện là xây dựng mô hình tổ chức hệ thống.

Phương pháp tổ chức hệ thống thường được sử dụng: Mô hình Kho dữ liệu dùng chung. Kiến trúc gọi trả về. Mô hình Phân lớp. Mô hình client – server.

13CNPM/NN

14CNPM/NN

Mô hình trung tâm dữ liệu

15CNPM/NN

Kho dữ liệu

Hệ thống con phải biến đổi dữ liệu có thể theo 2 cách: Chia sẻ dữ liệu trung tâm Dùng CSDL riêng và truyền dữ liệu cho hệ thống khác

Khi cần chia sẻ dữ liệu lớn thì thường dùng kho dữ liệu trung tâm

16CNPM/NN

Thuận lợi – bất lợi Thuận lợi

Hiệu quả trong chia sẻ Hệ thống con không quan tâm tới việc xử lý dữ liệu của

trung tâm dữ liệu (an toàn, backup…) Dùng chung mô hình chia sẻ

Bất lợi Tất cả phải theo mô hình dữ liệu của kho Tiến hóa dữ liệu thì khó và đắt Không dùng được chính sách quản lý riêng Khó phân bố một cách hiệu quả

17CNPM/NN

Kiến trúc gọi trả về

Có 2 loại: Kiến trúc chương trình chính /chương trình con (main

program /subprogram) Kiến trúc gọi thủ tục từ xa (remote procedure call

architecture): các thành phần được phân bổ trên nhiều máy tính

18CNPM/NN

Chương trình chính /chương trình con

Main programMain program

ControllersubprogramController

subprogramController

subprogramController

subprogramController

subprogramController

subprogram

ApplicationsubprogramApplicationsubprogram

ApplicationsubprogramApplicationsubprogram

ApplicationsubprogramApplicationsubprogram

ApplicationsubprogramApplicationsubprogram

ApplicationsubprogramApplicationsubprogram

ApplicationsubprogramApplicationsubprogram

ApplicationsubprogramApplicationsubprogram

19CNPM/NN

Mô hình phân lớp

Mô hình phân lớp tổ chức hệ thống thành nhiều lớp và mỗi lớp cung cấp một tập các dịch vụ. Hệ thống này tương đối phức tạp.

20CNPM/NN

Mô hình phân lớp

Tổ chức hệ thống thành một tập những tầng (hay máy trừu tượng), những tầng sẽ cung cấp một tập những dịch vụ

Các hệ thống con tương tác với nhau qua tầng giao tiếp Khi một tầng thay đổi chỉ những tầng liền kề mới bị ảnh

hưởng Việc cấu trúc hệ thống theo mô hình này rất khó

21CNPM/NN

Mô hình client - server Mô hình kiến trúc client-server bao gồm một tập hợp các

server cung cấp dịch vụ và các client truy nhập và sử dụng các dịch vụ đó.

Các thành phần chính của mô hình này bao gồm: Tập hợp các server sẽ cung cấp những dịch vụ cụ thể như:

in ấn, quản lý dữ liệu… Tập hợp các client truy nhập đến server để yêu cầu cung

cấp dịch vụ. Hệ thống mạng cho phép client truy cập tới dịch vụ mà

server cung cấp.

22CNPM/NN

Mô hình client - server

23CNPM/NN

Thuận lợi - bất tiện Thuận lợi

Dễ phân bố dữ liệu Hiệu quả, chi phí thấp Dễ mở rộng (tăng số server) và cập nhật

Bất tiện Tổng quát hóa của kiến trúc Client /Server Client cũng có thể đóng vai trò server và ngược lại

24CNPM/NN

3. Thiết kế điều khiển

Có 2 loại điều khiển: Điều khiển tập trung: một hệ thống con chính chịu

trách nhiệm kiểm soát, khởi tạo hoặc dừng các hệ thống con khác. Mô hình gọi - trả lời (call-return) Mô hình quản lý

Điều khiển hướng sự kiện: mỗi hệ thống đáp ứng với các sự kiện xảy ra từ các hệ thống con khác hoặc từ môi trường của hệ thống. Môhình lan truyền (Broadcast) Mô hình hướng ngắt (Interrupt-driven)

25CNPM/NN

Mô hình gọi - trả lời (call-return) Gồm các thủ tục con được sắp xếp phân cấp, thủ tục điều

khiển nằm ở đỉnh của cấu trúc phân cấp và di chuyển dần xuống dưới. Mô hình này thường được áp dụng cho các hệ thống tuần tự (không là mô hình cấu trúc)

26CNPM/NN

Mô hình quản lý

Thường áp dụng cho các hệ thống xử lý đồng thời. Một thành phần hệ thống điều khiển việc khởi tạo, ngừng, hoặc cộng tác với các hệ thống khác.

27CNPM/NN

Mô hình lan truyền (Broadcast) Trong mô hình lan truyền, sự kiện được lan truyền tới tất cả

các hệ thống con. Hệ thống con được thiết kế để điều khiển sự kiện này sẽ đáp ứng sự kiện.

Mô hình này có hiệu quả đối với các hệ thống con phân bố trên nhiều máy tính khác nhau trong cùng một mạng.

Phát triển tương đối đơn giản Không biết sự kiện có được xử lý không và khi nào được xử

lý Hai phân hệ cùng sinh sự kiện có thể gây xung đột

28CNPM/NN

Mô hình hướng ngắt (Interrupt-driven) Mô hình hướng ngắt được sử dụng trong các hệ thống thời

gian thực (Có thể kết hợp với mô hình quản lý tập trung) Bộ xử lý có thể khởi động hoặc dừng những quá trình khác để

đáp ứng sự kiện Mô hình này cho phép đáp ứng rất nhanh, nhưng lập trình khá

phức tạp và phụ thuộc phần cứng

29CNPM/NN

4. Thiết kế Module

What is the "right" number of modules for a specific software design?

optimal numberof modules

cost ofsoftware

number of modules

moduleintegration

cost

module development cost

30CNPM/NN

Sơ đồ phân cấp

M

ba c

ed k l m

f hg

i j

n o p q

r

Fan-out

Fan-in

Depth

Width

31CNPM/NN

Kết dính (Cohension) và liên kết (coupling)

32CNPM/NN

Liên kết và phụ thuộc

UncoupledLoosely Couple: Some Dependencies

Highly Couple: Many Dependencies

33CNPM/NN

Liên kết đo lường mức độ kết nối với nhau giữa các thành phần của hệ thống

Liên kết lỏng có nghĩa là khi một thành phần thay đổi Khả năng ảnh hưởng của nó đến các thành phần khác là thấp

Việc trao đổi thông tin điều khiển và những biến chia sẻ dẫn tới liên kết chặt

Liên kết lỏng có thể đạt được bằng cách truyền thông giữa các thành phần bằng cách truyền tham số hay thông điệp message hay tham số, hay là ‘state decentralisation’ (như trong đối tượng)

Liên kết

34CNPM/NN

Liên kết chặt

35CNPM/NN

Liên kết lỏng

36

Liên kết dữ liệu

Liên kết giữa các thành phần là dữ liệu nguyên tố hoặc phức hợp, truyền tham trị

Ví dụ:

Class_A

+ Operation_A () : Integer

Class_B

+ Operation_B (Integer Para_1) : Integer

integer Operation_A(){int x,y;Class_B cB;

….y = cB.Operation_B(x);…}

37

Liên kết tem (stamp)

Liên kết giữa hai thành phần là một phần của cấu trúc hoặc toàn bộ cấu trúc

Ví dụ:

integer Operation_A(){int x,y;Class_B cB; Class_C c;….y = cB.Operation_B(c);…}

38

Liên kết điều khiển

Một thành phần gởi các yếu tố điều khiển tới một thành phần khác thì hai thành phần này có control coupling. io (command, device buffer, length); where command is 0,1,2 for read, write open; better

to use read (device buffer, length);

+ A(){int x = 1;sub(x, dk)…}

+ sub(x, dk){

}

dk=1 =2

39

Liên kết chung và Liên kết nội dung

Liên kết chung: hai thành phần cùng tham chiếu đến một cấu trúc toàn cục (hoặc biến toàn cục)

Liên kết nội dung: nếu một thành phần tham khảo trực tiếp đến nội dung của một thành phần khác (biến đổi mã (LISP, Assembler) , con trỏ hay truyền tham chiếu)

40

Mức độ liên kết

Tên coupling Xếp hạng phụ thuộc

Data couplingStamp couplingControl couplingCommon couplingContent coupling

Rất thấpThấpTrung bìnhCaoRất cao

41CNPM/NN

Cohesion (kết dính)

Functional

Sequential

Communicational

Procedural

Temporal

Logical

Coincidental

Chức năng

Trình tự

Thông tin

Thủ tục

Thời gian

Logic

Ngẫu nhiên

42CNPM/NN

Mức kết dính…

Kết dính ngẫu nhiên (Coincidental cohesion -weak)

Kết hợp logic (Logical association - weak): Những thành phần mà thực thi những chức năng tương tự thì được gom lại

output text to screen

output line to printer

output record to file

43CNPM/NN

…Mức kết dính…

Kết dính thời gian (Temporal cohesion (weak)) Nhóm các thành phần được kích hoạt ở thời gian tương tự

clear screen

open file

Initialise total

solution is to make initialisation module all other specialised modules:call init_terminal

call init_files

call init_calculations

44CNPM/NN

…Mức kết dính…

Kết dính thủ tục (Procedural cohesion (weak)) Các phần bên trong một thành phần thể hiện một trình tự điều

khiển duy nhất (a single control sequence) Kết dính truyền thông (Communicational cohesion (medium))

Tất cả các phần trong một thành phần hoạt động trên cùng dữ liệu tương tự (display and log temperature)

Kết dính trình tự (Sequential cohesion (medium)) output của một phần trong thành phần là input của một phần

khác

45CNPM/NN

...Mức kết dính

Kết dính chức năng (Functional cohesion (strong)) Loại kết dính tối ưu Mỗi phần của một thành phần là cần thiết cho việc thực thi

một chức năng duy nhất Thực hiện một hoạt động được xác định rõ duy nhất trên một

đối tượng dữ liệu (vd: calculate average)

46CNPM/NN

Kết dính Chức năng: liên quan tới thực

hiện chức năng duy nhất Trình tự: output của hoạt động

này là input của thành phần kế tiếp

Thông tin: những hoạt động trên cùng dữ liệu tương tự thì thuộc về một module

Thủ tục: Các phần bên trong một thành phần thể hiện một trình tự điều khiển duy nhất

Thời gian: Các phần của module cùng hoạt động ở thời gian tương tự

Logic: Những 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 tương tự

Ngẫu nhiên: Những phần của module không có quan hệ thiết yếu

Functional

Sequential

Communicational

Procedural

Temporal

Logical

Coincidental

5. Các mẫu thiết kế

Creational Pattern (Mẫu kiến tạo): 5 mẫu Abstractional Factory Method Pattern. Builder pattern. Factory Method pattern. Prototype Pattern. Singleton Pattern.

Structure Pattern: 7 mẫu (có mẫu Composite, adapter). Behavioral Pattern: 10 mẫu (có mẫu Observer).

47CNPM/NN

Tư duy hướng đối tượng

problem domain

Đối tượng - objects

Xây dựng một lớp (Class)

Lớp?

external entities

things

occurrences roles

organizational units

places

structures

class name

attributes:

operations:

Thông điệp - Messages

Mẫu thiết kế Singleton

Cho phép có một thể hiện của lớp. Vd: Find Dialog, Unikey, một đối tượng toàn cục lưu giữ kết nối CSDL…

UML/NN52

Mã Singleton

class Singleston{

private static Singleston instance;protect Singleston () {}public static Singleston Instance(){

if (instance==null)instance = new Singleston ();

return instance;}

}

53

54 CNPM/NN

Mẫu thiết kế Observer

Bài toán thực tế: Một đối tượng thời gian để đếm giờ được thể hiện dưới nhiều hình thức như đồng hồ số, đồng hồ kim… Ta có thể Dễ dàng thêm, bớt nhiều đối tượng thể hiện Khi tay đổi đối tượng thời gian thì tất cả các thể hiện của thời

gian đều thay đổi theo

Mô hình Observer

A=10%B=40%C=30%D=20%

Application data

A

BC

D

A DCB

Relative Percentages

Y 10 40 30 20

X 15 35 35 15

Z 10 40 30 20

A B C D

Change notification

Requests, modifications

56

Ví dụ

Subject

Detach(Observer)Notify()

Attach(Observer)

Observer

Update()

ClockTimerDigitalClock

Update()

ClockTimer *sub;

*

AnalogClock

Update()

ClockTimer *sub;

Draw() Draw()

ADAPTER

Tái sử dụng các lớp nhưng giao diện (interface) không tương thích

Có những vấn đề về không tương thích tiềm tàng

Biểu đồ lớp

PayProcessorprintPay(WeeklyEmployee e)

WeeklyEmployeegetPay()getName()

MonthlyAdapterMonthlyEmployee : megetPay()getName()

MonthlyEmployee

getMonthlyPay()getEmployeeName()

Client - unalteredTarget-unaltered.

Adapteeunaltered

Adaptor

Contains an adaptee objectProvides own implementation of target’s methods – which call adaptee’s methods

MonthlyAdapterpublic class MonthlyAdapter

extends WeeklyEmployee {

private MonthlyEmployee me; //composed with adaptee

//created with adaptee objectpublic MonthlyAdapter(MonthlyEmployee memp) { me = memp; }

//own implementation of target method, //adapting to use adaptee’s insteadpublic String getName() { return me.getEmployeeName(); }

public int getPay() { return me.getMonthlyPay(); }

}

Testclass Test { public static void main(String arg[]){

WeeklyEmployee we = new WeeklyEmployee (“tim”, 150);

PayProcessor.printPay(we);MonthlyEmployee me =

new MonthlyEmployee(“jane”, 200);MonthlyAdapter ma = new MonthlyAdapter

(me);PayProcessor.printPay(ma);

}}

61

Graphic

Draw()

Text

Draw()

Line

Draw()

Rectangle

Draw()

Add(Graphic)Remove(Graphic)

GetChild(int)

Picture

Draw()Add(Graphic)Remove(Graphic)

GetChild(int)

*

Mẫu composite

62CNPM/NN

VD: Hệ thống đặt phòng

Tổng quát

63CNPM/NN

Kiến trúc

64CNPM/NN

Thành phần

65CNPM/NN

Chọn ngôn ngữ

66CNPM/NN

Bảo trì và phát triển

67CNPM/NN