Issuu on Google+

กระบวนการทางซอฟต์แวร์ Software Process วุฒิพงษ์ เรื อนทอง ภาควิชา วิทยาการคอมพิวเตอร์และเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร


Software Process „

„

กระบวนการทางซอฟต์แวร์ (Software Process) คือ กลุ่มของกิจกรรม หรื อ กรอบงานที่ตอ้ งกระทําในการพัฒนาระบบ ซอฟต์แวร์ ซึ่ งประกอบด้วย กรอบงาน 2 ประเภท Framework Activities „

„

เป็ นกรอบงานหลักที่ตอ้ งทําแน่นอน ได้แก่ กิจกรรมตาม SDLC

Umbrella Activities „

เป็ นกรอบงานที่ครอบคลุมกรอบงานหลัก เพื่อให้กรอบงานหลัก ดําเนินการได้อย่างมีประสิ ทธิภาพและมีคุณภาพตามที่ตอ้ งการ


Software Process Framework Process framework Umbrella Activities Framework Activity 1

Tasks set

Framework Activity 2

Tasks set

Framework Activities -Communication -Planning -Modeling -Construction -Deployment Umbrella Activities - Project Tracking and Control - Risk management - Quality Assurance - Formal Review - Measurement - Configuration Management

Framework Activity n

Tasks set

กิจกรรมต่างที่เกี่ยวข้องกับ Software Engineering


Framework Activities „

ประกอบด้วยกิจกรรมหลักที่มีอยูใ่ นกระบวนการพัฒนาระบบ ซึ่ง ประกอบด้วยกิจกรรมดังต่อไปนี้ „ „ „ „ „ „ „ „ „

การวางแผน (Planning) การวิเคราะห์ (Analysis) การออกแบบ (Design) การจัดทําเอกสาร (Documentation) การสร้างให้สาํ เร็ จ (Implementation) การทดสอบ (Testing) การประเมิน (Evaluation) การติดตั้งระบบ (Deployment) การปรับปรุ ง (Maintenance)


Umbrella Activities „

ประกอบด้วยกิจกรรมดังต่อไปนี้ „ „ „ „

การบริ หารโครงการ (Project Management) การบริ หารความเสี่ ยง (Risk Management) การประกันคุณภาพ (Quality Assurance) การวัด (Measurement) „ „

„

วัด Product วัด Process

การบริ หารการเปลี่ยนแปลง (Configuration Management) „

งานที่เกี่ยวข้องกับการติดตาม (Tracking) และควบคุม (Controlling) การเปลี่ยนแปลงที่เกิดขึ้นใน ซอฟต์แวร์ เช่น การควบคุมการเปลี่ยนรุ่ นของซอฟต์แวร์(revision control) เป็ นต้น


Development Methodology „

ในระเบียบวิธีของการพัฒนาระบบ จําเป็ นต้องคํานึงถึงองค์ประกอบ ที่สาํ คัญต่อไปนี้ „ „ „

แบบจําลองของกระบวนการ (Software Process Model) วิธีการและเทคนิค (Development Approach and Techniques ) เครื่ องมือ (Tools)


แบบจําลองกระบวนการ (Software Process Model) „ „ „

แบบจําลองของกระบวนการพัฒนา คือ แนวคิด (Concepts) ซึ่งใช้เป็ นกรอบ ของขั้นตอนในการดําเนินกิจกรรมการพัฒนาระบบด้านต่างๆ แบบจําลองของกระบวน ควรเป็ นอิสระ ต่อวิธีการและเทคนิค ที่จะใช้พฒั นา ระบบ ตลอดจนเครื่ องมือที่จะใช้ในการพัฒนาระบบ รู ปแบบทัว่ ไปของโมเดลกระบวนการพัฒนา „ „ „ „

Waterfall Model Iterative and Incremental Model Evolutionary Model Reused-Oriented Model


Waterfall Model Requirement Analysis System Analysis System Design System Implementation

Maintenance

System Operation


Waterfall Model „

„

„

„

„

