วิชา 4122309 วิศวกรรมซอฟต์แวร์ (Software Engineering) หลักการออกแบบและพัฒนาซอฟต์แวร์ หลั
พื้นฐานทั่วไปของการออกแบบซอฟต์แวร์ หลักการเดิมที่นิยมใช้ในการออกแบบซอฟต์แวร์หรือโปรแกรมจะเป็นแบบ จากบนลงล่าง (Top-Down Design) ซึ่งสะดวกต่อการทำความเข้าใจและ ตรวจสอบ นอกจากนี้ยังมีในลักษณะอื่นๆ ดังนี้ การออกแบบจากล่างขึ้นบน (Bottom-Up Design) วิธีกระจายออกจากด้านใน (Inside-Out Design)
โปรแกรมย่อย (Subprogram) และโมดูล (Module) โปรแกรมย่อยมีการเรียกกันหลายชื่อตามลักษณะของภาษานั้น ๆ เช่น อาจ เรียกว่าฟังก์ชั่น (Function) ในภาษา C หรือ Procedure (ภาษา PACAL) โมดูล (Module) หมายถึง ส่วนประกอบของโปรแกรมซึ่งอาจอยู่ในรูปของ โปรแกรมย่อย (Subprogram) ก็ได้และสามารถทดสอบได้อย่างอิสระ โดย โมดูลนั้นมีภารกิจอย่างใดอย่างหนึ่งโดยเฉพาะ ยิ่งมีความเป็นอิสระและทำ ภารกิจได้เสร็จสมบูรณ์ในตัวมันเองโดยที่ไม่ผูกพันกับโมดูลอื่นๆ (High Cohesion) ยิ่งดี และ Low Coupling
แนวทางการออกแบบพัฒนาซอฟต์แวร์ ต้องเข้าใจปัญหาหรือความต้องการ และเข้าใจอัลกอริทึมที่จะนำมาใช้ แก้ปัญหานั้นเป็นอย่างดี ใช้กฎการแบ่งแยกแล้วเอาชนะ (Divide and Conquer) ในกรณีที่เป็นปัญหา ยุ่งยากซับซ้อน ให้ใช้วิธีแยกย่อยปัญหา นั้นออกเป็นส่วนย่อยๆ แล้วหาทาง แก้ปัญหาแต่ละส่วนจะทำให้แก้ปัญหาทั้งหมดได้ง่ายขึ้น โดยการแตกโปรแกรม ออกเป็นส่วนย่อยๆ แต่ละส่วนยิ่งเป็นอิสระต่อกันมากเท่าไร ยิ่งลดความซับซ้อนของระบบได้มากขึ้น เท่านั้น
แนวทางการออกแบบพัฒนาซอฟต์แวร์ (ต่อ) เขียนโปรแกรมภายใต้เงื่อนไขและข้อกำหนดตามที่ออกแบบไว้ เขียนโปรแกรมให้อยู่ในรูปแบบที่เป็นมาตรฐานซึ่งทำให้สะดวกในการตรวจสอบ ควรเลือกใช้โครงสร้างข้อมูลที่ไม่สลับซับซ้อนสะดวกต่อการทำความเข้าใจ และ สามารถเข้ากับการทำงานของโปรแกรมได้เป็นอย่างดี หากไม่จำเป็นไม่ควรเขียนโปรแกรมเพื่อทำงานในระดับบิต ในการปรับปรุงพัฒนาโปรแกรมให้ดีขึ้น ไม่ควรเริ่มจากการปรับปรุงคำสั่ง แต่ ควรเริ่มจากการเลือกหรือปรับปรุงอัลกอริทึมให้ดีขึ้น ในส่วนของคำสั้ง (if, while, do) ที่ซับซ้อน หรือ (if-else) ควรเปลี่ยนเป็นใช้ คำสั่ง switch แทน