180 likes | 333 Views
Homework 2. Present. หัวข้อการนำเสนอ. Capability Maturity Model Agile Model eXtreme Programming Unified Process – UP Scrum Model Aspect-Oriented Software Development. C apability M aturity M odel.
E N D
Homework 2 Present
หัวข้อการนำเสนอ • Capability Maturity Model • Agile Model • eXtreme Programming • Unified Process – UP • Scrum Model • Aspect-Oriented Software Development
Capability Maturity Model Capability Maturity Model หรือที่เรียกกันว่า (CMM)คือ แบบจำลองวุฒิภาวะความสามารถ เกิดจาก SEI ของมหาวิทยาลัยคาร์เนที เมลลอน ถูกกำหนดขึ้นเพื่อวัดความเชื่อมั่นและคุณภาพของกระบวนการพัฒนาซอฟต์แวร์ โดย CMM ได้รวมเอาข้อดีของ TQM มาปรับใช้กับการพัฒนาซอฟต์แวร์ โดยเฉพาะ จึงเป็นโมเดลที่ใช้วัดความเชื่อมั่น และคุณภาพของกระบวนการพัฒนาซอฟต์แวร์ในปัจจุบัน
ระดับมาตรฐานของ CMM • ระดับเริ่มต้น เรียกว่า Initial Level • ระดับจัดทำโครงการเบื้องต้น เรียกว่า Repeatable Level • ระดับที่มีการกำหนดขึ้นอย่างชัดเจน เรียกว่า Defined Level • ระดับมีการจัดการ เรียกว่า Managed Level • ระดับปรับปรุงให้เหมาะสมที่สุด เรียกว่า Optimizing Level
ประโยชน์ของ CMM • การทำงานเป็นระบบมากขึ้น มีการทำงานที่ตรวจสอบได้โดยง่าย • โอกาสในการประสบผลสำเร็จในการทำงานมีมากขึ้น • มีวิธีการปฏิบัติที่เป็นมาตรฐาน และสามารถยืดหยุ่นได้ • สามารถรับงานจากต่างประเทศ และทำรายได้เข้าประเทศได้
Agile Model Agile Model เป็นแนวคิดใหม่สำหรับการพัฒนาซอฟต์แวร์ ที่พยายามที่จะแทรกตัวเข้าไปใน methodology แบบเดิม เพื่อให้งานสั้นลง ซึ่งการพัฒนาอาจจะใช้เวลาสั้นๆ ประมาณ 1 – 4 สัปดาห์ โดยจะเน้นการสื่อสารแบบตัวต่อตัวมากกว่าการใช้เอกสาร ทีมงานโดยทั่วไปอย่างน้อยต้องประกอบด้วย โปรแกรมเมอร์และลูกค้า ที่ใช้กำหนดขอบเขต และระบบงาน
รูปแบบการทำงานของ AM • เลือกบางหลักการมาทำ • เป็นวิธีหนึ่งที่จะเอาหลักการของ Agile มาจัดการกับเอกสารและระบบเดิมที่มีอยู่ได้ • ใน Agile ประกอบด้วย • value ผลลัพธ์ • principle หลักการ • practices วิธีปฏิบัติ • ทั้งสามอย่างนี้เป็นส่วนหนึ่งในโมเดล Agile ที่สามารถนำมาพัฒนา SW ให้มีประสิทธิภาพและเกิด overhead น้อย • ให้มอง Agile เป็นส่วนขยายของกระบวนการพัฒนา SW แบบเดิมได้ • ให้ Agile เข้าไปกำกับ ดูว่าของเดิมที่มีอยู่อันไหนสำคัญก็ทำ ไม่สำคัญก็ละ • นำ Agile มาจัดลำดับความสำคัญ ดูว่ากิจกรรมไหน ควรทำ ไม่ควรทำ
eXtreme Programming Extreme Programming หรือ XP เป็นกระบวนการพัฒนาซอฟต์แวร์แบบ Agile (lightweight) มีปัจจัยพื้นฐาน ดังนี้ communication : เน้นเรื่องการพบปะพูดคุย (หลักการ Agile) Simplicity : ออกแบบและเขียนโปรแกรมให้ง่าย ไม่เน้น performance มากนัก เน้นเรื่องแก้ Feedback : เน้นเรื่องลูกค้า feedback เราเปลี่ยนได้เรื่อยๆ โดยใช้ refactor Courage : เราต้องสามารถตัดสินใจเองได้ โปรแกรมเมอร์มีความกล้าในการตัดสินใจ
12 กิจกรรมหลักของ XP • วางแผนเกม (The Planning Game) • พยายามซอยงานให้ถี่ๆ (Small Releases) • มีตัวกลางคั่นระหว่าง user และตัวเรา (System Metaphor) • ออกแบบให้ง่าย (Simple Design) • ทดสอบเสมอ (Continuous Testing) • แก้ code บ่อยๆ (refactoring)
12 กิจกรรมหลักของ XP (ต่อ) • ทำงานเป็นคู่ (pair programming) • Team code ownership • ทำการรวบรวมงานอย่างต่อเนื่อง (Continuous Integration) • ทำงานไปเรื่อยๆ ไม่หักโหม ห้ามว่าง (40-Hour-work-week) • มองทีมเป็นหนึ่ง (On-site Customer) • ใช้มาตรฐานการ code แบบเดียวกัน (Coding Standards)
Unified Process (UP) Unified Process (UP)คือกระบวนการทางวิศวกรรมซอฟต์แวร์ ที่เกิดจากการรวมเอาสิ่งที่ผู้เชี่ยวชาญทางการพัฒนาซอฟต์แวร์ ที่เคยกำหนดไว้ และได้ผลดีในการพัฒนาซอฟต์แวร์มารวมกัน โดยเลือกแต่เทคนิคที่ดี และขั้นตอนหลักที่เหมือนๆกัน มารวมกัน(Unify) และกำหนดให้มีชื่อใหม่ว่า “กระบวนการพัฒนาซอฟต์แวร์แบบรวมเป็นหนึ่งเดียว (Unified Process)
6 กระบวนการของ UP • การพัฒนาซอฟต์แวร์ควรเป็นการพัฒนาแบบวนกลับ (Iterative Development) • โครงสร้างถูกแบ่งออกเป็นรอบ (Iteration) • สิ่งที่ได้จะมีการพัฒนาเพิ่มจนกว่าจะกลายเป็นระบบที่สมบูรณ์ • ในแต่ละรอบทีมจะต้องทำงานซ้ำ (Iterate) • การวิเคราะห์ ออกแบบ พัฒนาโปรแกรม และทดสอบ • การพัฒนาซอฟต์แวร์ ใดๆ ควรมีการจัดการความต้องการได้ (Requirement Management)
6 กระบวนการของ UP (ต่อ) • การใช้แนวคิดสถาปัตยกรรมแบบองค์ประกอบ (Component –based Model Architecture) • การนำกลับมาใช้ได้อีก (Reusable) • เพื่อเป็นพื้นฐานในการจัดการโครงการ • เพื่อให้มีการควบคุมการทำงานอย่างชาญฉลาด • การสร้างต้นแบบของระบบที่สามารถมองเห็นได้ (Visual Model) ด้วยภาษา UML
6 กระบวนการของ UP (ต่อ) • การตรวจสอบคุณภาพของซอฟต์แวร์ที่พัฒนาอย่างต่อเนื่อง (Continuously Verify) • การทดสอบการทำงานของระบบ (Function Testing) • การทดสอบการใช้ระบบ (Usability Testing) • การทดสอบความน่าเชื่อถือของระบบ (Reliability Testing) • การทดสอบประสิทธิภาพ (Performance Testing) • การทดสอบการสนับสนุน (Supportability) • การจัดการการเปลี่ยนแปลง (Change Management)
Scrum Model Scrum เป็น development process ที่อยู่บนพื้นฐานของ Sprint เป็นหนึ่งใน Implementationหลายๆวิธีที่อยู่ในค่าย Agile Software Development Scrum จะ sprint เป็นช่วงๆตามหลักการแล้วคือช่วงละ 2-4 สัปดาห์ โดยจะเป็นช่วงที่เราจะเร่งทำงานอย่างเต็มที่เต็มขีดจำกัด หลังจบ sprint ก็จะพักบ้างสัก 3-5 วัน ก่อนที่จะ sprint ต่อไป
3 Concept ของ Scrum • ว่าด้วยเรื่องของทีมงาน (Role) • Scrum Team • Product Owner • Scrum Master • ว่าด้วยเรื่องของวิธีการทำงาน (Process) • Backlog • Sprint phase • Daily scrum • ว่าด้วยเรื่องของการประเมินและติดตามงาน (Demonstration and Evaluation)
Aspect-Oriented Software Development Aspect-Oriented Software Development (AOSD) เป็นความพยายามในการช่วยนักพัฒนาสำหรับแยกคอนเซินในการเขียนโปรแกรม โดยเฉพาะอย่างยิ่งคอนเซินตัดขวาง (crosscutting concern) เพื่อเพิ่มความเป็น module การใช้งาน AOP อาจจะต้องทำการปรับเปลี่ยนภาษาในการพัฒนา ในขณะที่การใช้ AOSD จะรวมถึงความเกี่ยวข้องกับภาษา สภาพแวดล้อมและวิธีการพัฒนา
SA – WAD – D - JA สวัสดีครับ - ค่ะ