คำจำกัดความของ การจัดการโครงการแบบ Agile และ Waterfall

คำจำกัดความของ การจัดการโครงการแบบ Agile และ Waterfall

การจัดการโครงการทางด้านไอที
ในการจัดการโครงการทางด้านไอที การจัดการแบบ Waterfall กับแบบ Agile ได้ถูกนำมาประยุกต์ใช้ ในการจัดการโครงการด้านไอทีต่างๆอย่างแพร่หลายในอดีตจนถึงปัจจุบัน และการจัดการแบบ Waterfall กับแบบ Agile ก็มีความแตกต่างกัน ในการประยุกต์นำไปใช้งาน เรามาดูความแตกต่างของการจัดการโครงการทั้ง 2 แบบกัน การจัดการโครงการแบบ Waterfall แบบจำลองการจัดการโครงการแบบน้ำตก หรือ Waterfall นิยมใช้ในการพัฒนาระบบแบบ Software Development Life Cycle สำหรับวิศวกรรมซอฟต์แวร์ มักจะใช้พิจารณาวิธีการแบบคลาสสิกในการพัฒนาระบบด้วย System Development Life Cycle, แบบจำลอง Waterfall จะอธิบายถึงวิธีการพัฒนาที่เป็นเชิงเส้นและตามลำดับ (Linear and Sequential) การพัฒนาแบบ Waterfall มีเป้าหมายแตกต่างกันไปในแต่ละขั้นของการพัฒนา เราจะต้องลองนึกภาพน้ำตก ที่ตกลงมาจากหน้าผาชันที่สูงชัน เมื่อน้ำได้ไหลผ่านขอบของหน้าผา และได้เริ่มตกลงสู่ด้านล่างของหน้าผา น้ำที่ตกลงมาจะไม่สามารถไหลย้อนกลับได้ เป็นแบบเดียวกันกับการพัฒนาแบบ Waterfall เมื่อขั้นตอนการพัฒนาเสร็จสมบูรณ์ การพัฒนาจะดำเนินไปสู่ขั้นต่อไป และจะไม่มีการย้อนกลับ อีกด้านหนึ่งของการจัดการโครงการแบบ Waterfall คือ ใช้เป็นตัวขับเคลื่อนแผนการณ์ (Plan Driven) โดยพยายามที่จะกำหนดเอกสารรายละเอียดความต้องการ และแผนสำหรับโครงการทั้งหมดก่อนที่จะเริ่มโครงการ คำว่า Waterfall มักถูกใช้บ่อยๆ อย่างหลวมๆ เพื่ออ้างถึงวิธีการขับเคลื่อนแผนการณ์แบบใดๆก็ตาม คำว่า Waterfall ก็มีความหมาย หมายถึง รูปแบบทั่วไปของการจัดการโครงการ ที่เน้นความสามารถในการคาดการณ์และควบคุม มากกว่าความคล่องตัว (Agile) จึงทำให้กลายเป็นเพียงรูปแบบการจัดการโครงการที่ไม่ดี การจัดการโครงการแบบ Agile ความหมายของการจัดการโครงการแบบคล่องตัว หรือ Agile ในการเปรียบเทียบแบบนี้ ก็ค่อนข้างเข้าใจยากเพราะเป็นแนวคิดที่มีความหมายบางอย่างในการใช้งานจริง, ในระดับโครงการ, อย่างน้อยที่สุด, ในสหรัฐอเมริกา คำว่า Agile ได้ใช้ความหมายแฝงเฉพาะที่เกี่ยวข้องกับการใช้วิธีการ Scrum ในโครงการพัฒนาซอฟต์แวร์ การ Scrum เป็นรูปแบบการพัฒนาซอฟต์แวร์แบบ Agile ในรูปแบบของทีมขนาดเล็กหลายทีม ที่ทำงานในลักษณะที่เข้มข้นและพึ่งพากัน (Intensive and Interdependent Manner) คำว่า Scrum เป็นคำที่ใช้ในการเรียกรูปแบบการเล่นรักบี้ ซึ่งใช้ในการเริ่มเกมใหม่หลังจากเหตุการณ์ที่ทำให้การเล่นหยุดลง เช่น การทำผิดกติกา การ Scrum มีกระบวนการตัดสินใจในแบบเรียลไทม์ ขึ้นอยู่กับเหตุการณ์ และข้อมูลที่เกิดขึ้นจริง คำจำกัดความดังกล่าว มีการพัฒนาขึ้นในช่วงหลายปีที่ผ่านมา เนื่องจากการ Scrum กลายเป็นมาตรฐานสำหรับโครงการแบบ Agile อย่างไรก็ตาม ความหมายเดิมของ Agile ถูกคิดขึ้นใน Manifesto of Software Development ที่เผยแพร่ในปี พ. ศ. 2544 (หรือปี 2001) เป็นที่รู้จักกันดีในชื่อ Agile Manifesto…
Read More
วัฏจักรการพัฒนาซอฟต์แวร์: Software Development Life Cycle

