บทที่ 7 การออกแบบซอฟต์แวร์ · (system design) •...

72
บทที่ 7 การออกแบบซอฟต์แวร์ (Software Design) (1) วิชา วิศวกรรมซอฟต์แวร์ (04-06-306) เอกสารประกอบการสอน วิชา วิศวกรรมซอฟต์แวร์ (04-06-306) 1

Upload: others

Post on 29-Oct-2019

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

บทท 7 การออกแบบซอฟตแวร (Software Design) (1)

วชา วศวกรรมซอฟตแวร (04-06-306)

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306) 1

Page 2: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

วตถประสงคการเรยนร

• เพอใหผ เรยนมความรความเขาใจเกยวกบแนวคด หลกการ และกระบวนการออกแบบซอฟตแวรในเบองตนได

• เพอใหผ เรยนสามารถน าความร เกยวกบแนวคด หลกการ และกระบวนการออกแบบซอฟตแวรไปประยกตใชงานส าหรบการพฒนาระบบได

2 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 3: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

หวขอ

• บทน า (Overview)

• การออกแบบซอฟตแวรคออะไร

• หลกการออกแบบซอฟตแวร

• กระบวนการออกแบบซอฟตแวร

• สถาปตยกรรมซอฟตแวร

• แนวคดในการออกแบบซอฟตแวร

• สรป (Summary)

3 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 4: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

บทน า (Overview)

การจดท าขอก าหนดความตองการ/

ขนตอนการวเคราะห

การออกแบบซอฟตแวร

ก าหนดรายละเอยดในแตละ

Component

ส าหรบการเขยนและทดสอบซอฟตแวร

4 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 5: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

การออกแบบระบบ (System Design)

• การออกแบบระบบ

– น าความตองการมาแปลงใหอยในรปของแบบ กอนน าไปสรางผลตภณฑ

– ผลลพธการออกแบบ คอ Design Specification Document

5

Customer

WHAT System Engineer HOW

Programmer

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 6: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

การออกแบบซอฟตแวร (Software Design)

• กระบวนการก าหนดสถาปตยกรรม สวนประกอบ สวนประสาน และลกษณะดานอน ๆ ของระบบ – แบบจ าลองการออกแบบ (Design Model)

• ความตองการของผใช ก าหนดโครงสรางภายในของซอฟตแวร • การสรางแบบรางของระบบหรอมการน าเสนอระบบในแตละดาน ใหม

คณสมบตทด ดงน 1. Firmness 2. Commodity 3. Delight

6

Source: [IEEE610-12, 1990]

Quality

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 7: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

กระบวนการออกแบบซอฟตแวร (Software Design Process)

• ลกษณะการท างานซ า ๆ เนองจากตองน าความตองการของระบบทผานการวเคราะหแลวในแตละดาน มาแปลงเปนขอก าหนดของการออกแบบ ไดแก

– ขอมล

– ฟงกชนการท างาน

– สวนตอประสาน

7 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 8: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

หลกการออกแบบซอฟตแวร

8

Architecture Pattern

Module

- Data

- Architecture

- UI

- Component

- Functional Independence

- Loosely Coupled

Less complicated

Methodology Symbols

Structure Design

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 9: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

ระดบกระบวนการออกแบบซอฟตแวร

• กรอบของกระบวนการออกแบบซอฟตแวร ประกอบไปดวยการออกแบบใน 2 ระดบ ดงน

– การออกแบบเชงสถาปตยกรรม (Architectural Design) • Top-Level Design

– การออกแบบในรายละเอยด (Detailed Design) • Implementation Design

9 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 10: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

แนวคดในการออกแบบซอฟตแวร

• Abstraction

• Refinement

• Architecture

• Patterns

• Modularity

• Information Hiding

• Refactoring

• Functional independence

• Design Class

10 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 11: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

1.) Abstraction

