โมเดลในการพัฒนาซอฟต์แวร์

Download Report

Transcript โมเดลในการพัฒนาซอฟต์แวร์

แบบจำลองกระบวนกำร
ซอฟต์แวร์
Software Process Model
Software Process Model
• Softwae Process Model คือ แบบจำลอง
กระบวนกำรพัฒนำซอฟต์ แวร์ แบ่ งเป็ น 4 ประเภท
ได้ แก่
– Linear Model
– Iterative Model
– Incremental Model
– Evolutionary Model
The Linear Model
หรื อ
Classic Life Cycle , Waterfall Model
จาก Roger s. Pressman . Software Engineering a Practitioner’s Approach
Waterfall Model
Waterfall Model
คุณลักษณะของ Waterfall Model
• เป็ น Seriesของขัน้ ตอนกำรทำงำน คล้ ำยสำยงำน
กำรผลิต (Product Line)
• แต่ ละขัน้ หน้ ำที่และProduct ถูกกำหนดอย่ ำงชัดเจน
• Product ส่ วนใหญ่ เป็ นเอกสำร (Document)
• Productที่ผลิตในแต่ ละขัน้ จะเป็ นพืน้ ฐำนสำหรั บงำน
ขัน้ ต่ อไป
• สำมำรถตรวจสอบควำมถูกต้ องของงำนในแต่ ละขัน้
ได้
ข้ อดีของ Waterfall Model
• แบ่ งงำนยำกให้ เป็ นงำนที่เล็ก ง่ ำยต่ อกำรจัดกำร
• มีกำรกำหนดProductที่ต้องส่ งมอบในแต่ ละงำน
อย่ ำงชัดเจน
ข้ อจำกัดของ Waterfall Model
• ถ้ ำ ค้ นพบข้ อผิดพลำดของขัน้ ที่เสร็จสิน้ แล้ ว ไม่ สำมำรถ
แก้ ไขได้ กำรแก้ ไขจำเป็ นต้ องเริ่มรอบ (Iteration) ใหม่
– ระหว่ ำงกำรทำCoding เจอข้ อผิดพลำดในงำนออกแบบ
ในควำมเป็ นจริง หลังกำรทำงำนในแต่ ละขัน้ ควรสำมำรถ
ย้ อนไปแก้ ไขควำมผิดพลำดในขัน้ ใดใดก็ได้ ก่อนหน้ ำ
ดังนัน้ ในทำงปฏิบัติ ขัน้ ตอนกำรทำงำนใน Waterfall จึงไม่
เป็ นเชิงเส้ น (Linear)
• ข้ อเสียหลักคือ ลูกค้ ำเห็นและทดลองใช้ Software ก็
ต่ อเมื่อถึงขัน้ ตอนสุดท้ ำย หำกมีบำงอย่ ำงที่ไม่ ตรงกับ
ควำมต้ องกำรของลูกค้ ำ กำรแก้ ไขยำก แพง เสียเวลำ
Waterfall Model
Requirement Analysis
V&V
Design
V&V
Implementation
V&V
Testing
V&V
Maintenance
V&V
WHAT ?????
V&V
Verification
กำรตรวจสอบว่ ำ ระบบทำงำนตำมที่กำหนดไว้ หรื อไม่ ?
Are we building the system right ?
Boehm
Validation
กำรตรวจสอบว่ ำ ระบบสำมำรถทำงำนตำมควำม
ต้ องกำรของผู้ใช้ หรื อไม่ ?
Are we building the right system ?
Boehm
Prototyping Model
• วิธีกำรหนึง่ ที่ประกันว่ำลูกค้ ำจะได้ ในสิ่งที่ต้องกำร
และอย่ำงพึงพอใจ
• Prototype คือระบบที่สมบูรณ์หรื อเป็ นส่วนหนึง่
ของระบบที่สง่ มอบแก่ลกู ค้ ำได้ ทดลองใช้ เพื่อให้
ลูกค้ ำติชมตังแต่
้ เนิ่นๆ
• ลูกค้ ำบอกควำมพอใจหรื อบอกจุดที่ต้องแก้ ไข
• Analyst และ Designer สำมำรถแสดง
คุณสมบัติของระบบแก่ลกู ค้ ำได้ ช่วยลูกค้ ำรู้ควำม
ต้ องกำรที่แท้ จริง
Prototyping Model
Prototyping Model
Prototyping Model
Specification
Outline
Description
Development
Initial
Version
Intermediate
Versions
Validation
Final
Version
หลักเกณฑ์ กำรทำ Prototype
• Prototype มีเฉพำะ Features ที่สำคัญของระบบ
(ละเลยเรื่ องNetwork connection, Error
Handling)
• Prototype ต่ ำงกับ ระบบจริง ที่ Performance
และ ปริมำณของข้ อมูลที่ใช้
• ต้ นทุนกำรทำ Prototype ต้ องถูก
• กำรทำ Prototype หนึ่งครั ง้ ต้ องใช้ เวลำน้ อย
Prototyping Model
• แบ่ งเป็ น 2 ตระกูลขึน้ อยู่กับกำรนำPrototypeไปใช้
– Throwaway (ดอกไม้ ริมทำง)
เป็ นต้ นแบบสำหรับกำรสร้ ำงระบบจริง กำรImplement
ระบบจริงอำจต่ ำงจำกImplementationของPrototype
– Evolutionary (ปั ้นมำกับมือ)
ค่ อยๆ ขยำยขีดควำมสำมำรถของ Prototype จนเป็ น
ระบบที่สมบูรณ์ ท่ สี ่ งมอบ วิธีกำรImplementของระบบ
จริงกับPrototypeเหมือนกัน
หลักเกณฑ์ กำรทำ Throwaway
Prototype (ดอกไม้ ริมทำง)
• จุดหมำยกำรทำ = Specification ที่ชัดเจน
• เริ่มสร้ ำง Prototype จำกควำมต้ องกำรที่ไม่ ชัดเจน
ค่ อยๆ เพิ่มควำมต้ องกำรเข้ ำไป
• Prototypeอำจจะ implement ควำมต้ องกำรที่ชัดเจน
อยู่แล้ วก็ได้
• ตัวอย่ ำง เขียน Functions ต่ ำงๆที่สำคัญด้ วย Lisp
เมื่อได้ Prototypeสุดท้ ำย Implement ระบบจริง ด้ วย
หลักเกณฑ์ กำรทำ Evolutionary
Prototype (ปั ้นมำกับมือ)
• จุดหมำยกำรทำ = ระบบที่สมบูรณ์ ส่ งมอบได้
• เริ่มสร้ ำงPrototype จำกควำมต้ องกำรที่ชัดเจน ค่ อยๆ
เพิ่มควำมต้ องกำรที่ไม่ ชัดเจนเข้ ำไป
• ตัวอย่ ำง เขียน Features ต่ ำงๆที่สำคัญ เมื่อลูกค้ ำ
ตรวจสอบว่ ำถูก จึงเพิ่ม Featuresจนได้ ระบบสุดท้ ำย
ข้ อดีอ่ นื ๆของPrototype
• ใช้ Train กำรใช้ Software แก่ ผ้ ูใช้ พร้ อมกับ
งำน Development
• ใช้ แสดงควำมก้ ำวหน้ ำ และควำมสำเร็จแก่
Project Manager
ข้ อเสียของPrototyping Model
• กำรทำPrototypeจะต้ องมีบุคลำกรที่มี
ควำมสำมำรถด้ ำน Developmentสูงเพื่อพัฒนำ
Prototype ได้ เร็ว
• กำรเปลี่ยนแปลงหรื อกำรเพิ่มRequirementsเพื่อ
สร้ ำงPrototypeหลำยVersionทำให้ ได้ Software
Structure ที่ไม่ ดี
• กำรผลิตDocumentสำหรั บ Prototype ในแต่ ละ
Version จะเป็ นกำรสิน้ เปลืองงบประมำณ
ข้ อแนะนำกำรใช้ Prototyping
Model
• เป็ นที่ยอมรับว่ ำกำรสร้ ำงSoftwareโดยใช้
Prototype จะมีประสิทธิภำพดีกว่ ำกำรใช้
Waterfall Modelอย่ ำงเดียว
• แต่ จำกข้ อเสียด้ ำนบน แนะนำให้ ใช้
Prototypingเพื่อวิเครำะห์ หำRequirementsที่
ชัดเจนของลูกค้ ำและค่ อยพัฒนำSoftware
ตำมขัน้ ตอนในWaterfall Model
เครื่ องมือสร้ ำงPrototype
• Formal, Mathematical language: LOTOS ทำ Animationได้ แต่
ขำด Use Interface Prototype
• Very High-Level Languages: C++, Java โดยเฉพำะ Smalltalk
• Logic Programming: Prolog
• Fourth-Generation Language (4GL): คล้ ำยdatabase query
language เช่ น SQL
• ภำษำ Script ทัง้ หลำย Tcl/Tk, JavaScript
• Visual Basic: พัฒนำUIด้ วยวิธี Drag and Drop
Evolutionary or Spiral Model
• Customer Communication
• Planning
• Risk
Analysis
• Engineering
• Construction
• Customer
and
Evaluation
Release
Roger s. Pressman
Evolutionary or Spiral Model
Evolutionary or Spiral Model
Evolutionary or Spiral Model
The Spiral Model
• พัฒนำโดย Boehm ในค.ศ 1988
• แบบจำลองบันไดเวียนเป็ นแบบจำลองที่รวม
กระบวนกำรทำซ ้ำของกำรสร้ ำงต้ นแบบ เข้ ำกับ
Linear sequential model โดยมีกำรพัฒนำอย่ำง
รวดเร็ว
The Spiral Model
• แบบจำลองบันไดเวียน แบ่งออกได้ เป็ นส่วนย่อยๆ
โดยปกติจะแบ่งเป็ น 3 ส่วน หรื อ 6 ส่วนงำนเช่น
– กำรติดต่อสื่อสำรกันระหว่ำงผู้ใช้ และผู้พฒ
ั นำระบบ
– กำรวำงแผน
– กำรวิเครำะห์ควำมเสี่ยง
– วิศวกรรม
– กำรสร้ ำงและนำไปใช้
– กำรประเมินผลจำกผู้ใช้
The Spiral Model (cont.)
• แต่ ละรอบของกำรทำซำ้
– วิเครำะห์ควำมเสี่ยง
– พัฒนำต้ นแบบสำหรับตรวจสอบควำมเป็ นไปได้
และควำมต้ องกำร
– เมื่อพบควำมเสี่ยงผู้จดั กำรโครงกำรจะต้ อง
ตัดสินใจทีจะกำจัดหรื อลดควำมเสี่ยง
The Spiral Model (cont.)
• ปั ญหำของกำรใช้ แบบจำลองบันไดเวียน ในกำร
พัฒนำซอฟต์แวร์ คือกำรโน้ มน้ ำวให้ ผ้ ใู ช้ ระบบ
เห็นชอบกับวิธีกำรที่เป็ นกระบวนทำซ ้ำแบบมี
วิวฒ
ั นำกำร
• ควำมสำเร็จของกำรใช้ แบบจำลองบันไดเวียน
ผู้พฒ
ั นำจะต้ องมีควำมเชี่ยวชำญในด้ ำนกำร
ประเมินผลควำมเสี่ยง
Evolutionary or Spiral Model
• เป็ น model ที่ใช้ ควำมเสี่ยงเป็ นเครื่ องตัดสินใจว่ำจะ
กระทำอะไรต่อไป (risk-driven)
• ขันตอนในแต่
้
ละรอบ
– วิเครำะห์เป้ำหมำย แนวทำงเลือกต่ำงๆ เงื่อนไขต่ำงๆ
– วิเครำะห์ควำมเสี่ยง
– พยำยำมลดควำมเสี่ยงนัน้ เช่น ทำ Prototype เพื่อทดสอบ
– พัฒนำ product
– นำ product ให้ ลกู ค้ ำทดสอบ