วิศวกรรมซอฟต์แวร์คืออะไร? ลักษณะเฉพาะและคำจำกัดความ
⚡ สรุปอย่างชาญฉลาด
วิศวกรรมซอฟต์แวร์คือกระบวนการที่เป็นระบบในการวิเคราะห์ความต้องการ จากนั้นจึงออกแบบ สร้าง และทดสอบซอฟต์แวร์ที่ตอบสนองความต้องการเหล่านั้น เอกสารนี้จะอธิบายคำจำกัดความ วิกฤตการณ์ซอฟต์แวร์ที่ก่อให้เกิดวิศวกรรมซอฟต์แวร์ ความนิยมของวิศวกรรมซอฟต์แวร์ สาขาวิชาที่เกี่ยวข้อง ความท้าทาย และลักษณะของซอฟต์แวร์ที่ดี

วิศวกรรมซอฟต์แวร์คืออะไร
วิศวกรรมซอฟต์แวร์ หมายถึง กระบวนการวิเคราะห์ความต้องการของผู้ใช้ จากนั้นจึงออกแบบ สร้าง และทดสอบแอปพลิเคชันซอฟต์แวร์ที่สามารถตอบสนองความต้องการเหล่านั้นได้
เรามาดูคำจำกัดความต่างๆ ของวิศวกรรมซอฟต์แวร์กัน:
- มาตรฐาน IEEE 610.12-1990 ได้นิยามวิศวกรรมซอฟต์แวร์ว่า คือ การประยุกต์ใช้แนวทางที่เป็นระบบ มีระเบียบวินัย และสามารถคำนวณได้ ในการพัฒนา การดำเนินงาน และการบำรุงรักษาซอฟต์แวร์
- ฟริตซ์ เบาเออร์ นิยามไว้ว่า “คือการสร้างและนำหลักการทางวิศวกรรมมาตรฐานมาใช้ ซึ่งจะช่วยให้คุณได้ซอฟต์แวร์ที่เชื่อถือได้และทำงานได้อย่างมีประสิทธิภาพบนเครื่องจริงในราคาประหยัด”
- โบห์มให้คำจำกัดความของวิศวกรรมซอฟต์แวร์ว่า “การประยุกต์ใช้ความรู้ทางวิทยาศาสตร์ในทางปฏิบัติเพื่อการออกแบบและการสร้างโปรแกรมคอมพิวเตอร์อย่างสร้างสรรค์ ซึ่งรวมถึงเอกสารประกอบที่จำเป็นสำหรับการพัฒนาด้วย”pingรวมถึงการใช้งานและการบำรุงรักษาอุปกรณ์เหล่านั้น"
ทำไมต้องวิศวกรรมซอฟต์แวร์? วิกฤติซอฟต์แวร์และแนวทางแก้ไข
วิกฤติซอฟต์แวร์คืออะไร?
- ในช่วงปลายทศวรรษ 1960 เมื่อโครงการซอฟต์แวร์จำนวนมากล้มเหลว
- ซอฟต์แวร์จำนวนมากใช้งบประมาณเกินกว่าที่กำหนดไว้ ผลลัพธ์ที่ได้คือซอฟต์แวร์ที่ไม่น่าเชื่อถือและมีค่าใช้จ่ายในการบำรุงรักษาสูง
- ซอฟต์แวร์ขนาดใหญ่นั้นยากและบำรุงรักษาค่อนข้างแพง
- ซอฟต์แวร์จำนวนมากไม่สามารถตอบสนองความต้องการที่เพิ่มขึ้นของลูกค้าได้
- ความซับซ้อนของโครงการซอฟต์แวร์เพิ่มขึ้นทุกครั้งที่ความสามารถด้านฮาร์ดแวร์เพิ่มขึ้น
- ความต้องการซอฟต์แวร์ใหม่เพิ่มขึ้นเร็วกว่าเมื่อเทียบกับความสามารถในการสร้างซอฟต์แวร์ใหม่
ปัญหาทั้งหมดข้างต้นนำไปสู่ 'วิกฤตซอฟต์แวร์'
โซลูชั่น
วิธีแก้ปัญหาคือการเปลี่ยนกระบวนการเขียนโค้ดที่ไม่เป็นระบบให้กลายเป็นระเบียบวินัยทางวิศวกรรมซอฟต์แวร์ โมเดลทางวิศวกรรมเหล่านี้ช่วยให้บริษัทต่างๆ สามารถปรับปรุงการดำเนินงานและส่งมอบซอฟต์แวร์ที่ตรงตามความต้องการของลูกค้าได้
- ในช่วงปลายทศวรรษ 1970 หลักการทางวิศวกรรมซอฟต์แวร์ได้ถูกนำมาใช้อย่างแพร่หลาย
- ทศวรรษ 1980 เป็นช่วงเวลาที่กระบวนการทางวิศวกรรมซอฟต์แวร์ได้รับการพัฒนาให้เป็นระบบอัตโนมัติ และเกิดการเติบโตของวิศวกรรมซอฟต์แวร์โดยใช้คอมพิวเตอร์ช่วย (CASE)
- ในช่วงทศวรรษ 1990 มีการเน้นย้ำมากขึ้นในด้าน "การจัดการ" ของโครงการ รวมถึงมาตรฐานคุณภาพและกระบวนการต่างๆ เช่น ISO 9001
ทำไมวิศวกรรมซอฟต์แวร์ถึงได้รับความนิยม?
ต่อไปนี้เป็นเหตุผลสำคัญที่อยู่เบื้องหลังความนิยมของวิศวกรรมซอฟต์แวร์:
- ซอฟต์แวร์ขนาดใหญ่ – ในชีวิตจริง การสร้างกำแพงนั้นง่ายกว่าการสร้างบ้านหรืออาคารมาก ในทำนองเดียวกัน เมื่อขนาดของซอฟต์แวร์ใหญ่ขึ้น วิศวกรรมซอฟต์แวร์ก็ช่วยให้คุณสร้างซอฟต์แวร์นั้นได้
- scalability – หากกระบวนการพัฒนาซอฟต์แวร์อยู่บนพื้นฐานของแนวคิดทางวิทยาศาสตร์และวิศวกรรม จะทำให้การสร้างซอฟต์แวร์ใหม่เพื่อขยายขนาดซอฟต์แวร์ที่มีอยู่เดิมทำได้ง่ายขึ้น
- การปรับตัวและเข้าถึงได้ – เมื่อกระบวนการพัฒนาซอฟต์แวร์อยู่บนพื้นฐานของหลักการทางวิทยาศาสตร์และวิศวกรรม การสร้างซอฟต์แวร์ใหม่ด้วยความช่วยเหลือจากวิศวกรรมซอฟต์แวร์จึงทำได้ง่าย
- ราคา – อุตสาหกรรมฮาร์ดแวร์ได้แสดงให้เห็นถึงความสามารถ และการผลิตในปริมาณมากได้ช่วยลดต้นทุนของคอมพิวเตอร์และอุปกรณ์อิเล็กทรอนิกส์ลง
- ธรรมชาติแบบไดนามิก – ซอฟต์แวร์มีลักษณะที่เติบโตและปรับตัวอยู่เสมอ ขึ้นอยู่กับสภาพแวดล้อมที่ผู้ใช้งานทำงาน
- ที่ปรึกษา QMS - นำเสนอวิธีการพัฒนาซอฟต์แวร์ที่ดีกว่า เพื่อส่งมอบผลิตภัณฑ์ซอฟต์แวร์ที่มีคุณภาพ
ความสัมพันธ์ระหว่างวิศวกรรมซอฟต์แวร์กับสาขาวิชาอื่น
ต่อไปนี้คือความสัมพันธ์ระหว่างวิศวกรรมซอฟต์แวร์กับสาขาวิชาอื่นๆ:
- วิทยาศาสตร์คอมพิวเตอร์: เป็นรากฐานทางวิทยาศาสตร์สำหรับซอฟต์แวร์ เช่นเดียวกับที่ฟิสิกส์เป็นรากฐานสำหรับวิศวกรรมไฟฟ้า
- วิทยาศาสตร์การจัดการ: วิศวกรรมซอฟต์แวร์เป็นงานที่ต้องใช้แรงงานมากและต้องอาศัยทั้งทักษะทางเทคนิคและการควบคุมด้านการจัดการ ดังนั้นจึงมีการนำไปใช้อย่างกว้างขวางในวิทยาการจัดการ
- เศรษฐศาสตร์: ในภาคส่วนนี้ วิศวกรรมซอฟต์แวร์ช่วยคุณในการประเมินทรัพยากรและการควบคุมต้นทุน จำเป็นต้องพัฒนาระบบคอมพิวเตอร์และบำรุงรักษาข้อมูลอย่างสม่ำเสมอภายในงบประมาณที่กำหนด
- วิศวกรรมระบบ: ซอฟต์แวร์ส่วนใหญ่เป็นส่วนประกอบของระบบที่ใหญ่กว่ามาก ตัวอย่างเช่น ซอฟต์แวร์ในระบบตรวจสอบทางอุตสาหกรรม หรือซอฟต์แวร์ควบคุมการบินบนเครื่องบิน วิธีการทางวิศวกรรมซอฟต์แวร์ควรนำมาประยุกต์ใช้ในการศึกษาระบบประเภทนี้
ความท้าทายของวิศวกรรมซอฟต์แวร์
ต่อไปนี้เป็นความท้าทายสำคัญที่วิศวกรซอฟต์แวร์ต้องเผชิญ:
- ในพื้นที่ที่มีความสำคัญด้านความปลอดภัย เช่น อวกาศ การบิน และโรงไฟฟ้านิวเคลียร์ ต้นทุนของความล้มเหลวของซอฟต์แวร์อาจมหาศาล เนื่องจากชีวิตของผู้คนตกอยู่ในความเสี่ยง
- ความต้องการของตลาดที่เพิ่มขึ้นสำหรับเวลาตอบสนองที่รวดเร็ว
- รับมือกับความซับซ้อนที่เพิ่มขึ้นของซอฟต์แวร์ที่จำเป็นสำหรับแอปพลิเคชันใหม่ๆ
- ความหลากหลายของระบบซอฟต์แวร์ที่ควรสื่อสารกันได้
คุณลักษณะสำหรับผลิตภัณฑ์ซอฟต์แวร์
คุณลักษณะของผลิตภัณฑ์ซอฟต์แวร์ใดๆ รวมถึงคุณสมบัติต่างๆ ที่แสดงออกมาเมื่อติดตั้งและเริ่มใช้งานผลิตภัณฑ์นั้น
สิ่งเหล่านี้ไม่ใช่บริการที่ผลิตภัณฑ์นั้นมีให้ แต่เกี่ยวข้องกับพฤติกรรมเชิงพลวัตของผลิตภัณฑ์และการใช้งานผลิตภัณฑ์ต่างหาก
ตัวอย่างของคุณลักษณะเหล่านี้คือ:
Efficiency, reliability, robustness, maintainability, etc.
อย่างไรก็ตาม ความสำคัญเชิงสัมพันธ์ของคุณลักษณะเหล่านี้แตกต่างกันไปในแต่ละระบบซอฟต์แวร์
| ลักษณะสินค้า | Descriptไอออน |
|---|---|
| การบำรุงรักษา | ซอฟต์แวร์ควรพัฒนาเพื่อตอบสนองความต้องการที่เปลี่ยนแปลงไปของลูกค้า |
| ความเชื่อถือได้ | ความน่าเชื่อถือรวมถึงลักษณะต่างๆ ซอฟต์แวร์ที่เชื่อถือได้ไม่ควรสร้างความเสียหายทางกายภาพหรือทางเศรษฐกิจในขณะที่ระบบขัดข้อง |
| อย่างมีประสิทธิภาพ | โปรแกรมไม่ควรใช้ทรัพยากรระบบมากเกินไป เช่น หน่วยความจำและรอบการประมวลผลของโปรเซสเซอร์ |
| การใช้งาน | โปรแกรมซอฟต์แวร์ควรมีส่วนติดต่อผู้ใช้และเอกสารประกอบที่เหมาะสม |
การปรับปรุงคุณสมบัติข้างต้นให้เหมาะสมที่สุดนั้นเป็นเรื่องที่ท้าทายมาก ตัวอย่างเช่น การนำเสนอ UI ที่ดีขึ้นอาจลดประสิทธิภาพของระบบลงได้
ลักษณะของซอฟต์แวร์ที่ดี
ควรประเมินซอฟต์แวร์ใดๆ ก็ตามจากสิ่งที่มันนำเสนอและวิธีการใช้งานที่ช่วยให้คุณใช้งานซอฟต์แวร์นั้นได้
ซอฟต์แวร์ทุกตัวจะต้องตอบสนองคุณสมบัติต่อไปนี้:
- Operaแห่งชาติ
- เกี่ยวกับการนำส่ง
- ซ่อมบำรุง
ต่อไปนี้คือคุณลักษณะสำคัญบางประการของซอฟต์แวร์ที่ดี ซึ่งพัฒนาโดยผู้เชี่ยวชาญด้านซอฟต์แวร์
Operaแห่งชาติ
คุณลักษณะนี้ช่วยให้เราทราบว่าซอฟต์แวร์ทำงานได้ดีเพียงใดในการใช้งานจริง ซึ่งสามารถวัดได้จาก:
- งบประมาณ
- อย่างมีประสิทธิภาพ
- การใช้งาน
- ความเชื่อถือได้
- ความถูกต้อง
- ฟังก์ชั่น
- ความปลอดภัย
- ความปลอดภัย
เกี่ยวกับการนำส่ง
นี่เป็นสิ่งสำคัญเมื่อซอฟต์แวร์ถูกย้ายจากแพลตฟอร์มหนึ่งไปยังอีกแพลตฟอร์มหนึ่ง:
- การทำงานร่วมกัน
- ความสามารถในเรอุส
- Portability
- การปรับตัวและเข้าถึงได้
ซ่อมบำรุง
ประเด็นนี้กล่าวถึงความสามารถของซอฟต์แวร์ในการปรับตัวให้เข้ากับสภาพแวดล้อมที่เปลี่ยนแปลงอย่างรวดเร็ว:
- ความยืดหยุ่น
- การบำรุงรักษา
- modularity
- scalability

