บทที่ 7 การออกแบบซอฟต์แวร์ · (system design) •...
TRANSCRIPT
![Page 1: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/1.jpg)
บทท 7 การออกแบบซอฟตแวร (Software Design) (1)
วชา วศวกรรมซอฟตแวร (04-06-306)
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306) 1
![Page 2: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/2.jpg)
วตถประสงคการเรยนร
• เพอใหผ เรยนมความรความเขาใจเกยวกบแนวคด หลกการ และกระบวนการออกแบบซอฟตแวรในเบองตนได
• เพอใหผ เรยนสามารถน าความร เกยวกบแนวคด หลกการ และกระบวนการออกแบบซอฟตแวรไปประยกตใชงานส าหรบการพฒนาระบบได
2 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 3: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/3.jpg)
หวขอ
• บทน า (Overview)
• การออกแบบซอฟตแวรคออะไร
• หลกการออกแบบซอฟตแวร
• กระบวนการออกแบบซอฟตแวร
• สถาปตยกรรมซอฟตแวร
• แนวคดในการออกแบบซอฟตแวร
• สรป (Summary)
3 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 4: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/4.jpg)
บทน า (Overview)
การจดท าขอก าหนดความตองการ/
ขนตอนการวเคราะห
การออกแบบซอฟตแวร
ก าหนดรายละเอยดในแตละ
Component
ส าหรบการเขยนและทดสอบซอฟตแวร
4 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 5: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/5.jpg)
การออกแบบระบบ (System Design)
• การออกแบบระบบ
– น าความตองการมาแปลงใหอยในรปของแบบ กอนน าไปสรางผลตภณฑ
– ผลลพธการออกแบบ คอ Design Specification Document
5
Customer
WHAT System Engineer HOW
Programmer
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 6: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/6.jpg)
การออกแบบซอฟตแวร (Software Design)
• กระบวนการก าหนดสถาปตยกรรม สวนประกอบ สวนประสาน และลกษณะดานอน ๆ ของระบบ – แบบจ าลองการออกแบบ (Design Model)
• ความตองการของผใช ก าหนดโครงสรางภายในของซอฟตแวร • การสรางแบบรางของระบบหรอมการน าเสนอระบบในแตละดาน ใหม
คณสมบตทด ดงน 1. Firmness 2. Commodity 3. Delight
6
Source: [IEEE610-12, 1990]
Quality
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 7: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/7.jpg)
กระบวนการออกแบบซอฟตแวร (Software Design Process)
• ลกษณะการท างานซ า ๆ เนองจากตองน าความตองการของระบบทผานการวเคราะหแลวในแตละดาน มาแปลงเปนขอก าหนดของการออกแบบ ไดแก
– ขอมล
– ฟงกชนการท างาน
– สวนตอประสาน
7 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 8: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/8.jpg)
หลกการออกแบบซอฟตแวร
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/9.jpg)
ระดบกระบวนการออกแบบซอฟตแวร
• กรอบของกระบวนการออกแบบซอฟตแวร ประกอบไปดวยการออกแบบใน 2 ระดบ ดงน
– การออกแบบเชงสถาปตยกรรม (Architectural Design) • Top-Level Design
– การออกแบบในรายละเอยด (Detailed Design) • Implementation Design
9 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 10: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/10.jpg)
แนวคดในการออกแบบซอฟตแวร
• Abstraction
• Refinement
• Architecture
• Patterns
• Modularity
• Information Hiding
• Refactoring
• Functional independence
• Design Class
10 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 11: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/11.jpg)
1.) Abstraction
• เปนแนวคดพนฐานในการออกแบบ ลดความซ าซอนของระบบลงได เมอพจารณาถงแนวทางแกไขของแตละปญหา
• สามารถก าหนดสาระส าคญไดหลายระดบม 2 ชนด ดงน
– Procedural Abstraction เปนการสรางล าดบขนตอนของชดค าสงของฟงกชน
– Data Abstraction ชอ Object ขอมลทอยภายใน procedural abstraction ซงตองมคณสมบต (Attribute) เพอใชอธบายลกษณะของ Object
11 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 12: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/12.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/13.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/14.jpg)
2.) Refinement
• เปนวตถประสงคแรกของกลยทธการออกแบบ Top-Down Design
• เปนการลงรายละเอยดเพมเตมรายละเอยดกระบวนการท างาน
• เรมตนจาก
• ประโยคทระบหนาทไปทละขนตอน
• ประโยคภาษาโปรแกรมจนแลวเสรจ
14 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 15: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/15.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/16.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/17.jpg)
สถาปตยกรรมซอฟตแวร (Software Architecture)
• ในป ค.ศ. 1990 เรมศกษาอยางจรงจง สงผลใหเกดแนวคดในการออกแบบซอฟตแวรทนาสนใจ ไดแก
– Architecture Style
– Design Pattern ในระดบรายละเอยด (Low-level Design Pattern)
17 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 18: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/18.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/19.jpg)
โครงสรางของสถาปตยกรรมและมมมอง
• โครงสรางสถาปตยกรรม (Architecture Structure)
– ลกษณะของโครงสรางทรวมสวนประกอบยอยตาง ๆ ของซอฟตแวรเขาดวยกน • เพอใหซอฟตแวรท างานไดในลกษณะเฉพาะทตางกน
• เพอควบคมสถาปตยกรรมซอฟตแวรทหลากหลาย
• รปแบบของสถาปตยกรรม (Architecture Style)
– ขอบงคบ/กฎเกณฑทางดานสถาปตยกรรม เพอจ าแนกกลม/หมวดหมของสถาปตยกรรมซอฟตแวร
19 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 20: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/20.jpg)
รปแบบของสถาปตยกรรม (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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/21.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/22.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/23.jpg)
กลมของซอฟตแวรและเฟรมเวรค
• สนบสนนการออกแบบซอฟตแวร/คอมโพเนนท ใหสามารถน ากลบมาใชใหม
• สอดคลองกบแนวทางการเขยนโปรแกรม โดยใชแนวคด “Framework”
– .NET Framework
23 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 24: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/24.jpg)
ตวอยางการ .NET Framework
24 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 25: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/25.jpg)
4.) Patterns
• Design Pattern
– หลกและวธการแกไขปญหาชนดใดชนดหนง ทสามารถน าไปใชกบปญหาชนดเดยวกนทเกดซ าได
– อธบายโครงสรางของการออกแบบซอฟตแวรอยางละเอยด
– การใช pattern จะชวยใหงานผลตซอฟตแวรด าเนนไปไดอยางรวดเรว ประหยดเวลาในการออกแบบ
25 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 26: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/26.jpg)
แบบแผนการออกแบบ (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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/27.jpg)
ตวอยาง 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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/28.jpg)
28 Source: Eric Freeman, Head First Design Patterns, 2004.
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 29: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/29.jpg)
29 Source: Eric Freeman, Head First Design Patterns, 2004.
Delegation (has-a) - Aggregation - Composition
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 30: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/30.jpg)
30 Source: Eric Freeman, Head First Design Patterns, 2004.
Inheritance (Is-a)
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 31: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/31.jpg)
5.) Modularity
• การแบงระบบหรอซอฟตแวรออกเปนสวน ๆ เรยกวา Module
– ประสานงานรวมกน เพอแกปญหาตามทผใชตองการ
• การแบงระบบออกเปนโมดลจะชวยใหการออกแบบงานในแตละสวนงายขน
31 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 32: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/32.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/33.jpg)
6.) Information Hiding
• เปนหลกการออกแบบส าหรบแตละโมดลตองซอนรายละเอยดการท างาน
– Algorithm, data module
• ปองกนการเขาถงขอมลภายในโมดลโดยไมจ าเปน
33 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 34: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/34.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/35.jpg)
ตวอยาง 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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/36.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/37.jpg)
7.) Refactoring (ตอ)
1st, Low Cohesion
2nd, แบงเปน 3 โมดล (High Cohesion)
ซอมบ ารง/ทดสอบ/ประสานระบบงายขน
37 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 38: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/38.jpg)
ตวอยาง Refactoring (1)
• Collapse Hierarchy
– A superclass and subclass are not very different.
– Merge them together
38 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 39: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/39.jpg)
ตวอยาง 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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/40.jpg)
8.) Functional Independence
• ความเปนอสระตอกนในการท างาน ตอเนองจากการแบงสวนระบบออกเปนโมดล และการซอนรายละเอยดภายในโมดล
• เปนการออกแบบซอฟตแวรใหแตละโมดลของซอฟตแวรนน ประกอบไปดวยฟงกชนยอย (Sub-Function) ฟงกชนเดยว
• โมดลตองมสวนประสานการท างานคอนขางงาย ไมซบซอน
– เปนการปองกนความผดพลาดทมาจากความซบซอน
– Reusable Module
40 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 41: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/41.jpg)
การประเมนระดบความเปนอสระของโมดล
• สามารถประเมนความเปนอสระของโมดลไดจาก 2 เงอนไขดงน – Coupling
• วดความสมพนธระหวางโมดล การเชอมตอกนของโมดลจะผานสอกลางท เรยกวา Interface
• Loosely Coupled
– Cohesion • วดระดบการยดเกาะกนของหนาทหรอกจกรรมในโมดล เพอประมวลผล
ขอมลใหไดผลลพธทตองการ • High Cohesion
41 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 42: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/42.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/43.jpg)
Functional Cohesion
• Module ทท างานในการประมวลผลตอหนงปญหา ไมมการเรยกการท างานของโมดลหรอฟงกชนอน
43
Compute price
Select Seat
Verify Customer
M1
M2
M3
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 44: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/44.jpg)
Sequence Cohesion
• Module ท างานตอเนองเปนล าดบ – ประมวลผลขอมลจาก
โมดลหนงไปยงโมดลหนง
44
Function A
Function B
Function C
M1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 45: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/45.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/46.jpg)
Procedural Cohesion
• เปนโมดล/ฟงกชนทไมมความสมพนธกน แตหนาททโมดลนนรบผดชอบอยกลบตองไปท างานตอเนองในกระบวนการเดยวกน
– โมดลทเกดจากค าสง IF, while
46
Function A
Function B
Function C
M1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 47: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/47.jpg)
Temporal Cohesion
• เ ป น โ ม ด ล / ฟ ง ก ช นประมวลผลทกกจกรรมรวมกนเนองจากเวลาเปนตวก าหนด – การประมวลขอมลเมอ
หมดเวลางานในทก ๆ วน
47
Time to initial
Time to + x
Time to + 2x
M1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 48: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/48.jpg)
Logical Cohesion
• โมดล/ฟงกชนทมหลายหนาท
• แตตองเลอกประมวลผลหนาทใดหนาทหนงเทานน ตามเงอนไขทก าหนด
48
Go by Car
Go by Train
Go by Boat
Go by Plane
M1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 49: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/49.jpg)
Coincidental Cohesion
• โมดล/ฟงกชนทมหลายหนาท แตถกประมวลผลรวมกนโดยบงเอญ
• โดยทกจกรรมเหลานไมมความสมพนธกน และไ ม ไ ด ถ ก ว า ง แผน ใหรบผดชอบหนาทใด ๆ
49
Function A
Function B
Function E
M1
Function C
Function F
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 50: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/50.jpg)
COUPLING
• Data Coupling
• Stamp Coupling
• Control Coupling
• Common Coupling
• Content Coupling
50
Good
Bad
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 51: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/51.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/52.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/53.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/54.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/55.jpg)
Content Coupling
• โมดลหนงสามารถเปลยนแปลงการท างานของโมดลอนได
55
M1
M12 M13
M21
Module 12
---
--- Goto D1
---
--- D1
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 56: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/56.jpg)
เปาหมายของการออกแบบแบงสวน (Modularity) • High Cohesion
• Low Coupling
56
High Coupling Low Coupling
Low Cohesion
High Cohesion
เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 57: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/57.jpg)
9.) Design Class
• วเคราะหระบบดวยแนวทางเชงวตถ
– ขนตอนการวเคราะห แบบจ าลองคลาสระดบบน
– ขนตอนการออกแบบ ก าหนดรายละเอยดแบบจ าลองคลาส และตองสรางใหเหนถงโครงสรางภายในทสนบสนนกระบวนการทางธรกจ
• Design class 5 ชนด ไดแก User Interface, Business Domain, Process, Persistent และ System Class
57 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 58: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/58.jpg)
กลยทธและระเบยบวธการออกแบบซอฟตแวร
• กลยทธในการออกแบบซอฟตแวร
– เปนเพยงหลกและแนวทางในการปฏบตงานแบบซอฟตแวรเทานน ไมไดระบถงวธท างานอยางชดเจน
• ระเบยบวธ (Methodology) ในการออกแบบซอฟตแวร
– ระบถงรายละเอยดของวธการท างานอยางชดเจน
– พรอมกบเตรยมสญลกษณตางๆ ของแบบจ าลองเฉพาะระเบยบวธนนไวใหใชงาน ชวยใหทมวศวกรซอฟตแวรท างานไดงายขน
58 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 59: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/59.jpg)
กลยทธและระเบยบวธการออกแบบซอฟตแวร (ตอ)
• กลยทธทวไปในการออกแบบซอฟตแวร (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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/60.jpg)
1.) กลยทธทวไปในการออกแบบซอฟตแวร
• กลยทธในการออกแบบซอฟตแวรทวไป เชน
– Top-Down and Bottom-up
– Divide and Conquer
– Design Pattern
– Stepwise Refinement
60 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 61: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/61.jpg)
2.) การออกแบบเชงฟงกชน
• การออกแบบเชงโครงสราง ซงเปนระเบยบวธทไดรบความนยมมาตงแตอดตจนถงปจจบน
– เปนวธการพจารณาถงฟงกชนของซอฟตแวรเปนเกณฑในการแบงซอฟตแวรออกเปนสวนยอย
– ก าหนดรายละเอยดในแตละสวนยอย และปรบปรงในลกษณะโครงสรางล าดบขนจากบนลงลาง
– แผนภาพกระแสขอมล และรายละเอยดของกระบวนการ ประกอบการออกแบบ
61 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 62: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/62.jpg)
3.) การออกแบบเชงวตถ
• พจารณาวตถในโดเมนทสนใจจากค าอธบายความตองการของผใช
• ค านาม (Object) กรยา (Method) และค าคณศพท (Attribute)
• โครงสราง Inheritance และ Polymorphism
• Component-Based Design ใชเครองมอทางการออกแบบเชงวตถเขามาชวยประกอบ
62 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 63: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/63.jpg)
4.) การออกแบบโดยใชขอมลเปนศนยกลาง
• เปนวธการออกแบบโดยใชขอมลทฟงกชนจะน ามาประมวลผลเปนหลก
• เรมตนจากการแสดงโครงสรางขอมล ทงทเปนขอมลน าเขาและผลลพธ (Input and Output Data)
– สรางเปนแผนภาพ เพอจ าลองโครงสรางของขอมล
• Jackson Structure Diagram
– ทมงานน าแผนภาพไปออกแบบโครงสรางควบคมการท างานของโปรแกรม
63 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 64: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/64.jpg)
Jackson Structure Diagram (JSD)
• เพออธบายโครงสรางของโปรแกรม เชนเดยวกบ Structure Chart
• ลกษณะ JSD เหมอนแผนภมตนไม (tree) ซงแตละโหนด (node) แทนโมดล โดยทโหนดทอยระดบบนสดเปนโมดลควบคมหรอขนตอนหลก ดงน
– การท างานแบบเปนล าดบ (Sequence)
– การเลอก (selection)
– การท าซ า (iteration)
64 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 65: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/65.jpg)
65
แสดงความสมพนธของขอมล (Entity) และกจกรรม (Action) มกจกรรมอะไรบาง การท างานเปนแบบล าดบ (Sequence) มสญลกษณวงกลมเลกมมบนขวาแสดงกจกรรมเลอก (Selection) สญลกษณ Asterisk แสดงการท าซ า สวนโครงสรางไดอะแกรมคลายกบ Organization Chart จากบนลงลาง
Source: http://www.jacksonworkbench.co.uk/ เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 66: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/66.jpg)
5.) การออกแบบคอมโพเนนท
• วธการออกแบบซอฟตแวรดวยการแบงเปนสวนประกอบยอย เรยกวา คอมโพเนนท (Component) – แตละคอมโพเนนทจะท างานเปนอสระตอกน ท างานไดดวยตนเอง และ
สามารถประกอบเขากนไดเมอท างานเสรจ – สามารถประกอบกบคอมโพเนนทอน เพอประสานการท างานใหกบ
ซอฟตแวร – การสอสารระหวางคอมโพเนนทผานทาง Interface
• ถกพฒนาขนเพอตอบสนองความตองการผลตซอฟตแวรทสามารถน ากลบมาใชใหม
66 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 67: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/67.jpg)
สรป (Summary)
• การออกแบบซอฟตแวร (Software Design)
– กระบวนการก าหนดสถาปตยกรรม สวนประกอบ สวนตอประสานและลกษณะอนๆ ของระบบหรอสวนประกอบของระบบ • แบบจ าลองการออกแบบในเชงสถาปตยกรรมและเชงละเอยด
• สถาปตยกรรมซอฟตแวร (Software Architecture)
– ระบบยอยและสวนประกอบของซอฟตแวร รวมถงความสมพนธระหวางระบบยอยและสวนประกอบดงกลาว
– พยายามก าหนดโครงสรางภายในของซอฟตแวร
67 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 68: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/68.jpg)
กจกรรมทายบท
• การออกแบบซอฟตแวรมความส าคญอยางไรตอวศวกรรมซอฟตแวร และมกระบวนการอะไรบาง จงอธบายตามความเขาใจ
• การออกแบบซอฟตแวรทดตองค านงถงอะไรบาง เพอน าไปสการออกแบบทด • โครงสรางสถาปตยกรรม MVC คออะไร ประกอบดวยอะไรบางและมความ
จ าเปนอยางไรในการผลตซอฟตแวร • จงอธบายเกยวกบวธแกปญหาทมรปแบบเปนกลาง (Design Pattern) โดยใช
Proxy Pattern ซงน าไปใชเพอแกปญหาอะไร มรปแบบการท างานอยางไรจงอธบาย
• จงอธบายเกยวกบแนวคดในการออกแบบซอฟตแวรแบบ Functional Independence พรอมทงยกตวอยางการน าเสนอโปรแกรมประกอบ
68 เอกสารประกอบการสอน วชา วศวกรรมซอฟตแวร (04-06-306)
![Page 69: บทที่ 7 การออกแบบซอฟต์แวร์ · (System Design) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/69.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/70.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/71.jpg)
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) • การออกแบบระบบ –น าความต้องการมาแปลงให้อยู่ในรูปของแบบ](https://reader030.vdocuments.pub/reader030/viewer/2022040500/5e1cd02e3168fc0621073a2d/html5/thumbnails/72.jpg)
เอกสารอางอง
• กตต ภกดวฒนะกล, วศวกรรมซอฟตแวร (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)