Waterfall Model เป็ นแบบจําลองกระบวนการพัฒนาระบบแบบดัง่ เดิม โดยมีแนวคิดว่ากิจกรรม หนึ่งจะเริ่ มต้นดําเนินการได้กต็ ่อเมื่อกิจกรรมก่อนหน้าได้ทาํ เสร็ จสิ้ นสมบูรณ์แล้ว ในปัจจุบนั นักพัฒนาระบบได้ตระหนักแล้วว่า Waterfall Model ไม่เหมาะสมกับการนํามาใช้เป็ น แบบแผนของการพัฒนาระบบพัฒนาระบบอีกต่อไป เนื่องจากระบบในปั จจุบนั มีความซับซ้อน นักพัฒนาระบบเองไม่สามารถตอบได้อย่างแน่นอนว่า กิจกรรมที่ได้ดาํ เนินการนั้นได้ทาํ เสร็ จสิ้นสมบูรณ์แล้วหรื อยัง ถ้านํา Product ที่ยงั ไม่สมบูรณ์ไปพัฒนาต่อในขั้นตอนกิจกรรมต่อไปก็จะทําให้ Product ที่จะได้จาก ขั้นตอนต่อไปไม่สมบูรณ์เช่นกัน เปรียบเสมือนการส่ งมอบความเสี่ ยงให้ กนั เป็ นทอดๆ ตัวอย่างเช่น การวิเคราะห์ความต้องการเราไม่อาจบอกได้วา่ ความต้องการที่วเิ คราะห์มานั้นเป็ น ความต้องการที่ถูกต้องแน่นอนและครบถ้วนสมบูรณ์ ซึ่งในความเป็ นจริ งความต้องการมีการ เปลี่ยนแปลงได้ตลอดเวลาและสามารถเกิดความต้องการใหม่ๆได้เสมอ ถ้าเรานําความต้องการ ทั้งหมดมาพัฒนาในครั้งเดียวเราจะทราบอีกครั้งว่า ความต้องการใดที่ไม่ถูกต้องก็ต่อเมื่อระบบได้ พัฒนาเสร็ จและได้รับการประเมินจากผูใ้ ช้แล้ว ซึ่งใช้เวลานานกว่าจะทราบได้


Iterative and Incremental Model Iteration1

Iteration2

Iteration3

Requirement1

Requirement2

Requirement3

SA

SA

SA

SD

SD

SD

Imp

Imp

Imp

Op

Op

Op

Built1

Built1 Built2

Built1 Built2 Built3


Iterative and Incremental Model „

„ „

„

เป็ นแบบจําลองกระบวนการซึ่ งรองรับความไม่แน่นอนต่างๆ ที่จะ เกิดขึ้นในการพัฒนาระบบโดยมีแนวคิดว่า การค่อยๆพัฒนาระบบ จากเล็กไปใหญ่เป็ นการลดความเสี่ ยงของการพัฒนา การพัฒนานั้นประกอบด้วยหลายรอบของ SDLC แต่ละรอบจะพัฒนาเฉพาะส่ วน (ไม่ใช่ทีเดียวทั้งหมด) แล้วค่อยๆ เพิ่มเติมให้ระบบใหญ่ข้ ึนจนกว่าจะเสร็ จสมบูรณ์ (ผูใ้ ช้ยอมรับ) ไม่อาจคาดการณ์อย่างแน่นอนได้วา่ จะต้องใช้รอบในการพัฒนากี่ รอบ


Evolutionary Development


Evolutionary Development „

„ „ „

เริ่ มต้นจากการกําหนดความต้องการเบื้องต้น แล้วทําการพัฒนาในเชิงวิวฒั น์ (Evolutionary) ซึ่ งเป็ นการปรับปรุ งให้ระบบมีความสมบูรณ์มากขึ้นเรื่ อยๆ จนกว่าระบบที่พฒั นานั้นจะสามารถใช้งานได้จริ งและตรงกับความต้องการ ของผูใ้ ช้ แนวคิดใกล้เคียงกับ Iterative and Incremental Model ระบบที่พฒั นาได้น้ นั ตรงกับความต้องการของผูใ้ ช้อย่างแท้จริ ง Prototyping คือวิธีการอย่างหนึ่งใน Evolutionary Development ซึ่งต้องการ ทีมบุคลากรที่มีความชํานาญในการพัฒนา Prototype


Prototyping


จากการร่ างไปสู่ การสร้างระบบต้นแบบ

การร่ างคือการสร้างแนวคิด (idea) และพัฒนาต่อไปเรื่ อยๆจนเป็ นระบบต้นแบบที่สามารถแสดง การทํางานได้ ซึ่งในจุดนี้ผใู ้ ช้สามารถทดสอบความสามารถในการใช้งานระบบ (Usability Testing) เพื่อดูวา่ มีจุดใดที่ผดิ พลาด หรื อ จําเป็ นต้องเพิ่มเติมส่ วนใดให้สมบูรณ์มากขึ้น


จากการร่ างไปสู่ การสร้างระบบต้นแบบ •ระดมความคิดเห็น •เลือกรู ปแบบการนําเสนอ •ร่ างลักษณะ interface หยาบๆ

•เน้นเรื่ องการประยุกต์ใช้งาน •ทําซํ้าการออกแบบ

• ปรับ screen ให้เหมาะสม • ประเมินและทดสอบ usability •ทําซํ้าการออกแบบ

ช่วงต้น

ช่วงปลาย Sketching paper prototype

ภาพร่ าง

Medium fidelity prototype

ชัดขึ้น

High fidelity prototype

ชัดเจน


แบบร่ างและระบบต้นแบบ

Sketche/Paper prototype

Software prototype


