การวิเคราะห์และออกแบบระบบเชิงวัตถุ

Project Management Foundations

Software Development

  • มีหลายวิธีในการพัฒนาระบบซอฟต์แวร์

  • การพัฒนาระบบ = การเขียนโค้ด ?

  • หากไม่มีกระบวนการที่กำหนดไว้ชัดเจน แม้แต่ทีมเล็ก ๆ มักพบว่าตัวเองตกอยู่ในความสับสนวุ่นวาย

  • ความซับซ้อนเพิ่มมากขึ้น เมื่อโครงการมีขนาดใหญ่มากขึ้นและมีผู้คนเข้ามามีส่วนร่วมมากขึ้น

  • การพัฒนาระบบมีหลายวิธี แต่เราจะมุ่งเน้นไปที่สองวิธีหลัก

Software Development

  1. Waterfall (น้ำตก)

    • Required predefined requirements and a detailed plan

    • เปรียบเสมือนกับการสร้างบ้านจากพิมพ์เขียวที่มีรายละเอียด

    • ข้อกำหนดถูกกำหนดไว้ตั้งแต่เนิ่น ๆ เพื่อลดการเปลี่ยนแปลงในระหว่างขั้นตอนการพัฒนา

  2. Agile (เอ[ะ]ไกล์)

    • Change-friendly & responsive

    • ช่วยให้มีความยืดหยุ่นและปรับตัวได้ตลอดกระบวนการพัฒนา

  • ไม่มีระบบใดที่สามารถรองรับการพัฒนาซอฟต์แวร์ทุกขั้นตอนได้อย่างแม่นยำสมบูรณ์แบบ ที่สำคัญ "ต้องมีกระบวนการ"

Waterfall Model (โมเดลน้ำตก)

  • The development process flows in cascades. Each phases build upon the previous one.

  • กระบวนการพัฒนาจะถูกแบ่งย่อยออกเป็นกิจกรรมหลาย ๆ กิจกรรม (Breakdown into tasks)

  • กิจกรรม-Task แต่ละกิจกรรมจะถูกพัฒนาตามลำดับที่ถูกกำหนด (โดยส่วนมากจะขึ้นอยู่กับกิจกรรมก่อนหน้า)

  • ประกอบไปด้วย 5 เฟสหลัก

Waterfall Model (โมเดลน้ำตก)

Collect & Analyze Requirements

Architecture Definition

Implementation

Verification

Maintenance

Waterfall Model (โมเดลน้ำตก)

รวบรวม-วิเคราะห์ ความต้องการ

จัดทำพิมพ์เขียวของระบบ

พัฒนาระบบ

ตรวจสอบ

บำรุงดูแลรักษา

Waterfall Model (โมเดลน้ำตก)

  • ทุกอย่างจะต้องมีการวางแผนก่อนการก่อสร้างใด ๆ

  • ข้อกำหนดของระบบถูกกำหนดไว้ตั้งแต่เนิ่น ๆ เพื่อลดการเปลี่ยนแปลงในระหว่างขั้นตอนการพัฒนา

  • กิจกรรมในการพัฒนาถูกกำหนด ก่อน-หลัง พร้อมกำกับระยะเวลาไว้ในการพัฒนาชัดเจน

  • เหมาะสำหรับโครงการที่มีความต้องการและเป้าหมาย

  • Use the waterfall if the requirements are clear and won't change frequently

Waterfall Model (โมเดลน้ำตก)

ตัวอย่าง

Gantt Chart หรือแผนภาพดำเนินกิจกรรมของโครงงานที่วางแผนพัฒนาด้วยโมเดลน้ำตก

Waterfall Model (โมเดลน้ำตก)

Life-control

System

Medical

System

Military

System

Agile Software Development (เอ[ะ]ไกล์)

  • Aimed to the proliferation of software development methodologies.

  1. Individuals & interactions over processes and tools

  2. Working software over comprehensive documentation

  3. Customer collaboration over contract negotiation

  4. Responding to change over following a plan