• เปนแนวคดพนฐานในการออกแบบ ลดความซ าซอนของระบบลงได เมอพจารณาถงแนวทางแกไขของแตละปญหา

• สามารถก าหนดสาระส าคญไดหลายระดบม 2 ชนด ดงน

– Procedural Abstraction เปนการสรางล าดบขนตอนของชดค าสงของฟงกชน

– Data Abstraction ชอ Object ขอมลทอยภายใน procedural abstraction ซงตองมคณสมบต (Attribute) เพอใชอธบายลกษณะของ Object

11 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 12: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Procedural Abstraction

12

implemented with a "knowledge" of the

object that is associated with enter

Open

Details of enter

Algorithm

Open

1. เดนไปทประต

2. ยนมอไปทลกบด

3. หมนลกบด

4. ดงประต

5. เดนเขาประต

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 13: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Data Abstraction

13

Door

implemented as a data structure

manufacturer model number type swing direction inserts lights type number weight opening mechanism

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 14: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

2.) Refinement

• เปนวตถประสงคแรกของกลยทธการออกแบบ Top-Down Design

• เปนการลงรายละเอยดเพมเตมรายละเอยดกระบวนการท างาน

• เรมตนจาก

• ประโยคทระบหนาทไปทละขนตอน

• ประโยคภาษาโปรแกรมจนแลวเสรจ

14 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 15: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

2.) Refinement (ตอ)

15

open

walk to door; reach for knob; open door; walk through; close door.

repeat until door opens turn knob clockwise; if knob doesn't turn, then take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 16: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

3.) Architecture

• สถาปตยกรรมซอฟตแวร (Software Architecture) – การแสดงความสมพนธระหวางระบบยอย (Module) และสวนประกอบ

(Component) เพอก าหนดโครงสรางหรอระบบภายในซอฟตแวร • เปาหมายของการออกแบบสถาปตยกรรม

– เปนกรอบในการออกแบบสวนประกอบของระบบใหเปนในทศทางเดยวกนและอยบนสถาปตยกรรมเดยวกน

• สามารถน าเสนอในรปแบบจ าลอง 4 ชนด ไดแก Structural Model, Framework Model, Dynamic Model, Process Model และ Function Model

16 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 17: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

สถาปตยกรรมซอฟตแวร (Software Architecture)

• ในป ค.ศ. 1990 เรมศกษาอยางจรงจง สงผลใหเกดแนวคดในการออกแบบซอฟตแวรทนาสนใจ ไดแก

– Architecture Style

– Design Pattern ในระดบรายละเอยด (Low-level Design Pattern)

17 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 18: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

18 Source: http://www.iso-architecture.org/ieee-1471/cm/

The

Core

of A

rchi

tect

ure

Desc

riptio

n

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 19: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

โครงสรางของสถาปตยกรรมและมมมอง

• โครงสรางสถาปตยกรรม (Architecture Structure)

– ลกษณะของโครงสรางทรวมสวนประกอบยอยตาง ๆ ของซอฟตแวรเขาดวยกน • เพอใหซอฟตแวรท างานไดในลกษณะเฉพาะทตางกน

• เพอควบคมสถาปตยกรรมซอฟตแวรทหลากหลาย

• รปแบบของสถาปตยกรรม (Architecture Style)

– ขอบงคบ/กฎเกณฑทางดานสถาปตยกรรม เพอจ าแนกกลม/หมวดหมของสถาปตยกรรมซอฟตแวร

19 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 20: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

รปแบบของสถาปตยกรรม (Architecture Style)

• รปแบบของสถาปตยกรรมสามารถแบงออกเปน 5 กลม ดงน 1. General Structure

Layer, Pipe and Filter 2. Distributed System

Client/Server, Tree Tiers 3. Interactive System

MVC 4. Adaptable System

Micro-Kernel, Reflection 5. Others

Batch, Interpreter, Rule-based

20 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 21: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

General Structure: Pipe and Filter

• Unix programs – The output of one program can be linked to the input of

