Measuring Agility in Agile Software Development
1. Agile software 2. Measuring Agility
Agile
Agile Agile เป็นหลักการในการพัฒนา software แบบใหม่ ตอบสนองได้อย่างรวดเร็วและมีความยืดหยุ่นต่อการเปลี่ยนแปลง มีการพัฒนาที่ว่องไว มีการดำเนินงานได้ต่อเนื่อง แม้จะมีสิ่งที่มากระทบก็ยังคงสามารถดำเนินงานต่อได้ เมื่อมีการเปลี่ยนแปลงจะสามารถรองรับความเปลี่ยนแปลงนั้นได้อย่างรวดเร็ว
วัตถุประสงค์ของ Agile ให้ความสำคัญกับความสามารถแต่ละบุคคล และการพูดคุยสื่อสารกันมากกว่า การยึดติดที่เครื่องมือและกระบวนการ ทำงานโดยยึดที่ผลผลิตหรือซอฟท์แวร์เป็นหลัก ให้ความสำคัญเรื่องของการติดต่อสื่อสาร ยอมรับความเปลี่ยนแปลงต่างๆ
หลักการ Agile
หลักการ Agile (1) • เน้นไปที่ความพึงพอใจของลูกค้า ทำตามที่ลูกค้าต้องการ และมีการส่งมอบซอฟท์แวร์อย่างต่อเนื่อง • ยอมรับ requirementที่เปลี่ยนแปลง • มีการส่งมอบงานบ่อยๆ (ทุกๆ 2 สัปดาห์) • ลูกค้าและผู้พัฒนาต้องทำงานร่วมกัน เพื่อให้งานที่ออกมาสามารถตอบสนองความต้องการของลูกค้า
หลักการ Agile (2) • วัดความก้าวหน้าของงาน(KPI) ที่ซอฟท์แวร์ • กระบวนการทำงาน ให้ดำเนินงานไปเรื่อยๆ ไม่เร็วจนเกินไปหรือช้าจนเกินไป • การออกแบบเน้นความเรียบง่าย ไม่ซับซ้อน ทำให้ดูแลแก้ไขง่ายเมื่อพบความเปลี่ยนแปลง หรือความผิดพลาด • ทีมงานต้องมีความรับผิดชอบในกระบวนการของตัวเอง • มีการนัดพบแลกเปลี่ยนความคิด และแสดงความคืบหน้ากันสม่ำเสมอ
Agile Modeling
Agile Modeling เป็นวิธีหนึ่งที่จะเอาหลักการของ Agile มาจัดการกับเอกสารและระบบเดิมที่มีอยู่ ประกอบด้วย value (ผลลัพธ์) principle (หลักการ) practices (วิธีปฏิบัติ)
Agile Modeling : value • เน้นติดต่อสื่อสาร • เน้นติดต่อสื่อสาร • เน้นความเรียบง่าย ไม่ซับซ้อน • เน้น feedback จากลูกค้า • เน้นความกล้าตัดสินใจ • เน้นความเคารพกันและกัน
Agile Modeling : principle • รับ requirement ของลูกค้าพร้อมเปลี่ยนแปลงได้ตลอดเวลา • ทำ model ตามความจำเป็นเท่านั้น • พยายามใช้ multiple model มองหลายๆมุมมองจะได้งานที่สมบูรณ์มากขึ้น • มีการตอบกลับเร็วที่รวดเร็ว • ซอฟท์แวร์ถือเป็นจุดมุ่งหมายหลัก • Supplement Principle • เน้น content มากกว่า representation(ที่ใช้UMLเขียน) ไม่เน้นเครื่องมือ เน้นที่เน้อหาที่มีข้างใน
Agile Modeling : practices • จัดประชุม รวบรวม Active stakeholder เท่านั้น บางทีอาจจะมี None stakeholder เข้ามาฟังได้ • นำ Artifact มาใช้ให้ถูกต้อง • พยายามใช้โมเดลแบบคู่ขนาน เพื่อเก็บรายละเอียดของระบบให้ครบถ้วน • ทำให้เนื้อหาง่าย พยายามวาดรูปไม่ให้ซับซ้อน และโมเดลเข้าถึงได้ทุกคน • ใช้โมเดลแบบเล็กก่อนแล้วค่อยขยาย • พิสูจน์ด้วยการลองเขียน code ดู (จาก code เริ่มต้นตั้งแต่แรก)
Agile Model • ทั้งสามอย่างที่กล่าวมาเป็นส่วนหนึ่งใน Agile Model ที่สามารถนำมาพัฒนา Software ให้มีประสิทธิภาพมากขึ้น • มอง Agile เป็นส่วนขยายของกระบวนการพัฒนาซอฟท์แวร์แบบเดิมได้ • ให้ Agile เข้าไปกำกับดูแลว่าของเดิมที่มีอยู่สิ่งใดสำคัญก็ทำ สิ่งที่ไม่สำคัญก็ละไว้เพื่อทำที่หลัง • นำ Agile มาจัดลำดับความสำคัญเพื่อดูว่ากิจกรรมใดควรทำก่อน
ความแตกต่างระหว่าง speed กับ agile
1. Agile software 2. Measuring Agility
Measuring Agility • การตั้งคำถามของProjectที่ถูกพัฒนาด้วยAgile ตอบสนองความต้องการของลูกค้าอย่างไร งานที่ลูกค้าต้องการความเร็วแค่ไหน • คำตอบที่ได้รับจะเน้นไปที่ความเร็วในการตอบสนอง ความเร็วเป็นสิ่งที่ทำให้ลูกค้าพึงพอใจในลักษณะของงานที่ทำ • ความเร็วอาจจะไม่ใช่คำตอบที่ลูกค้าต้องการ หากลูกค้ามีส่วนร่วมตั้งแต่เริ่มทำProjectและต้องการได้รับแก้ไขปัญหา การพัฒนาแบบ waterfall life cycle จะเร็วมากกว่า agile life cycle ซึ่ง waterfall life cycleจะวางแผนและเขียนโค้ดได้ง่ายกว่า นอกจากจะวัดความเร็วแล้วยังมีปัจจัยอื่นที่ต้องวัดหากมีการ เปลี่ยนแปลง
Measuring Agility (1)
Agility measurement methodology Change is easier in Reengineered Process BPR Workflow Management System AS-IS Process Reengineered Process AS-IS Process with change Reengineered Process with change CHANGE OR DISRUPTION
Agility measurement methodology (1) การที่จะทำให้โปรแกรมมีความซับซ้อนและมีความไวต้องอาศัย สองสิ่ง สิ่งแรกเราต้องสนใจความซับซ้อนในเชิงธุรกิจ ความคล่องตัวในการเปลี่ยนแปลงของระบบจากสถานะ หนึ่งของระบบไปยังอีกสถานะที่ต้องการ ซึ่งการที่เราจะทำเช่นนี้ได้เราต้องใช้การวางแผนและออกแบบ ระบบดังที่แสดงในรูปด้านบนซึ่ง ระบบที่เราศึกษาอยู่ตอนนี้คือ As-ls system ในส่วนของ reengineered system เป็นระบบ ที่สนับสนุนการเปลี่ยนแปลงของโปรเจคโดยจุดประสงค์ของการ ปรับเปลี่ยนระบบในเชิงธุรกิจนั้นเพื่อลดความซับซ้อนของ กระบวนการการทำงานและนำการปรับเปลี่ยนนี้ไปใช้ในระบบที่ เหลือทั้งหมด
สูตรการวัด Agility • ตัวชี้วัดระบุเวลา: • ตัวชี้วัดระบุเวลา: - Tstart = เวลาที่ลูกค้าระบุความต้องการ - Tdone = เวลา ที่ลูกค้ายอมรับข้อตกลงฟังก์ชันที่ต้องการ • ระยะเวลา: - Tdeliver = เวลาทั้งหมดที่ผู้รับงานตกลงรับงานจากลูกค้า - Taccept =เวลาที่ผู้รับงานเสนอฟังก์ชั่นที่สอดคล้องกับความ ต้องการของลูกค้า - Tlife cycle = ระยะเวลามาตรฐานของแต่ละagile delivery cycle
ReCycle Time Standard delivery time = Tdone – Tstart ReCycle Time =
เทคนิคการพัฒนาแบบ Agile Agile model driven development (AMDD) Code Refactor : เป็นการ redesign code คือให้แก้ code เดี๋ยวนั้นแล้ว design เปลี่ยนเอง Pair Programming : จับทีมทำงานเป็นคู่ 2 คนทำงานร่วมกัน ทำที่เดียวกัน แต่ทำเพียงเครื่องเดียว แชร์กันใช้ โดยคนหนึ่งทำ-อีกคนหนึ่งดู ( มีการตรวจสอบกัน ไปด้วย) Test Driven Development(TDD) : เป็นเทคนิคใน การเขียน test case เขียน test case ก่อนและค่อย ทำการ implement code
รูปแบบวิธีการที่ทำเอา Agile มา ใช้ • Agile UP • XP (eXtream Programming) • FDD (Feature Driven Development) • Scrum
เอกสารอ้างอิง http://wiki.nectec.or.th/setec/Knowledge/Agile http://noc.mcu.ac.th http://www.sciencedirect.com http://www.versionone.com/ Bob Moore Business Transformation Institute, Inc.
สมาชิกกลุ่ม นางสาวณภัทรา พลนารักษ์ รหัส 55010324 นางสาวณภัทรา พลนารักษ์ รหัส 55010324 นางสาวณัฏฐา เชื้อบุญชัย รหัส 55010342 นายปุณณวรรธน์ วัฒนะภาณุพัฒน์ รหัส 55010401 นายณัฐวุฒิ วัฒนาโยธิน รหัส 55010406 นางสาวนุชรี เสมสว่าง รหัส 55010673