วัฏจักรการพัฒนาซอฟต์แวร์: Software Development Life Cycle

การจัดการโครงการทางด้านไอที
วัฏจักรการพัฒนาซอฟต์แวร์ หรือ Software Development Life Cycle เป็นวัฏจักรพื้นฐานในการพัฒนาซอฟต์แวร์ หรือโปรแกรมคอมพิวเตอร์ ให้มีประสิทธิภาพมากยิ่งขึ้น นับตั้งแต่เริ่มเก็บความต้องการ (Get Requirement) ไปจนถึงการสำรวจความเห็นย้อนกลับ (Feedback) มาที่ผู้พัฒนา Software Development Life Cycle มีส่วนประกอบพื้นฐาน ดังต่อไปนี้ 1. Planning: วางแผนโครงการ การวางแผนการพัฒนาซอฟต์แวร์ เริ่มต้นจาก การเก็บความต้องการ (Get Requirement) ทั้งจากลูกค้า (Customer) หรือผู้ใช้งาน (User) อาจจะเป็นการกำหนดจากขั้นตอนทางธุรกิจ หรือ Business Process ก็ได้ 2. Analysis: วิเคราะห์โครงการ เมื่อเราได้ความต้องการจากลูกค้า หรือผู้ใช้งานแล้ว จะเข้าสู่ขั้นตอนการวิเคราะห์ระบบ ซึ่งจะต้องวิเคราะห์ความคุ้มค่าในการลงทุน (Return On Investment: ROI) ว่าคุ้มค่าในการดำเนินการต่อหรือไม่ เมื่อเราคำนวณความคุ้มค่าของโครงการแล้ว จึงจะนำมาจัดทำขอบเขตของโครงการ หรือ Project Scope Of Work เพื่อกำหนดขอบเขตการพัฒนาซอฟต์แวร์ว่าเราจะทำหรือไม่ทำอะไรบ้าง โดยขั้นตอนนี้จะต้องสรุปกับลูกค้า หรือผู้ใช้งาน ตามความต้องการ (Requirement) ที่ได้เก็บมาตั้งแต่ต้น จนได้ข้อสรุปที่ตกลงได้ทั้ง 2 ฝ่าย เมื่อเราสามารถสรุปขอบเขตของโครงการได้แล้ว ขั้นตอนต่อไปคือ การทำแผนการปฏิบัติการ หรือ Action Plan เพื่อกำหนดการทำงานภายใต้ระยะเวลาตามที่ได้สรุปกับลูกค้า หรือผู้ใช้งาน ในขอบเขตของโครงการ (Project Scope Of Work) 3. Design: ออกแบบระบบ การออกแบบระบบนี้ นอกจากการออกแบบทางด้านซอฟต์แวร์ ทั้งหน้าจอตอบสนองผู้ใช้งาน (User Interface: UI) และการโค้ดซอฟต์แวร์ (Software Coding) ด้วยการทำรายละเอียดซอฟต์แวร์ หรือ Software Specification แต่จะรวมถึงการออกแบบฐานข้อมูล (Database Design) และเครือข่าย (Network Design) ด้วย เพื่อให้ซอฟต์แวร์สามารถทำงานได้ตามความต้องการของลูกค้า หรือผู้ใช้งาน 4. Implementation: พัฒนาซอฟต์แวร์และติดตั้ง เมื่อทำการออกแบบระบบเรียบร้อยแล้ว จะเข้าสู่ขั้นตอนการพัฒนาซอฟต์แวร์ให้ใช้งานได้จริง โดยพัฒนาซอฟต์แวร์ตามที่ได้ออกแบบไว้แล้ว ให้กลายเป็นความจริง สามารถใช้งานได้อย่างมีประสิทธิภาพ ตรงตามความต้องการของลูกค้า หรือผู้ใช้งาน ตามที่ได้เก็บมา ขั้นตอนนี้จะทำอยู่ในสภาวะแวดล้อมทดสอบ หรือ Test Environment 5. Testing & Integration: ทดสอบและนำไปใช้งาน หลังจากพัฒนาซอฟต์แวร์แล้ว ขั้นตอนต่อไปคือการทดสอบและการบูรณาการ จะต้องทำการทดสอบจนกว่า ความผิดพลาดของซอฟต์แวร์ หรือบั๊ก (Bug) จะลดน้อยมากที่สุด…
Read More