Reuse-Oriented Development


Reuse-Oriented Development „

„

คือการนําองค์ประกอบซอฟต์แวร์ (Components) ที่มีอยูม่ าทําการ ประกอบกัน (System Integration) เป็ นระบบ โดยให้ระบบสามารถ ทํางานตรงกับความต้องการที่กาํ หนด ข้อดี „ „

„

ขั้นตอนการพัฒนาระบบสามารถทําให้เสร็ จเร็ วขึ้น ประหยัดต้นทุน

ข้อเสี ย „ „

อาจหา Component ที่ตรงกับความต้องการไม่ได้ ยากในการปรับปรุ ง Component ที่มีอยูใ่ ห้ตรงกับความต้องการ


วิธีการพัฒนา (Development Approach) „ „ „

คือแบบแผนสําหรับการเลือกเทคโนโลยีที่จะทํามาใช้ในการพัฒนาระบบ เป็ นตัวกําหนดกรอบของเทคนิคและเทคโนโลยี ที่จะนํามาใช้ในการพัฒนา ตัวอย่างเช่น „ „ „

วิธีการพัฒนาเชิงโครงสร้าง (Structured Development Approach) วิธีการพัฒนาเชิงวัตถุ (Object-Oriented Development Approach) วิธีการเชิงรู ปนัย (Formal Approach)


ตัวอย่าง

Structured development Approach Requirement Analysis

System Analysis

System Design

System Implementation

Workflow Requirement Spec Data Processing Model (Data Flow Diagram) Data Model (ER D) System Description (Process and Data) Program structure (Structure chart) Database Model Program Specification Implementation with Structured Language and RDBMS


ตัวอย่าง

Object-Oriented Approach Requirement Analysis

System Analysis

System Design

System Implementation

Workflow Requirement Spec Usage Scenario (Usecase Diagram) Object Structure Model (Class Diagram) Object Behaviour Model (Sequence Diagram, State Diagram) Program Structure (class diagram) Program Behaviour (Detailed Sequence Diagram, etc) System Structure (Deployment Diagram, Packages etc) Database Model Implementation with OO Language and RDBMS/ OODBMS


Formal Development Approach


Formal Systems Development „

„

„

หลักการสําคัญคือ ทําการสร้างข้อกําหนดของระบบในเชิงรู ปนัย (Formal System Specification) ซึ่งอยูบ่ นพื้นฐานของโมเดลทางคณิ ตศาสตร์ แล้วทําการแปลง (Transformation) จากข้อกําหนดนั้นไปจนกระทั้งเป็ นโปรแกรมที่ทาํ งานได้ กระบวนการแปลงนั้นจะทําอยูบ่ นพื้นฐานของการให้เหตุผลทางคณิ ตศาสตร์ โดยที่ สามารถพิสูจน์ถึงความถูกต้องในแต่ละขั้นตอนของการแปลงว่าได้ทาํ ถูกต้องตาม ข้อกําหนด ข้อดี „

„

เหมาะสําหรับระบบที่ตอ้ งการให้มีความปลอดภัยสูง (Critical System)

ข้อเสี ย „ „

ต้องการผูเ้ ชี่ยวชาญที่มีทกั ษะสูงในการพัฒนา สามารถประยุกต์ได้กบั เฉพาะบางส่ วนของระบบเท่านั้น


Agile Methodology „

„ „ „

„

เป็ นวิธีก���รพัฒนาที่เน้น ความรวดเร็ ว คล่องตัว ยืดหยุน่ และ เปลี่ยนแปลงได้ต่อทุกสถานการณ์ (Adaptable Approach) ให้ความสําคัญกับการสื่ อสารเป็ นอย่างมาก เน้นความพึงพอใจของลูกค้าเป็ นหลัก พิจารณาที่ความสามารถและความถนัดของเฉพาะบุคคล ในการ มอบหมายงาน ไม่ยดึ ติดกับเครื่ องมือหรื อวิธีการหรื อการทําเอกสารมากจนเกินไป


Scrum: Agile Implementation


เครื่ องมือ (Tools) „

เครื่ องมือ คือเทคโนโลยีสารสนเทศ (Hardware / Software) ที่ถกู นํามาช่วยสนับสนุนกระบวนการต่างๆ ในขั้นตอนของการพัฒนา ระบบ เครื่ องมือที่ถูกกล่าวถึงส่ วนใหญ่มกั จะเรี ยกว่า CASE tools (Computer Aides Software Engineering) ซึ่ งเป็ นซอฟต์แวร์ที่ถูก พัฒนามาสําหรับนํามาใช้ประโยชน์ในกระบวนการพัฒนาระบบ ได้แก่ การวางแผนโครงการ การสร้างโมเดลการวิเคราะห์และ ออกแบบ การทดสอบซอฟต์แวร์ เป็ นต้น


Software CASE Tool


02 software process