290342 software development process

50
290342 Software Development Process บบบบบ 5 บบบบบบบบบบบบบบบบบบ (1) บ.บบบบบบบบบ บบบบบบบบบ บบบบบบบบบบบบบบบบบบบบบบบบบบบ บบบบบบบบบบบบบบบบ บบบบบบบบ บบบบบบบบบบบบบบบบ

Upload: philip-clements

Post on 31-Dec-2015

72 views

Category:

Documents


1 download

DESCRIPTION

290342 Software Development Process. บทที่ 5 การออกแบบซอฟต์แวร์ (1). อ.ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี. เนื้อหา. ความหมายของการออกแบบซอฟต์แวร์และวิศวกรรมการออกแบบ ระดับของกระบวนการออกแบบซอฟต์แวร์ - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 290342  Software Development Process

290342 Software Development Process

บทท�� 5 การออกแบบซอฟต์�แวร� (1)

อ.ธาราร�ต์น์� พวงสุ�วรรณคณะว�ทยาศาสุต์ร�และศ�ลปศาสุต์ร�

มหาว�ทยาล�ยบ!รพา ว�ทยาเขต์สุารสุน์เทศจั�น์ทบ�ร�

Page 2: 290342  Software Development Process

เน์%&อหา ความหมายของการออกแบบซอฟต์�แวร�และ

ว�ศวกรรมการออกแบบ ระดั�บของกระบวนการออกแบบซอฟต์�แวร� กลย�ทธ์�และระเบ�ยบว�ธ์�ในการออกแบบซอฟต์�แวร� แบบจำ าลองการออกแบบ (Design Model) หล�กการออกแบบซอฟต์�แวร� หล�กการพื้#$นฐานในการออกแบบซอฟต์�แวร� แบบจำ าลองท�&ใช้(ในการออกแบบ

Page 3: 290342  Software Development Process

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

Quality

Translate by design

Customer’ requirement

product orsystem

Page 4: 290342  Software Development Process

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

Maintenance

Test

Implementation

Design

With Design

Test

Implementation

Maintenance

Without Design

Page 5: 290342  Software Development Process

การออกแบบซอฟต์แวร� การออกแบบซอฟต์แวร หมายถึ+ง กระบวนการก า

หนดั สถึาปต์ยกรรม สวนประกอบ สวนต์.อประสาน และ ล�กษณะดัานอ#&นๆ ของระบบ ส�&งท�&ไดัจำากการออกแบบก3ค#อ แบบจั(าลองการออกแบบ (Design Model) น�&นเอง

การออกแบบซอฟต์แวร� เปนการน าขอก าหนดัความต์องการของ ผู5ใช้มาก าหนดัรายละเอ�ยดัโครงสรางภายในของซอฟต์แวร เพื้#&อ น าไปใช้ในการเข�ยนและทดัสอบโปรแกรมในระยะการสรางซอฟต์�แวร�

Page 6: 290342  Software Development Process

ว�ศวกรรมการออกแบบ ว�ศวกรรมการออกแบบเป8นการรวบรวมหล�กการ

แนวความค�ดั และว�ธ์�ปฏิ�บ�ต์�ท�&น าไปส5.การพื้�ฒนาระบบคอมพื้�วเต์อร�ท�&ม�ค�ณภาพื้ส5ง

เป8นก�จำกรรมหล�กอย.างหน+&งของว�ศวกรรมคอมพื้�วเต์อร�

ม�เปาหมาย ค#อ การสรางแบบรางของระบบ หร#อม�การน าเสนอระบบในแต์ละดั(าน ใหม�ค�ณสมบ�ต์� 1. firmness 2. commodity 3. delight ***** ท�กข(อดั�งกล.าว ค#อ ค�ณภาพื้ ****

Page 7: 290342  Software Development Process

กระบวน์การออกแบบซอฟต์�แวร� จำะม�ล�กษณะการท างานซ $าๆเน#&องจำากต์(องน าความ

