590 likes | 906 Views
290342 Software Development Process. อ.ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี. บทที่ 2 กระบวนการทางวิศวกรรมซอฟต์แวร์. เนื้อหา. กระบวนการซอฟต์แวร์ (Software Process) กิจกรรมพื้นฐานของกระบวนการทางวิศวกรรมซอฟแวร์
E N D
290342 Software Development Process อ.ธารารัตน์ พวงสุวรรณ คณะวิทยาศาสตร์และศิลปศาสตร์ มหาวิทยาลัยบูรพา วิทยาเขตสารสนเทศจันทบุรี บทที่2กระบวนการทางวิศวกรรมซอฟต์แวร์
เนื้อหา • กระบวนการซอฟต์แวร์ (Software Process) • กิจกรรมพื้นฐานของกระบวนการทางวิศวกรรมซอฟแวร์ • วงจรการพัฒนาซอฟต์แวร์ (Software Development Life Cycle) • โมเดลการพัฒนาซอฟต์แวร์ • เทคนิคและเครื่องมือในการพัฒนาซอฟต์แวร์ • แบบจำลองวุฒิภาวะความสามารถ (Capability Maturity Model: CMM)
กระบวนการ (Process) กระบวนการ (Process) คือ กลุ่มของขั้นตอนการทำงาน ที่ประกอบด้วยชุดกิจกรรม ข้อจำกัด และทรัพยากรที่จะได้ผลิตเป็นผลลัพธ์บางชนิดตามต้องการ กระบวนการ (Process) จะมีลำดับขั้นตอนในการผลิตและจะดำเนินการตามลำดับเหมือนเดิมทุกครั้ง 3
กระบวนการ (Process) กระบวนการโดยทั่วไปจะมีลักษณะ ดังนี้ 1. กระบวนการจะต้องระบุกิจกรรมทั้งหมดอย่างชัดเจน 2. กระบวนการจะใช้ทรัพยากรภายใต้ข้อจำกัดต่างๆ เพื่อผลิตเป็นผลิตภัณฑ์ที่แล้วเสร็จ 3. กระบวนการหนึ่ง อาจประกอบขึ้นจากกระบวนการย่อยอื่นๆ ที่มีความสัมพันธ์กัน 4
กระบวนการ (Process) 4. ทุกกิจกรรมของกระบวนการจะมีเงื่อนไขในการเริ่มต้น และสิ้นสุดกิจกรรม 5. ทุกขั้นตอนและทุกกิจกรรมของกระบวนการจะต้องมีเป้าหมาย อย่างชัดเจน และต้องมีหลักการหรือแนวทางในการปฏิบัติ เพื่อให้บรรลุเป้าหมายนั้น 6. ข้อจำกัดหรือเงื่อนไขสามารถนำมาใช้ควบคุมการดำเนินกิจกรรม การใช้ทรัพยากร หรือแม้กระทั่งตัวผลิตภัณฑ์เองได้ 5
วิศวกรรมซอฟต์แวร์ คือ ระเบียบแบบแผนที่นำมาประยุกต์ใช้กับการพัฒนาซอฟต์แวร์เพื่อให้เกิดประสิทธิภาพต่อการพัฒนา มีกระบวนการพัฒนาซอฟต์แวร์ที่ชัดเจนและสามารถตรวจสอบได้ นอกจากนี้ยังมีการนำเครื่องมือสนับสนุนการพัฒนาระบบมาใช้เพื่อให้เกิดมาตรฐานเดียวกันและทำให้ซอฟต์แวร์มีคุณภาพ วิศวกรรมซอฟต์แวร์ได้เข้ามามีบทบาทสำคัญต่อกระบวนการพัฒนาซอฟต์แวร์ เพื่อให้ซอฟต์แวร์มีมาตรฐาน และเป็นวิทยาศาสตร์มากขึ้น
กระบวนการซอฟต์แวร์ (Software Process) เพื่อให้บรรลุวัตถุประสงค์ในการสร้างซอฟต์แวร์จึงต้องมีการกำหนดกระบวนการสร้างซอฟต์แวร์ สิ่งที่ได้จากกระบวนการสร้างซอฟต์แวร์ คือ ผลิตภัณฑ์ซอฟต์แวร์ (Software Product) วิศวกรรมซอฟต์แวร์ จะเรียกกระบวนการสร้างซอฟต์แวร์ว่า “Software Process” 7
Software Process กระบวนการซอฟต์แวร์ คือ กรอบการดำเนินกิจกรรมในการสร้างซอฟต์แวร์ที่มีคุณภาพ [Pressman, 2005] กระบวนการซอฟต์แวร์ คือ กลุ่มของกิจกรรมและผลลัพธ์ของแต่ละกิจกรรมเพื่อการผลิตเป็นผลิตภัณฑ์ที่เรียกว่า “ซอฟต์แวร์” [Sommerville, 2007] 8
กิจกรรมพื้นฐานของ กระบวนการทางวิศวกรรมซอฟต์แวร์ 1. ข้อกำหนดซอฟต์แวร์ (Software Specification) 2. การพัฒนาซอฟต์แวร์ (Software Development) 3. การตรวจสอบความถูกต้อง (Software Validation) 4. วิวัฒนาการของซอฟต์แวร์ (Software Evolution)
Software Process กระบวนการซอฟต์แวร์ประกอบด้วย คน วิธีการ และเครื่องมือ ในกระบวนการผลิตซอฟต์แวร์ อาจแตกต่างกันที่เครื่องมือ เทคนิค และเทคโนโลยีที่เลือกใช้ ในกระบวนการผลิตซอฟต์แวร์ มีการดำเนินการตามลำดับขั้นตอนเหมือนกัน กิจกรรมต่าง ๆ ในกระบวนการผลิตซอฟต์แวร์สามารถปรับเปลี่ยนให้เข้ากับลักษณะงานได้ 10
Software Process กระบวนการซอฟต์แวร์ (Software Process) = กระบวนการพัฒนาซอฟต์แวร์ (Software Development Process) กระบวนการทำหน้าที่เป็นกรอบในการสร้างผลิตภัณฑ์ใด ๆ หรือเรียกกระบวนการ ได้อีกอย่างว่า “วงจรชีวิตหรือวัฏจักรชีวิต (Life Cycle)” ของผลิตภัณฑ์ กระบวนการซอฟต์แวร์ หรือ กระบวนการพัฒนาซอฟต์แวร์ เรียกอีกอย่างหนึ่งว่า “วัฏจักรชีวิตของซอฟต์แวร์ (Software Life Cycle)” หรือ วงจรการพัฒนาซอฟต์แวร์ (Software Development Life Cycle : SDLC) 11
Software Development Life Cycle : SDLC คุณสมบัติเด่น • มีการแบ่งกระบวนการทำงานออกเป็นขั้นตอน • มีการทำงานที่เป็นลำดับขั้นตอนที่ต่อเนื่อง
Software Development Life Cycle : SDLC ระยะที่ 1: การวางแผนโครงการ (Project Planning Phase) ระยะที่ 2: การวิเคราะห์ (Analysis Phase) ระยะที่ 3: การออกแบบ (Design Phase) ระยะที่ 4: การทดสอบ/นำไปใช้ (Implementation Phase) ระยะที่ 5: การบำรุงรักษา (Maintenance Phase)
ระยะที่ 1 Project Planning ประกอบด้วยกิจกรรม ดังนี้ • กำหนดปัญหา (Problem Definition) • ศึกษาความเป็นไปได้ของโครงการ (Feasibility Study) • จัดทำตารางกำหนดเวลาโครงการ (Project Scheduling) • จัดตั้งทีมงานโครงการ (Staff the project) • ดำเนินการโครงการ (Launch the project)
ระยะที่ 2Analysis Phase • เป็นการตอบคำถามว่า ใคร(Who) เป็นผู้ใช้งานระบบ และมีอะไรบ้าง (What) ที่ระบบต้องทำ • ดำเนินการวิเคราะห์ระบบปัจจุบัน เพื่อพัฒนาแนวความคิดสำหรับระบบใหม่ • วัตถุประสงค์หลัก คือ ศึกษาทำความเข้าใจความต้องการต่าง ๆ ที่ได้รวบรวมมา • ดังนั้น การรวบรวมความต้องการ (Requirement Gathering) จึงเป็นงานส่วนพื้นฐานของการวิเคราะห์ ซึ่งนักวิเคราะห์ระบบจะประเมินว่าควรมีอะไรบ้างที่ระบบใหม่ต้องดำเนินการ • การกำหนดรายละเอียดเกี่ยวกับความต้องการของผู้ใช้ (User Requirement) จะมีความสำคัญมาก • จากนั้น นำมาสรุปออกมาเป็นข้อกำหนด (Requirement Specification) ที่ชัดเจน อ่านแล้วตีความหมายได้ตรงกัน
ระยะที่ 2Analysis Phase …………………… …………………… …………………… …………………… …………………… Analysis Requirements Specification • หลังจากนั้น นักวิเคราะห์ระบบต้องนำข้อกำหนดไปพัฒนาเป็นความต้องการของระบบใหม่ • เทคนิคที่ใช้คือ การพัฒนาแบบจำลองกระบวนการ (Process Model)และพัฒนาแบบจำลองข้อมูล (Data Model) • เทคนิคที่ใช้ในการวิเคราะห์ระบบ อาจปรับเปลี่ยนไปตามเทคนิคที่เลือกใช้ในการวิเคราะห์ระบบ
ระยะที่ 3Design Phase Design Physical Model Logical Model • พิจารณาว่า ระบบจะดำเนินการไปได้อย่างไร (How) จะพัฒนาระบบใหม่ด้วยแนวทางใด • เกี่ยวข้องกับการออกแบบสถาปัตยกรรมระบบ เกี่ยวข้องกับอุปกรณ์ฮาร์ดแวร์ ซอฟต์แวร์ เครือข่าย การออกแบบรายงาน การออกแบบหน้าจอ ออกแบบผังงานระบบ รายละเอียดโปรแกรม ฐานข้อมูล แฟ้มข้อมูลที่เกี่ยวข้อง
ระยะที่ 3Design Phase • ประกอบด้วยกิจกรรม ดังนี้ • พิจารณาแนวทางในการพัฒนาระบบ • Architectural Design • Database Design • Output Design • Input Design • User Interface Design • Prototype • ออกแบบโปรแกรม
ระยะที่ 4 Implementation Phase • เขียนโปรแกรม • ตรวจสอบความถูกต้อง • Verificationตรวจสอบว่า ระบบทำงานตามที่กำหนดไว้หรือไม่ • Validationตรวจสอบว่า ระบบสามารถทำงานตามความต้องการของผู้ใช้หรือไม่ • เตรียมสถานที่และการติดตั้งเครื่องคอมพิวเตอร์ • จัดทำคู่มือการใช้โปรแกรมและการฝึกอบรมผู้ใช้ที่เกี่ยวข้องในระบบ
กรรมวิธีการพัฒนาระบบ (System Development Methodology) นักวิเคราะห์ระบบ สามารถนำเครื่องมือต่าง ๆ มาประยุกต์ใช้กับการวิเคราะห์และออกแบบ ซึ่งเรียกว่า “Methodology” โดย Methodology เป็นแนวทางที่มีการนำโมเดล (Model), เครื่องมือ (Tools) และเทคนิค (Techniques) ต่าง ๆ มาใช้กับการพัฒนาซอฟต์แวร์ ซึ่งจัดเป็นแนวทางในการแก้ปัญหาด้วยวิธีการพัฒนาซอฟต์แวร์
กรรมวิธีการพัฒนาระบบ (System Development Methodology) โมเดล (Models) ประกอบด้วยการนำเสนอสิ่งที่เกี่ยวกับการอินพุต เอาต์พุต โปรเซส ข้อมูล ออบเจ็กต์ การโต้ตอบระหว่างออบเจ็กต์ สถานที่ตั้ง เครือข่าย และอุปกรณ์อื่นๆ ซึ่งโดยส่วนใหญ่แล้วโมเดล หรือแบบจำลองนี้จะนำเสนอในรูปแบบของภาพ ซึ่งประกอบด้วยไดอะแกรม (Diagram) หรือแผนภูมิ (Chart) เครื่องมือ (Tools) ประกอบด้วยซอฟต์แวร์หรือโปรแกรมที่ใช้สนับสนุนการใช้งานเครื่องมือเหล่านี้สามารถนำมาใช้งานเพื่อสร้างแบบจำลองหรือโมเดลต่าง ๆ และรวมถึงส่วนประกอบอื่น ๆ
กรรมวิธีการพัฒนาระบบ (System Development Methodology) • เทคนิค (Techniques) • คือกลุ่มแนวทางที่ช่วยในการชี้นำ (Guidelines) เพื่อให้นักวิเคราะห์ระบบสามารถนำเทคนิคไปดำเนินกิจกรรมการพัฒนาระบบเพื่อให้เกิดความสมบูรณ์ยิ่งขึ้น • เทคนิคการบริหารโครงการ • เทคนิคการสัมภาษณ์ • เทคนิคการทดสอบซอฟต์แวร์ • เทคนิคการวิเคราะห์ และออกแบบระบบเชิงวัตถุ
วิธีการพัฒนาระบบ มี 2 วิธี • วิธีการพัฒนาระบบแบบดั้งเดิม (The Traditional Approach) • เทคนิควิธีการพัฒนาระบบดั้งเดิมนั้นมีเทคนิคที่หลากหลาย ซึ่งตั้งอยู่บนพื้นฐานของการพัฒนาระบบสารสนเทศด้วยวิธีโครงสร้าง • และการโปรแกรมแบบโมดูล โดยมักเรียกวิธีนี้ว่า การพัฒนาระบบเชิงโครงสร้าง
วิธีการพัฒนาระบบ มี 2 วิธี • วิธีการพัฒนาระบบแบบดั้งเดิม (The Traditional Approach)
วิธีการพัฒนาระบบ มี 2 วิธี • วิธีการพัฒนาระบบแบบดั้งเดิม (The Traditional Approach)
วิธีการพัฒนาระบบ มี 2 วิธี • วิธีการพัฒนาระบบเชิงวัตถุ (The Object-Oriented Approach) • จัดเป็นวิธีใหม่ของการพัฒนาระบบ • ประกอบไปด้วย 3 แนวทางด้วยกัน คือ1) การวิเคราะห์ระบบด้วยวิธีเชิงวัตถุ (Object-Oriented Analysis: OOA) • 2)การออกแบบระบบด้วยวิธีเชิงวัตถุ (Object-Oriented Design: OOD) • 3) การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming: OOP)
วิธีการพัฒนาระบบ มี 2 วิธี • วิธีการพัฒนาระบบเชิงวัตถุ (The Object-Oriented Approach)
ระยะที่ 5Maintenence Phase • เป็นขั้นตอนการดูแลระบบเพื่อให้ระบบมีประสิทธิภาพ • หากโปรแกรมไม่เป็นไปตามความต้องการ อาจต้องแก้ไขปรับปรุงใหม่ • การบำรุงรักษา ส่วนใหญ่เป็นการแก้ไขโปรแกรมหลังจากใช้งานแล้ว • การเพิ่มเติมคุณสมบัติใหม่ๆ เข้าไปในระบบ (Enhance the System) • การสนับสนุนงานของผู้ใช้ (Support the Users)
โมเดลการพัฒนาซอฟต์แวร์โมเดลการพัฒนาซอฟต์แวร์ โมเดลการพัฒนาซอฟต์แวร์ คือ แบบจำลองที่ใช้สำหรับเป็นตัวชี้นำถึงกิจกรรมหลักในการพัฒนาซอฟต์แวร์ ด้วยการกำหนดรายละเอียดหรือข้อบัญญัติไว้ในแต่ละขั้นตอน
โมเดลการพัฒนาซอฟต์แวร์โมเดลการพัฒนาซอฟต์แวร์ • Waterfall • Adapted Waterfall • Evolutionary • Incremental • Spiral • Rapid Prototype • Rapid Application Development (RAD) • Joint Application Development (JAD) • Relational Unified Process (RUP)
Adapted Waterfall Model Adapted WaterfallModelพัฒนามาจากแบบ Waterfall โดยในแต่ละขั้นตอนสามารถแก้ไขข้อผิดพลาดหรือสามารถย้อนกลับ ได้
Rapid Prototype Model - ใช้ในกรณีที่ Requirement ไม่ชัดเจน - สร้าง Rapid Prototype ในการหา Requirement ที่ต้องการจริง ๆ เพื่อสร้าง ความมั่นใจระหว่างลูกค้าและผู้พัฒนา - ลักษณะของ Prototype - นำข้อมูลที่เก็บได้มาสร้างซอฟต์แวร์แบบไม่ละเอียด - มีการสร้างหน้าจอผู้ใช้ การป้อนข้อมูลเข้า การแสดงผลข้อมูล
Rapid Application Development - การพัฒนาแอพพลิเคชั่นอย่างรวดเร็วโดยกระบวนการที่สำคัญ และใช้ เครื่องมือสนับสนุน เช่น CASE Tools - เน้นการลดต้นทุนและเวลา - จำเป็นต้องมีทีมงานขนาดเล็กที่มีความรู้ความสามารถเฉพาะ - การนำเทคนิค RAD มาใช้ในโครงการเพื่อมุ่งหวังพัฒนาระบบงานให้สำเร็จ อย่างรวดเร็ว และใช้งานได้ภายในระยะเวลาจำกัดมากกว่าที่จะให้ระบบ สมบูรณ์แบบ หรือมีเทคนิคที่ดีเลิศ
Joint Application Development - เป็นการพัฒนาแอพพลิเคชั่นร่วมกัน โดยกลุ่มคนในองค์กร ผู้เชี่ยวชาญด้าน IT เข้าร่วมประชุมเชิงปฏิบัติการ - จุดประสงค์ คือ เพื่อพัฒนาระบบงานที่ใช้เวลาสั้นและมีความ สมบูรณ์ในโครงการ - มีห้องปฏิบัติการที่ใช้เป็นศูนย์การทำงาน
Relational Unified Process (RUP) • เป็นกระบวนการทางวิศวกรรมซอฟต์แวร์ • เป็นกรรมวิธีการพัฒนาซอฟต์แวร์เชิงวัตถุ • เน้นการสร้างโมเดลและจัดการโมเดลด้วยภาษา UML • เป้าหมายของ Rational Unified process เป็นการทำให้กระบวนการในขั้นตอนนั้นๆสมบูรณ์ที่สุด • มีการวนและทำซ้ำเรื่อยๆ จนขั้นตอนสมบูรณ์ โดยจะมีเป้าหมายในแต่ละขั้นตอนว่าควรจะได้ผลอะไรออกมาบ้าง
Relational Unified Process (RUP) มี 4 ระยะ ประกอบด้วย • Inception การกำหนดขอบเขตด้วย Use case • Elaborationสร้างข้อกำหนดและแผนงานด้วย Use case Diagram, Class Diagram, Sequence Diagram • Constructionพัฒนาระบบ เขียนโปรแกรม • Transition วางแผนนำไปใช้
เทคนิควิธีและเครื่องมือในการพัฒนาระบบเทคนิควิธีและเครื่องมือในการพัฒนาระบบ • แบบจำลอง (Modeling) • ต้นแบบ (Prototyping) • Computer-Aided Systems Enginering: CASE
วิศวกรรมซอฟต์แวร์ช่วยการพัฒนาระบบ (Computer-Aided Systems Engineering-CASE ) • คือ การนำเอาแบบแผนหรือวิธีการทางด้านคอมพิวเตอร์เข้ามาช่วยในการจัดระเบียบและควบคุมการพัฒนาซอฟแวร์ • โดยเฉพาะซอฟแวร์ที่มีขนาดใหญ่และความซับซ้อนสูงที่ต้องมีส่วนประกอบของซอฟแวร์และคนพัฒนาจำนวนมากๆ • เป็นเทคนิควิธีที่ใช้โปรแกรมที่มีความสามารถสูงเป็นเครื่องมือ เรียกย่อๆ ว่า CASE Tools • เป้าหมายของ CASE คือ - ทำให้งานพัฒนาซอฟแวร์เสร็จทันเวลาที่กำหนด - งบประมาณที่ใช้พัฒนาซอฟแวร์ไม่บานปลาย - ซอฟแวร์ที่เป็นผลิตภัณฑ์จะต้องมีคุณภาพดี
ขอบข่ายของเครื่องมือสนับสนุนการพัฒนาระบบ (CASE Tool Framework) มี 2 ช่วง อัปเปอร์เคสทูลส์(Upper CASE Tools)เป็นเครื่องมือที่สนับสนุนด้านการวิเคราะห์ในระหว่างขั้นตอนของวิเคราะห์และออกแบบ เช่น Visible Analyst, Power Designer 2. โลเวอร์เคสทูลส์(Lower CASE Tools)เป็นเครื่องมือที่สนับสนุน ด้านการนำไปใช้ (Implementation)เช่น สามารถทำการแปลง (Generate) ให้เป็นรหัสโปรแกรม เช่น Rational Rose
คุณสมบัติและความสามารถของ CASE Tools ( Facilities and Functions) • เครื่องมือช่วยสร้างแผนภาพ (Diagram Tools) • เครื่องมือช่วยเก็บรายละเอียดต่างๆ ของระบบ (Description Tools) • เครื่องมือช่วยสร้างตัวต้นแบบ (Prototyping Tools) • เครื่องมือช่วยสร้างรายงาน (Inquiry and Reporting) • เครื่องมือเพื่อคุณภาพของแบบจำลอง (Quality Management Tools)
คุณสมบัติและความสามารถของ CASE Tools • เครื่องมือสนับสนุนการตัดสินใจ (Decision Support Tools) • เครื่องมือช่วยจัดการเอกสาร (Documentation Organization Tools) • เครื่องมือช่วยออกแบบ (Design Generation Tools) • เครื่องมือช่วยสร้างโค้ดโปรแกรม (Code Generator Tools) • เครื่องมือช่วยทดสอบ (Testing Tools) • เครื่องมือช่วยให้สามารถใช้ข้อมูลร่วมกัน (Data Sharing Tools)
ปรับปรุงกระบวนการผลิตซอฟต์แวร์ปรับปรุงกระบวนการผลิตซอฟต์แวร์ แบบจำลองวุฒิภาวะความสามารถ Capability Maturity Model: CMM • คิดค้นโดยสถาบันวิศวกรรมซอฟต์แวร์ คาร์เนกีเมลอน • ใช้วัดความสามารถขององค์กร หรือ บ.พัฒนาซอฟต์แวร์ • ทำให้ทราบว่าองค์กรมีวุฒิภาวะของความสามารถเติบโต Capability Maturity เต็มที่ในระดับใด