Agile Software Development (เอ[ะ]ไกล์)

  • Agile = Agility = คล่องแคล่ว = ช่วยให้มีความยืดหยุ่นและปรับตัวได้ตลอดกระบวนการพัฒนา โฟกัสที่ปริมาณเนื้องาน

  1. มุ่งเน้นไปที่การทำงานของบุคคลในทีม การโต้ตอบ-สื่อสาร เหนือกระบวนการและเครื่องมือ

  2. ผลลัพธ์คือระบบที่ใช้งานได้ มากกว่าระบบที่พัฒนาจากเอกสารอย่างละเอียด

  3. การพัฒนามักมีการร่วมมือกับลูกค้าตลอดเวลา

  4. มีการเปลี่ยนแผนการพัฒนาเป็นประจำ

Agile Software Development (เอ[ะ]ไกล์)

implement test implement test implement test implement test

พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ

implement test implement test implement test implement test

พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ

implement test implement test implement test implement test

พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ

implement test implement test implement test implement test

พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ

implement test implement test implement test implement test

พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ พัฒนา ทดสอบ

Agile Software Development (เอ[ะ]ไกล์)

  • Agile คือการพัฒนาซ้ำ ๆ โดยส่งมอบซอฟต์แวร์ที่ใช้งานได้จริงโดยเพิ่มทีละน้อย

  • เป็นโครงการระยะสั้น โดยทั่วไปจะใช้เวลา 2 ถึง 4 สัปดาห์

  • วงจรพัฒนานี้ทำให้มีการทบทวน และให้ข้อเสนอแนะบ่อยครั้ง เพื่อให้มั่นใจว่าโครงการสอดคล้องกับผู้มีส่วนได้ส่วนเสีย

  • การพัฒนามีความคล่องตัวสูง

  • ลูกค้ามักมีความพึงพอใจมากขึ้น / เพิ่มแรงจูงใจในทีมพัฒนา

  • ให้ความสำคัญกับผลลัพธ์ การทำงานร่วมกัน และความยืดหยุ่น มากกว่าการวางแผนและเอกสารที่เข้มงวด

Agile Software Development (เอ[ะ]ไกล์)

KANBAN & SCRUM are specific methodolog-ies that embody this agile philosophy

Waterfall or Agile ?
โมเดลน้ำตก หรือ เอะไกล์ดีล่ะ ?

Can we define the requirements in advance?

พวกเรา (ทีมพัฒนา) สามารถทำเอกสารข้อกำหนดของการพัฒนาระบบ (โครงการ) ได้อย่างสมบูรณ์หรือไม่ ?

WATERFALL

ใช่

AGILE

ไม่

Military System

F35 Fighter Jet

  • $142 USD (Million)

  • เครื่องรบยุคที่ 5

  • ขึ้นลงแนวดิ่ง

  • ขึ้นลงบนเรือบรรทุกเครื่องบินได้

  • ขายเฉพาะประเทศสมาชิก VIP ของ USA เท่านั้น

Military System

F35 Fighter Jet

Military System

F35 Fighter Jet

Military System

  • Requirements need to be clarified in advance

  • Requirements must stay stable

Waterfall is best suited for projects with clear requirements and fixed scope, choose agile if requirements are unstable and may change frequently

Question 1

Which of the following activities are included in the Waterfall methodology ?

  1. Requirements gathering, design, implementation, testing, and maintenance

  2. Daily standup, writing user stories, sprint planning

  3. Regular stakeholder meetings, responding to change requests

Question 1

ข้อใดในกิจกรรมต่อไปนี้ เป็นกระบวนการในการพัฒนาแบบโมเดลน้ำตก (Waterfall model) ?

  1. การรวบรวมข้อมูลสำหรับข้อกำหนด, การออกแบบ, การพัฒนา, การทดสอบ, และดูแลรักษา ของระบบ

  2. กิจกรรมที่ปฏิบัติทุกวันได้แก่ การกำหนดภาระงานของทีมพัฒนา โดยมุ่งเน้นการพัฒนาในระยะเวลาอันสั้น

  3. มีการพบปะเพื่อประชุมกับผู้มีส่วนได้ส่วนเสียเป็นประจำ เพื่อปรับแก้ไขข้อกำหนดการใช้งานของระบบ