another program. • Compilers

– The consecutive filters perform lexical analysis, parsing, semantic analysis, and code generation.

21

Source: http://www.dossier-andreas.net/software_architecture/pipe_and_filter.html เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 22: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Interactive System: Spring Framework - MVC

22

Source: http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/mvc.html เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 23: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

กลมของซอฟตแวรและเฟรมเวรค

• สนบสนนการออกแบบซอฟตแวร/คอมโพเนนท ใหสามารถน ากลบมาใชใหม

• สอดคลองกบแนวทางการเขยนโปรแกรม โดยใชแนวคด “Framework”

– .NET Framework

23 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 24: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

ตวอยางการ .NET Framework

24 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 25: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

4.) Patterns

• Design Pattern

– หลกและวธการแกไขปญหาชนดใดชนดหนง ทสามารถน าไปใชกบปญหาชนดเดยวกนทเกดซ าได

– อธบายโครงสรางของการออกแบบซอฟตแวรอยางละเอยด

– การใช pattern จะชวยใหงานผลตซอฟตแวรด าเนนไปไดอยางรวดเรว ประหยดเวลาในการออกแบบ

25 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 26: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

แบบแผนการออกแบบ (Design Pattern)

• แบบแผน (Pattern) วธแกปญหาทมรปแบบเปนกลาง เพอใชกบปญหาทวไปตามลกษณะปญหาทระบ แบงออกเปน 3 กลม ดงน

– Creational Pattern • Builder, Factory, Singleton

– Structural Pattern • Adapter, Bridge, Facade, Proxy

– Behavioral Pattern • Command, Iterator, Observer, Template

26 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 27: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

ตวอยาง Adapter Pattern

• สามารถรองรบการเปลยนแปลงในอนาคต – Application ใชงาน Facebook API

• Facebook Adapter แตวธการเรยกและสง parameters เหมอนเดม

• รปแบบการท างาน – The Adapter Pattern converts the interface of a class into

another interface the clients expect. – Adapter lets classes work together that couldn’t otherwise

because of incompatible interfaces.

27 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 28: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

28 Source: Eric Freeman, Head First Design Patterns, 2004.

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 29: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

29 Source: Eric Freeman, Head First Design Patterns, 2004.

Delegation (has-a) - Aggregation - Composition

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 30: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

30 Source: Eric Freeman, Head First Design Patterns, 2004.

Inheritance (Is-a)

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 31: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

5.) Modularity

• การแบงระบบหรอซอฟตแวรออกเปนสวน ๆ เรยกวา Module

– ประสานงานรวมกน เพอแกปญหาตามทผใชตองการ

• การแบงระบบออกเปนโมดลจะชวยใหการออกแบบงานในแตละสวนงายขน

31 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 32: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Modularity และความสมพนธ

32

optimal number

of modules

cost of

software

number of modules

module integration

cost

module development cost

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 33: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

6.) Information Hiding

• เปนหลกการออกแบบส าหรบแตละโมดลตองซอนรายละเอยดการท างาน

– Algorithm, data module

• ปองกนการเขาถงขอมลภายในโมดลโดยไมจ าเปน

33 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 34: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

6.) Information Hiding (ตอ)

34

module

controlled

interface

"secret"

• algorithm

• data structure

• details of external interface

• resource allocation policy

clients

a specific design decision เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 35: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

ตวอยาง Information Hiding

35

public class Employee {

private BigDecimal salary = new BigDecimal(50000.00);

public BigDecimal getSalary() {

return salary;

}

public static void main() {

Employee e = new Employee();

BigDecimal sal = e.getSalary();

}

}

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 36: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

7.) Refactoring

• เปนเทคนคในการปรบโครงสรางภายในของ Component

– ไมตองเปลยนแปลงฟงกชน/พฤตกรรม

• หลกการพจารณาการปรบโครงสรางการออกแบบ มดงน

– ความซ าซอน

