วิศวกรรมซอฟต์แวร์ (Software Engineering) ภาพรวมของกระบวนการ (A Generic View of Process) แบบจำลองกระบวนการพัฒนาระบบ (Process Model)
กระบวนการ (Process) กระบวนการ (Process) คือ กลุ่มของขั้นตอนการทำงาน ที่ประกอบด้วยชุด กิจกรรม ข้อจำกัด และทรัพยากรที่จะได้ผลิตเป็นผลลัพธ์บางชนิดตามต้องการ กระบวนการโดยทั่วไปจะมีลักษณะ ดังนี้ 1. กระบวนการจะต้องระบุกิจกรรมทั้งหมดอย่างชัดเจน 2. กระบวนการจะใช้ทรัพยากรภายใต้ข้อจำกัดต่างๆ เพื่อผลิตเป็นผลิตภัณฑ์ที่ แล้วเสร็จ 3. กระบวนการหนึ่ง อาจประกอบขึ้นจากกระบวนการย่อยอื่นๆ ที่มี ความสัมพันธ์กัน
กระบวนการ (Process) 4. ทุกกิจกรรมของกระบวนการจะมีเงื่อนไขในการเริ่มต้นและสิ้นสุดกิจกรรม 5. ทุกขั้นตอนและทุกกิจกรรมของกระบวนการจะต้องมีเป้าหมายอย่างชัดเจน และต้องมีหลักการหรือแนวทางในการปฏิบัติเพื่อให้บรรลุเป้าหมายนั้น 6. ข้อจำกัดหรือเงื่อนไขสามารถนำมาใช้ควบคุมการดำเนินกิจกรรม การใช้ ทรัพยากร หรือแม้กระทั่งตัวผลิตภัณฑ์เองได้
กระบวนการซอฟต์แวร์ (Software Process) กระบวนการซอฟต์แวร์ หมายถึงกลุ่มของกิจกรรม วิธีการ วิธีการปฏิบัติ และ การเปลี่ยนแปลงที่ใช้ในการพัฒนาและบำรุงรักษา ซอฟต์แวร์ ตลอดจน ผลิตภัณฑ์ที่เกี่ยวเนื่อง กระบวนการซอฟต์แวร์ประกอบด้วย คน วิธีการ และเครื่องมือ
กระบวนการซอฟต์แวร์ (Software Process) กิจกรรมพื้นฐานทั้งหมด 4 กิจกรรม ที่ใช้กับกระบวนการผลิตซอฟต์แวร์ การกำหนดคุณสมบัติซอฟต์แวร์ (Software Specification) การออกแบบและสร้างซอฟต์แวร์ (Software Design and Implementation) การทวนสอบซอฟต์แวร์ (Software Validation) การวิวัฒนการของซอฟต์แวร์ (Software Evolution)
กระบวนการซอฟต์แวร์ (Software Process) 1. software specification นิยามหน้าที่ต่างๆที่ต้องมีในซอฟต์แวร์ และระบุข้อจำกัดต่างๆ ที่เกี่ยวข้องกับกระบวนพัฒนาซอฟต์แวร์ เช่น กฎหมาย , อัตราภาษี , กฎระเบียบต่างๆที่เกี่ยวในการพัฒนาซอฟต์แวร์ 2. Software Design and Implementation กิจกรรมนี้ทำการสร้าง / พัฒนาซอฟต์แวร์ให้ตรงกับข้อกำหนด (specification) 3. software validation กิจกรรมนี้ทำการตรวจสอบความถูกต้องของซอฟต์แวร์ เพื่อให้เกิดความมั่นใจ ว่าซอฟต์แวร์ที่ผลิตขึ้นได้ตรงกับ ความต้องการของลูกค้า 4. software evolution ในทางปฎิบัติ เมื่อซอฟต์แวร์ใช้งานได้ระยะหนึ่งแล้ว ผู้ใช้หรือลูกค้าอาจมีความต้องการเพิ่มเติมหรือ เปลี่ยนแปลงความต้องการบางอย่าง ดังนั้นขั้นตอนการพัฒนาซอฟต์แวร์ ต้องมีการเตรียมการบางอย่างเพื่อ จัดการกับเหตุการณ์ที่คาดหมายว่าจะเกิดขึ้นในอนาคต
กระบวนการซอฟต์แวร์ (Software Process) กระบวนการทางซอฟต์แวร์ คือกรอบงานของการสร้างซอฟต์แวร์ที่มี คุณภาพสูง กระบวนการทางซอฟต์แวร์เป็นตัวกำหนดแนวทางที่ซอฟต์แวร์ จะถูกสร้างขึ้น ในขณะที่วิศวกรรมซอฟต์แวร์จะรวมไปถึงเทคโนโลยีใน กระบวนการ ได้แก่ วิธีเชิงเทคนิค และเครื่องมือทันสมัยต่างๆ
กระบวนการซอฟต์แวร์ (Software Process) หากกล่าวถึงวิศวกรรมซอฟต์แวร์ ในแง่ของการเป็นเทคโนโลยีของการผลิต ซอฟต์แวร์แล้ว วิศวกรรมซอฟต์แวร์จะเป็นเทคโนโลยีชนิดที่เรียกว่า “เทคโนโลยีแบบชั้น” (Layered Technology) การดำเนินงานวิศวกรรมซอฟต์แวร์ จะประกอบไปด้วย 3 ระดับชั้น ดังนี้ เครื่องมือ (Tools) ระเบียบวิธี (Methods) กระบวนการ (Process) คุณภาพ (Quality)
กรอบงานของกระบวนการ (A Process Framework) กรอบงานของกระบวนการ เป็นพื้นฐานสำคัญของกระบวนการทาง ซอฟต์แวร์ กรอบงานจะแยกออกได้เป็น กิจกรรมกรอบงาน (Framework Activity) กรอบงานของกระบวนการยังครอบคลุม กิจกรรมที่ใช้ได้กับกระบวนการทาง ซอฟต์แวร์ เรียกว่า ชุดกิจกรรมร่ม (Umbrella Activities)
Software Process Umbrella activities = all activities we need for working on the project: plan, control, meetings, transport, ...
กิจกรรมของกรอบงานของกระบวนการ การสื่อสาร (Communication) การวางแผน (Planning) การสร้างแบบจำลอง (Modeling) การสร้าง (Construction) การใช้งาน (Deployment)
กิจกรรมในกลุ่มกิจกรรมร่ม การติดตามและควบคุมโครงการซอฟต์แวร์ (Software Project Tracking and Control) การจัดการความเสี่ยง (Risk Management) การประกันคุณภาพของซอฟต์แวร์ (Software Quality Assurance) การพิจารณาด้านเทคนิค (Formal Technical Reviews) การวัด (Measurement) การจัดการโครงแบบของซอฟต์แวร์ (Software Configuration Management) การเตรียมและการผลิตชิ้นงาน (Work Product Preparation and Production)
แบบจำลองกระบวนการพัฒนาระบบ (Process Model) หมายถึง การจำลองภาพของกระบวนการ เพื่อให้เห็นถึงการจัดโครงสร้าง ลำดับขั้นตอนของกระบวนการในรูปแบบที่แตกต่างกันออกไป แบบจำลองกระบวนการ (Software Process Model) Linear Process Model Incremental Process Model Evolutionary Process Model Specialize Process Model
Linear Process Model The Linear Model หรือ Classic Life Cycle , Waterfall Model
Waterfall Model Waterfall Model เรียกได้ว่าเป็น Classic Life Cycle ซึ่งหมายถึง แบบ ระเบียบวิธีเรียงลำดับเป็นระบบในการพัฒนาซอฟต์แวร์
Waterfall Model ข้อเสียของ Waterfall Model
Incremental Process Model แบบจำลองค่อยเพิ่มขึ้น (The Incremental Model)
Incremental Process Model แบบจำลองแบบเร่งรัด (RAD Model)
Evolution Process Model เป็นแบบจำลองที่มีการทำกิจกรรมในลักษณะซ้ำ (Iteration) การสร้างต้นแบบ (Prototyping) ผู้ใช้ไม่สามารถบอกความต้องการได้ สร้างแบบจำลองให้
การสร้างต้นแบบ (Prototyping) ขั้นตอนการทำ Prototype 1. ตั้งเป้าหมาย (Objective) 2. เลือก Function ที่ Meet Objective 3. สร้าง 4. ให้ผู้ใช้ดูแล้ว Feedback
การสร้างต้นแบบ (Prototyping) การสร้างต้นแบบ มี 3 ลักษณะ 1. เพื่อวิเคราะห์ความต้องการของผู้ใช้ 2. เพื่อขยายให้เป็นระบบที่ปฏิบัติงานจริง 3. เพื่อหาทางแก้ปัญหาที่ดีที่สุด เพื่อใช้เป็นเครื่องมือในการทดลอง
Evolution Process Model แบบจำลองแบบสไปรัล (The Spiral Model)
Evolution Process Model แบบจำลองการพัฒนาไปพร้อมกัน (The Concurrent Development Model) แบบจำลองนี้แสดงให้เห็นสถานะปัจจุบัน ของโครงการ แทนที่จะมองงานย่อย กิจกรรมเป็นลำดับของเหตุการณ์ก็มอง เป็นโครงข่ายของกิจกรรมที่ทุกงานและ งานย่อยในโครงข่ายเกิดขึ้นพร้อมๆกันกับ งานและงานย่อยอื่นๆ
Specialize Process Model การพัฒนาจากคอมโพเน้นท์ (Component Based Development)
Specialize Process Model แบบจำลองวิธีการฟอร์มัล (The Formal Methods Model) แบบจำลองวิธีการฟอร์มัล รวมเอาชุดของกิจกรรมที่นำไปสู่ข้อกำหนด ทางคณิตศาสตร์ฟอร์มัลของซอฟต์แวร์ เหมาะกับซอฟต์แวร์ที่ต้องการความปลอดภัยระดับสูง เช่น การควบคุม การบินการควบคุม เครื่องมือทางการแพทย์ เป็นต้น
Specialize Process Model การพัฒนาซอฟต์แวร์เชิงแง่มุม (Aspect-Oriented Software Development) กระบวนงานเชิงแง่มุม กระบวนการนี้จะรับเอาแบบจำลองสไปรัลและ แบบจำลองแบบทำไปพร้อมกันมาใช้ การพัฒนาแบบคู่ขนานของการทำไป พร้อมกันมีความจำเป็นในการสร้างแง่มุม เนื่องจากแง่มุมจะมีผลกระทบต่อ หลายๆส่วนของซอฟต์แวร์
The Unified Process Inception Elaboration Construction Transition Production