การออกแบบซอฟต์แวร์

การออกแบบซอฟต์แวร์เป็นกระบวนการของแก้ไขปัญหาและการวางแผนสำหรับวิธีแก้ไขปัญหาเกี่ยวกับตัวซอฟต์แวร์หลังจากที่วัตถุประสงค์และข้อจำกัดของซอฟต์แวร์ได้ถูกกำหนดขึ้น, นักพัฒนาซอฟต์แวร์ต่างๆจะออกแบบหรือว่าจ้างนักออกแบบให้พัฒนาแผนในการแก้ปัญหา มันประกอบไปด้วยส่วนประกอบระดับน้อยต่างๆและการทำให้เกิดผลลำดับขั้นตอนที่ชัดเจนซึ่งใช้ในการแก้ไขปัญหาเช่นเดียวกับมุมมองหรือมิติเชิงสถาปัตยกรรม
ภาพรวม
ภาพรวม.
การวิเคราะห์ความต้องการของซอฟต์แวร์ (SRA) เป็นขั้นตอนข้อจำกัดของกระบวนการพัฒนาซอฟต์แวร์ที่ใช้กันในวิศวกรซอฟต์แวร์ ถ้าซอฟต์แวร์เป็นกึ่งอัตโนมัติ หรือเป็นแบบผู้ใช้เป็นศูนย์กลาง การออกแบบซอฟต์แวร์อาจจะเกี่ยวข้องกับประสบการณ์ของผู้ใช้โดยอาจมีกระดานเล่าเรื่องมาช่วยในการหาข้อตัดสินใจเกี่ยวกับข้อกำหนดเหล่านั้น ถ้าหากซอฟต์แวร์เป็นแบบสำเร็จโดยอัตโนมัติ (ไม่มีหน้าจอสำหรับผู้ใช้) การออกแบบซอฟต์แวร์มักจะมีรูปแบบง่ายๆ อาจมีเพียงผังการไหลของโปรแกรม (Flow chart) หรือข้อความอธิบายรายละเอียดแผนการลำดับการทำงานต่างๆ เป็นต้น มีกรรมวิธีกึ่งมาตรฐานหลายอย่างเช่น UML หรือ Fundamental modeling concepts ในกรณีอื่นๆ เอกสารแผนงานบางอย่างก็ใช้เป็นผลิตผลของการออกแบบได้ การออกแบบซอฟต์แวร์ จะไม่ขึ้นอยู่กับแพลตฟอร์ม หรือไม่ได้กำหนดแพลตฟอร์ม เป็นอิสระที่สามารถพร้อมใช้งานได้ตามเทคโนโลยีที่จะนำไปใช้ได้เลย
ดีร
หัวข้อการออกแบบซอฟต์แวร์
แนวความคิดเกี่ยวกับการออกแบบ
หัวข้อการออกแบบซอฟต์แวร์.
แนวความคิดเกี่ยวกับการออกแบบ.
แนวความคิดเกี่ยวกับการออกแบบแยกออกเป็นการออกแบบซอฟต์แวร์ด้วยแบบพื้นฐานจากวิธีที่ต้องอาศัยประสบการณ์
มากที่จะสามารถนำมาประยุกต์ใช้ได้ การจัดทำพื้นฐานของแนวความคิดได้มีการพัฒนาขึ้นอย่างต่อเนื่อง นั่นก็คือ

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


ความสามารถในการใช้งานร่วมกัน ซอฟต์แวร์ที่สามารถปฏิบัติงานกับผลิตภัณฑ์อื่นที่ออกแบบมาเพื่อที่ปฏิบัติร่วมกันกับผลิตภัณฑ์ตัวอื่นๆ ยกตัวอย่างเช่น,ชิ้นส่วนของผลิตภัณฑ์อาจจะสามารถทำงานถอยกลับไปสู่เวอร์ชั่นเก่าด้วยตัวของมันเองได้
ความสามารถในการขยายความสามารถ
ความสามารถในการทนต่อสภาพความผิดพร่อง
ความสามารถในการบำรุงรักษา
Modularity
ความสามารถในการทนทานต่อการใช้งาน
ความสามารถในการนำกลับมาใช้ใหม่
Robustness
ความปลอดภัย
ความสามารถในการใช้งานของผู้ใช้