– Component ทไมถกใชงาน

– Algorithm ไมมประสทธภาพ/ไมจ าเปน

– โครงสรางขอมลไมเหมาะสม

36 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

User Table

Column Type Comment

User_Name Varchar(50) Sting

User_Password Varchar(50) String

User_Logged_In Int(11) Boolean 0 or 1

Create_Date Varchar(20) Date time

Page 37: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

7.) Refactoring (ตอ)

1st, Low Cohesion

2nd, แบงเปน 3 โมดล (High Cohesion)

ซอมบ ารง/ทดสอบ/ประสานระบบงายขน

37 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 38: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

ตวอยาง Refactoring (1)

• Collapse Hierarchy

– A superclass and subclass are not very different.

– Merge them together

38 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 39: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

ตวอยาง Refactoring (2)

• Inline Method

– A method's body is just as clear as its name.

• Put the method's body into the body of its callers and remove the method.

39

int getRating() { return (moreThanFiveLateDeliveries()) ? 2 : 1; } boolean moreThanFiveLateDeliveries() { return _numberOfLateDeliveries > 5; }

int getRating() { return (_numberOfLateDeliveries > 5) ? 2 : 1; }

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 40: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

8.) Functional Independence

• ความเปนอสระตอกนในการท างาน ตอเนองจากการแบงสวนระบบออกเปนโมดล และการซอนรายละเอยดภายในโมดล

• เปนการออกแบบซอฟตแวรใหแตละโมดลของซอฟตแวรนน ประกอบไปดวยฟงกชนยอย (Sub-Function) ฟงกชนเดยว

• โมดลตองมสวนประสานการท างานคอนขางงาย ไมซบซอน

– เปนการปองกนความผดพลาดทมาจากความซบซอน

– Reusable Module

40 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 41: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

การประเมนระดบความเปนอสระของโมดล

• สามารถประเมนความเปนอสระของโมดลไดจาก 2 เงอนไขดงน – Coupling

• วดความสมพนธระหวางโมดล การเชอมตอกนของโมดลจะผานสอกลางท เรยกวา Interface

• Loosely Coupled

– Cohesion • วดระดบการยดเกาะกนของหนาทหรอกจกรรมในโมดล เพอประมวลผล

ขอมลใหไดผลลพธทตองการ • High Cohesion

41 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 42: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Cohesion

• Functional Cohesion

• Sequence Cohesion

• Communicational Cohesion

• Procedural Cohesion

• Temporal Cohesion

• Logical Cohesion

• Coincidental Cohesion

42

Good

Bad

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 43: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Functional Cohesion

• Module ทท างานในการประมวลผลตอหนงปญหา ไมมการเรยกการท างานของโมดลหรอฟงกชนอน

43

Compute price

Select Seat

Verify Customer

M1

M2

M3

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 44: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Sequence Cohesion

• Module ท างานตอเนองเปนล าดบ – ประมวลผลขอมลจาก

โมดลหนงไปยงโมดลหนง

44

Function A

Function B

Function C

M1

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 45: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Communicational Cohesion

• Module ท างานใหหลายฟงกชน แตฟงกชนเหลานนเรยกใชชดขอมลชดเดยวกน

45

Find Title of Book

Find Price of Book

Find Publisher of Book

Find Author of Book

Book

M1

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 46: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Procedural Cohesion

• เปนโมดล/ฟงกชนทไมมความสมพนธกน แตหนาททโมดลนนรบผดชอบอยกลบตองไปท างานตอเนองในกระบวนการเดยวกน

– โมดลทเกดจากค าสง IF, while

46

Function A

Function B

Function C

M1

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 47: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Temporal Cohesion

• เ ป น โ ม ด ล / ฟ ง ก ช นประมวลผลทกกจกรรมรวมกนเนองจากเวลาเปนตวก าหนด – การประมวลขอมลเมอ

หมดเวลางานในทก ๆ วน

47

Time to initial

