توسعه نرمافزار SMC-S-012
هدف از استاندارد «توسعه نرمافزار SMC-S-012»، که توسط مرکز سیستمهای فضایی و موشکی (SMC) فرماندهی فضایی نیروی هوایی ایالات متحده منتشر شده است، تعریف الزامات یکسان برای فعالیتهای توسعه نرمافزار برای سیستمهای ماموریت-بحرانی است. این استاندارد بر اساس استاندارد «استاندارد نظامی MIL-STD-498: توسعه و مستندسازی نرمافزار» است که توسط وزارت دفاع ایالات متحده تدوین شده است.

این استاندارد در مورد توسعه سیستمهای حیاتی ماموریتی که شامل نرمافزار (مانند سیستمهای سختافزاری-نرمافزاری)، سیستمهای صرفاً نرمافزاری و محصولات نرمافزاری مستقل میشوند، اعمال میشود. این استاندارد میتواند برای پیمانکارانی که توسعه نرمافزار را انجام میدهند یا برای آژانسهای داخلی که نرمافزار را خریداری میکنند، اعمال شود. این استاندارد را میتوان برای هر دسته نرمافزاری که در آن اعمال میشود، تطبیق داد.
این استاندارد مستقل از هرگونه روش یا ابزار توسعه نرمافزار خاص است. هیچ الزامی در این استاندارد، استفاده از روش یا ابزار خاصی را الزامی نمیکند.
چارچوبی که برای سازماندهی فعالیتهای اصلی نرمافزاری در فرآیند توسعه نرمافزار استفاده میشود، مدل چرخه عمر توسعه نرمافزار نامیده میشود.
- توسعهدهنده باید مدل یا مدلهای چرخه عمر توسعه نرمافزار مناسب برای نرمافزار در حال توسعه را انتخاب کند. یک پروژه نرمافزاری میتواند چندین مدل چرخه عمر توسعه نرمافزار برای دستههای مختلف نرمافزار توسعهیافته داشته باشد.
- توسعهدهنده باید مدل یا مدلهای چرخه عمر توسعه نرمافزار انتخابشده را در الگوی «طرح توسعه نرمافزار» پیوست ثبت کند.
- توسعهدهنده باید در طرح توسعه نرمافزار، شرحی از هر مدل چرخه عمر توسعه نرمافزار که در پروژه استفاده خواهد شد، ارائه دهد.
- برای استفاده از هر مدل چرخه عمر توسعه نرمافزار، توسعهدهنده باید موارد زیر را در طرح توسعه نرمافزار تعریف کند:
- در چه مرحلهای از چرخه حیات توسعه سیستم مورد استفاده قرار خواهد گرفت؟
- تحت چه شرایطی استفاده خواهد شد؟
- از کدام عناصر نرمافزاری برای موارد زیر استفاده کنیم؟
- توسعهدهنده باید فرآیند توسعه نرمافزاری را ایجاد کند که با الزامات قرارداد سازگار باشد.
- فرآیند توسعه نرمافزار باید شامل فعالیتهای اصلی و فرآیندهای یکپارچه زیر باشد:
- برنامهریزی و کنترل پروژه
- ایجاد محیط توسعه نرمافزار
- تحلیل نیازمندیهای سیستم
- طراحی معماری سیستم
- تحلیل نیازمندیهای نرمافزار
- معماری و طراحی نرمافزار
- پیادهسازی نرمافزار و تست واحد
- یکپارچهسازی واحد و آزمایش
- تست صلاحیت عنصر نرمافزار
- یکپارچهسازی و آزمایش عناصر نرمافزاری-سختافزاری
- تست صلاحیت سیستم
- آمادهسازی نرمافزار برای انتقال به عملیات
- آمادهسازی نرمافزار برای انتقال به مرحله تعمیر و نگهداری
- فرآیندهای یکپارچه:
- مدیریت پیکربندی نرمافزار
- نقد و بررسی نرمافزارها و رتبهبندی محصولات توسط همکاران
- تضمین کیفیت نرمافزار
- اقدام اصلاحی
- بررسیهای مشترک فنی و مدیریتی
- مدیریت ریسک نرمافزار
- اندازهگیری نرمافزار
- گوونلیک و گیزلیلیک
- مدیریت اعضای تیم نرمافزاری
- رابط کاربری با نرمافزارهای IV&V Agents
- هماهنگی با توسعهدهندگان همکار
- بهبود فرآیندهای پروژه
این فعالیتهای مهم ممکن است با هم همپوشانی داشته باشند، به صورت تکراری اجرا شوند یا به صورت متفاوتی اجرا شوند. این مربوط به عناصر مختلف نرمافزار است و لزوماً به ترتیب ذکر شده در بالا انجام نمیشود.
- فرآیندهای توسعه نرمافزار توسعهدهنده باید در طرح توسعه نرمافزار شرح داده شود.
الزامات عمومی برای توسعه نرمافزار شامل الزامات عمومی توسعهدهنده برای برآورده کردن الزامات جزئی تعریفشده در این استاندارد است. الزامات دقیقتر در پیوست استاندارد (پیوست H.1) آمده است.
- روشهای توسعه نرمافزار: توسعهدهنده باید از روشهای سیستماتیک و مستند برای تمام فعالیتهای توسعه نرمافزار استفاده کند. این روشهای سیستماتیک توسعه نرمافزار باید در طرح توسعه نرمافزار مشخص شوند.
- استانداردهای محصولات نرمافزاری: توسعهدهنده، استانداردهایی را برای نمایش الزامات، معماری، طراحی، کد، موارد آزمون، رویههای آزمون و نتایج آزمون تدوین میکند. این استانداردهای نمایش محصول در طرح توسعه نرمافزار مشخص شدهاند. توسعهدهنده، استانداردهای مشخصشده در طرح توسعه نرمافزار را برای نمایش الزامات، معماری، طراحی، کد، موارد آزمون، رویههای آزمون و نتایج آزمون اعمال میکند.
- قابلیت ردیابی: قابلیت ردیابی، رابطهای بین محتویات دو محصول مرتبط ایجاد میکند، برای مثال، رابطهی هر الزام نرمافزاری با اجزای طراحی نرمافزار که آن الزام را برآورده میکنند. قابلیت ردیابی دوطرفه، رابطهای دوطرفه بین محتویات دو محصول مرتبط را تضمین میکند. نمونهای از چنین رابطهی دوطرفهای، قابلیت ردیابی از هر الزام نرمافزاری به اجزای طراحی نرمافزار که آن الزام را برآورده میکنند، و قابلیت ردیابی از هر جزء طراحی به الزامات نرمافزاری برآورده شده توسط جزء طراحی است. هدف از الزامات قابلیت ردیابی دو طرفه در این بخش، ردیابی هم به سمت بالا و هم به سمت پایین است تا اطمینان حاصل شود که:
- نشان دهید که تمام الزامات به مؤلفهها اختصاص داده شده، پیادهسازی و آزمایش شدهاند.
- نشان دهید که هیچ الزام اضافی اعمال نمیشود
- ارائه اطلاعات در مورد تأثیر تغییرات پیشنهادی
- ارائه اطلاعات در مورد تأثیر مشکلات کشف شده
- ارائه اطلاعات برای نگهداری نرمافزار.
- محصولات نرمافزاری قابل استفاده مجدد: توسعهدهنده باید محصولات نرمافزاری قابل استفاده مجددی را که برای برآورده کردن الزامات قرارداد استفاده خواهند شد، شناسایی کند. دامنه جستجو برای یک محصول نرمافزاری قابل استفاده مجدد باید در طرح توسعه نرمافزار مشخص شود. توسعهدهنده باید محصولات نرمافزاری قابل استفاده مجدد را که برای برآورده کردن الزامات قرارداد استفاده خواهند شد، ارزیابی کند. معیارهایی که برای ارزیابی محصول نرمافزاری قابل استفاده مجدد استفاده میشوند باید مطابق با طرح توسعه نرمافزار باشند. توسعهدهنده باید حداقل از معیارهای ارزیابی موجود در پیوست استاندارد برای انتخاب محصولات نرمافزاری قابل استفاده مجدد (پیوست ب) استفاده کند. معیارهای ارزیابی ممکن است برای دستههای مختلف نرمافزار و الزامات حیاتی مختلف، وزندهی متفاوتی داشته باشند. محصولات نرمافزاری قابل استفاده مجدد انتخاب شده باید الزامات حقوق دادهها در قرارداد را برآورده کنند. محصول نرمافزاری قابل استفاده مجدد میتواند به همین صورت که هست استفاده شود یا میتواند اصلاح شود و برای برآورده کردن کل یا بخشی از نیاز مورد استفاده قرار گیرد.
سازمان ما که سالهاست با طیف گستردهای از مطالعات آزمایش، اندازهگیری، تحلیل و ارزیابی که انجام میدهد، سعی در حمایت از کسبوکارها از هر بخشی دارد، دارای کارکنانی قوی است که از نزدیک تحولات جهان در حوزه علم و فناوری را دنبال میکنند و دائماً خود را بهبود میبخشند. در این زمینه، خدمات تست نیز مطابق با استاندارد «SMC-S-012 Software Development» به کسب و کارها ارائه میشود.