วงจรการพัฒนาโปรแกรม
แนะนำใหม่| English | ไทย |
|---|---|
| requirements/rɪˈkwaɪəmənts/ | ข้อกำหนด |
| development life cycle/dɪˈveləpmənt laɪf ˈsaɪkl/ | วงจรชีวิตการพัฒนา |
| waterfall/ˈwɔːtəfɔːl/ | โมเดลน้ำตก |
| maintenance/ˈmeɪntənəns/ | การบำรุงรักษา |
| iterative model/ˈɪtərətɪv ˈmɒdl/ | โมเดลซ้ำ |
| rapid application development/ˈræpɪd ˌæplɪˈkeɪʃn dɪˈveləpmənt/ | การพัฒนาแอปพลิเคชันอย่างรวดเร็ว |
| prototype/ˈprəʊtəʊtaɪp/ | ต้นแบบ |
| agile/ˈædʒaɪl/ | อจایل |
| implementation/ˌɪmplɪmənˈteɪʃn/ | การนำไปใช้ |
สนามบินที่เปิดช้าไปสิบหกเดือน
- สนามบินแห่งใหม่ของเดนเวอร์มีกำหนดเปิดในเดือนตุลาคม 1993 ด้วยระบบขนถ่ายกระเป๋าเดินทางที่ ambitious ที่สุดที่เคยสร้างมา: รถเข็นอัตโนมัติ 4,000 คัน, ทางเดินยาว 35 กม., ไม่มีคนจับต้องเลย มันเปิดจริงในเดือนกุมภาพันธ์ 1995 โดยเกินงบประมาณ $560 ล้าน และรถเข็นทำลายกระเป๋าเดินทางในการทดสอบ
- ตารางเวลาถูกกำหนดไว้ก่อนที่จะมีการวิเคราะห์ว่าระบบต้องทำอะไร ความต้องการเปลี่ยนไปเรื่อยๆ ขณะกำลังก่อสร้าง การทดสอบเริ่มขึ้นเมื่อไม่มีเวลารับมือกับสิ่งที่พบแล้ว
- ความล้มเหลวทั้งหมดนั้นมีชื่อเรียกในบทเรียนนี้ รอบชีวิตการพัฒนา (development life cycle) มีอยู่เพื่อให้โปรเจกต์วางแผน จัดการ และควบคุม แทนที่จะถูกค้นพบแบบสุ่มๆ
- บทเรียนนี้คือสิ่งที่คุณควรรู้เกี่ยวกับรอบชีวิต, แบบจำลองสามแบบที่หลักสูตรระบุ, และห้าขั้นตอนที่โปรแกรมทุกชิ้นผ่าน
เหตุผลที่ต้องมีวงจรชีวิตของซอฟต์แวร์
- รอบชีวิตการพัฒนา คือชุดของขั้นตอนตั้งแต่ไอเดียจนถึงซอฟต์แวร์สำเร็จรูปและได้รับการบำรุงรักษา วัตถุประสงค์คือ วางแผน จัดการ และควบคุม โปรเจกต์: ให้ได้ผลิตภัณฑ์ที่ถูกต้อง, ตามเวลา, และมีคุณภาพดี
- มัน จัดการความซับซ้อน โดยการแบ่งโปรแกรมใหญ่เป็นระยะ, ประสานงาน กับทีม, และ ติดตามความก้าวหน้า เทียบกับจุดสำคัญ (milestones)
- มัน รวมการทดสอบเข้าไป แทนที่จะทิ้งไว้จนจบ, บันทึกการตัดสินใจด้านการออกแบบ สำหรับผู้ที่มาบำรุงรักษาระบบในอนาคต, และ บริหารความเสี่ยง
วงจรการพัฒนาถูกใช้เพื่อ:
มันจัดโครงสร้างงานออกเป็นขั้นตอนเพื่อให้ทีมสร้างผลิตภัณฑ์ที่ถูกต้อง tepatเวลา และมีคุณภาพ
วัตถุประสงค์ของวงจรการพัฒนาคืออะไร? เลือก ทั้งหมด ที่ถูกต้อง
วงจรวางแผน จัดการ และควบคุม มันไม่สามารถรับประกันความถูกต้องได้; มันทำให้การพบและแก้ไขข้อผิดพลาดเป็นส่วนหนึ่งของแผน
ทำไมมีมากกว่าหนึ่งแบบ
- ไม่มีรอบชีวิตเดียวที่เหมาะสมกับทุกโปรเจกต์ จึงมีหลายแบบและข้อสอบจะขอให้คุณเลือก
- การเลือกขึ้นอยู่กับขนาดและความซับซ้อนของโปรแกรม, ความชัดเจนของ ความต้องการ ในตอนเริ่มต้น, ระดับของการเปลี่ยนแปลงที่คาดไว้, ความเสี่ยงหากล้มเหลว, ทีมงาน, และกำหนดส่ง
- ระบบคำนวณเงินเดือนที่มีกฎกฎหมายตายตัว กับเกมที่ผู้เล่นยังไม่รู้ว่าอยากได้อะไร เป็นโปรเจกต์ที่แตกต่างกัน ควรใช้รอบชีวิตที่ต่างกัน
Waterfall
- แบบจำลอง Waterfall เป็นลำดับเชิงเส้น: การวิเคราะห์, การออกแบบ, การเขียนโค้ด, การทดสอบ, การบำรุงรักษา แต่ละขั้นตอนต้องเสร็จสิ้น, มีเอกสารประกอบ, และผ่านการอนุมัติก่อนจึงจะเข้าสู่ขั้นตอนถัดไป
- ข้อดี: โครงสร้างชัดเจน, จัดการและตั้งเวลาได้ง่าย, มีเอกสารครบถ้วน在每个阶段, เหมาะสมกับ ความต้องการที่คงที่
- ข้อเสีย: หากมีการเปลี่ยนแปลงความต้องการระหว่างกลางโปรเจกต์ ต้องย้อนกลับขึ้นไปตามน้ำตก; ลูกค้าไม่เห็นอะไรที่ทำงานได้จนกว่าจะจบ; ความผิดพลาดในการวิเคราะห์ปรากฏเฉพาะในช่วงทดสอบเท่านั้น