Time to + x

Time to + 2x

M1

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 48: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Logical Cohesion

• โมดล/ฟงกชนทมหลายหนาท

• แตตองเลอกประมวลผลหนาทใดหนาทหนงเทานน ตามเงอนไขทก าหนด

48

Go by Car

Go by Train

Go by Boat

Go by Plane

M1

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 49: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Coincidental Cohesion

• โมดล/ฟงกชนทมหลายหนาท แตถกประมวลผลรวมกนโดยบงเอญ

• โดยทกจกรรมเหลานไมมความสมพนธกน และไ ม ไ ด ถ ก ว า ง แผน ใหรบผดชอบหนาทใด ๆ

49

Function A

Function B

Function E

M1

Function C

Function F

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 50: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

COUPLING

• Data Coupling

• Stamp Coupling

• Control Coupling

• Common Coupling

• Content Coupling

50

Good

Bad

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 51: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Data Coupling

• โมดลมความสมพนธระหวางกน โดยการสงขอมลระหวางกน แตเปนขอมลเดยว คอ ขอมลทไมมโครงสราง เปนความสมพนธระดบทดทสด

51

Edit student record

Edit student record

Retrieve student record

Retrieve student record

Student name Student ID Student address course

Student record EOF Student ID

Student record EOF

Data Coupling Data Coupling เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 52: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Stamp Coupling

• โมดลมความสมพนธระหวางกน โดยการสงขอมลระหวางกนเปนขอมลทมโครงสราง ท าใหการแกไขโปรแกรมล าบากมากขน

52

Edit student record

Retrieve student record

Student name Student ID

Student address course

Student record EOF

Student

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 53: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Control Coupling

• โมดลมความสมพนธระหวางกน โดยการสงขอมลระหวางกน แตเปนขอมลควบคมหรอ Flag (True or False)

53

Edit student record

Retrieve student record

Student ID

Done

Student record EOF flag

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 54: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Common Coupling

• โมดลมการใช Global Variable รวมกน

54

Global:

A1

A2

A3

Variables:

V1 V2

Module M1

---

--- Change A1 to Zero

Module M13

---

--- Increment A3

Module M21

---

--- sum = V2+A2

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 55: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Content Coupling

• โมดลหนงสามารถเปลยนแปลงการท างานของโมดลอนได

55

M1

M12 M13

M21

Module 12

---

--- Goto D1

---

--- D1

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 56: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

เปาหมายของการออกแบบแบงสวน (Modularity) • High Cohesion

• Low Coupling

56

High Coupling Low Coupling

Low Cohesion

High Cohesion

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 57: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

9.) Design Class

• วเคราะหระบบดวยแนวทางเชงวตถ

– ขนตอนการวเคราะห แบบจ าลองคลาสระดบบน

– ขนตอนการออกแบบ ก าหนดรายละเอยดแบบจ าลองคลาส และตองสรางใหเหนถงโครงสรางภายในทสนบสนนกระบวนการทางธรกจ

• Design class 5 ชนด ไดแก User Interface, Business Domain, Process, Persistent และ System Class

57 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 58: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

กลยทธและระเบยบวธการออกแบบซอฟตแวร

• กลยทธในการออกแบบซอฟตแวร

– เปนเพยงหลกและแนวทางในการปฏบตงานแบบซอฟตแวรเทานน ไมไดระบถงวธท างานอยางชดเจน

• ระเบยบวธ (Methodology) ในการออกแบบซอฟตแวร

– ระบถงรายละเอยดของวธการท างานอยางชดเจน

– พรอมกบเตรยมสญลกษณตางๆ ของแบบจ าลองเฉพาะระเบยบวธนนไวใหใชงาน ชวยใหทมวศวกรซอฟตแวรท างานไดงายขน

58 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 59: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

กลยทธและระเบยบวธการออกแบบซอฟตแวร (ตอ)

• กลยทธทวไปในการออกแบบซอฟตแวร (General Strategy)

