Download - บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ
บทท 7 การออกแบบซอฟตแวร (Software Design) (1)
วชา วศวกรรมซอฟตแวร (04-06-306)
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306) 1
วตถประสงคการเรยนร
• เพอใหผ เรยนมความรความเขาใจเกยวกบแนวคด หลกการ และกระบวนการออกแบบซอฟตแวรในเบองตนได
• เพอใหผ เรยนสามารถน าความร เกยวกบแนวคด หลกการ และกระบวนการออกแบบซอฟตแวรไปประยกตใชงานส าหรบการพฒนาระบบได
2 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
หวขอ
• บทน า (Overview)
• การออกแบบซอฟตแวรคออะไร
• หลกการออกแบบซอฟตแวร
• กระบวนการออกแบบซอฟตแวร
• สถาปตยกรรมซอฟตแวร
• แนวคดในการออกแบบซอฟตแวร
• สรป (Summary)
3 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
บทน า (Overview)
การจดท าขอก าหนดความตองการ/
ขนตอนการวเคราะห
การออกแบบซอฟตแวร
ก าหนดรายละเอยดในแตละ
Component
ส าหรบการเขยนและทดสอบซอฟตแวร
4 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
การออกแบบระบบ (System Design)
• การออกแบบระบบ
– น าความตองการมาแปลงใหอยในรปของแบบ กอนน าไปสรางผลตภณฑ
– ผลลพธการออกแบบ คอ Design Specification Document
5
Customer
WHAT System Engineer HOW
Programmer
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
การออกแบบซอฟตแวร (Software Design)
• กระบวนการก าหนดสถาปตยกรรม สวนประกอบ สวนประสาน และลกษณะดานอน ๆ ของระบบ – แบบจ าลองการออกแบบ (Design Model)
• ความตองการของผใช ก าหนดโครงสรางภายในของซอฟตแวร • การสรางแบบรางของระบบหรอมการน าเสนอระบบในแตละดาน ใหม
คณสมบตทด ดงน 1. Firmness 2. Commodity 3. Delight
6
Source: [IEEE610-12, 1990]
Quality
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
กระบวนการออกแบบซอฟตแวร (Software Design Process)
• ลกษณะการท างานซ า ๆ เนองจากตองน าความตองการของระบบทผานการวเคราะหแลวในแตละดาน มาแปลงเปนขอก าหนดของการออกแบบ ไดแก
– ขอมล
– ฟงกชนการท างาน
– สวนตอประสาน
7 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
หลกการออกแบบซอฟตแวร
8
Architecture Pattern
Module
- Data
- Architecture
- UI
- Component
- Functional Independence
- Loosely Coupled
Less complicated
Methodology Symbols
Structure Design
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
ระดบกระบวนการออกแบบซอฟตแวร
• กรอบของกระบวนการออกแบบซอฟตแวร ประกอบไปดวยการออกแบบใน 2 ระดบ ดงน
– การออกแบบเชงสถาปตยกรรม (Architectural Design) • Top-Level Design
– การออกแบบในรายละเอยด (Detailed Design) • Implementation Design
9 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
แนวคดในการออกแบบซอฟตแวร
• Abstraction
• Refinement
• Architecture
• Patterns
• Modularity
• Information Hiding
• Refactoring
• Functional independence
• Design Class
10 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
1.) Abstraction
• เปนแนวคดพนฐานในการออกแบบ ลดความซ าซอนของระบบลงได เมอพจารณาถงแนวทางแกไขของแตละปญหา
• สามารถก าหนดสาระส าคญไดหลายระดบม 2 ชนด ดงน
– Procedural Abstraction เปนการสรางล าดบขนตอนของชดค าสงของฟงกชน
– Data Abstraction ชอ Object ขอมลทอยภายใน procedural abstraction ซงตองมคณสมบต (Attribute) เพอใชอธบายลกษณะของ Object
11 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
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)
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)
2.) Refinement
• เปนวตถประสงคแรกของกลยทธการออกแบบ Top-Down Design
• เปนการลงรายละเอยดเพมเตมรายละเอยดกระบวนการท างาน
• เรมตนจาก
• ประโยคทระบหนาทไปทละขนตอน
• ประโยคภาษาโปรแกรมจนแลวเสรจ
14 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
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)
3.) Architecture
• สถาปตยกรรมซอฟตแวร (Software Architecture) – การแสดงความสมพนธระหวางระบบยอย (Module) และสวนประกอบ
(Component) เพอก าหนดโครงสรางหรอระบบภายในซอฟตแวร • เปาหมายของการออกแบบสถาปตยกรรม
– เปนกรอบในการออกแบบสวนประกอบของระบบใหเปนในทศทางเดยวกนและอยบนสถาปตยกรรมเดยวกน
• สามารถน าเสนอในรปแบบจ าลอง 4 ชนด ไดแก Structural Model, Framework Model, Dynamic Model, Process Model และ Function Model
16 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
สถาปตยกรรมซอฟตแวร (Software Architecture)
• ในป ค.ศ. 1990 เรมศกษาอยางจรงจง สงผลใหเกดแนวคดในการออกแบบซอฟตแวรทนาสนใจ ไดแก
– Architecture Style
– Design Pattern ในระดบรายละเอยด (Low-level Design Pattern)
17 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
18 Source: http://www.iso-architecture.org/ieee-1471/cm/
The
Core
of A
rchi
tect
ure
Desc
riptio
n
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
โครงสรางของสถาปตยกรรมและมมมอง
• โครงสรางสถาปตยกรรม (Architecture Structure)
– ลกษณะของโครงสรางทรวมสวนประกอบยอยตาง ๆ ของซอฟตแวรเขาดวยกน • เพอใหซอฟตแวรท างานไดในลกษณะเฉพาะทตางกน
• เพอควบคมสถาปตยกรรมซอฟตแวรทหลากหลาย
• รปแบบของสถาปตยกรรม (Architecture Style)
– ขอบงคบ/กฎเกณฑทางดานสถาปตยกรรม เพอจ าแนกกลม/หมวดหมของสถาปตยกรรมซอฟตแวร
19 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
รปแบบของสถาปตยกรรม (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)
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)
Interactive System: Spring Framework - MVC
22
Source: http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/mvc.html เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
กลมของซอฟตแวรและเฟรมเวรค
• สนบสนนการออกแบบซอฟตแวร/คอมโพเนนท ใหสามารถน ากลบมาใชใหม
• สอดคลองกบแนวทางการเขยนโปรแกรม โดยใชแนวคด “Framework”
– .NET Framework
23 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
ตวอยางการ .NET Framework
24 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
4.) Patterns
• Design Pattern
– หลกและวธการแกไขปญหาชนดใดชนดหนง ทสามารถน าไปใชกบปญหาชนดเดยวกนทเกดซ าได
– อธบายโครงสรางของการออกแบบซอฟตแวรอยางละเอยด
– การใช pattern จะชวยใหงานผลตซอฟตแวรด าเนนไปไดอยางรวดเรว ประหยดเวลาในการออกแบบ
25 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
แบบแผนการออกแบบ (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)
ตวอยาง 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)
28 Source: Eric Freeman, Head First Design Patterns, 2004.
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
29 Source: Eric Freeman, Head First Design Patterns, 2004.
Delegation (has-a) - Aggregation - Composition
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
30 Source: Eric Freeman, Head First Design Patterns, 2004.
Inheritance (Is-a)
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
5.) Modularity
• การแบงระบบหรอซอฟตแวรออกเปนสวน ๆ เรยกวา Module
– ประสานงานรวมกน เพอแกปญหาตามทผใชตองการ
• การแบงระบบออกเปนโมดลจะชวยใหการออกแบบงานในแตละสวนงายขน
31 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
Modularity และความสมพนธ
32
optimal number
of modules
cost of
software
number of modules
module integration
cost
module development cost
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
6.) Information Hiding
• เปนหลกการออกแบบส าหรบแตละโมดลตองซอนรายละเอยดการท างาน
– Algorithm, data module
• ปองกนการเขาถงขอมลภายในโมดลโดยไมจ าเปน
33 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
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)
ตวอยาง 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)
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
7.) Refactoring (ตอ)
1st, Low Cohesion
2nd, แบงเปน 3 โมดล (High Cohesion)
ซอมบ ารง/ทดสอบ/ประสานระบบงายขน
37 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
ตวอยาง Refactoring (1)
• Collapse Hierarchy
– A superclass and subclass are not very different.
– Merge them together
38 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
ตวอยาง 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)
8.) Functional Independence
• ความเปนอสระตอกนในการท างาน ตอเนองจากการแบงสวนระบบออกเปนโมดล และการซอนรายละเอยดภายในโมดล
• เปนการออกแบบซอฟตแวรใหแตละโมดลของซอฟตแวรนน ประกอบไปดวยฟงกชนยอย (Sub-Function) ฟงกชนเดยว
• โมดลตองมสวนประสานการท างานคอนขางงาย ไมซบซอน
– เปนการปองกนความผดพลาดทมาจากความซบซอน
– Reusable Module
40 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
การประเมนระดบความเปนอสระของโมดล
• สามารถประเมนความเปนอสระของโมดลไดจาก 2 เงอนไขดงน – Coupling
• วดความสมพนธระหวางโมดล การเชอมตอกนของโมดลจะผานสอกลางท เรยกวา Interface
• Loosely Coupled
– Cohesion • วดระดบการยดเกาะกนของหนาทหรอกจกรรมในโมดล เพอประมวลผล
ขอมลใหไดผลลพธทตองการ • High Cohesion
41 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
Cohesion
• Functional Cohesion
• Sequence Cohesion
• Communicational Cohesion
• Procedural Cohesion
• Temporal Cohesion
• Logical Cohesion
• Coincidental Cohesion
42
Good
Bad
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
Functional Cohesion
• Module ทท างานในการประมวลผลตอหนงปญหา ไมมการเรยกการท างานของโมดลหรอฟงกชนอน
43
Compute price
Select Seat
Verify Customer
M1
M2
M3
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
Sequence Cohesion
• Module ท างานตอเนองเปนล าดบ – ประมวลผลขอมลจาก
โมดลหนงไปยงโมดลหนง
44
Function A
Function B
Function C
M1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
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)
Procedural Cohesion
• เปนโมดล/ฟงกชนทไมมความสมพนธกน แตหนาททโมดลนนรบผดชอบอยกลบตองไปท างานตอเนองในกระบวนการเดยวกน
– โมดลทเกดจากค าสง IF, while
46
Function A
Function B
Function C
M1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
Temporal Cohesion
• เ ป น โ ม ด ล / ฟ ง ก ช นประมวลผลทกกจกรรมรวมกนเนองจากเวลาเปนตวก าหนด – การประมวลขอมลเมอ
หมดเวลางานในทก ๆ วน
47
Time to initial
Time to + x
Time to + 2x
M1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
Logical Cohesion
• โมดล/ฟงกชนทมหลายหนาท
• แตตองเลอกประมวลผลหนาทใดหนาทหนงเทานน ตามเงอนไขทก าหนด
48
Go by Car
Go by Train
Go by Boat
Go by Plane
M1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
Coincidental Cohesion
• โมดล/ฟงกชนทมหลายหนาท แตถกประมวลผลรวมกนโดยบงเอญ
• โดยทกจกรรมเหลานไมมความสมพนธกน และไ ม ไ ด ถ ก ว า ง แผน ใหรบผดชอบหนาทใด ๆ
49
Function A
Function B
Function E
M1
Function C
Function F
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
COUPLING
• Data Coupling
• Stamp Coupling
• Control Coupling
• Common Coupling
• Content Coupling
50
Good
Bad
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
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)
Stamp Coupling
• โมดลมความสมพนธระหวางกน โดยการสงขอมลระหวางกนเปนขอมลทมโครงสราง ท าใหการแกไขโปรแกรมล าบากมากขน
52
Edit student record
Retrieve student record
Student name Student ID
Student address course
Student record EOF
Student
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
Control Coupling
• โมดลมความสมพนธระหวางกน โดยการสงขอมลระหวางกน แตเปนขอมลควบคมหรอ Flag (True or False)
53
Edit student record
Retrieve student record
Student ID
Done
Student record EOF flag
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
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)
Content Coupling
• โมดลหนงสามารถเปลยนแปลงการท างานของโมดลอนได
55
M1
M12 M13
M21
Module 12
---
--- Goto D1
---
--- D1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
เปาหมายของการออกแบบแบงสวน (Modularity) • High Cohesion
• Low Coupling
56
High Coupling Low Coupling
Low Cohesion
High Cohesion
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
9.) Design Class
• วเคราะหระบบดวยแนวทางเชงวตถ
– ขนตอนการวเคราะห แบบจ าลองคลาสระดบบน
– ขนตอนการออกแบบ ก าหนดรายละเอยดแบบจ าลองคลาส และตองสรางใหเหนถงโครงสรางภายในทสนบสนนกระบวนการทางธรกจ
• Design class 5 ชนด ไดแก User Interface, Business Domain, Process, Persistent และ System Class
57 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
กลยทธและระเบยบวธการออกแบบซอฟตแวร
• กลยทธในการออกแบบซอฟตแวร
– เปนเพยงหลกและแนวทางในการปฏบตงานแบบซอฟตแวรเทานน ไมไดระบถงวธท างานอยางชดเจน
• ระเบยบวธ (Methodology) ในการออกแบบซอฟตแวร
– ระบถงรายละเอยดของวธการท างานอยางชดเจน
– พรอมกบเตรยมสญลกษณตางๆ ของแบบจ าลองเฉพาะระเบยบวธนนไวใหใชงาน ชวยใหทมวศวกรซอฟตแวรท างานไดงายขน
58 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
กลยทธและระเบยบวธการออกแบบซอฟตแวร (ตอ)
• กลยทธทวไปในการออกแบบซอฟตแวร (General Strategy)
• การออกแบบเชงฟงกชน (Function-Oriented Design)
• การออกแบบเชงวตถ (Object-oriented Design)
• การออกแบบโดยใชขอมลเปนศนยกลาง (Data-structure Centered Design)
• การออกแบบคอมโพเนนท (Component-base Design: CBD)
59 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
1.) กลยทธทวไปในการออกแบบซอฟตแวร
• กลยทธในการออกแบบซอฟตแวรทวไป เชน
– Top-Down and Bottom-up
– Divide and Conquer
– Design Pattern
– Stepwise Refinement
60 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
2.) การออกแบบเชงฟงกชน
• การออกแบบเชงโครงสราง ซงเปนระเบยบวธทไดรบความนยมมาตงแตอดตจนถงปจจบน
– เปนวธการพจารณาถงฟงกชนของซอฟตแวรเปนเกณฑในการแบงซอฟตแวรออกเปนสวนยอย
– ก าหนดรายละเอยดในแตละสวนยอย และปรบปรงในลกษณะโครงสรางล าดบขนจากบนลงลาง
– แผนภาพกระแสขอมล และรายละเอยดของกระบวนการ ประกอบการออกแบบ
61 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
3.) การออกแบบเชงวตถ
• พจารณาวตถในโดเมนทสนใจจากค าอธบายความตองการของผใช
• ค านาม (Object) กรยา (Method) และค าคณศพท (Attribute)
• โครงสราง Inheritance และ Polymorphism
• Component-Based Design ใชเครองมอทางการออกแบบเชงวตถเขามาชวยประกอบ
62 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
4.) การออกแบบโดยใชขอมลเปนศนยกลาง
• เปนวธการออกแบบโดยใชขอมลทฟงกชนจะน ามาประมวลผลเปนหลก
• เรมตนจากการแสดงโครงสรางขอมล ทงทเปนขอมลน าเขาและผลลพธ (Input and Output Data)
– สรางเปนแผนภาพ เพอจ าลองโครงสรางของขอมล
• Jackson Structure Diagram
– ทมงานน าแผนภาพไปออกแบบโครงสรางควบคมการท างานของโปรแกรม
63 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
Jackson Structure Diagram (JSD)
• เพออธบายโครงสรางของโปรแกรม เชนเดยวกบ Structure Chart
• ลกษณะ JSD เหมอนแผนภมตนไม (tree) ซงแตละโหนด (node) แทนโมดล โดยทโหนดทอยระดบบนสดเปนโมดลควบคมหรอขนตอนหลก ดงน
– การท างานแบบเปนล าดบ (Sequence)
– การเลอก (selection)
– การท าซ า (iteration)
64 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
65
แสดงความสมพนธของขอมล (Entity) และกจกรรม (Action) มกจกรรมอะไรบาง การท างานเปนแบบล าดบ (Sequence) มสญลกษณวงกลมเลกมมบนขวาแสดงกจกรรมเลอก (Selection) สญลกษณ Asterisk แสดงการท าซ า สวนโครงสรางไดอะแกรมคลายกบ Organization Chart จากบนลงลาง
Source: http://www.jacksonworkbench.co.uk/ เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
5.) การออกแบบคอมโพเนนท
• วธการออกแบบซอฟตแวรดวยการแบงเปนสวนประกอบยอย เรยกวา คอมโพเนนท (Component) – แตละคอมโพเนนทจะท างานเปนอสระตอกน ท างานไดดวยตนเอง และ
สามารถประกอบเขากนไดเมอท างานเสรจ – สามารถประกอบกบคอมโพเนนทอน เพอประสานการท างานใหกบ
ซอฟตแวร – การสอสารระหวางคอมโพเนนทผานทาง Interface
• ถกพฒนาขนเพอตอบสนองความตองการผลตซอฟตแวรทสามารถน ากลบมาใชใหม
66 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
สรป (Summary)
• การออกแบบซอฟตแวร (Software Design)
– กระบวนการก าหนดสถาปตยกรรม สวนประกอบ สวนตอประสานและลกษณะอนๆ ของระบบหรอสวนประกอบของระบบ • แบบจ าลองการออกแบบในเชงสถาปตยกรรมและเชงละเอยด
• สถาปตยกรรมซอฟตแวร (Software Architecture)
– ระบบยอยและสวนประกอบของซอฟตแวร รวมถงความสมพนธระหวางระบบยอยและสวนประกอบดงกลาว
– พยายามก าหนดโครงสรางภายในของซอฟตแวร
67 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
กจกรรมทายบท
• การออกแบบซอฟตแวรมความส าคญอยางไรตอวศวกรรมซอฟตแวร และมกระบวนการอะไรบาง จงอธบายตามความเขาใจ
• การออกแบบซอฟตแวรทดตองค านงถงอะไรบาง เพอน าไปสการออกแบบทด • โครงสรางสถาปตยกรรม MVC คออะไร ประกอบดวยอะไรบางและมความ
จ าเปนอยางไรในการผลตซอฟตแวร • จงอธบายเกยวกบวธแกปญหาทมรปแบบเปนกลาง (Design Pattern) โดยใช
Proxy Pattern ซงน าไปใชเพอแกปญหาอะไร มรปแบบการท างานอยางไรจงอธบาย
• จงอธบายเกยวกบแนวคดในการออกแบบซอฟตแวรแบบ Functional Independence พรอมทงยกตวอยางการน าเสนอโปรแกรมประกอบ
68 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
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)
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)
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)
เอกสารอางอง
• กตต ภกดวฒนะกล, วศวกรรมซอฟตแวร (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)