ขั้นตอนการพัฒนาระบบแบบ SDLC (Symtem Development Life Cycle)

หลายคนที่ทำงานด้าน IT หรือ Programmer จะรู้จักกันดีนะครับเกี่ยวกับ SDLC ว่ามันคืออะไร แต่ก็ยังมีไม่น้อยนะครับที่อาจจะยังไม่เห็นภาพว่าการพัฒนาระบบหรือโปรแกรมนั่นมีรายละเอียดแต่ละขั้นตอนยังไงบ้างนะครับ วันนี้เรามาศึกษาเพิ่มกันดีกว่าครับว่าแต่ละขั้นตอนมีรายละเอียดยังไงกันบ้าง ต่อจากนี้ไปผมจะขอยกตัวอย่างระบบการสร้างแบบสอบถามนะครับ เพื่อทีจะได้เห็นภาพกันชัดเจนยิ่งขึ้น



  • Requirement Analysis หรือ ขั้นตอนการวิเคราะห์ความต้องการของระบบ 

ในขั้นตอนนี้ส่วนใหญ่เราจะเก็บความต้องการของระบบ หรือคุณสมบัติใดบ้างที่ระบบของเราควรจะมี จาก ผู้ใช้งานหรือคนที่เป็นเจ้าของระบบ ในที่นี้ก็คือเจ้าของระบบสร้างแบบสอบถามนั่นเอง ผมขอยกตัวอย่างความต้องการขอระบบสร้างแบบสอบถามดังนี้นะครับ
    1. ผู้ใช้งานต้องล็อกอินเพื่อใช้งานระบบ
    2. ผู้ใช้งานสามารถ แก้ไข แสดง ข้อมูลส่วนตัวได้
    3. ผู้ใช้งานต้องสามารถแสดงความคิดเห็นแก่ผู้ดูแลระบบได้
    4. ผู้ใช้งานสามารถ สร้าง และ แก้ไข แบบสอบถามได้
    5. คำตอบของแบบสอบถามมี 4 แบบ
      • แบบเลือกตอบหลายข้อ
      • แบบเลลือกตอบได้หนึ่งข้อ
      • แบบปลายเปิด
      • แบบประเมิณค่า
    6. ผู้ใช้งานต้องสามารถนำออกแบบสอบถามในรูปแบบ PDF ได้
    7. ระบบต้องมีส่วนควบคุมจัดการข้อมูลของผู้ใช้งานทั้งหมดได้
    8. ระบบต้องสามารถจัดเก็บประวัติการใช้งานของผู้ใช้งานแต่ละคน และ ระบบทั้งหมดได้
    9. ระบบจะต้องใช้งานผ่านอินเตอร์เน็ต

  • Design หรือ ออกแบบระบบ 

หลังจากเราได้ความต้องการทั้งหมดของระบบที่จะต้องมีจากผู้ใช้งานแล้ว เราจะต้องมาทำการออกแบบว่าระบบที่เราจะทำนั่น ต้องเป็นยังไง หน้าตาเป็นยังไง มีฐานข้อมูลเป็นยังไง จะใช้เทคโนโลยีอะไรในการสร้างระบบเราขึ้นมา

จากความต้องการของระบบที่เราได้มาผมจึงขอเลือกเทคโนโลยีที่ต้องใช้งานผ่านอินเตอร์เน็ตได้
จากตัวเลือกในปัจจุบันที่ผมสามารถเขียนได้ก็มี PHP, ASP.NET และ JSP (Java) เริ่มจากศึกษาข้อดีข้อเสียของแต่ละเทคโนโลยีก่อน สุดท้ายผมเลือก PHP เพราะว่าความหยืดหยุ่นในการเขียนโปรแกรม มี API ให้ใช้งานเยอะ อีกทั้งศึกษาเรียนรู้ได้เร็วและง่ายต่อการเขียนโค็ด

ส่วนฐานข้อมูลผมก็เลือกที่รองรับ Relational Database ที่ซึ่งสามารถเก็บข้อมูลแบบมีความสัมพันธ์ต่อกันได้ ตัวที่มีก็ตามนี้ MySQL, MSSQL และ Oracle ผมเลือก MySQL เพราะฟรีไม่ต้องจ่ายค่าไลเซ็นอีกทั้งยังทำงานเข้ากันได้ดีกับ PHP

ส่วนเรื่องการนำออกแบบสอบถามเป็น PDF นั่นมี Library หลายตัวเหมือนกันที่ให้เราได้เลือกใช้ เช่น DomPdf, tcppdf และ PDF ของ PHP เอง แต่ในที่นี้ผมจะเลือก tcppdf เพราะว่าสามารถแปลง HTML โค็ดไปเป็น PDF ได้เลยไม่จำเป็นต้องเขียนโค็ดใหม่อีกรอบ

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

ทั้ง 4 เรื่องนี้เรื่องที่ยากที่สุดน่าจะเป็น ฐานข้อมูล และ หน้าจอ GUI เพราะเราจะต้องทำการออกแบบคร่าวๆ ออกมาก่อน หรือที่เราเรียยกว่า Prototype นั่นเองครับ

หลังจากการออกแบบสิ่งที่ควจจะได้มาควจจะเป็นสิ่งที่เราจะต้องนำไปสร้างระบบได้จริงๆ ตามนี้นะครับ

ฐานข้อมูล: ควรได้ออกมาเป็นตารางที่ไม่มีความซ้ำซ้อนแล้ว และสามารถน้ำไปสร้างฐานข้อมูลได้ด้วย ภาษา SQL

