พัฒนาระบบ(2)

  • ปัจจัยอะไรในการพัฒนาระบบให้ประสบความสำเร็จ

          นักวิเคราะห์ระบบสามารถนำเครื่องมือต่าง ๆ มาประยุกต์ใช้กับการวิเคราะห์และออกแบบซึ่งเรียกว่า “Methodology” โดย Methodology เป็นแนวทางที่มีการนำโมเดล (Model), เครื่องมือ (Tools) และเทคนิค (Techniques) ต่าง ๆ มาใช้กับการพัฒนาซอฟต์แวร์ ซึ่งจัดเป็นแนวทางในการแก้ปัญหาด้วยวิธีการพัฒนาซอฟต์แวร์ โดยต้องเข้าใจว่าระบบสารสนเทศทั้งหลายมีวงจรชีวิตที่เหมือนกันตั้งแต่เกิดจนตายวงจรนี้จะเป็นขั้นตอน ที่เป็นลำดับตั้งแต่ต้นจนเสร็จเรียบร้อยเป็นระบบที่ใช้งานได้ ซึ่งนักวิเคราะห์ระบบต้องทำความเข้าใจให้ดีว่าในแต่ละขั้นตอนจะต้องทำอะไร และทำอย่างไร

  • วิศวกรรมซอฟต์แวร์คืออะไร

          นักวิเคราะห์ระบบต้องมีพื้นฐานความคิดเหมือนกับนักวิศวกรรมซอฟต์แวร์ต้องมีการสังเกตพร้อมกับตั้งข้อสงสัยว่าสิ่งที่เกิดขึ้นคืออะไรและมีการนำไปใช้ประยุกต์ใช้กับอะไร

          วิศวกรรมซอฟต์แวร์ (software engineering) เป็นศาสตร์เกี่ยวกับวิศวกรรมด้านซอฟต์แวร์ มีเนื้อหาเกี่ยวข้องกับการใช้กระบวนการทางวิศวกรรมใน การดูแลการผลิต ตั้งแต่การเริ่มเก็บความต้องการ การตั้งเป้าหมายของระบบ การออกแบบ กระบวนการพัฒนา การตรวจสอบ การประเมินผล การติดตามโครงการ การประเมินต้นทุน การรักษาความปลอดภัย ไปจนถึงการคิดราคาซอฟต์แวร์

          สรุปได้ว่าวิศวกรรมซอฟต์แวร์ คือ การประยุกต์ใช้ระบบ กฎเกณฑ์ การเข้าถึงซึ่งสามารถวัดประเมินได้ในการพัฒนา การปฏิบัติการ และการบำรุงรักษาซอฟต์แวร์ และในการศึกษาสิ่งเหล่านี้ ก็คือการประยุกต์ใช้งานทางด้านวิศวกรรมมาจัดการกับซอฟต์แวร์

           วิศวกรรมซอฟต์แวร์เป็นศาสตร์ที่ทวีความสำคัญเพิ่มขึ้นเรื่อยๆเนื่องจากในปัจจุบันซอฟต์แวร์มีความซับซ้อนเพิ่มขึ้นจำเป็นต้องมีวิธีที่จะควบคุมและดำเนินการผลิตที่มีประสิทธิภาพสามารถวัดผลได้และสามารถตรวจหาข้อผิดพลาดพร้อมสาเหตุได้อย่างสะดวกและรวดเร็วเพื่อให้สามารถปรับปรุงแก้ไขซอฟต์แวร์ตั้งแต่อยู่ในระหว่างการผลิตได้

          นักวิเคราะห์ระบบควรศึกษากิจกรรมพื้นฐานของกระบวนการทางวิศวกรรมซอฟต์แวร์ 4 ส่วนหลัก ๆ ด้วยกันคือ

          1. ข้อกำหนดซอฟต์แวร์ (Software Specification) กำหนดฟังก์ชันหน้าที่ของซอฟต์แวร์ รวมถึงเงื่อนไขข้อบังคับการปฏิบัติงานบนหน้าที่ที่จะต้องได้รับการกำหนดขึ้น
          2. การพัฒนาซอฟต์แวร์ (Software Development) การพัฒนาหรือสร้างผลิตภัณฑ์ให้ตรงตามข้อกำหนด ด้วยการนำกรรมวิธีการพัฒนาซอฟต์แวร์มาใช้ เพื่อให้กระบวนการพัฒนาซอฟต์แวร์นั้นมีมาตรฐาน และตัวผลิตภัณฑ์ซอฟต์แวร์มีคุณภาพ
          3. การตรวจสอบความถูกต้องของซอฟต์แวร์ (Software Validation) เพื่อให้แน่ใจว่าซอฟต์แวร์ที่พัฒนานี้เป็นผลิตภัณฑ์ที่ตรงกับความต้องการของลูกค้าหรือผู้ใช้งาน
          4. วิวัฒนาการของซอฟต์แวร์ (Software Evolution) ซอฟต์แวร์อาจมีการเปลี่ยนแปลงไปตามความต้องการของผู้ใช้งานระหว่างการพัฒนาก็เป็นได้ ซอฟต์แวร์ควรออกแบบไว้เพื่อรองรับวิวัฒนาการที่สามารถเปลี่ยนแปลงไปตามความต้องการของผู้ใช้งานได้อย่างเหมาะสม ซึ่งคุณสมบัติซอฟต์แวร์ที่มีคุณภาพ ประกอบด้วย มีความถูกต้อง, มีความน่าเชื่อถือ, ใช้งานง่าย, บำรุงรักษาง่าย,สามารถนำกลับมาใช้งานใหม่ได้, มีความคงทน, มีประสิทธิภาพ, มีความสะดวกในการเคลื่อนย้าย และมีความปลอดภัย

  • วงจรการพัฒนาระบบหรือวัฏจักรของการพัฒนาระบบ (System Development Life Cycle : SDLC)

          ในการพัฒนาระบบมีอยู่ 7 ขั้นตอน

  1. กำหนดปัญหาและศึกษาความเป็นไปได้ หมายถึง การตรวจสอบเบื้องต้น (Preliminary Investigation) ขั้นที่ 1 กำหนดปัญหา (Problem Definition) เป็นขั้นตอนของการกำหนดขอบเขตของปัญหา สาเหตุของปัญหาจากการดำเนินงานในปัจจุบัน ความเป็นไปได้กับการสร้างระบบใหม่ การกำหนดความต้องการระหว่างผู้วิเคราะห์กับผู้ใช้งาน โดยข้อมูลเหล่านี้ได้จากการรวบรวมข้อมูลจากการดำเนินงานต่างๆ เพื่อทำการสรุปเป็นข้อกำหนดที่ชัดเจน
  2. การวิเคราะห์ความต้องการ (Requirements Analysis) ขั้นที่ 2 วิเคราะห์ (Analysis) เป็นขั้นตอนของการวิเคราะห์การดำเนินงานของระบบปัจจุบัน โดยการนำความต้องการที่ได้มาจากขั้นตอนแรกมาวิเคราะห์ในรายละเอียด เพื่อทำการพัฒนาเป็นแบบจำลองซึ่งประกอบด้วย แผนภาพข้อมูล คำอธิบายการประมวลผลข้อมูล ทำให้ทราบถึงรายละเอียดขั้นตอนการดำเนินงานในระบบว่าประกอบด้วยอะไรบ้าง มีความเกี่ยวข้องหรือสัมพันธ์กับสิ่งใด
  3. การออกแบบระบบ (System Design) ขั้นที่ 3 ออกแบบ (Design) เป็นขั้นตอนการหาผลลัพธ์ที่ได้จากการวิเคราะห์ มาพัฒนาให้สอดคล้อง โดยการออกแบบจะเริ่มจากส่วนของอุปกรณ์และเทคโนโลยีต่างๆ และโปรแกรมคอมพิวเตอร์ที่นำมาพัฒนา การออกแบบจำลองข้อมูล การออกแบบรายงาน และการออกแบบจอภาพในการติดต่อกับผู้ใช้งาน
  4. การจัดหาระบบ (System Acquistion) หรือ พัฒนาระบบ ขั้นที่ 4 พัฒนา (Development) เป็นขั้นตอนของการพัฒนาโปรแกรมด้วยการสร้างชุดคำสั่งหรือเขียนโปรแกรมเพื่อการสร้างระบบงาน โดยโปรแกรมที่ใช้ในการพัฒนาจะต้องพิจารณาถึงความเหมาะสมกับเทคโนโลยีที่ใช้งานอยู่ ซึ่งในปัจจุบันภาษาระดับสูงได้มีการพัฒนาในรูปแบบของ 4GL ซึ่งช่วยอำนวยความสะดวกต่อการพัฒนา รวมทั้งการมี CASE (Computer Aided Software Engineering) ต่างๆ มากมายให้เลือกใช้ตามความเหมาะสม
  5. ทดสอบและจัดเตรียมคู่มือการใช้งาน ขั้นที่ 5 ทดสอบ (Testing) เป็นขั้นตอนของการทดสอบระบบก่อนที่จะนำไปปฏิบัติการใช้งานจริง โดยจะทำการทดสอบข้อมูลเบื้องต้นก่อน ด้วยการสร้างข้อมูลจำลองเพื่อตรวจสอบการทำงานของระบบ หากมีข้อผิดพลาดเกิดขึ้นก็ย้อนกลับไปในขั้นตอนการพัฒนาโปรแกรมใหม่ โดยการทดสอบระบบนี้จะมีการตรวจสอบอยู่ 2 ส่วนด้วยกัน คือ การตรวจสอบรูปแบบภาษาเขียน และการตรวจสอบวัตถุประสงค์งานตรงกับความต้องการหรือไม่
  6. การติดตั้งเพื่อใช้งาน (System Implementation) ขั้นที่ 6 ติดตั้ง (Implementation) ขั้นตอนหลังจากที่ได้ทำการทดสอบจนมีความมั่นใจแล้วว่าระบบสามารถทำงานได้จริง และตรงกับความต้องการของผู้ใช้ระบบ จากนั้นจึงดำเนินการติดตั้งระบบเพื่อใช้งานจริงต่อไป
  7. การบำรุงรักษา (System Maintenance) ขั้นที่ 7 บำรุงรักษา (Maintenance) เป็นขั้นตอนของการปรับปรุงแก้ไขระบบหลังจากที่ได้มีการติดตั้งและใช้งานแล้ว ในขั้นตอนนี้อาจเกิดปัญหาของโปรแกรม ซึ่งโปรแกรมเมอร์จะต้องรีบแก้ไขให้ถูกต้อง หรือเกิดจากความต้องการของผู้ใช้งานที่ต้องการเพิ่มการทำงานอื่นๆ ซึ่งทั้งนี้ก็จะเกี่ยวข้องกับความต้องการของผู้ใช้ที่เคยตกลงกันก่อนหน้า
  • โมเดลการพัฒนาซอฟต์แวร์ (Software Development Process Models)

          นักวิเคราะห์ระบบต้องนำ SDLC มาปรับประยุกต์ใช้จึงเกิดเป็นโมเดลการพัฒนาซอฟต์แวร์ที่หลากหลาย อันได้แก่ 

  • Water Fall Model แบบน้ำตก คุณลักษณะของน้ำตกเป็ นขั้นตอนการทำงาน คล้ายสายงานการผลิต (Product Line) ข้อดีคือแบ่งงานเป็นส่วนและมีกำหนดการส่งมอบงานในแต่ละส่วนอย่างชัดเจน สำหรับข้อเสียคือหลักการเปรียบเสมือนกับน้ำตกไหลจากที่สูงลงที่ต่ำ ไม่สามารถไหลกลับมาในทางตรงกันข้ามได้อีก การพัฒนาระบบงานด้วยหลักการนี้ เมื่อทำขั้นตอนหนึ่งแล้วจะไม่สามารถย้อนกลับมาที่ขั้นตอนก่อนหน้าได้อีก ซึ่งจะมองเห็นจุดอ่อนของหลักการนี้ว่า หากมีข้อผิดพลาดเกิดขึ้นที่ขั้นตอนก่อนหน้านี้แล้ว จะไม่สามารถย้อนกลับมาแก้ไขได้ ดังนั้น การพัฒนาระบบด้วยหลักการนี้ จำเป็นต้องมีการวางแผนที่ดี เพื่อให้สามารถป้องกันการผิดพลาดได้มากที่สุด

  • Adapted Waterfall น้ำตกปรับปรุงหรือน้ำตกที่สามารถย้อนกลับ เป็นรูปแบบในการพัฒนาระบบงานที่ปรับปรุงมาจากแบบ waterfall โดยในแต่ละขั้นตอนเมื่อดำเนินงานอยู่ สามารถย้อนกลับมายังขั้นตอนก่อนหน้าเพื่อแก้ไขข้อผิดพลาด

  • Spiral Model แบบจำลองนี้เหมาะสำหรับระบบงานที่มีโอกาสเปลี่ยนแปลงบ่อยเนื่องจากในแต่ละเฟสนั้นจะมีการวิเคราะห์ความต้องการใหม่ และวิเคราะห์ความเสี่ยงว่าจะทำการพัฒนาต่อไปอีกหรือไม่ หรือจะเพียงพอแล้วกับเฟสนี้เท่านั้น สรุปได้ว่า SDLC แบบ Spiral มีลักษณะเป็นวงจรวิเคราะห์ - ออกแบบ – พัฒนา – ทดสอบ (Analysis – Design – Implementation – Testing ) และจะวนกลับมาในแนวทางเดิม เช่นนี้เรื่อยไป จนกระทั่งได้ Product ที่สมบูรณ์ การพัฒนาในรูปแบบนี้มีความยืดหยุ่นมาก

  • Rapid Application Development (RAD) คือ การพัฒนาแอปพลิเคชันแบบรวดเร็ว ด้วยการมุ่งเน้นด้านการลดต้นทุนและระยะเวลาในการพัฒนา เพื่อความคล่องตัวจึงจำเป็นต้องมีทีมงานขนาดเล็กที่มีความรู้ความสามารถเฉพาะ การนำเทคนิค RAD มาใช้ในโครงการเพื่อมุ่งหวังพัฒนาระบบงานให้สำเร็จอย่างรวดเร็ว และใช้งานได้ภายในระยะเวลาจำกัดมากกว่าที่จะให้ระบบสมบูรณ์แบบ หรือมีเทคนิคที่ดีเลิศ RAD Methodology ยังมีการแตกแขนงออกไปอีกหลายวิธี ในที่นี้ขอยกตัวอย่างเพียง 3วิธี ดังนี้ @ Phased Development-based Methodology  , @Prototyping-based Methodology ,  @Throw -Away Prototyping-based Methodology เป็นต้น สำหรับข้อเสียของRADMethodologyนั่นคือการเปลี่ยนแปลงความต้องการของผู้ใช้อยู่ตลอดเวลาเนื่องจากผู้ใช้ได้ทดลองใช้โปรแกรมต้นแบบที่สามารถสร้างและแก้ไขง่ายนั่นเอง