น้ำไม่ไหลย้อนขึ้นเขา
โมเดล Waterfall เหมาะสมที่สุดสำหรับโครงการที่:
Waterfall เป็นเส้นตรง โดยแต่ละขั้นตอนเสร็จสิ้นก่อนหน้าขั้นตอนถัดไป — ดีสำหรับ requirements ที่มั่นคง แต่ไม่ดีสำหรับการเปลี่ยนแปลงกลางโครงการ
ในโมเดล Waterfall ลูกค้าจะเห็นเวอร์ชันที่ใช้งานได้จริงในช่วงต้นของโครงการ
ไม่มีอะไรทำงานจนกว่าจะถึงช่วง coding และ testingNear the end. การเห็นซอฟต์แวร์ที่ใช้งานได้จริงก่อนหน้าเป็นจุดแข็งของโมเดล Iterative และ RAD
Iterative
- แบบจำลอง Iterative ทำซ้ำหลายรอบ แต่ละรอบจะผลิตเวอร์ชันที่ใช้งานได้บางส่วนออกมา ซึ่งจะถูกตรวจสอบโดยผู้ใช้และปรับปรุงในรอบถัดไป
- ข้อดี: ปัญหาถูกตรวจจับได้เร็วขึ้น; ผู้ใช้เห็นซอฟต์แวร์ที่ใช้งานได้เร็วและบ่อยครั้ง; ดีเมื่อความต้องการ ถูกค้นพบตามเวลา
- ข้อเสีย: ประมาณต้นทุนและเวลาทั้งหมดได้ยากขึ้น; การตรวจสอบซ้ำต้องการความใส่ใจจากผู้ใช้งาน; การออกแบบอาจเบี่ยงเบน出去的หากขาดวินัย

สร้าง, แสดง, ปรับปรุง, ทำซ้ำ
Rapid application development
- Rapid application development (RAD) สร้าง ต้นแบบ (prototype) อย่างรวดเร็ว นำเสนอให้ผู้ใช้งานดู และสร้างใหม่จากคำติชมของพวกเขาจนกลายเป็นผลิตภัณฑ์ ทีมงานมักทำงานบนส่วนต่างๆ พร้อมกัน
- ข้อดี: ส่งมอบครั้งแรกได้เร็วมาก; ความต้องการที่เปลี่ยนไปจะถูกดูดซึมเข้า来的时候; ผู้users塑造ผลิตภัณฑ์โดยตรง
- ข้อเสีย: ขึ้นอยู่กับว่าผู้ใช้งานจะมีเวลาตลอดกระบวนการหรือไม่; ทางลัดที่ใช้ในต้นแบบอาจติดไปกับผลิตภัณฑ์สุดท้าย; เหมาะกับระบบขนาดเล็กมากกว่าระบบขนาดใหญ่ที่ต้องความปลอดภัยสูง Agile methods พัฒนาแนวคิดนี้ต่อด้วย sprint สั้นๆ และการทดสอบต่อเนื่อง

