290342 software development process n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
290342 Software Development Process PowerPoint Presentation
Download Presentation
290342 Software Development Process

Loading in 2 Seconds...

play fullscreen
1 / 50

290342 Software Development Process - PowerPoint PPT Presentation


  • 163 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '290342 Software Development Process' - philip-clements


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
290342 software development process

290342 Software Development Process

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

อ.ธารารัตน์ พวงสุวรรณ

คณะวิทยาศาสตร์และศิลปศาสตร์

มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี

slide2
เนื้อหา
  • ความหมายของการออกแบบซอฟต์แวร์และวิศวกรรมการออกแบบ
  • ระดับของกระบวนการออกแบบซอฟต์แวร์
  • กลยุทธ์และระเบียบวิธีในการออกแบบซอฟต์แวร์
  • แบบจำลองการออกแบบ (Design Model)
  • หลักการออกแบบซอฟต์แวร์
  • หลักการพื้นฐานในการออกแบบซอฟต์แวร์
  • แบบจำลองที่ใช้ในการออกแบบ
slide3
การออกแบบซอฟต์แวร์

Quality

Customer’ requirement

product or

system

Translate by design

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

Maintenance

Maintenance

Test

Test

Implementation

Implementation

Design

With Design

Without Design

slide5
การออกแบบซอฟตแวร์

การออกแบบซอฟตแวร หมายถึง กระบวนการกําหนด สถาปตยกรรม สวนประกอบ สวนต่อประสาน และ ลักษณะดานอื่นๆ ของระบบ สิ่งที่ไดจากการออกแบบก็คือ แบบจำลองการออกแบบ(Design Model)นั่นเอง

การออกแบบซอฟตแวร์ เปนการนําขอกําหนดความตองการของ ผูใชมากําหนดรายละเอียดโครงสรางภายในของซอฟตแวร เพื่อ นําไปใชในการเขียนและทดสอบโปรแกรมในระยะการสรางซอฟต์แวร์

slide6
วิศวกรรมการออกแบบ

วิศวกรรมการออกแบบเป็นการรวบรวมหลักการ แนวความคิด และวิธีปฏิบัติที่นำไปสู่การพัฒนาระบบคอมพิวเตอร์ที่มีคุณภาพสูง

เป็นกิจกรรมหลักอย่างหนึ่งของวิศวกรรมคอมพิวเตอร์

มีเปาหมาย คือ การสรางแบบรางของระบบ หรือมีการนําเสนอระบบในแตละด้าน ใหมีคุณสมบัติ

1. firmness

2. commodity

3. delight

***** ทุกข้อดังกล่าว คือ คุณภาพ ****

slide7
กระบวนการออกแบบซอฟต์แวร์กระบวนการออกแบบซอฟต์แวร์
  • จะมีลักษณะการทำงานซ้ำๆเนื่องจากต้องนำความต้องการของระบบที่ผ่านการวิเคราะห์แล้วในแต่ละด้าน มาแปลงเป็นข้อกำหนดของการออกแบบ ได้แก่
    • ข้อมูล
    • ฟังก์ชันการทำงาน
    • ส่วนประสาน
slide8
ระดับของกระบวนการออกแบบซอฟต์แวร์ระดับของกระบวนการออกแบบซอฟต์แวร์
  • การออกแบบเชิงสถาปัตยกรรม Architectural Design
  • การออกแบบในรายละเอียด Detailed Design
slide9
กลยุทธ์ในการออกแบบซอฟต์แวร์กลยุทธ์ในการออกแบบซอฟต์แวร์
  • กลยุทธ์ทั่วไปในการออกแบบซอฟต์แวร์ (General Strategy)
    • เป็นกลยุทธ์ในการออกแบบซอฟต์แวร์ทั่วไป เช่น
      • Top-Down and Bottom-up
      • Divide-and Conquer
      • Design Pattern
      • Stepwise Refinement
slide10
ระเบียบวิธีการออกแบบซอฟต์แวร์ระเบียบวิธีการออกแบบซอฟต์แวร์
  • การออกแบบเชิงฟังก์ชัน (Function-OrientedDesign)
  • การออกแบบเชิงวัตถุ (Object-orientedDsign)
  • การออกแบบโดยใช้ข้อมูลเป็นศูนย์กลาง (Data-structureCenteredDesign)
  • การออกแบบคอมโพเน้นท์ (Component-baseDesign: CBD)
slide11
การออกแบบซอฟต์แวร์

จากขั้นตอนการวิเคราะห์จะทำให้ได้ข้อมูล เพื่อจะนำไปสร้างแบบจำลองทั้ง 4 ประเภท ซึ่งจะนำไปใช้ต่อในขั้นตอนการออกแบบ

Scenerio-based elements องค์ประกอบเชิงฉากบรรยาย: use-case diagram

Class-based elememts องค์ประกอบเชิงคลาส : class diagram

Flow-oriented elements องค์ประกอบเชิงกระแส : Data flow diagram

Behavioral elements องค์ประกอบเชิงพฤติกรรม : State diagram, Sequence diagram

