SMC-S-012 การพัฒนาซอฟต์แวร์
มาตรฐาน “SMC-S-012 การพัฒนาซอฟต์แวร์” ซึ่งเผยแพร่โดยศูนย์ระบบอวกาศและขีปนาวุธ (SMC) ของกองบัญชาการอวกาศกองทัพอากาศสหรัฐฯมีวัตถุประสงค์เพื่อกำหนดข้อกำหนดที่เป็นเอกภาพสำหรับกิจกรรมการพัฒนาซอฟต์แวร์สำหรับระบบที่มีความสำคัญต่อภารกิจ มาตรฐานนี้อิงตามมาตรฐาน “MIL-STD-498 มาตรฐานทางทหาร: การพัฒนาซอฟต์แวร์และเอกสารประกอบ” ที่พัฒนาโดยกระทรวงกลาโหมสหรัฐฯ

มาตรฐานนี้ใช้กับการพัฒนาของระบบที่สำคัญต่อภารกิจ ได้แก่ ซอฟต์แวร์ (เช่น ระบบฮาร์ดแวร์-ซอฟต์แวร์) ระบบซอฟต์แวร์อย่างเดียว และผลิตภัณฑ์ซอฟต์แวร์แบบสแตนด์อโลน มาตรฐานนี้สามารถนำไปใช้กับผู้รับเหมาที่ดำเนินการพัฒนาซอฟต์แวร์หรือกับหน่วยงานภายในที่จัดซื้อได้ มาตรฐานนี้สามารถปรับใช้กับประเภทซอฟต์แวร์แต่ละประเภทที่นำไปใช้ได้
มาตรฐานนี้เป็นอิสระจากวิธีการหรือเครื่องมือการพัฒนาซอฟต์แวร์เฉพาะใดๆ ไม่มีข้อกำหนดใดในมาตรฐานนี้ที่บังคับให้ต้องใช้วิธีการหรือเครื่องมือใดโดยเฉพาะ
กรอบงานที่ใช้จัดระเบียบกิจกรรมซอฟต์แวร์หลักในกระบวนการพัฒนาซอฟต์แวร์เรียกว่าโมเดลวงจรชีวิตการพัฒนาซอฟต์แวร์
- นักพัฒนาจะต้องเลือกโมเดลวงจรชีวิตการพัฒนาซอฟต์แวร์หรือโมเดลที่เหมาะสมกับซอฟต์แวร์ที่กำลังพัฒนา โปรเจ็กต์ซอฟต์แวร์สามารถมีแบบจำลองวงจรชีวิตการพัฒนาซอฟต์แวร์ได้หลายแบบสำหรับหมวดหมู่ซอฟต์แวร์ที่ได้รับการพัฒนาที่แตกต่างกัน
- นักพัฒนาจะต้องบันทึกแบบจำลองวงจรชีวิตการพัฒนาซอฟต์แวร์ที่เลือกหรือแบบจำลองต่างๆ ไว้ในเทมเพลต “แผนการพัฒนาซอฟต์แวร์” ที่แนบมา
- นักพัฒนาจะต้องจัดทำคำอธิบายของแต่ละโมเดลวงจรชีวิตการพัฒนาซอฟต์แวร์ที่จะใช้ในโครงการในแผนการพัฒนาซอฟต์แวร์
- สำหรับแต่ละโมเดลวงจรชีวิตการพัฒนาซอฟต์แวร์ที่จะใช้ นักพัฒนาจะต้องกำหนดไว้ในแผนการพัฒนาซอฟต์แวร์:
- จะถูกใช้งานเมื่อใดในวงจรชีวิตการพัฒนาระบบ?
- จะใช้ภายใต้เงื่อนไขใด?
- ส่วนประกอบซอฟต์แวร์ใดที่จะใช้สำหรับ
- นักพัฒนาจะต้องจัดตั้งกระบวนการพัฒนาซอฟต์แวร์ที่สอดคล้องกับข้อกำหนดของสัญญา
- กระบวนการพัฒนาซอฟต์แวร์ควรประกอบด้วยกิจกรรมหลักและกระบวนการบูรณาการดังต่อไปนี้:
- การวางแผนและควบคุมโครงการ
- การสร้างสภาพแวดล้อมการพัฒนาซอฟต์แวร์
- การวิเคราะห์ความต้องการของระบบ
- การออกแบบสถาปัตยกรรมระบบ
- การวิเคราะห์ความต้องการซอฟต์แวร์
- สถาปัตยกรรมซอฟต์แวร์และการออกแบบ
- การนำซอฟต์แวร์ไปใช้งานและการทดสอบยูนิต
- การบูรณาการและการทดสอบหน่วย
- การทดสอบคุณสมบัติองค์ประกอบซอฟต์แวร์
- การรวมและการทดสอบองค์ประกอบซอฟต์แวร์และฮาร์ดแวร์
- การทดสอบคุณสมบัติของระบบ
- การเตรียมซอฟต์แวร์เพื่อการเปลี่ยนผ่านสู่การดำเนินงาน
- การเตรียมซอฟต์แวร์เพื่อการเปลี่ยนผ่านไปสู่การบำรุงรักษา
- กระบวนการบูรณาการ:
- การจัดการการกำหนดค่าซอฟต์แวร์
- บทวิจารณ์ซอฟต์แวร์และคะแนนผลิตภัณฑ์
- การรับประกันคุณภาพซอฟต์แวร์
- การดำเนินการแก้ไข
- การทบทวนเทคนิคและการจัดการร่วมกัน
- การจัดการความเสี่ยงด้านซอฟต์แวร์
- การวัดผลซอฟต์แวร์
- Guvenlik ve Gizlilik
- การจัดการสมาชิกทีมซอฟต์แวร์
- อินเทอร์เฟซกับซอฟต์แวร์ตัวแทน IV&V
- การประสานงานกับผู้พัฒนาพันธมิตร
- การปรับปรุงกระบวนการโครงการ
กิจกรรมที่สำคัญเหล่านี้อาจทับซ้อนกัน ดำเนินการซ้ำๆ หรือดำเนินการแตกต่างกัน เกี่ยวข้องกับองค์ประกอบต่างๆ ของซอฟต์แวร์และไม่จำเป็นต้องดำเนินการตามลำดับที่ระบุไว้ข้างต้น
- กระบวนการพัฒนาซอฟต์แวร์ของนักพัฒนาควรได้รับการอธิบายไว้ในแผนการพัฒนาซอฟต์แวร์
ข้อกำหนดทั่วไปสำหรับการพัฒนาซอฟต์แวร์รวมถึงข้อกำหนดทั่วไปของนักพัฒนาเพื่อตอบสนองข้อกำหนดโดยละเอียดที่กำหนดไว้ในมาตรฐานนี้ ข้อกำหนดที่ละเอียดกว่ามีอยู่ในภาคผนวกของมาตรฐาน (ภาคผนวก H.1)
- วิธีการพัฒนาซอฟต์แวร์: นักพัฒนาต้องใช้วิธีการที่เป็นระบบและมีเอกสารประกอบสำหรับกิจกรรมการพัฒนาซอฟต์แวร์ทั้งหมด วิธีการพัฒนาซอฟต์แวร์อย่างเป็นระบบเหล่านี้ควรได้รับการระบุไว้ในแผนการพัฒนาซอฟต์แวร์
- มาตรฐานสำหรับผลิตภัณฑ์ซอฟต์แวร์: นักพัฒนาพัฒนามาตรฐานเพื่อแสดงข้อกำหนด สถาปัตยกรรม การออกแบบ โค้ด กรณีทดสอบ ขั้นตอนการทดสอบ และผลการทดสอบ มาตรฐานการนำเสนอผลิตภัณฑ์เหล่านี้ระบุไว้ในแผนการพัฒนาซอฟต์แวร์ นักพัฒนานำมาตรฐานที่ระบุไว้ในแผนการพัฒนาซอฟต์แวร์ไปใช้เพื่อแสดงข้อกำหนด สถาปัตยกรรม การออกแบบ โค้ด กรณีทดสอบ ขั้นตอนการทดสอบ และผลการทดสอบ
- การตรวจสอบย้อนกลับ: การตรวจสอบย้อนกลับทำให้เกิดความสัมพันธ์ระหว่างเนื้อหาของผลิตภัณฑ์ที่เกี่ยวข้องสองรายการ เช่น ความสัมพันธ์จากข้อกำหนดของซอฟต์แวร์แต่ละรายการไปจนถึงส่วนประกอบการออกแบบซอฟต์แวร์ที่ตอบสนองข้อกำหนดนั้น การตรวจสอบย้อนกลับแบบสองทิศทางช่วยให้แน่ใจถึงความสัมพันธ์แบบสองทิศทางระหว่างเนื้อหาของผลิตภัณฑ์ที่เกี่ยวข้องสองรายการ ตัวอย่างของความสัมพันธ์แบบทวิภาคีดังกล่าว ได้แก่ ความสามารถในการตรวจสอบย้อนกลับจากข้อกำหนดซอฟต์แวร์แต่ละข้อไปยังส่วนประกอบการออกแบบซอฟต์แวร์ที่ตอบสนองความต้องการนั้น และความสามารถในการตรวจสอบย้อนกลับจากส่วนประกอบการออกแบบแต่ละข้อไปยังข้อกำหนดซอฟต์แวร์ที่ส่วนประกอบการออกแบบตอบสนอง วัตถุประสงค์ของข้อกำหนดการตรวจสอบย้อนกลับแบบสองทิศทางในส่วนนี้คือการตรวจสอบย้อนกลับทั้งจากบนลงล่างเพื่อให้แน่ใจว่า:
- แสดงให้เห็นว่าข้อกำหนดทั้งหมดได้รับการจัดสรรให้กับส่วนประกอบ นำไปปฏิบัติและทดสอบแล้ว
- พิสูจน์ว่าไม่มีข้อกำหนดเพิ่มเติมใดๆ ที่ใช้บังคับ
- การให้ข้อมูลผลกระทบจากการเปลี่ยนแปลงที่เสนอ
- ให้ข้อมูลเกี่ยวกับผลกระทบจากปัญหาที่ค้นพบ
- การให้ข้อมูลเพื่อการดูแลรักษาซอฟต์แวร์
- ผลิตภัณฑ์ซอฟต์แวร์ที่นำกลับมาใช้ใหม่ได้: ผู้พัฒนาจะต้องระบุผลิตภัณฑ์ซอฟต์แวร์ที่นำกลับมาใช้ใหม่ได้ซึ่งจะใช้เพื่อตอบสนองข้อกำหนดของสัญญา ขอบเขตของการค้นหาผลิตภัณฑ์ซอฟต์แวร์ที่สามารถนำมาใช้ซ้ำได้ควรระบุไว้ในแผนการพัฒนาซอฟต์แวร์ นักพัฒนาจะต้องประเมินผลิตภัณฑ์ซอฟต์แวร์ที่สามารถนำมาใช้ซ้ำได้ซึ่งจะนำมาใช้เพื่อปฏิบัติตามข้อกำหนดของสัญญา เกณฑ์ที่จะใช้ในการประเมินผลิตภัณฑ์ซอฟต์แวร์ที่สามารถนำมาใช้ซ้ำได้ควรเป็นไปตามที่ระบุไว้ในแผนการพัฒนาซอฟต์แวร์ ผู้พัฒนาต้องใช้เกณฑ์การประเมินอย่างน้อยในภาคผนวกของมาตรฐานในการเลือกผลิตภัณฑ์ซอฟต์แวร์ที่นำมาใช้ซ้ำได้ (ภาคผนวก B) เกณฑ์การประเมินอาจมีการถ่วงน้ำหนักต่างกันไปสำหรับประเภทซอฟต์แวร์ที่แตกต่างกันและข้อกำหนดที่สำคัญที่แตกต่างกัน ผลิตภัณฑ์ซอฟต์แวร์ที่นำมาใช้ซ้ำที่เลือกจะต้องเป็นไปตามข้อกำหนดสิทธิ์ข้อมูลในสัญญา ผลิตภัณฑ์ซอฟต์แวร์ที่นำกลับมาใช้ใหม่สามารถใช้งานได้ตามที่เป็นอยู่หรือสามารถปรับเปลี่ยนและใช้เพื่อตอบสนองความต้องการทั้งหมดหรือบางส่วนของความต้องการได้
องค์กรของเราซึ่งพยายามสนับสนุนธุรกิจจากทุกภาคส่วนด้วยการทดสอบ การวัด การวิเคราะห์และการประเมินที่หลากหลายซึ่งได้ดำเนินการมาหลายปี มีบุคลากรที่แข็งแกร่งซึ่งติดตามการพัฒนาของโลกในด้านวิทยาศาสตร์และเทคโนโลยีอย่างใกล้ชิด และปรับปรุงตัวเองอย่างต่อเนื่อง ในบริบทนี้ บริการทดสอบยังจัดให้กับธุรกิจต่างๆ ตามมาตรฐาน “การพัฒนาซอฟต์แวร์ SMC-S-012”