ต์(องการของระบบท�&ผู.านการว�เคราะห�แล(วในแต์.ละดั(าน มาแปลงเป8นข(อก าหนดัของการออกแบบ ไดั(แก. ข(อม5ล ฟ;งก�ช้�นการท างาน ส.วนประสาน

Page 8: 290342  Software Development Process

ระดั�บของกระบวน์การออกแบบซอฟต์�แวร�

การออกแบบเช้�งสถึาป;ต์ยกรรม Architectural Design

การออกแบบในรายละเอ�ยดั Detailed Design

Page 9: 290342  Software Development Process

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

กลย�ทธ�ท��วไปใน์การออกแบบซอฟต์�แวร� (General Strategy) เป8นกลย�ทธ์�ในการออกแบบซอฟต์�แวร�ท�&วไป เช้.น

Top-Down and Bottom-up Divide-and Conquer Design Pattern Stepwise Refinement

Page 10: 290342  Software Development Process

ระเบ�ยบว�ธ�การออกแบบซอฟต์�แวร� การออกแบบเช้�งฟ;งก�ช้�น (Function-Oriented

Design) การออกแบบเช้�งว�ต์ถึ� (Object-oriented Dsign) การออกแบบโดัยใช้(ข(อม5ลเป8นศ5นย�กลาง (Data-

structure Centered Design) การออกแบบคอมโพื้เน(นท� (Component-base

Design: CBD)

Page 11: 290342  Software Development Process

การออกแบบซอฟต์�แวร� จำากข�$นต์อนการว�เคราะห�จำะท าให(ไดั(ข(อม5ล เพื้#&อจำะน าไป

สร(างแบบจำ าลองท�$ง 4 ประเภท ซ+&งจำะน าไปใช้(ต์.อในข�$นต์อนการออกแบบScenerio-based elements องค�ประกอบเช้�ง

ฉากบรรยาย: use-case diagramClass-based elememts องค�ประกอบเช้�ง

คลาส : class diagramFlow-oriented elements องค�ประกอบเช้�ง

กระแส : Data flow diagramBehavioral elements องค�ประกอบเช้�ง

พื้ฤต์�กรรม : State diagram, Sequence diagram

Page 12: 290342  Software Development Process

การแปลงจั(าลองการว�เคราะห�เป,น์แบบจั(าลองการออกแบบ

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

Page 13: 290342  Software Development Process

แบบจั(าลองการออกแบบ(Design Model)

Data/Class DesignArchitecture Design Interface DesignComponent-level Design

Page 14: 290342  Software Development Process

หล�กการออกแบบซอฟต์�แวร� การออกแบบควรแสดังให(เห3นถึ+งร5ปแบบสถึาป;ต์ยกรรมท�&

เล#อกใช้(อย.างช้�ดัเจำนและม�แบบแผูน       

การออกแบบควรม�ล�กษณะเป8นโมดั5ล    

การออกแบบควรน าเสนอดั(านข(อม5ล สถึาป;ต์ยกรรม ส.วนประสาน และคอมโพื้เน(นท�ท�&ช้�ดัเจำน     

  ควรออกแบบคอมโพื้เน(นท�ให(ม�อ�สระต์.อก�น

    ควรออกแบบให(ส.วนประสานระหว.างคอมโพื้เน(นท�ก�บ

สภาพื้แวดัล(อมภายนอกม�ความซ�บซ(อนน(อยท�&ส�ดั       

Page 15: 290342  Software Development Process

หล�กการออกแบบซอฟต์�แวร� การออกแบบควรน าข(อม5ลมาจำากการว�เคราะห�ระบบ และ

ใช้(ระเบ�ยบว�ธ์�ปฏิ�บ�ต์�เดั�ยวก�น       

ส�ญล�กษณ�ท�&ใช้(ในการออกแบบควรส#&อความหมายไดั(ช้�ดัเจำน และเป8นมาต์รฐาน        

งานออกแบบควรม�โครงสร(างท�&ดั� เพื้#&อการแก(ไขท�&ง.ายและใช้(ต์(นท�นน(อย       

การออกแบบในระดั�บคอมโพื้เน(นท�ม�ล�กษณะแบบ Functional Independence ค#อ ฟ;งก�ช้�นงานม�ความเป8นอ�สระต์.อก�น ไม.ข+$นต์.อก�น     

คอมโพื้เน(นท�ของซอฟต์�แวร�จำะต์(องม�ล�กษณะการข+$นต์.อก�นน(อยท�&ส�ดั (Loosely Coupled)

Page 16: 290342  Software Development Process

หล�กการพ%&น์ฐาน์ใน์การออกแบบซอฟต์�แวร�

AbstractionRefinementArchitecturePatternsModularityInformation HidingRefactoringFunctional

independence

Page 17: 290342  Software Development Process

Abstractionการก าหนดัสาระส าค�ญ โดัยสามารถึก าหนดั

สาระส าค�ญไดั(หลายระดั�บ เป8นแนวค�ดัพื้#$นฐานในการออกแบบ

Procedural AbstractionData Abstraction

Page 18: 290342  Software Development Process

Procedural Abstraction

open

implemented with a "knowledge" of the

object that is associated with enter

details of enter algorithm

Page 19: 290342  Software Development Process

Procedural Abstraction

“Open”1. เดั�น์ไปท��ประต์!2. ย%�น์ม%อไปท��ล!กบ�ดั3. หม�น์ล!กบ�ดั4. ดั.งประต์!5. เดั�น์เข/าประต์!

Page 20: 290342  Software Development Process

Data Abstraction

door

implemented as a data structure

manufacturermodel numbertypeswing directioninsertslights type numberweightopening mechanism

Page 21: 290342  Software Development Process

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

Page 22: 290342  Software Development Process

Architecture

สถึาป;ต์ยกรรมซอฟต์�แวร� (Software Architecture) หมายถึ+ง การแสดังความส�มพื้�นธ์�ระหว.างระบบย.อยและส.วนประกอบ (คอมโพื้เน(นท�) เพื้#&อก าหนดัโครงสร(างหร#อระบบภายในซอฟต์�แวร�

เป@าหมายของการออกแบบสถึาป;ต์ยกรรมค#อ ให(เป8นกรอบในการออกแบบส.วนประกอบของระบบให(เป8นในท�ศทางเดั�ยวก�นและอย5.บนสถึาป;ต์ยกรรมเดั�ยวก�น

Page 23: 290342  Software Development Process

Patterns

การใช้(โครงสร(างต์�วแบบมาช้.วยแก(ป;ญหาการออกแบบ

โดัยน าหล�กและว�ธ์�การแก(ป;ญหาช้น�ดัหน+&งช้น�ดัใดัจำากต์�วแบบ จำะสามารถึน าไปใช้(ก�บป;ญหาช้น�ดัเดั�ยวก�นท�&เก�ดัข+$นซ $าไดั(

การใช้( pattern จำะช้.วยให(งานผูล�ต์ซอฟต์�แวร�ดั าเน�นไปไดั(อย.างรวดัเร3ว ประหย�ดัเวลาในการออกแบบ

Page 24: 290342  Software Development Process

Modularityการแบ.งระบบหร#อซอฟต์�แวร�แยกออกเป8น

ส.วนๆ แต์.ละส.วน เร�ยกว.า โมดั5ล “ ”(Module) ซ+&งจำะประกอบก�นไดั(เพื้#&อท างานต์ามความต์(องการ

Page 25: 290342  Software Development Process

Modularity

optimal number of modules

cost of software

number of modules

moduleintegration

cost

module development cost

Page 26: 290342  Software Development Process

Information Hiding

โมดั5ลจำะต์(องซ.อนรายละเอ�ยดัการท างานไว( ไม.ว.าจำะเป8นอ�ลกอร�ท+มหร#อข(อม5ลของโมดั5ล เพื้#&อป@องก�นการเข(าถึ+งข(อม5ลภายในโมดั5ลโดัยไม.จำ าเป8น

Page 27: 290342  Software Development Process

Information Hiding

module

controlledinterface

"secret"

• algorithm

• data structure

• details of external interface

• resource allocation policy

clients

a specific design decision

Page 28: 290342  Software Development Process

Refactoring

เป8นเทคน�คในการปร�บโครงสร(างการออกแบบ เป8นการจำ�ดัระเบ�ยบใหม. เพื้#&อให(งานออกแบบองค�

ประกอบย.อย หร#อต์�วโค(ดัม�ล�กษณะท�&ง.ายข+$น โดัยไม.ไปเปล�&ยนแปลงพื้ฤต์�กรรมของการท างาน

Page 29: 290342  Software Development Process

ต์�วอย0าง Refactoring Collapse Hierarchy

A superclass and subclass are not very different.

Merge them together.

Page 30: 290342  Software Development Process

ต์�วอย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; }

Page 31: 290342  Software Development Process

Functional independence

การออกแบบให(โมดั5ลม�ความเป8นอ�สระต์.อก�นโมดั5ลท�&เป8นอ�สระต์.อก�นจำะง.ายต์.อการบ าร�ง

ร�กษาการประเม�นระดั�บของความเป8นอ�สระของโมดั5ล

ประเม�นไดั(จำากความแข3งแกร.งของโมดั5ล (Cohesion)ความส�มพื้�นธ์�ระหว.างโมดั5ล (Coupling)

Page 32: 290342  Software Development Process

Functional independence

ความเป8นอ�สระ

โมดั5ล

Modular Design

Page 33: 290342  Software Development Process

CohesionFunctional CohesionSequence CohesionCommunicational CohesionProcedural CohesionTemporal CohesionLogical CohesionCoincidental Cohesion

Good

Bad

Page 34: 290342  Software Development Process

Functional Cohesion

Compute price

Select Seat

Verify Customer

M1

M2

M3

Page 35: 290342  Software Development Process

Sequence Cohesion

Function A

Function B

Function C

M1

Page 36: 290342  Software Development Process

Communicational Cohesion

Find Title of Book

Find Price of Book

Find Publisher of Book

Find Author of Book

book

M1

Page 37: 290342  Software Development Process

Procedural Cohesion

Function A

Function B

Function C

M1

Page 38: 290342  Software Development Process

Temporal Cohesion

Time to initial

Time to + x

Time to + 2x

M1

Page 39: 290342  Software Development Process

Logical Cohesion

Go by Car

Go by Train

Go by Boat

Go by Plane

M1

Page 40: 290342  Software Development Process

Coincidental Cohesion

Function A

Function B

Function E

M1

Function C

Function F

Page 41: 290342  Software Development Process

CouplingData CouplingStamp CouplingControl CouplingCommon CouplingContent Coupling

Good

Bad

Page 42: 290342  Software Development Process

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

Page 43: 290342  Software Development Process

Stamp Coupling

Edit student record

Retrieve studentrecord

Student nameStudent ID

Student addresscourse

Student record EOF

Student

Page 44: 290342  Software Development Process

Control Coupling

Edit student record

Retrieve studentrecord

Student ID

Done (True or false)

Student record EOF

flag

Page 45: 290342  Software Development Process

Common Coupling

Global:A1A2A3

Variables:V1V2

Module M1------

Change A1 to Zero

Module M13------

Increment A3

Module M21------

sum = V2+A2

Page 46: 290342  Software Development Process

Content Coupling

M1

M12 M13

M21

Module 12------Goto D1

------D1

Page 47: 290342  Software Development Process

Target of Module Design

High CohesionLow Coupling

High coupling Low coupling

low cohesion

high cohesion

Page 48: 290342  Software Development Process

แบบจั(าลองท��ใช้/ใน์การออกแบบ กล�.ม Structural Description (Static

View) กล�.ม Behavioral Description

(Dynamic View)

Page 49: 290342  Software Development Process

แบบจั(าลองท��ใช้/ใน์การออกแบบ กล�.ม 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

Page 50: 290342  Software Development Process

แบบจั(าลองท��ใช้/ใน์การออกแบบ กล�.ม 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