slide12
การแปลงจำลองการวิเคราะห์เป็นแบบจำลองการออกแบบการแปลงจำลองการวิเคราะห์เป็นแบบจำลองการออกแบบ
design model
แบบจำลองการออกแบบ (Design Model)

Data/Class Design

Architecture Design

Interface Design

Component-level Design

slide14
หลักการออกแบบซอฟต์แวร์หลักการออกแบบซอฟต์แวร์

การออกแบบควรแสดงให้เห็นถึงรูปแบบสถาปัตยกรรมที่เลือกใช้อย่างชัดเจนและมีแบบแผน       

การออกแบบควรมิลักษณะเป็นโมดูล    

การออกแบบควรนำเสนอด้านข้อมูล สถาปัตยกรรม ส่วนประสาน และคอมโพเน้นท์ที่ชัดเจน     

ควรออกแบบคอมโพเน้นท์ให้มีอิสระต่อกัน

ควรออกแบบให้ส่วนประสานระหว่างคอมโพเน้นท์กับสภาพแวดล้อมภายนอกมีความซับซ้อนน้อยที่สุด

slide15
หลักการออกแบบซอฟต์แวร์หลักการออกแบบซอฟต์แวร์

การออกแบบควรนำข้อมูลมาจากการวิเคราะห์ระบบ และใช้ระเบียบวิธีปฏิบัติเดียวกัน

สัญลักษณ์ที่ใช้ในการออกแบบควรสื่อความหมายได้ชัดเจน และเป็นมาตรฐาน

งานออกแบบควรมีโครงสร้างที่ดี เพื่อการแก้ไขที่ง่ายและใช้ต้นทุนน้อย

การออกแบบในระดับคอมโพเน้นท์มีลักษณะแบบ FunctionalIndependence คือ ฟังก์ชันงานมีความเป็นอิสระต่อกัน ไม่ขึ้นต่อกัน

คอมโพเน้นท์ของซอฟต์แวร์จะต้องมีลักษณะการขึ้นต่อกันน้อยที่สุด (LooselyCoupled)

slide16
หลักการพื้นฐานในการออกแบบซอฟต์แวร์หลักการพื้นฐานในการออกแบบซอฟต์แวร์

Abstraction

Refinement

Architecture

Patterns

Modularity

Information Hiding

Refactoring

Functional independence

abstraction
Abstraction

การกำหนดสาระสำคัญ โดยสามารถกำหนดสาระสำคัญได้หลายระดับ

เป็นแนวคิดพื้นฐานในการออกแบบ

Procedural Abstraction

Data Abstraction

procedural abstraction
Procedural Abstraction

open

details of enter

algorithm

implemented with a "knowledge" of the

object that is associated with enter

procedural abstraction1
Procedural Abstraction

“Open”

1. เดินไปที่ประตู

2. ยื่นมือไปที่ลูกบิด

3. หมุนลูกบิด

4. ดึงประตู

5. เดินเข้าประตู

data abstraction
Data Abstraction

door

manufacturer

model number

type

swing direction

inserts

lights

type

number

weight

opening mechanism

implemented as a data structure

refinement
Refinement

การลงรายละเอียดเพิ่มเติมรายละเอียดกระบวนการทำงาน

จากประโยคที่ระบุหน้าที่ไปทีละขั้นตอน จนกว่าจะได้ประโยคภาษาโปรแกรม

open

walk to door;

reach for knob;

open door;

repeat until door opens

turn knob clockwise;

walk through;

if knob doesn't turn, then

close door.

take key out;

find correct key;

insert in lock;

endif

pull/push door

move out of way;

end repeat

architecture
Architecture

สถาปัตยกรรมซอฟต์แวร์ (SoftwareArchitecture) หมายถึง การแสดงความสัมพันธ์ระหว่างระบบย่อยและส่วนประกอบ (คอมโพเน้นท์) เพื่อกำหนดโครงสร้างหรือระบบภายในซอฟต์แวร์

เป้าหมายของการออกแบบสถาปัตยกรรมคือ ให้เป็นกรอบในการออกแบบส่วนประกอบของระบบให้เป็นในทิศทางเดียวกันและอยู่บนสถาปัตยกรรมเดียวกัน

patterns
Patterns

การใช้โครงสร้างตัวแบบมาช่วยแก้ปัญหาการออกแบบ

โดยนำหลักและวิธีการแก้ปัญหาชนิดหนึ่งชนิดใดจากตัวแบบ จะสามารถนำไปใช้กับปัญหาชนิดเดียวกันที่เกิดขึ้นซ้ำได้

การใช้ pattern จะช่วยให้งานผลิตซอฟต์แวร์ดำเนินไปได้อย่างรวดเร็ว ประหยัดเวลาในการออกแบบ

modularity
Modularity

การแบ่งระบบหรือซอฟต์แวร์แยกออกเป็นส่วนๆ แต่ละส่วน เรียกว่า “โมดูล” (Module) ซึ่งจะประกอบกันได้เพื่อทำงานตามความต้องการ