Question 2

What are the benefits of using the Waterfall software development methodology ?

  1. It allows for constant customer feedback and collaboration

  2. It offers flexibility and adaptability to changing circumstances

  3. It allows for a clear plan and timeline for development

Question 2

ข้อใดบอกกล่าวถึงประโยชน์จากการพัฒนาด้วยโมเดลน้ำตก (Waterfall model) ?

  1. วิธีการพัฒนาที่มักให้ลูกค้าเข้ามามีส่วนร่วมในการให้ข้อคิดเห็นเพื่อปรับปรุงอยู่ตลอด

  2. มีการปรับเปลี่ยนรายละเอียดระหว่างการพัฒนาเป็นประจำ

  3. มี แผน-รูปแบบ สำหรับการพัฒนา รวมไปถึงตารางเวลากำกับกิจกรรมในการพัฒนาอย่างชัดเจน

Question 3

ตัวเลือกใดคือข้อด้อยของการพัฒนาด้วยวิธีการแบบโมเดลน้ำตก (Waterfall model) ?

  1. การสื่อสารที่มักผิดพลาดระหว่างทีมพัฒนาด้วยกัน

  2. ไม่เหมาะสมสำหรับโครงการที่มีความไม่แน่นอน หรือมีการเปลี่ยนแปลงข้อกำหนดของระบบบ่อย

  3. ขาดการวางแผนการพัฒนาที่ดี ส่งผลให้ผลสัมฤทธิ์โครงการเสร็จล่าช้าออกไป

Question 4

When should you use Agile instead of Waterfall ?

  1. When the project has a short timeline and high urgency

  2. When the requirements for the project are not clear or may change throughout the process

  3. When the project involves a large team

Question 4

สถานการณ์ข้อใดต่อไปนี้ ควรใช้วิธีการพัฒนาแบบเอะไกล์มากกว่าวิธีการพัฒนาแบบโมเดลน้ำตก ?

  1. เมื่อโครงการมีระยะเวลาในการพัฒนาจำกัด และมีความต้องการใช้งานเร่งด่วน

  2. สำหรับโครงการที่มีข้อกำหนดของระบบไม่แน่นอน และคาดการณ์ว่าจะมีการเปลี่ยนแปลงตลอดเวลา

  3. สำหรับโครงการที่มีทีมพัฒนาหลายคน (กลาง-ใหญ่)

Question 5

What are the characteristics of Agile ?

  1. Detailed requirements gathering, use of a project manager, and weekly progress report to stakeholders

  2. Detailed planning and strict timeline, focus on design, clear division of roles and responsibilities

  3. Iterative and incremental development, constant communication and collaboration, and adaptability to change

Question 5

อะไรคือคุณลักษณะเด่นสำหรับวิธีการพัฒนาแบบเอะไกล์ ?

  1. การรวบรวมข้อมูลอย่างละเอียดสำหรับข้อกำหนดของระบบ มีการแต่งตั้งหัวหน้าโครงการ และมีการรายงานผลความคืบหน้าของโครงการแบบรายสัปดาห์ต่อผู้ว่าจ้างเป็นประจำ

  2. มีการวางแผนโครงการและกำหนดระยะเวลาพัฒนาอย่างรัดกุม มุ่งเน้นการออกแบบเอกสารโครงสร้างระบบ มีการจัดสรรทรัพยากรสำหรับการพัฒนาอย่างชัดเจน

  3. การพัฒนาอย่างสม่ำเสมอซ้ำไปซ้ำมา การสื่อสารและพัฒนาร่วมกันอย่างใกล้ชิด พร้อมรับต่อการเปลี่ยนแปลงของระบบ

Aj. Krit Th.

https://www.kritth.com

202407XX Project Management Foundations

By Krit Th.

202407XX Project Management Foundations

  • 112