Page 16 - วิศวกรรมซอฟต์แวร์
P. 16
7-6 วิศวกรรมซอฟต์แวร์
สำ� หรบั ขนั้ ตอนการโปรแกรม (programming) เปน็ ลกั ษณะการโปรแกรมเชงิ โครงสรา้ ง (structure program-
ming) ซ่ึงนักพัฒนาซอฟต์แวร์จะเลือกใช้โปรแกรมเชิงโครงสร้างเพื่อสนับสนุนขั้นตอนการโปรแกรมเชิงโครงสร้างนี้
โดยท่ัวไปภาษาในการโปรแกรมเชิงโครงสร้างจะสนับสนุนการโปรแกรมใน 3 รูปแบบ ได้แก่ การโปรแกรมที่เรียงเป็น
ล�ำดับ (sequence) การโปรแกรมที่มีการตัดสินใจ (decision) และการโปรแกรมที่มีการท�ำงานเป็นลูป (loop) หรือ
การท�ำซ�้ำ (repetition) เช่น ภาษาโคบอล ภาษาเบสิค ภาษาซี เป็นต้น
ในการออกแบบซอฟต์แวร์เชิงโครงสร้างที่ดีนั้น สิ่งที่นักพัฒนาหรือทีมพัฒนาซอฟต์แวร์ต้องค�ำนึงถึง
คือคุณภาพของซอฟต์แวร์ในระหว่างการออกแบบฟังก์ช่ันหรือโมดูล โดยทั่วไปจะพิจารณาจากโครงสร้างของฟังก์ช่ัน
หรือโมดูลใน 2 ลักษณะ ได้แก่
1) ความแขง็ แกรง่ ของโมดลู (module cohesion) วัดจากระดับการยึดเกาะกันของหน้าที่หรือกิจกรรม
ในโมดลู เพอ่ื การทำ� งานของฟงั กช์ นั่ ใดฟงั กช์ นั่ หนง่ึ หากโมดลู มกี ารประมวลผลขอ้ มลู เพอื่ ฟงั กช์ นั่ มากกวา่ หนงึ่ แสดงวา่
สามารถแบ่งย่อยลงไปอีกได้ มีความหมายว่ามีความแข็งแกร่งในระดับต่�ำ แต่หากโมดูลประมวลผลข้อมูลเพียงโมดูล
เดียว แสดงว่ามีความแข็งแกร่งสูง โมดูลท่ีดีจะต้องมีความแข็งแกร่งสูง
2) ความสมั พนั ธร์ ะหวา่ งโมดลู (module coupling) วดั จากระดบั ความซบั ซอ้ นของความสมั พนั ธร์ ะหวา่ ง
โมดูล ซึ่งโมดูลที่ดีจะต้องมีความสัมพันธ์ระหว่างกันน้อยที่สุด (loosely coupled)
ข้อเสียของการพัฒนาซอฟต์แวร์ในแนวทางเชิงโครงสร้าง สามารถสรุปได้ ดังน้ี
• หากโปรแกรมมีขนาดใหญ่ข้ึน จะมีความซับซ้อนในแง่ของการเขียนโปรแกรม
• การน�ำโปรแกรมกลับมาใช้ใหม่ (reusable) อยู่ในระดับต่�ำ
• การปรับปรุงแก้ไข (modify) เพื่อขยายหรือปรับปรุงประสิทธิภาพของโปรแกรมอาจจะท�ำได้ค่อนข้างยาก
1.2 แนวทางในการพัฒนาซอฟต์แวร์เชิงวัตถุ (object - oriented methodology) เป็นแนวความคิดที่ใช้
ในการสร้างโมเดลของส่ิงที่มีความซับซ้อน โดยมีจ�ำนวนเหตุการณ์ที่เกิดขึ้นจ�ำนวนมากท่ีเก่ียวกับกลุ่มของวัตถุ ความ
สัมพันธ์ของเหตุการณ์ท่ีเกิดขึ้นจะเกี่ยวพันและเชื่อมโยงกับวัตถุ ดังนั้น การใช้วิธีการเชิงวัตถุจึงเป็นวิธีการทางเทคนิค
ที่ท�ำให้เกิดรูปธรรม โดยมีรูปแบบการพัฒนาเป็นกระบวนการแบบท�ำซ้�ำ (iterative process) และค่อย ๆ เพ่ิมเติม
(incremental process) ซ่ึงเป็นรูปแบบหนึ่งที่สามารถสนับสนุนการพัฒนาซอฟต์แวร์แบบอไจล์ (agile develop-
ment) ซึ่งเป็นแนวทางการพัฒนาซอฟต์แวร์ที่ต้องการเน้นไปยังการปรับปรุงซอฟต์แวร์อย่างรวดเร็ว หรือเน้น
การพัฒนาโดยรองรับการเปลี่ยนแปลงในอนาคต
หลักการของแนวคิดเชิงวัตถุ คือ พยายามมองการพัฒนาระบบเหมือนกับการมองโลกแห่งความเป็นจริง
มองสิ่งต่าง ๆ เป็นวัตถุหรืออ็อบเจ็กต์ (object) แต่ละอ็อบเจ็กต์จะมีคุณสมบัติและการท�ำงานเฉพาะตัว และอ็อบเจ็กต์
สามารถมีความสัมพันธ์กับอ็อบเจ็กต์อื่นๆ ได้ นอกจากนี้ อ็อบเจ็กต์ที่มีคุณลักษณะบางประการคล้าย ๆ กัน ก็สามารถ
น�ำกลุ่มอ็อบเจ็กต์เหล่านั้นมารวมให้อยู่ในกลุ่มเดียวกันได้
ในข้ันตอนของการวิเคราะห์และออกแบบซอฟต์แวร์ส�ำหรับแนวทางในการพัฒนาซอฟต์แวร์เชิงโครงสรา้ งนี้
จะมกี ารใชแ้ บบจำ� ลองในการวเิ คราะหแ์ ละออกแบบซอฟตแ์ วรต์ ามมาตรฐานของภาษายเู อม็ แอล (The Unified Modeling
Language: UML) ซึ่งมีด้วยกันหลายแผนภาพ แต่ละแผนภาพล้วนมีวัตถุประสงค์ในการสร้างและการน�ำไปใช้ที่แตก
ต่างกันออกไป ส่วนใหญ่ที่มีการน�ำมาใช้กันจะมีด้วยกัน 9 แผนภาพ ได้แก่ แผนภาพยูสเคส (use case diagram)
แผนภาพคลาส (class diagram) แผนภาพอ็อบเจ็กต์ (object diagram) แผนภาพซีเควนซ์ (sequence diagram)
แผนภาพคอมมนู เิ คชน่ั (communication diagram) แผนภาพสเตท (state diagram) แผนภาพแอก็ ตวิ ติ ี้ (acitivity
dagram) แผนภาพดีพลอยเมนต์ (deployment diagram) และแผนภาพคอมโพเนนต์ (component diagram)