Social Icons

Tuesday, July 13, 2010

SCM TOOL

configuration management ก็จะพูดถึงงานที่เกี่ยวข้องและ role เท่านั้น SCM Tools จากรายละเอียดที่ว่ามาข้างต้น จะเห็นว่าถ้าจะทำ SCM โดยใช้เอกสารมาควบคุมนั้น จะเสียเวลาและกำลังคนมาก โดยทั่วไปก็จะนำ tool เข้ามาช่วย และการเลือก tool เข้ามาช่วย ก็ขึ้นอยู่กับว่าเราต้องการทำ SCM ละเอียดขนาดไหน เช่น ถ้าเราต้องการ repository กลางเพื่อให้สมาชิกในทีมสามารถ check-in และ check-out source code ได้ ก็อาจจะเลือกใช้ open source ก็ได้ เช่น Control Version System (CVS) ก็ได้ หรือถ้าต้องการทำ bug / issue tracking ก็ใช้ BugZilla ร่วมได้ ส่วนอะไรที่เป็น knowledge และ code standard โดยทั่วไปก็จะใช้ wiki-wiki tool กัน ส่วน tool ที่เป็น commercial ก็จะมีหลายๆ ตัว เช่นถ้าเป็นของ IBM จะมี 2 product ที่ทำงานร่วมกัน คือ Rational Clear Quest และ Rational Clear Case ส่วนของ Borland ก็จะเป็น StarTeam ครับ การใช้งาน tool ก็จะมีทั้งที่เป็นแบบ client / server คือมี application สำหรับ user และมี server กลางให้บริการ ต้อง install ตัอง client ที่เครื่อง หรือเป็น web-base หรือแบบที่ integrate กับ IDE เลย เช่น CVS ที่ integrate กับ Eclipse หรือ StarTeam Client ที่ integrate กับ Delphi, JBuilder หรือ Visual Studio 2005 เป็นต้น ซึ่งแต่ละแบบก็มีข้อดีข้อเสียต่างกันไป ขึ้นอยู่กับ tool และ vendor
StarTeam เป็น Software Change & Configuration Management Tool คือรองรับทั้งการทำ versioning control และการทำ change management ไปในตัว ซึ่ง feature หลักๆ คือ

•    Version Control : o File version control สามารถทำ version control กับ file อะไรก็ได้ ไม่ได้จำกัดเฉพาะ source code รวมถึง manage detail ของ file อัตโนมัติ เช่น owner, version number, history, etc.
        o    Version control for other artifact นอกจาก file แล้วเรายังสามารถ submit item อื่นๆ ได้อีก ไม่ว่าจะเป็น change request, requirement, task หรือ topic ต่างๆ StarTeam จะทำ version control ให้กับ artifact เหล่านี้โดยอัตโนมัติ
        o    Release management นอกจากแต่ละ file แล้ว StarTeam ยังสามารถกำหนด version ของ project เพื่อให้สามารถระบุได้ว่า ณ version 1.0 นั้น ประกอบด้วย file อะไรบ้าง version ไหนบ้าง รวมไปถึง configuration item หรือ artifact อื่นๆ ทั้งหมดที่อยู่ใน StarTeam ด้วย นั่นหมายความว่า ถ้าต้องการ rollback ไปยัง version ที่เรากำหนด เราจะได้ status ของโปรเจ็ค ณ เวลานั้นทั้งหมด และยังสามารถกำหนด deployment เป็น state ต่างๆ ได้ เช่น Alpha, Beta1, Beta2, RTM, Production เพื่อให้ง่ายต่อการ rollback หรือ deploy ไปใช้
        o    Branching & Merge ในกรณีที่เราต้องการแตก project ออกไปเพื่อ custom application ให้กับลูกค้าบางราย หรือสาขาเพียงสาขาเดียวเท่านั้น StarTeam สามารถแตก (Branch) project ออกไปเพื่อพัฒนาแยกไปคนละสายกับ product ที่มีอยู่ (หรือกรณีที่เป็น Multi-OS / Multi-Platform เป็นต้น) รวมทั้งมี tool เพื่อช่วยในการ merge project ที่ถูก branch ออกไปแล้วไปเป็น project ใหม่ก็ได้เช่นกัน (เหมือนกับกรณีที่ merge code ของ Windows XP SP1 เข้าไปใน code ของ Windows XP เดิม)

•    Change Management :
        o    StarTeam รองรับการเก็บ change request ในตัว เพื่อให้ทีมสามารถ share และ manage CR เหล่านั้นได้โดยไม่ต้องใช้ tool อื่นเพิ่มเติม โดยเราสามารถเพ่มประเภทของ CR ได้เองนอกเหนือจาก default type ที่ StarTeam ให้มา
        o    นอกจาก Change Request แล้ว StarTeam เราสามารถบันทึก Requirement ใน StarTeam ได้ ทำให้สามารถทำ Requirement Management ได้ในระดับหนึ่ง สามารถสร้าง Task ใน StarTeam เพื่อ assign งานและ track progress ของ Task ต่างๆ ของสมาชิกในทีมได้ รวมถึง Topic, Issue หรือ Risk ต่างๆ ที่เกิดขึ้นใน project แต่ยังไม่ได้สรุปว่าควรจะ implement หรือไม่ เพื่อให้ artifact ต่างๆ ของ project ถูกรวมอยู่ใน repository เดียวกัน และครอบด้วย security ที่ใช้ user และ rules เดียวกัน

•    Change Traceability : เมื่อเกิดการ change ขึ้น คนที่ต้อง manage change จะต้อง track ได้ว่า change นั้น เกี่ยวข้องกับอะไรบ้าง StarTeam สามารถ link item ต่างๆ ที่ต้องการเข้าด้วยกันได้ เพื่อตอบคำถามต่างๆ เช่น CR ที่เกิดขึ้นนั้น เกี่ยวข้องกับ requirement ไหนบ้าง หรือต้องแก้ code file ไหนบ้าง เป็นต้น หรือในมุมกลับกัน เราก็บอกได้ว่า Requirement ไหนบ้างที่เกิด Change Request บ่อย ถูกแก้ไปกี่ครั้ง เป็นต้น