290342 software development process

Post on 31-Dec-2015

72 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

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

top related