เกียรติพงษ์ อุดมธนะธีระ
นักวิชาการคอมพิวเตอร์ชำนาญการพิเศษ สำนักโลจิสติกส์
ที่มา //logistics.go.th/index.php/en/news-article/bol-article/9386-2017-03-09-03-01-34
ในฉบับที่ผ่านมา (link) เรากล่าวถึง การจัดทำแผนที่นําทางเทคโนโลยี (Technology Road Mapping: TRM) ซึ่งเป็นแนวคิดที่นำเทคโนโลยีมาเป็นปัจจัยร่วมในการกำหนดทิศทางการขับเคลื่อนองค์กร ฉบับนี้จะพูดถึงขั้นตอนการนำระบบ (เทคโนโลยีสารสนเทศ) มาใช้ในองค์กร อาจเรียกว่า การพัฒนาระบบ เนื่องจากปัจจุบันหลายองค์กรล้มเหลวในการนำระบบมาใช้ในงาน เพราะขาดความรู้ความเข้าใจหรือไม่ได้มีการจัดขั้นตอนการพัฒนาระบบที่ถูกต้อง ดังนั้น ทุกองค์กรจึงควรมีการวางแผนการดำเนินงานตามขั้นตอนการพัฒนาระบบที่ดีในองค์กรเพื่อประสิทธิภาพที่สูงสุด
วงจรการพัฒนาระบบ (System Development Life Cycle : SDLC) คือ การแบ่งขั้นตอนกระบวนการพัฒนาระบบงาน หรือระบบเทคโนโลยีสารสนเทศด้วย เพื่อช่วยแก้ปัญหาทางธุรกิจหรือตอบสนองความต้องการขององค์กรโดยระบบที่จะพัฒนานั้นอาจเป็นการพัฒนาระบบใหม่หรือการปรับปรุงระบบเดิมให้ดีขึ้นก็ได้ การพัฒนาระบบแบ่งออกเป็น 7 ขั้นตอน ดังนี้
1. การค้นหาปัญหาขององค์กร (Problem Recognition) เป็นกิจกรรมแรกที่สำคัญในการกำหนดเป้าหมายที่ชัดเจนในการปรับปรุงโดยใช้ระบบเข้ามาช่วยนำข้อมูลปัญหาที่ได้มาจำแนกจัดกลุ่มและจัดลำดับความสำคัญ เพื่อใช้คัดเลือกโครงการที่เหมาะสมที่สุดมาพัฒนา โดยโครงการที่จะทำการพัฒนาต้องสามารถแก้ปัญหาที่มีในองค์กรและให้ประโยชน์กับองค์กรมากที่สุด
2. การศึกษาความเหมาะสม (Feasibility Study) ว่าเหมาะสมหรือไม่ที่จะปรับเปลี่ยนระบบ โดยให้เสียค่าใช้จ่าย (Cost) และเวลา (Time) น้อยที่สุดแต่ให้ได้ผลลัพธ์ที่น่าพอใจ และหาความต้องการของผู้เกี่ยวข้องใน 3 เรื่อง คือ เทคนิคเครื่องมือหรืออุปกรณ์ที่ใช้ บุคลากรและความพร้อม และความคุ้มค่า เพื่อใช้นำเสนอต่อผู้บริหารพิจารณาอนุมัติดำเนินการต่อไป
3. การวิเคราะห์ (Analysis) เป็นการรวบรวมข้อมูลปัญหาความต้องการที่มีเพื่อนำไปออกแบบระบบ ขั้นตอนนี้จะศึกษาจากผู้ใช้ โดยวิเคราะห์การทำงานของระบบเดิม (As Is) และความต้องการที่มีจากระบบใหม่ (To Be) จากนั้นนำผลการศึกษาและวิเคราะห์มาเขียนเป็นแผนภาพผังงานระบบ (System Flowchart) และทิศทางการไหลของข้อมูล (Data Flow Diagram)
4. การออกแบบ (Design) นำผลการวิเคราะห์มาออกแบบเป็นแนวคิด (Logical Design) เพื่อแก้ไขปัญหา โดยในส่วนนี้จะยังไม่ได้มีการระบุถึงรายละเอียดและคุณลักษณะอุปกรณ์มากนัก เน้นการออกแบบโครงร่างบนกระดาษ แล้วส่งให้ผู้ออกแบบระบบนำไปออกแบบ (System Design) ซึ่งขั้นตอนนี้จะเริ่มมีการระบุลักษณะการทำงานของระบบทางเทคนิค รายละเอียดคุณลักษณะอุปกรณ์ที่ใช้ เทคโนโลยีที่ใช้ ชนิดฐานข้อมูลการออกแบบ เครือข่ายที่เหมาะสม ลักษณะของการนำข้อมูลเข้า ลักษณะรูปแบบรายงานที่เกิด และผลลัพธ์ที่ได้
5. การพัฒนาและทดสอบ (Development & Test) เป็นขั้นตอนการการเขียนโปรแกรม (Coding) เพื่อพัฒนาระบบจากแบบบนกระดาษให้เป็นระบบตามคุณลักษณะที่กำหนดไว้ จากนั้นทำการทดสอบหาข้อผิดพลาด (Testing) เพื่อตรวจสอบความถูกต้อง จนมั่นใจว่าถูกต้องและตรงตามความต้องการ หากพบว่ามีข้อผิดพลาดเกิดขึ้นจากการทำงานของระบบต้องปรับแก้ไขให้เรียบร้อยพร้อมใช้งานก่อนนำไปติดตั้งใช้จริง
6. การติดตั้ง (Implementation) เป็นขั้นตอนการนำระบบที่พัฒนาจนสมบูรณ์มาติดตั้ง (Installation) และเริ่มใช้งานจริง ในส่วนนี้นอกจากติดตั้งระบบใช้งานแล้ว ยังต้องมีการจัดเตรียมขั้นตอนการสนับสนุนส่งเสริมการใช้งานให้สามารถใช้งานได้อย่างสมบูรณ์ โดยจัดทำหลักสูตรฝึกอบรมผู้ใช้งาน (Training) เอกสารประกอบระบบ (Documentation) และแผนการบริการให้ความช่วยเหลือ (Support) เพื่อให้ระบบสามารถใช้งานได้อย่างต่อเนื่อง
7. การซ่อมบำรุงระบบ (System Maintenance) เป็นขั้นตอนการบำรุงรักษาระบบต่อเนื่องหลังจากเริ่มดำเนินการ ผู้ใช้ระบบอาจจะพบกับปัญหาที่เกิดขึ้นภายหลัง เช่น ปัญหาเนื่องจากความไม่คุ้นเคยกับระบบใหม่ จึงควรกำหนดแผนค้นหาปัญหาอย่างต่อเนื่อง ติดตามประเมินผล เก็บรวบรวมคำร้องขอให้ปรับปรุงระบบ วิเคราะห์ข้อมูลร้องขอให้ปรับปรุงระบบ จากนั้นออกแบบการทำงานที่ต้องการปรับปรุงแก้ไขและติดตั้ง ซึ่งต้องมีการฝึกอบรมการใช้งานระบบให้แก่ผู้ใช้งาน เพื่อที่จะทราบความพึงพอใจของผู้ใช้
Software Development Life Cycle (SDLC) คืออะไร ทำไมจำเป็นต่อการพัฒนาซอฟต์แวร์
Software development life cycle (SDLC) เป็นกระบวนการที่ใช้ในการพัฒนาซอฟต์แวร์ โดยได้มีการกำหนดขั้นตอนต่างๆ เพื่อสามารถพัฒนาและส่งมอบซอฟต์แวร์ ได้อย่างมีคุณภาพและสมบูรณ์ โดยทั่วไปแล้ว SDLC จะประกอบไปด้วย 6 ขั้นตอนได้แก่ การวางแผน การเก็บรวบรวม Requirement การออกแบบซอฟต์แวร์ การพัฒนาซอฟต์แวร์ การทดสอบซอฟต์แวร์ การบำรุงรักษาซอฟต์แวร์
ขั้นตอนกระบวนการพัฒนาซอฟต์แวร์ - Software Development Life Cycle
1. การวางแผน (Planning) เป็นการวางแผนในการพัฒนาซอฟต์แวร์ ใน Phase นี้ Program manager, Project Manage จะวางแผนใน Project ว่าจะใช้ระยะเวลาในการพัฒนาซอฟต์แวร์เท่าไหร่ (Time) มี Feature อะไรบ้างที่จะพัฒนา (Scope) มีจำนวนคนที่จะใช้พัฒนาซอฟต์แวร์กี่คน (Resource) วางแผนว่าใครหรือองค์กรไหนที่จะมีส่วนเกี่ยวข้องกับการพัฒนาซอฟต์แวร์ได้บ้างเช่น หากทำ Application เกี่ยวกับการซื้อขายหุ้นก็ต้องอาศัยกฏ ข้อบังคับต่างๆของ กลต เข้ามาเป็นปัจจัยการออกแบบซอฟต์แวร์ด้วย วางแผนเพื่อเก็บ Requirement, Design Software และการทดสอบซอฟต์แวร์ การมีข้อมูลที่ละเอียดจะช่วยให้การวางแผนงานได้อย่างแม่นยำจะช่วยลดความเสี่ยงของการพัฒนาซอฟต์แวร์และสามารถพัฒนาสำเร็จตามวัตถุประสงค์
2. การเก็บรวบรวมและวิเคราะห์ Requirement (Requirement gathering and analysis) ในขั้นตอนนี้ Requirement นั้น Project Manage, Product owner หรือ Business analysis จะเป็นผู้เก็บเก็บรวบรวม Requirement จากลูกค้าหรือผู้มีส่วนเกี่ยวข้อง เพื่อเข้าใจความต้องการจากผู้ใช้งานและการทำงานของระบบ โดยอาจจัดทำอยู่ในรูปแบบ Prototyping เพื่อให้ผู้ใช้งานสามารถเข้าใจการทำงานของระบบได้ง่ายขึ้น หลังจากการรวบรวม Requirement เสร็จแล้วทีมพัฒนาเช่น Developer, QA สามารถช่วยตรวจสอบ Requirement นั้นได้เพื่อใช้ในการ Design Software และประเมินความเสี่ยงและข้อจำกัดของซอฟต์แวร์ที่อาจเกิดขึ้นได้
3. การออกแบบซอฟต์แวร์ (Design Software) ขั้นตอนนี้หลักๆแล้ว Developer จะนำ Requirement ที่ได้มาออกแบบ เช่น Design สถาปัตยกรรมที่จะใช้ (Architects) ส่วนต่อประสานผู้ใช้งาน (User Interface) ภาษาที่จะใช้ในการพัฒนาซอฟต์แวร์ Design ฐานข้อมูล Security และ Network เป็นต้น ผลลัพธ์ที่ได้จากขั้นตอนนี้จะได้ System Design Specification ซึ่งสามารถให้ผู้มีส่วนเกี่ยวข้องหรือผู้เชี่ยวชาญได้ Review และสามารถให้คำแนะนำได้
4. การพัฒนาซอฟต์แวร์ (Software development) ขั้นตอนนี้เป็นการพัฒนาซอฟต์แวร์โดยทีม Developer โดยจะเริ่มนำ Design และ Requirement ต่างๆที่ได้ออกแบบในขั้นตอนที่ 2 และ 3 มาเริ่มเขียนโปรแกรม การพัฒนาซอฟต์แวร์นั้นจะนำเครื่องมือต่างๆมาช่วยพัฒนาซอฟต์แวร์ได้ เครื่องมือที่จะนำมาใช้นั้นก็ขึ้นอยู่กับลักษณะของซอฟต์แวร์ เมื่อการพัฒนาซอฟต์แวร์เริ่มขึ้นจะเริ่มแต่ละ Feature ย่อยจากนั้นค่อยๆรวมแต่ละ Feature ย่อยเข้าด้วยกันให้เป็นระบบ ในการพัฒนาซอฟต์แวร์นั้นจะพัฒนาได้อย่างรวดเร็วหาก Phase ช่วงการ Design นั้นละเอียดและมีเอกสารที่เข้าใจได้ง่าย
5. การทดสอบซอฟต์แวร์ (Software Testing) การทดสอบซอฟต์แวร์เป็นการประกันคุณภาพของซอฟต์แวร์ ค้นหาข้อผิดพลาด ป้องกันการเกิดข้อผิดพลาดของซอฟต์แวร์ รวมไปถึงตรวจสอบว่าซอฟต์แวร์ที่พัฒนานั้นเป็นไปตาม Requirement หรือไม่ ในการทดสอบนั้นจะมีการสร้าง Test case หรือเป็นกรณีที่ผู้ใช้งานจะใช้งานระบบและ Expected results คือผลที่คาดหวังจากการทดสอบโดยผลที่คาดหวังนี้จะอิงตาม Requirement ที่ได้จาก Phase ที่ 2 หากซอฟต์แวร์ทำงานถูกต้องเป็นไปตามสิ่งที่คาดหวังผลการทดสอบก็จะผ่านแต่หากไม่เป็นไปตามผลที่คาดหวังผลการทดสอบก็จะไม่ผ่าน ต้องสิ่งให้ Developer ต่อไป ปัจจุบันนั้นมีการทำ Automated test เข้าใจช่วยในการ Run test เพื่อการทำงานที่รวดเร็วมากขึ้น
6. การบำรุงรักษาซอฟต์แวร์ (Operations and Maintenance) เมื่อซอฟต์แวร์ผ่านการทดสอบแล้วก็จะมีการ Deployed เพื่อให้ผู้ใช้งานได้ใช้งานระบบจริง ในระหว่างที่ผู้ใช้งานซอฟต์แวร์อยู่นั้นก็อาจจะเกิดปัญหาต่างๆได้เช่น ต้องการ Feature เพิ่มเติม ซอฟต์แวร์ทำงานไม่เป็นไปตามความคาดหวัง ซอฟต์แวร์มี Bug อยู่ หรือการ Deployed ครั้งแรกอาจมีข้อจำกัดอะไรบางอย่าง เมื่อเกิดปัญหาเหล่านี้เกิดขึ้นก็ต้องมีการแก้ไข บำรุงรักษาซอฟต์แวร์เพื่อให้ผู้ใช้งานพึ่งพอใจมากที่สุด ซึ่งในการแก้ไขก็อาจจะกลับไปเริ่มในขั้นตอนที่ 1 ถึง 6 ใหม่ (New Development Cycle)
SDLC Models
ปัจจุบันนี้มีการนำ Model มาประยุกต์ใช้ในกระบวนการพัฒนาซอฟต์แวร์ หรือเรียกว่า Process model เพื่อเป็นวิธีการหรือแนวทางในการพัฒนาซอฟต์แวร์ให้ประสบผลสำเร็จ เช่น
- Agile Model เป็น Model ที่เน้นปฏิสัมพันธ์และตอบสนองความต้องการของลูกค้าอย่างรวดเร็ว กรอบการพัฒนาซอฟต์แวร์ในระยะเวลาสั้นๆ (Sprint) เพื่อรองรับการเปลี่ยนแปลงที่อาจเกิดขึ้นอย่างรวดเร็ว สามารถรับ Feedback จากผู้ใช้งานได้อย่างรวดเร็ว
- Waterfall Model เป็นการพัฒนาซอฟต์แวร์ตามลำดับขั้นตอนโดยต้องพัฒนาแต่ละขั้นตอนให้สำเร็จถึงจะพัฒนาขั้นตอนถัดไปได้ การใช้ Waterfall Model นั้นมีข้อจำกัดอยู่ว่าหากมีการแก้ไขระหว่างที่กำลังพัฒนาซอฟต์แวร์อยู่นั้นทำได้ช้าเพราะหากต้องการแก้ไขจะต้องกลับไปเริ่มในขั้นตอนแรกใหม่
- Iterative Model เป็นการส่งมอบซอฟต์แวร์ใน Version แรกๆอย่างรวดเร็วเพื่อให้ผู้ใช้งานประเมินว่าเป็นไปตามที่ต้องการหรือไม่ หลังจากนั้นจะซอฟต์แวร์ใน Version ต่อๆไปอย่างรวดเร็ว (Iterative)
- Spiral Model เป็นการทำ Waterfall Model มาพัฒนาต่อยอดโดยจะมีการประเมินในแต่ละ Phase เพื่อลดความเสี่ยงในการพัฒนาซอฟต์แวร์
- V-Model เป็น Model ที่พัฒนาต่อยอดจาก Waterfall Model โดยในแต่ละ Phase ของการพัฒนาซอฟต์แวร์สามารถตรวจสอบ (Verification) คุณภาพควบคู่ไปกับการพัฒนาของแต่ละ Phase ได้ ในการตรวจสอบนั้นจะตรวจสอบตั้งแต่ Requirement, Design, Code, Unit Test และ Integration test ดังนั้นเมื่อซอฟต์แวร์มีการตรวจสอบมากขึ้นก็จะสามารถลดข้อผิดพลาดและเพิ่มความถูกต้องในการทำงานของซอฟต์แวร์ได้มากยิ่งขึ้น