290342 software development process
DESCRIPTION
290342 Software Development Process. บทที่ 5 การออกแบบซอฟต์แวร์ (1). อ.ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี. เนื้อหา. ความหมายของการออกแบบซอฟต์แวร์และวิศวกรรมการออกแบบ ระดับของกระบวนการออกแบบซอฟต์แวร์ - PowerPoint PPT PresentationTRANSCRIPT
290342 Software Development Process
บทท�� 5 การออกแบบซอฟต์�แวร� (1)
อ.ธาราร�ต์น์� พวงสุ�วรรณคณะว�ทยาศาสุต์ร�และศ�ลปศาสุต์ร�
มหาว�ทยาล�ยบ!รพา ว�ทยาเขต์สุารสุน์เทศจั�น์ทบ�ร�
เน์%&อหา ความหมายของการออกแบบซอฟต์�แวร�และ
ว�ศวกรรมการออกแบบ ระดั�บของกระบวนการออกแบบซอฟต์�แวร� กลย�ทธ์�และระเบ�ยบว�ธ์�ในการออกแบบซอฟต์�แวร� แบบจำ าลองการออกแบบ (Design Model) หล�กการออกแบบซอฟต์�แวร� หล�กการพื้#$นฐานในการออกแบบซอฟต์�แวร� แบบจำ าลองท�&ใช้(ในการออกแบบ
การออกแบบซอฟต์�แวร�
Quality
Translate by design
Customer’ requirement
product orsystem
การออกแบบซอฟต์�แวร�
Maintenance
Test
Implementation
Design
With Design
Test
Implementation
Maintenance
Without Design
การออกแบบซอฟต์แวร� การออกแบบซอฟต์แวร หมายถึ+ง กระบวนการก า
หนดั สถึาปต์ยกรรม สวนประกอบ สวนต์.อประสาน และ ล�กษณะดัานอ#&นๆ ของระบบ ส�&งท�&ไดัจำากการออกแบบก3ค#อ แบบจั(าลองการออกแบบ (Design Model) น�&นเอง
การออกแบบซอฟต์แวร� เปนการน าขอก าหนดัความต์องการของ ผู5ใช้มาก าหนดัรายละเอ�ยดัโครงสรางภายในของซอฟต์แวร เพื้#&อ น าไปใช้ในการเข�ยนและทดัสอบโปรแกรมในระยะการสรางซอฟต์�แวร�
ว�ศวกรรมการออกแบบ ว�ศวกรรมการออกแบบเป8นการรวบรวมหล�กการ
แนวความค�ดั และว�ธ์�ปฏิ�บ�ต์�ท�&น าไปส5.การพื้�ฒนาระบบคอมพื้�วเต์อร�ท�&ม�ค�ณภาพื้ส5ง
เป8นก�จำกรรมหล�กอย.างหน+&งของว�ศวกรรมคอมพื้�วเต์อร�
ม�เปาหมาย ค#อ การสรางแบบรางของระบบ หร#อม�การน าเสนอระบบในแต์ละดั(าน ใหม�ค�ณสมบ�ต์� 1. firmness 2. commodity 3. delight ***** ท�กข(อดั�งกล.าว ค#อ ค�ณภาพื้ ****
กระบวน์การออกแบบซอฟต์�แวร� จำะม�ล�กษณะการท างานซ $าๆเน#&องจำากต์(องน าความ
ต์(องการของระบบท�&ผู.านการว�เคราะห�แล(วในแต์.ละดั(าน มาแปลงเป8นข(อก าหนดัของการออกแบบ ไดั(แก. ข(อม5ล ฟ;งก�ช้�นการท างาน ส.วนประสาน
ระดั�บของกระบวน์การออกแบบซอฟต์�แวร�
การออกแบบเช้�งสถึาป;ต์ยกรรม Architectural Design
การออกแบบในรายละเอ�ยดั Detailed Design
กลย�ทธ�ใน์การออกแบบซอฟต์�แวร�
กลย�ทธ�ท��วไปใน์การออกแบบซอฟต์�แวร� (General Strategy) เป8นกลย�ทธ์�ในการออกแบบซอฟต์�แวร�ท�&วไป เช้.น
Top-Down and Bottom-up Divide-and Conquer Design Pattern Stepwise Refinement
ระเบ�ยบว�ธ�การออกแบบซอฟต์�แวร� การออกแบบเช้�งฟ;งก�ช้�น (Function-Oriented
Design) การออกแบบเช้�งว�ต์ถึ� (Object-oriented Dsign) การออกแบบโดัยใช้(ข(อม5ลเป8นศ5นย�กลาง (Data-
structure Centered Design) การออกแบบคอมโพื้เน(นท� (Component-base
Design: CBD)
การออกแบบซอฟต์�แวร� จำากข�$นต์อนการว�เคราะห�จำะท าให(ไดั(ข(อม5ล เพื้#&อจำะน าไป
สร(างแบบจำ าลองท�$ง 4 ประเภท ซ+&งจำะน าไปใช้(ต์.อในข�$นต์อนการออกแบบScenerio-based elements องค�ประกอบเช้�ง
ฉากบรรยาย: use-case diagramClass-based elememts องค�ประกอบเช้�ง
คลาส : class diagramFlow-oriented elements องค�ประกอบเช้�ง
กระแส : Data flow diagramBehavioral elements องค�ประกอบเช้�ง
พื้ฤต์�กรรม : State diagram, Sequence diagram
การแปลงจั(าลองการว�เคราะห�เป,น์แบบจั(าลองการออกแบบ
Analysis Model
use-cases - text use-case diagrams activity diagrams swim lane diagrams
data flow diagrams control-flow diagrams processing narratives
f low-oriented elements
behavioralelements
class-basedelements
scenario-basedelements
class diagrams analysis packages CRC models collaboration diagrams
state diagrams sequence diagrams
Data/ Class Design
Architec tural Design
Interface Design
Component- Level Design
Design Model
แบบจั(าลองการออกแบบ(Design Model)
Data/Class DesignArchitecture Design Interface DesignComponent-level Design
หล�กการออกแบบซอฟต์�แวร� การออกแบบควรแสดังให(เห3นถึ+งร5ปแบบสถึาป;ต์ยกรรมท�&
เล#อกใช้(อย.างช้�ดัเจำนและม�แบบแผูน
การออกแบบควรม�ล�กษณะเป8นโมดั5ล
การออกแบบควรน าเสนอดั(านข(อม5ล สถึาป;ต์ยกรรม ส.วนประสาน และคอมโพื้เน(นท�ท�&ช้�ดัเจำน
ควรออกแบบคอมโพื้เน(นท�ให(ม�อ�สระต์.อก�น
ควรออกแบบให(ส.วนประสานระหว.างคอมโพื้เน(นท�ก�บ
สภาพื้แวดัล(อมภายนอกม�ความซ�บซ(อนน(อยท�&ส�ดั
หล�กการออกแบบซอฟต์�แวร� การออกแบบควรน าข(อม5ลมาจำากการว�เคราะห�ระบบ และ
ใช้(ระเบ�ยบว�ธ์�ปฏิ�บ�ต์�เดั�ยวก�น
ส�ญล�กษณ�ท�&ใช้(ในการออกแบบควรส#&อความหมายไดั(ช้�ดัเจำน และเป8นมาต์รฐาน
งานออกแบบควรม�โครงสร(างท�&ดั� เพื้#&อการแก(ไขท�&ง.ายและใช้(ต์(นท�นน(อย
การออกแบบในระดั�บคอมโพื้เน(นท�ม�ล�กษณะแบบ Functional Independence ค#อ ฟ;งก�ช้�นงานม�ความเป8นอ�สระต์.อก�น ไม.ข+$นต์.อก�น
คอมโพื้เน(นท�ของซอฟต์�แวร�จำะต์(องม�ล�กษณะการข+$นต์.อก�นน(อยท�&ส�ดั (Loosely Coupled)
หล�กการพ%&น์ฐาน์ใน์การออกแบบซอฟต์�แวร�
AbstractionRefinementArchitecturePatternsModularityInformation HidingRefactoringFunctional
independence
Abstractionการก าหนดัสาระส าค�ญ โดัยสามารถึก าหนดั
สาระส าค�ญไดั(หลายระดั�บ เป8นแนวค�ดัพื้#$นฐานในการออกแบบ
Procedural AbstractionData Abstraction
Procedural Abstraction
open
implemented with a "knowledge" of the
object that is associated with enter
details of enter algorithm
Procedural Abstraction
“Open”1. เดั�น์ไปท��ประต์!2. ย%�น์ม%อไปท��ล!กบ�ดั3. หม�น์ล!กบ�ดั4. ดั.งประต์!5. เดั�น์เข/าประต์!
Data Abstraction
door
implemented as a data structure
manufacturermodel numbertypeswing directioninsertslights type numberweightopening mechanism
Refinement การลงรายละเอ�ยดัเพื้�&มเต์�มรายละเอ�ยดักระบวนการ
ท างาน จำากประโยคท�&ระบ�หน(าท�&ไปท�ละข�$นต์อน จำนกว.าจำะไดั(
ประโยคภาษาโปรแกรมopen
walk to door;reach for knob;
open door;
walk through;close door.
repeat until door opensturn knob clockwise;if knob doesn't turn, then take key out; find correct key; insert in lock;endifpull/push doormove out of way;end repeat
Architecture
สถึาป;ต์ยกรรมซอฟต์�แวร� (Software Architecture) หมายถึ+ง การแสดังความส�มพื้�นธ์�ระหว.างระบบย.อยและส.วนประกอบ (คอมโพื้เน(นท�) เพื้#&อก าหนดัโครงสร(างหร#อระบบภายในซอฟต์�แวร�
เป@าหมายของการออกแบบสถึาป;ต์ยกรรมค#อ ให(เป8นกรอบในการออกแบบส.วนประกอบของระบบให(เป8นในท�ศทางเดั�ยวก�นและอย5.บนสถึาป;ต์ยกรรมเดั�ยวก�น
Patterns
การใช้(โครงสร(างต์�วแบบมาช้.วยแก(ป;ญหาการออกแบบ
โดัยน าหล�กและว�ธ์�การแก(ป;ญหาช้น�ดัหน+&งช้น�ดัใดัจำากต์�วแบบ จำะสามารถึน าไปใช้(ก�บป;ญหาช้น�ดัเดั�ยวก�นท�&เก�ดัข+$นซ $าไดั(
การใช้( pattern จำะช้.วยให(งานผูล�ต์ซอฟต์�แวร�ดั าเน�นไปไดั(อย.างรวดัเร3ว ประหย�ดัเวลาในการออกแบบ
Modularityการแบ.งระบบหร#อซอฟต์�แวร�แยกออกเป8น
ส.วนๆ แต์.ละส.วน เร�ยกว.า โมดั5ล “ ”(Module) ซ+&งจำะประกอบก�นไดั(เพื้#&อท างานต์ามความต์(องการ
Modularity
optimal number of modules
cost of software
number of modules
moduleintegration
cost
module development cost
Information Hiding
โมดั5ลจำะต์(องซ.อนรายละเอ�ยดัการท างานไว( ไม.ว.าจำะเป8นอ�ลกอร�ท+มหร#อข(อม5ลของโมดั5ล เพื้#&อป@องก�นการเข(าถึ+งข(อม5ลภายในโมดั5ลโดัยไม.จำ าเป8น
Information Hiding
module
controlledinterface
"secret"
• algorithm
• data structure
• details of external interface
• resource allocation policy
clients
a specific design decision
Refactoring
เป8นเทคน�คในการปร�บโครงสร(างการออกแบบ เป8นการจำ�ดัระเบ�ยบใหม. เพื้#&อให(งานออกแบบองค�
ประกอบย.อย หร#อต์�วโค(ดัม�ล�กษณะท�&ง.ายข+$น โดัยไม.ไปเปล�&ยนแปลงพื้ฤต์�กรรมของการท างาน
ต์�วอย0าง Refactoring Collapse Hierarchy
A superclass and subclass are not very different.
Merge them together.
ต์�วอย0าง Refactoring 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.
int getRating() { return (moreThanFiveLateDeliveries()) ? 2 : 1; } boolean moreThanFiveLateDeliveries() { return _numberOfLateDeliveries > 5; }
int getRating() { return (_numberOfLateDeliveries > 5) ? 2 : 1; }
Functional independence
การออกแบบให(โมดั5ลม�ความเป8นอ�สระต์.อก�นโมดั5ลท�&เป8นอ�สระต์.อก�นจำะง.ายต์.อการบ าร�ง
ร�กษาการประเม�นระดั�บของความเป8นอ�สระของโมดั5ล
ประเม�นไดั(จำากความแข3งแกร.งของโมดั5ล (Cohesion)ความส�มพื้�นธ์�ระหว.างโมดั5ล (Coupling)
Functional independence
ความเป8นอ�สระ
โมดั5ล
Modular Design
CohesionFunctional CohesionSequence CohesionCommunicational CohesionProcedural CohesionTemporal CohesionLogical CohesionCoincidental Cohesion
Good
Bad
Functional Cohesion
Compute price
Select Seat
Verify Customer
M1
M2
M3
Sequence Cohesion
Function A
Function B
Function C
M1
Communicational Cohesion
Find Title of Book
Find Price of Book
Find Publisher of Book
Find Author of Book
book
M1
Procedural Cohesion
Function A
Function B
Function C
M1
Temporal Cohesion
Time to initial
Time to + x
Time to + 2x
M1
Logical Cohesion
Go by Car
Go by Train
Go by Boat
Go by Plane
M1
Coincidental Cohesion
Function A
Function B
Function E
M1
Function C
Function F
CouplingData CouplingStamp CouplingControl CouplingCommon CouplingContent Coupling
Good
Bad
Data Coupling
Edit student record
Edit student record
Retrieve studentrecord
Retrieve studentrecord
Student nameStudent ID
Student addresscourse
Student record EOF
Student IDStudent record
EOF
Data CouplingX Data Coupling
Stamp Coupling
Edit student record
Retrieve studentrecord
Student nameStudent ID
Student addresscourse
Student record EOF
Student
Control Coupling
Edit student record
Retrieve studentrecord
Student ID
Done (True or false)
Student record EOF
flag
Common Coupling
Global:A1A2A3
Variables:V1V2
Module M1------
Change A1 to Zero
Module M13------
Increment A3
Module M21------
sum = V2+A2
Content Coupling
M1
M12 M13
M21
Module 12------Goto D1
------D1
Target of Module Design
High CohesionLow Coupling
High coupling Low coupling
low cohesion
high cohesion
แบบจั(าลองท��ใช้/ใน์การออกแบบ กล�.ม Structural Description (Static
View) กล�.ม Behavioral Description
(Dynamic View)
แบบจั(าลองท��ใช้/ใน์การออกแบบ กล�.ม Structural Description (Static View)
เช้.น Architecture Description Language ADU Class And Object Diagram Component Diagram Deployment Diagram Entity Relationship Diagram ERD Interface Description Language IDL Jackson Structure Diagram Structure Chart
แบบจั(าลองท��ใช้/ใน์การออกแบบ กล�.ม Behavioral Description (Dynamic View)
ไดั(แก. Activity Diagram Collaborative Diagram Data Flow Diagram Decision Table Flowchart and Structure Flowchart Sequence Diagram Pseudo-code and Program Design
Language PDL