มาทำความรู้จักกับวิศวกรรมซอฟต์แวร์กันดีกว่า
ปัจจุบัน พบว่าซอฟต์แวร์ถูกผลิตหรือพัฒนาขึ้นมาใช้งานเป็นจำนวนมาก แบ่งตามการใช้งานได้หลายประเภท
บางส่วนมีวัตถุประสงค์เพื่อความบันเทิง บางส่วนมีวัตถุประสงค์เพื่ออำนวยความสะดวกในการทำงาน
ทั้งงานทั่วไป และงานธุรกิจ จนทำให้ซอฟต์แวร์เข้ามามีบทบาทในชีวิตประจำวันของมนุษย์มากขึ้น
ในองค์กร กำหนดซอฟต์แวร์เป็นกุญแจนำทางไปสู่ความสำเร็จได้ ยิ่งความคาดหวังที่มีต่อซอฟต์แวร์ของผู้ใช้สูงมากเพียงใด
ยิ่งทำให้ผู้ผลิตซอฟต์แวร์ต้องทำงานหนักมากขึ้น เมื่อพบว่าการผลิตซอฟต์แวร์ให้มีความสามารถ และมีลักษณะการทำงานที่โดดเด่น
หรือตอบสนองความต้องการของผู้ใช้ได้อย่างครบถ้วน ยังไม่เพียงพอต่อการผิตซอฟต์แวร์ให้ประสบความสำเร็จ
ผู้ผลิตยังต้องทำให้ซอฟต์แวร์นั้นใช้งานได้อย่างถูกต้องตลอดช่วงเวลาที่ใช้
งานอีกทั้งยังต้องสามารถแก้ไขหรือปรับปรุงได้ง่ายเพื่อการทำงานที่ดีขึ้น ด้วย ดังนั้น ผู้ผลิตจึงต้องพยายามนำวิชาความรู้เครื่องมือ เทคนิค
และวิธีการต่างๆ มาประยุกต์ใช้กับกระบวนการผลิต เพื่อให้ได้ซอฟต์แวร์ที่มีทั้งประสิทธิภาพและคุณภาพสูงสุด
ศาสตร์แขนงหนึ่งที่นำมาใช้คือ “วิศวกรรม (Engineer)” เรียกว่า “วิศวกรรมซอฟต์แวร์ (Software Engineering)”
ที่นับวันจะทวีความสำคัญต่ออุตสาหกรรมการผลิตซอฟต์แวร์มากขึ้นอย่างหลีก เลี่ยงไม่ได้
เราก็ได้รู้แล้วนะครับว่า วิศวกรรมซอฟต์แวร์มีความสำคัญเช่นไรต่อไปมารู้เรื่องเกี่ยวกับ Agile Modeling-AM ว่าคืออะไรกันน๊ะ
เป็นญาติทางไหนของวิศวกรรมซอฟต์แวร์
Agile Modeling-AM
เป็นหลักการในการพัฒนา software แบบใหม่ที่เน้น
- Rapid and flexible response to change
- ทำให้การพัฒนาว่องไว
- มีการทำเรื่อยๆไม่ต้องหยุด แม้มีอะไรมากระทบก็ไม่เป็นไร
- เมื่อมีการเปลี่ยนแปลง เราสามารถรองรับความเปลี่ยนแปลงนั้นได้อย่างรวดเร็ว ไม่ตายตัว
- Rapid and flexible response to change
- ทำให้การพัฒนาว่องไว
- มีการทำเรื่อยๆไม่ต้องหยุด แม้มีอะไรมากระทบก็ไม่เป็นไร
- เมื่อมีการเปลี่ยนแปลง เราสามารถรองรับความเปลี่ยนแปลงนั้นได้อย่างรวดเร็ว ไม่ตายตัว
วัตถุประสงค์ของ Agile
- เน้นว่าใครถนัดอะไร และการพูดคุยสื่อสารกัน มากกว่า การยึดติดที่เครื่องมือและกระบวนการ เช่นเปลี่ยนให้โปรแกรมเมอร์ไปคุยกับลูกค้าแทน ลูกค้าบอกอะไรมาก็ทำตามนั้นได้เลย
- ให้ทำงานโดยยึดที่ผลผลิตหรือ software เป็นหลัก เช่น เดิมเน้นเอกสารแต่ Agile ไม่สนมากนัก แต่สนที่ว่าเรามี sw หรือของส่งให้ลูกค้าหรือยัง
- ให้ความสำคัญเรื่องของการติดต่อสื่อสาร เช่น เดิมมีสัญญาหรือ contact กันแต่ Agile ไม่สนใจ ให้มองที่ความสัมพันธ์ระหว่างผู้พัฒนาและลูกค้า
- ยอมรับความเปลี่ยนแปลง เช่น เดิมต้องวางแผนให้ครบเป็นอย่างดี และทำตามแผน(gantt chart) ให้ได้ แต่ Agile ไม่ต้องทำตามแผนแต่เน้นการสนองความเปลี่ยนแปลงที่เกิดขึ้นได้
หลักการ Agile
เน้นความพอใจให้ลูกค้า ลูกค้าชอบ มีการส่งมอบ sw อย่างต่อเนื่อง
ยอมรับ requirement ที่เปลี่ยนแปลง
มีการส่งมอบงานบ่อยๆ (ทุกๆ 2 สัปดาห์)
ลูกค้าและผู้พัฒนาต้องทำงานร่วมกัน (โปรแกรมเมอร์ไปทำงานที่ site ลูกค้า) ต้องเจอกันทุกวันจนโปรเจคเสร็จ
การทำงานต้องปล่อยให้ทีมงานมีอำนวจการตัดสินใจเองได้ ปล่อยให้เค้าทำงาน ไว้ใจกันและทีมงานก็ต้องมีความรับผิดชอบระดับนึง
การติดต่อกัน ต้องคุยซึ่งๆหน้า ห้ามอีเมลล์หรือโทร
วัดความก้าวหน้าของงานที่ SW
กระบวนการทำงาน ให้ทำไปเรื่อยๆ อย่าหวือหวา ค่อยๆทำ ส่งงานทีละนิด ช่วยทำให้คุณภาพชีวิตของผู้พัฒนาดีขึ้น
ผู้พัฒนา สปอนเซอร์ ลูกค้า ต้องมีการทำไปเรื่อยๆ คงที่ ไม่เร็วเกินหรือช้าเกิน
ทีมงานต้องให้ความสนใจกับเทคนิคต่างๆ มีการแชร์กัน
เน้นความง่าย ออกแบบง่ายๆ พื้นๆ ไม่ซับซ้อน ทำให้ดูแลแก้ไขง่ายเมื่อพบความเปลี่ยนแปลง
ทีมมีความรับผิดชอบในกระบวนการของตัวเอง
มีการนัดพบแลกเปลี่ยนกันสม่ำเสมอ
โมเดลของ Agile
เลือกบางหลักการมาทำ
เป็นวิธีนึงที่จะเอาหลักการของ Agile มาจัดการกับเอกสารและระบบเดิมที่มีอยู่ได้
- value ผลลัพธ์
- principle หลักการ
- practices วิธีปฏิบัติ
ทั้งสามอย่างนี้เป็นส่วนหนึ่งในโมเดล Agile ที่สามารถนำมาพัฒนา SW ให้มีประสิทธิภาพและเกิด overhead น้อย
-ให้มอง Agile เป็นส่วนขยายของกระบวนการพัฒนา SW แบบเดิมได้
-ให้ Agile เข้าไปกำกับ ดูว่าของเดิมที่มีอยู่อันไหนสำคัญก็ทำอันนั้นก่อน
-นำ Agile มาจัดลำดับความสำคัญ ดูว่ากิจกรรมไหน ควรทำ ไม่ควรทำ
ทั้งหมดเป็นแค่ส่วนหนึ่งเท่านั้นนะครับยังมีอีกเยอะ
แล้วอย่าลืมติดตามตอนต่อไปนะครับ
มีอะไรผิดตรงไหนหรืออยากจะเสนออะไร
ก็อย่าลืมคอมเม้นต์ไว้นะคับจะได้ปรับปรุงแก้ไข
"ขอบพระคุณครับ"