• การออกแบบเชงฟงกชน (Function-Oriented Design)

• การออกแบบเชงวตถ (Object-oriented Design)

• การออกแบบโดยใชขอมลเปนศนยกลาง (Data-structure Centered Design)

• การออกแบบคอมโพเนนท (Component-base Design: CBD)

59 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 60: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

1.) กลยทธทวไปในการออกแบบซอฟตแวร

• กลยทธในการออกแบบซอฟตแวรทวไป เชน

– Top-Down and Bottom-up

– Divide and Conquer

– Design Pattern

– Stepwise Refinement

60 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 61: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

2.) การออกแบบเชงฟงกชน

• การออกแบบเชงโครงสราง ซงเปนระเบยบวธทไดรบความนยมมาตงแตอดตจนถงปจจบน

– เปนวธการพจารณาถงฟงกชนของซอฟตแวรเปนเกณฑในการแบงซอฟตแวรออกเปนสวนยอย

– ก าหนดรายละเอยดในแตละสวนยอย และปรบปรงในลกษณะโครงสรางล าดบขนจากบนลงลาง

– แผนภาพกระแสขอมล และรายละเอยดของกระบวนการ ประกอบการออกแบบ

61 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 62: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

3.) การออกแบบเชงวตถ

• พจารณาวตถในโดเมนทสนใจจากค าอธบายความตองการของผใช

• ค านาม (Object) กรยา (Method) และค าคณศพท (Attribute)

• โครงสราง Inheritance และ Polymorphism

• Component-Based Design ใชเครองมอทางการออกแบบเชงวตถเขามาชวยประกอบ

62 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 63: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

4.) การออกแบบโดยใชขอมลเปนศนยกลาง

• เปนวธการออกแบบโดยใชขอมลทฟงกชนจะน ามาประมวลผลเปนหลก

• เรมตนจากการแสดงโครงสรางขอมล ทงทเปนขอมลน าเขาและผลลพธ (Input and Output Data)

– สรางเปนแผนภาพ เพอจ าลองโครงสรางของขอมล

• Jackson Structure Diagram

– ทมงานน าแผนภาพไปออกแบบโครงสรางควบคมการท างานของโปรแกรม

63 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 64: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

Jackson Structure Diagram (JSD)

• เพออธบายโครงสรางของโปรแกรม เชนเดยวกบ Structure Chart

• ลกษณะ JSD เหมอนแผนภมตนไม (tree) ซงแตละโหนด (node) แทนโมดล โดยทโหนดทอยระดบบนสดเปนโมดลควบคมหรอขนตอนหลก ดงน

– การท างานแบบเปนล าดบ (Sequence)

– การเลอก (selection)

– การท าซ า (iteration)

64 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 65: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

65

แสดงความสมพนธของขอมล (Entity) และกจกรรม (Action) มกจกรรมอะไรบาง การท างานเปนแบบล าดบ (Sequence) มสญลกษณวงกลมเลกมมบนขวาแสดงกจกรรมเลอก (Selection) สญลกษณ Asterisk แสดงการท าซ า สวนโครงสรางไดอะแกรมคลายกบ Organization Chart จากบนลงลาง

Source: http://www.jacksonworkbench.co.uk/ เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 66: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

5.) การออกแบบคอมโพเนนท

• วธการออกแบบซอฟตแวรดวยการแบงเปนสวนประกอบยอย เรยกวา คอมโพเนนท (Component) – แตละคอมโพเนนทจะท างานเปนอสระตอกน ท างานไดดวยตนเอง และ

สามารถประกอบเขากนไดเมอท างานเสรจ – สามารถประกอบกบคอมโพเนนทอน เพอประสานการท างานใหกบ

ซอฟตแวร – การสอสารระหวางคอมโพเนนทผานทาง Interface

• ถกพฒนาขนเพอตอบสนองความตองการผลตซอฟตแวรทสามารถน ากลบมาใชใหม