ต้นแบบ, คำติชม, ต้นแบบอีกครั้ง
ในโมเดล Waterfall แต่ละขั้นตอนจะเสร็จสิ้นก่อนหน้าขั้นตอนถัดไป ในขณะที่ Agile ทำงานเป็นการ sprint แบบ iteratively สั้นๆ พร้อม feedback อย่างต่อเนื่อง
Waterfall เป็นแบบเชิงเส้น (เหมาะสำหรับความต้องการที่มั่นคง); Agile ปรับตัวผ่าน Sprint สั้นๆ พร้อมการร่วมมือและทดสอบกับลูกค้าอย่างต่อเนื่อง
จับคู่แต่ละโมเดลกับแนวคิดหลัก
Waterfall = เชิงเส้น; Iterative = การปรับปรุงซ้ำ; RAD = เน้นต้นแบบและรวดเร็ว
การพัฒนาแอปพลิเคชันอย่างรวดเร็วสร้าง ____ ที่ผู้ใช้งานลองใช้แล้วให้คำติชม จากนั้นจึงสร้างใหม่
ต้นแบบเป็นคุณลักษณะเฉพาะของ RAD; คำติชมจากผู้ใช้คือวิธีในการค้นพบความต้องการ
ตัวอย่างฝึกหัด: เลือกรอบชีวิตและให้เหตุผล
- บริษัทต้องการซอฟต์แวร์เพื่อคำนวณเงินเดือนพนักงานภายใต้กฎภาษีที่กำหนดโดยกฎหมาย ควรใช้รอบชีวิตใด และทำไม? Waterfall: ความต้องการคงที่และทราบชัดเจนตั้งแต่ต้น, กฎหมายสามารถบันทึกได้อย่างสมบูรณ์ในช่วงวิเคราะห์, และเอกสารที่ละเอียดมีความสำคัญต่อระบบที่ต้องถูกต้องและผ่านการตรวจสอบ
- สตาร์ทอัพต้องการแอปพลิเคชันสำหรับกิจกรรมทางสังคมรูปแบบใหม่ ผู้ใช้งานยังไม่แน่ใจว่าต้องการฟีเจอร์อะไร RAD: ความต้องการไม่ชัดเจนและจะเปลี่ยนแปลง, ดังนั้นต้นแบบที่ผู้ใช้ลองใช้และตอบสนองจะช่วยให้ค้นพบความต้องการได้เร็ว, และระบบขนาดเล็กเหมาะสำหรับการสร้างซ้ำอย่างรวดเร็ว
- ชื่อโมเดล, แล้วเชื่อมโยงคุณสมบัติสองอย่างเข้ากับข้อเท็จจริงสองประการในสถานการณ์
ทีมขนาดเล็กต้องสร้างแอป whose Users ไม่แน่ใจว่าต้องการอะไร และผู้ใช้สามารถลองใช้เวอร์ชันได้ทุกสัปดาห์ Which life cycle fits best?
ความต้องการไม่ชัดเจน เปลี่ยนแปลงได้ และมีผู้ใช้พร้อมทดลอง คือกรณีของ RAD Waterfall ต้องการrequirements ที่แน่นอนตั้งแต่ต้น
ห้าขั้นตอน
- Analysis: หาว่าโปรแกรมต้องทำอะไร (what), รวบรวมและบันทึกความต้องการจากผู้ใช้
- Design: ตัดสินใจว่าอย่างไร (how): โครงสร้างข้อมูล, อัลกอริทึม, โมดูล, อินเตอร์เฟซผู้ใช้, การจัดหน้าไฟล์, แสดงผลในแผนผังโครงสร้าง, แผนภาพไหล, และ伪代码 (pseudocode)
- Coding (implementation): เขียนซอร์สโค้ดตามการออกแบบ Testing: ทดสอบโดยใช้ข้อมูลทดสอบที่วางแผนไว้และแก้ไขข้อผิดพลาดที่พบ
- Maintenance: หลังปล่อยระบบ, รักษาให้ใช้งานและ有用, แก้ไขข้อบกพร่อง, ปรับตัวต่อการเปลี่ยนแปลง, และพัฒนาให้ดีขึ้น
วงจรการพัฒนาโปรแกรม
ผ่านขั้นตอนแต่ละขั้นตอนที่โครงการแต่ละแห่งผ่านมา การได้มาซึ่ง requirements ที่ถูกต้องในช่วง analysis สำคัญที่สุด — ความผิดพลาดที่พบในการทดสอบมีค่าใช้จ่ายในการแก้ไขสูงกว่ามากเมื่อเทียบกับข้อผิดพลาดที่พบเร็ว
ขั้นวิเคราะห์เน้นเรื่องใดเป็นหลัก:
การวิเคราะห์รวบรวมความต้องการ (what); การออกแบบตัดสินใจเรื่อง how
เรียงลำดับขั้นตอนของวงจรชีวิตการพัฒนาโปรแกรม
What, how, build, check, keep working. ในโมเดล Iterative ขั้นตอนตรงกลางจะซ้ำ แต่ลำดับภายในแต่ละรอบจะเหมือนเดิม
ตัวอย่างฝึกหัด: เกิดอะไรขึ้นduring analysis และ design
- อธิบายสิ่งที่เกิดขึ้น during的阶段 of the program development life cycle. [4]
- Analysis: นักพัฒนาสัมภาษณ์และสังเกตผู้ใช้เพื่อหาว่าโปรแกรมต้องทำอะไร; họระบุอินพุต, เอาต์พุต, และการประมวลผลที่ต้องการ, และเขียนข้อกำหนดการใช้งาน (requirements specification) ที่ลูกค้ายอมรับ
- การออกแบบ: ผู้พัฒนาตัดสินใจว่าโปรแกรมจะตอบสนองความต้องการเหล่านั้นอย่างไร:他们เลือกโครงสร้างข้อมูลและอัลกอริทึม, แยกโปรแกรมออกเป็นโมดูลบนแผนภาพโครงสร้าง, ออกแบบหน้าจอและไฟล์, และเขียน伪代码。
- การกระทำสองอย่างและผลิตภัณฑ์หนึ่งสำหรับแต่ละขั้นตอน "They analyse the problem" เป็นการทำซ้ำหัวข้อและไม่ได้รับคะแนน
คะแนนที่หลุดหายไป
- การวิเคราะห์คือสิ่งที่ (what), การออกแบบคือวิธีทำ (how) "Deciding the algorithms" อยู่ภายใต้การออกแบบ
- Waterfall ไม่ใช่ "สิ่งที่ไม่ดี" จุดแข็งของมันคือความต้องการที่มั่นคงและมีเอกสารประกอบ; จุดอ่อนคือการเปลี่ยนแปลง ให้ทั้งข้อดีและข้อเสียเมื่อถามถึงประโยชน์และ drawbacks
- RAD ไม่ใช่แค่ "เร็ว" คุณสมบัติหลักของ它คือ prototype และการตอบกลับของผู้ใช้ต่อ prototype นั้น
- การบำรุงรักษาเป็นขั้นตอน ไม่ใช่เรื่องเสริมท้าย: ส่วนใหญ่ของค่าใช้จ่ายตลอดอายุการใช้งานของโปรแกรมถูกใช้จ่ายในขั้นตอนนี้
คุณเข้าใจแล้ว
- วัฏจักรชีวิต วางแผน จัดการ และควบคุม โครงการ: ระยะต่างๆ, จุดสำคัญ, การทดสอบ builtin, บันทึกการตัดสินใจ, จัดการความเสี่ยง
- waterfall: แบบเส้นตรง, ยืนยันทุกขั้นตอน, เหมาะกับความต้องการที่มั่นคง, ทำได้ยากเมื่อมีการเปลี่ยนแปลง · iterative: เวอร์ชันที่ปรับปรุงซ้ำแล้วซ้ำเล่า, ตรวจพบปัญหาได้เร็ว, ประมาณเวลาได้ยาก · RAD: prototype บวกกับการตอบกลับของผู้ใช้, รวดเร็วและยืดหยุ่น, ต้องการผู้ใช้ที่มีอยู่จริง
- เลือกตามความชัดเจนของความต้องการ, การเปลี่ยนแปลงที่คาดการณ์ไว้, ขนาดและความเสี่ยง, และให้เหตุผลด้วยสถานการณ์
- ขั้นตอน: analysis (อะไร) → design (如何做) → coding → testing → maintenance