modularity1
Modularity

module development cost

cost of

software

module

integration

cost

optimal number

number of modules

of modules

information hiding
Information Hiding

โมดูลจะต้องซ่อนรายละเอียดการทำงานไว้ ไม่ว่าจะเป็นอัลกอริทึมหรือข้อมูลของโมดูล เพื่อป้องกันการเข้าถึงข้อมูลภายในโมดูลโดยไม่จำเป็น

information hiding1
Information Hiding

module

• algorithm

controlled

• data structure

interface

• details of external interface

• resource allocation policy

clients

"secret"

a specific design decision

refactoring
Refactoring

เป็นเทคนิคในการปรับโครงสร้างการออกแบบ

เป็นการจัดระเบียบใหม่ เพื่อให้งานออกแบบองค์ประกอบย่อย หรือตัวโค้ดมีลักษณะที่ง่ายขึ้น โดยไม่ไปเปลี่ยนแปลงพฤติกรรมของการทำงาน

refactoring1
ตัวอย่าง Refactoring

Collapse Hierarchy

A superclass and subclass are not very different.

Merge them together.

refactoring2
ตัวอย่าง 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.

intgetRating() {

return (moreThanFiveLateDeliveries()) ? 2 : 1;

}

booleanmoreThanFiveLateDeliveries() {

return _numberOfLateDeliveries > 5;

}

intgetRating() {

return (_numberOfLateDeliveries > 5) ? 2 : 1;

}

functional independence
Functional independence

การออกแบบให้โมดูลมีความเป็นอิสระต่อกัน

โมดูลที่เป็นอิสระต่อกันจะง่ายต่อการบำรุงรักษา

การประเมินระดับของความเป็นอิสระของโมดูล ประเมินได้จาก

ความแข็งแกร่งของโมดูล (Cohesion)

ความสัมพันธ์ระหว่างโมดูล (Coupling)

functional independence1
Functional independence

ความเป็นอิสระ

โมดูล

Modular Design

cohesion
Cohesion

Functional Cohesion

Sequence Cohesion

Communicational Cohesion

Procedural Cohesion

Temporal Cohesion

Logical Cohesion

Coincidental Cohesion

Good

Bad

functional cohesion
Functional Cohesion

M1

Compute price

M2

Select Seat

M3

Verify Customer

sequence cohesion
Sequence Cohesion

M1

Function A

Function B

Function C

communicational cohesion
Communicational Cohesion

book

M1

Find Title of Book

Find Price of Book

Find Publisher of Book

Find Author of Book

procedural cohesion
Procedural Cohesion

M1

Function A

Function B

Function C

temporal cohesion
Temporal Cohesion

M1

Time to initial

Time to + x

Time to + 2x

logical cohesion
Logical Cohesion

M1

Go by Car

Go by Train

Go by Boat

Go by Plane

coincidental cohesion
Coincidental Cohesion

M1

Function A

Function B

Function C

Function E

Function F

coupling
Coupling

Data Coupling

Stamp Coupling

Control Coupling

Common Coupling

Content Coupling

Good

Bad

data coupling
Data Coupling

Edit student record

Edit student record

Student name

Student ID

Student address

course

Student record EOF

Student record EOF

Student ID

Retrieve student

record

Retrieve student

record

XData Coupling

 Data Coupling

stamp coupling
Stamp Coupling

Edit student record

Student name

Student ID

Student address

course

Student record EOF

Student

Retrieve student

record

control coupling
Control Coupling

Edit student record

Student ID

Done (True or false)

Student record EOF

flag

Retrieve student

record

common coupling
Common Coupling

Module M1

---

---

Change A1 to Zero

Global:

A1

A2

A3

Variables:

V1

V2

Module M21

---

---

sum = V2+A2

Module M13

---

---

Increment A3

content coupling
Content Coupling

M1

M12

Module 12

---

---

Goto D1

M13

M21

---

---

D1

target of module design
Target of Module Design

High Cohesion

Low Coupling

low cohesion

high cohesion

High coupling

Low coupling

slide48
แบบจำลองที่ใช้ในการออกแบบ
  • กลุ่ม StructuralDescription (StaticView)
  • กลุ่ม BehavioralDescription (DynamicView)
slide49
แบบจำลองที่ใช้ในการออกแบบ
  • กลุ่ม StructuralDescription (StaticView) เช่น
    • ArchitectureDescriptionLanguageADU
    • ClassAndObjectDiagram
    • ComponentDiagram
    • DeploymentDiagram
    • EntityRelationshipDiagramERD
    • InterfaceDescriptionLanguageIDL
    • JacksonStructureDiagram
    • StructureChart
slide50
แบบจำลองที่ใช้ในการออกแบบ
  • กลุ่ม BehavioralDescription (DynamicView) ได้แก่
    • ActivityDiagram
    • CollaborativeDiagram
    • DataFlowDiagram
    • DecisionTable
    • FlowchartandStructureFlowchart
    • SequenceDiagram
    • Pseudo-codeandProgramDesignLanguagePDL