หน้าจอ GUI: ควจได้ออกมาเป็นหน้าตาของโปรแกรมที่จะเป็นหลังจากเราพัฒนาระบบเสร็จแล้ว ในส่วนนี้มีความจำเป็นอย่างมากที่เราจะต้องติดต่อและทำความเข้าใจอย่างมากกับผุ้ใช้งานระบบ เพราะว่าถ้าผู้ใช้งานระบบไม่เข้าใจ หรือเราไม่ได้ออกแบบตามความต้องการและความเข้าใจของผุ้ใช้งานจริงๆ โปรแกรมระบบที่เราออกแบบมานั่นอาจจะไม่สามารถถูกใช้งานได้อย่างมีประสิทธิภาพก็เป้นได้

เนื่องจากว่าหน้าจอขอระบบมีหลายหน้าจอมาก ดังนั่นผมขอยกตัวอย่างเพียง 3 หน้าจอนะครับ แล้วที่เหลือคงต้องโหลดมาดูจาก http://dl.dropbox.com/u/73613269/MockupofQuestionnaireproject.pdf

หน้าจอล็อกอินเข้าระบบ

หน้าจอเมื่อผู้ใช้งานล็อกอินเรียบร้อยแล้ว

หน้าจอสำหรับใช้ในการสร้างแบบสอบถาม

เพียงเท่านี้เราก็มีเอกสารเล็กน้อยให้ลูกค้า หรือ ผู้ใช้งาน ดูแล้วเพื่อทำความเข้าใจให้ตรงกันในสิ่งที่ระบบจะต้องเป็นนะครับ

  • Imprementation หรือ การสร้างระบบจากสิ่งที่เราออกแบบ

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

จากฐานข้อมูลที่เราออกแบบไว้สามารถสร้างได้โดย ภาษา SQL ตามด้านล่างนะครับ ผมจะขอยกตัวอย่างเพียงแค่ 3 ตารางนะครับ

CREATE TABLE account
(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
username VARCHAR(20) NOT NULL UNIQUE,
password VARCHAR(20) NOT NULL,
sex VARCHAR(1) NOT NULL,
birdday DATE NOT NULL,
address VARCHAR(255) NOT NULL,
phone VARCHAR(20),
email VARCHAR(50) NOT NULL,
activated VARCHAR(1) NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE questionnaire
(
id INT NOT NULL AUTO_INCREMENT,
text VARCHAR(1024) NOT NULL,
description VARCHAR(2048) NOT NULL,
time DATETIME NOT NULL,
account INT NOT NULL,
PRIMARY KEY(id)
);

CREATE TABLE feedback
(
id INT NOT NULL AUTO_INCREMENT,
message VARCHAR(2048) NOT NULL,
status VARCHAR(10),
time DATETIME NOT NULL,
account INT NOT NULL,
PRIMARY KEY(id)
);

ต้องอย่าลืมนะครับว่าผลลัพธ์ที่ได้จากส่วนนี้ต้องเป็นระบบที่สามารถใช้งานได้แล้ว (PHP Coding + Database + GUI + PDF Output) ผู้ใช้งานสามารถใช้งานได้แล้ว แต่ระบบอาจจะมีข้อผิดพลาดอยู่บ้างก็ไม่เป็นไร เพราะเรามีส่วนของการ Testing อีกทีที่เราสามารถแก้ไขข้อผิดพลาดพวกนั่นได้

หน้าตาโปรแกรมเราเมื่อเสร็จแล้วจะได้ประมาณนี้

  • Testing หรือ ส่วนของการทดสอบโปรแกรม

ในส่วนนี้โดยส่วนมากจะเป็นส่วนของการทดสอบโปแกรมหรือระบบ ที่เราสร้างขึ้นมาว่าทำงานได้ดีไม่มีข้อผิดพลาดใดๆ ทั้งสิ้น ถ้าเราเจอข้อผิดพลาดในส่วนนี้เราก็สามารถแก้ไข้มันได้ในส่วนนี้เลยนะครับ โดยส่วนมากแล้วการทดสอบระบบในส่วนนี้มีด้วยกัน 2 แบบคือ
    • Functional Testing คือการทดสอบว่าระบบทำได้ตามความต้องการของระบบในเบื้องต้นหรือไม่ ถ้าไม่เราก็จะต้องกลับไปที่ส่วน Design เพื่อออกแบบคุณสมบัติที่มันตกหล่นไปนั่นเอง แล้วนำมาสร้าง และ ทดสอบใหม่อีกครับ
    • Performance Testing คือการทดสอบระบบโดยดูเรื่องของ ความเร็ว ว่าระบบเราทำงานช้ามั้ยถ้ามีผู้ใช้งานเยอะๆ ระบบเราเสถียรหรือไม่ ประมาณนี้ครับ

  • Evolution หรือการดูแบบปรับปรุงระบบ

ส่วนนี้คือส่วนที่ระบบเราเสร็จเรียบร้อยแล้ว ระบบไม่มีข้อผิดพลาดอะไรแล้ว ในส่วนนี้เราก็แค่ค่อยดูแลระบบให้ไม่มีปัหาใดๆ และถ้ามีข้อผิดพลาดของระบบ เราก็แก้ไขไป ถ้ามีคุณสมบัติใหม่ที่ผู้ใช้งานต้องการเพิ่มเราก็เข้าสู่ขั้นตอนการเก็บความต้องการของระบบใหม่อีกรอบอีกครั้งเพียงเท่านี้เองครับ

3 comments

Thx for helpful information.

เข้าใจมากขึ้นค่ะ ^^