66 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 67: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

สรป (Summary)

• การออกแบบซอฟตแวร (Software Design)

– กระบวนการก าหนดสถาปตยกรรม สวนประกอบ สวนตอประสานและลกษณะอนๆ ของระบบหรอสวนประกอบของระบบ • แบบจ าลองการออกแบบในเชงสถาปตยกรรมและเชงละเอยด

• สถาปตยกรรมซอฟตแวร (Software Architecture)

– ระบบยอยและสวนประกอบของซอฟตแวร รวมถงความสมพนธระหวางระบบยอยและสวนประกอบดงกลาว

– พยายามก าหนดโครงสรางภายในของซอฟตแวร

67 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 68: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

กจกรรมทายบท

• การออกแบบซอฟตแวรมความส าคญอยางไรตอวศวกรรมซอฟตแวร และมกระบวนการอะไรบาง จงอธบายตามความเขาใจ

• การออกแบบซอฟตแวรทดตองค านงถงอะไรบาง เพอน าไปสการออกแบบทด • โครงสรางสถาปตยกรรม MVC คออะไร ประกอบดวยอะไรบางและมความ

จ าเปนอยางไรในการผลตซอฟตแวร • จงอธบายเกยวกบวธแกปญหาทมรปแบบเปนกลาง (Design Pattern) โดยใช

Proxy Pattern ซงน าไปใชเพอแกปญหาอะไร มรปแบบการท างานอยางไรจงอธบาย

• จงอธบายเกยวกบแนวคดในการออกแบบซอฟตแวรแบบ Functional Independence พรอมทงยกตวอยางการน าเสนอโปรแกรมประกอบ

68 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 69: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

def addition(): num_1 = float(raw_input("Enter Number One")) num_2 = float(raw_input("Enter Number Two")) addition = num_1 + num_2 print addition def get_number(question): response = raw_input(question) num = 0 try: num = float(response) except: num = 0 return num def addition(): num_1 = get_number("Enter Number One") num_2 = get_number("Enter Number Two") addition = num_1 + num_2 print addition

69

Source: https://courses.p2pu.org/en/courses/1099/content/2343/

Example (Bad)

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 70: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

70

def get_number(question): response = raw_input(question) num = 0 try: num = float(response) except: num = 0 return num def addition(numbers): total = 0 for i in numbers: total = total + i return total num_numbers = get_number("How many values would you like to add? ") numbers = [] for i in range(0, num_numbers): numbers.append(get_number("Please enter a number: ")) answer = addition(numbers) print "The answer to the addition is: %d" % (answer)

Loose Coupling

Source: https://courses.p2pu.org/en/courses/1099/content/2343/

High Cohesion

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 71: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

71

Source: https://courses.p2pu.org/en/courses/1099/content/2343/

There are a few things to notice here: • The addition() function no longer calls the get_number() function, meaning there

is no dependency between the two functions. • The addition() function takes in an array of numbers to add together. The

requirement was to add two numbers together, which we can still do, but now we have generalized the function so that we can solve adding two numbers, three numbers, 100 numbers, 1000 numbers etc.

• The answer to the addition is returned, meaning we can do with it as we please.

• In this version of the function, we also have four lines of code, but this time, each line directly relates to adding numbers together. There is no superfluous code which detracts from this in any way, and so, we can say that we have Strong Cohesion in this function.

We always want to achieve Loose Coupling and Strong Cohesion.

เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)

Page 72: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ

เอกสารอางอง

• กตต ภกดวฒนะกล, วศวกรรมซอฟตแวร (Software Engineering), กรงเทพฯ: เคทพ คอมพ แอนด คอนซลท, 2552

• Eric Freeman, Head First Design Patterns, O'Reilly, 2004.

• Lan Sommerville, Software Engineering Ninth Edition, Pearson Education, Inc., publishing as Addison-Wesley, 2011.

72 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)