ارائه الگوی پیشنهادی استاندارد سازی در چرخه حیات نرم افزار

با توجه به تجارت بین‌‌الملل و نیاز به استفاده از استانداردهایی که مورد قبول کشورها باشد، مؤسسه بین‌‌المللی ISO با همکاری مؤسسه IEC با تشکیل گروههای اشتراکی (JTC1) اقدام به تدوین استانداردهای بین‌‌المللی برای تولید و مستندسازی محصولات نرم‌‌افزاری نمودند. استاندارد ISO/IEC 12207 که در سال 1995 ارائه شد توصیه‌‌هایی برای کل چرخه ساخت و حیات یک محصول نرم‌‌افزاری پیشنهاد کرده است. پس از آن انجمن IEEE که مهمترین انجمن حرفه‌‌ای بین‌‌المللی در تدوین استانداردهای مهندسی نرم‌‌افزار است به کمک مؤسسه EIA اقدام به بومی‌‌سازی استاندارد 12207 در جامعه امریکا نمود و نسخه بومی شده و بهتر توصیف شده آن تحت عنوان IEEE/EIA 12207 را ارائه نمود. نهایتاً DOD امریکا که چهار دهه است استانداردهای متعددی را برای تولید و مستندسازی محصولات نرم‌‌افزاری ارائه کرده است با پذیرش استاندارد IEEE/EIA 12207 ، استانداردهای قبلی خود یعنی J-STD-016-1995 و MIL-STD-498 را از رده خارج کرد. یادآوری می‌‌گردد سایر کشورهای پیشرفته مانند ژاپن، آلمان، انگلستان، کانادا، ... نیز اقدام به بومی‌‌سازی استاندارد ISO/IEC 12207 در کشور خود نموده‌‌اند.مقدمهپروژه نظام‌مهندسی و استانداردهای تولید و توسعه نرم‌افزار (نماتن) – فاز ۲، در ادامه فاز اول این نظام و با هدف تهیه استانداردهای پایه‌ای تولید و توسعه نرم‌افزار، به سفارش دبیرخانه شورای عالی انفورماتیک کشور، اجرا شده است. موضوع فاز اول نماتن، تدوین استانداردهای ارجاع کار در پروژه‌های نرم‌افزاری بود و درنتیجه آن ۶ استاندارد زیر تدوین و ارائه گردیده است:مشاوره پروژه‌های نرم‌افزاریتهیه درخواست برای ارائه پیشنهاد (RFP)نظارت بر پروژه‌های نرم‌افزاریپیشنهاد (Proposal)برگزاری مسابقه و ارزیابی پیشنهادپیمان‌نامه نرم‌افزارینرم‌‌افزار در مقایسه با سایر مصنوعات تولیدی یک تفاوت مهم و اساسی دارد. مصنوعات (مانند اتومبیل، تلویزیون، یخچال، ...) بر اساس یک مجموعه وظیفه‌‌مندی قطعی ساخته می‌‌شوند و پس از آن در وظیفه‌‌مندی‌‌های مصنوع تغییری ایجاد نمی‌‌گردد. البته ممکن است وظیفه‌‌مندی‌‌های هر مصنوع، کم یا زیاد شود امّا هرگونه تغییر در وظیفه‌‌مندی‌‌ها منجر به ساخت مدل جدیدی از آن مصنوع می‌‌گردد و کسی انتظار ندارد که این وظیفه‌‌مندی‌‌های جدید در مدل‌‌های موجود اعمال گردند. امّا نرم‌‌افزار پس از تولید اولیه تا پایان عمر در حال تغییر و تحول است و بایستی متناسب با نیازها، سیاست‌‌ها، و قوانین جدید تغییر یابد. بنابراین بهتر است نرم‌‌افزار با یک موجود زنده به جای یک مصنوع مقایسه گردد. بدیهی است نرم‌‌افزاری را می‌‌توان به راحتی و به شکل صحیح تغییر داد که راجع به آن به اندازه کافی اطلاعات در دسترس باشد. چنانچه خواسته‌‌های اولیه، طراحی، چگونگی پیاده‌‌سازی و آزمون نرم‌‌افزارها در مراحل ساخت به خوبی مستند شوند در اینصورت اعمال تغییرات در نرم‌‌افزارها به راحتی قابل مدیریت و انجام است. بدیهی است که تأثیر تغییرات جدید بایستی در مستندات سیستم اعمال گردد تا مستندات آخرین وضعیت سیستم نرم‌‌افزاری را نمایش دهند.در ادامه این فاز، پروژه فاز ۲ نماتن با هدف تهیه استانداردهای پایه‌ای تولید و توسعه نرم‌افزار، یعنی استانداردهایی که پس از مرحله ارجاع کار و در مراحل اجرای پروژه‌های نرم‌افزاری باید مورداستفاده قرار گیرد، اجرا شده است. فرآورده‌های این پروژه، استانداردهای زیر را شامل می‌گردد:استاندارد سند توصیف متدولوژی (MDD)استاندارد طرح مدیریت پروژه (PMP)استاندارد طرح تضمین کیفیت (QAP)استاندارد طرح مدیریت پیکربندی (CMP)استاندارد طرح تصدیق و صحه‌گذاری (V&V)استاندارد طرح آزمون نرم‌افزاراستاندارد طرح انتقال و تحویل نرم‌افزاراستاندارد طرح ضمانت نرم‌افزاراستاندارد طرح نظارتاستانداردهای مهندسی نرم‌‌افزار مجموعه‌‌ای از پروسه‌‌ها می‌‌باشند که تمامی وظایفی که بایستی در چرخه تولید و بکارگیری یک محصول نرم‌‌افزاری انجام شود را بیان می‌‌کنند. نکته مهم اینست که این پروسه‌‌ها چگونگی انجام یک وظیفه را بیان نمی‌‌کنند بلکه صرفاً مجموعه‌‌ای از وظایف و فعالیتها را بیان می‌‌کنند که بایستی در دوره‌‌های زمانی معینی انجام شوند. این رویه در تمامی استانداردهای مهندسی نرم‌‌افزار رعایت می‌‌شود تا اولاً آنها فراتر از یک متدولوژی عمل کنند و ثانیاً اجازه دهند مهندسین نرم‌‌افزار بر حسب نوع محصول نرم‌‌افزاری از متدولوژی که چگونگی انجام وظایف را بیان می‌‌کند، استفاده کنند. نکته جالب توجه اینست که استانداردهای جهانی حتی از نظر نوع نگرش مهندسی نرم‌‌افزار (ساختیافته یا شی‌‌گرا) نیز خود را محدود نکرده‌‌اند و توصیه‌‌ها و قوانینی را مطرح کرده‌‌اند که در هر دو دیدگاه قابلیت استفاده دارند.متأسفانه به علت فقدان استاندارد یا لااقل توصیه‌‌ای واحد برای مستندسازی محصولات نرم‌‌افزاری و بی‌‌توجهی سازندگان نرم‌‌افزار و کارفرمایان، نرم‌‌افزارهای تولید شده در ایران اکثراً فاقد حداقل مستندات لازم هستند. البته فشار کارفرمایان به پیمانکاران برای کاهش هزینه تولید نرم‌‌افزار عموماً منجر به حذف و یا کم رنگ شدن بخش مستندات سیستم‌‌های نرم‌‌افزاری شده است. یادآوری می‌‌گردد بطور متوسط 30% هزینه تولید هر نرم‌‌افزار صرف تهیه مستندات آن سیستم می‌‌گردد.در این طرح ملی در نظر است توصیه‌‌هایی ارائه گردد تا حداقل مستندات لازم برای هر محصول نرم‌‌افزاری توسط تولید‌‌کنندگان نرم‌‌افزار تهیه گردد. در این گزارش سعی شده است شناختی از استانداردهای اصلی مهندسی نرم‌‌افزار با تکیه بر مستندسازی بصورت اجمالی ارائه گردد. در این راستا، استانداردهای مهندسی نرم‌‌افزار تدوین شده توسط DOD ، سازمان NASA ، آژانس فضایی اروپا، مؤسسه IEEE ، و مؤسسه ISO/IEC جمع‌‌آوری شده که هر یک از آنها بطور خلاصه معرفی می‌‌گردد.با توجه به مطالب ارائه شده در بخش دوم این گزارش، استاندارد ISO/IEC 12207 بعنوان استاندارد مرجع تولید و مستندسازی سیستم‌‌های نرم‌‌افزاری انتخاب می‌‌گردد. امّا سعی می‌‌شود با استفاده از استانداردهای MIL-STD-498 ، J-STD-016-1995 و IEEE/EIA 12207 و الزامات خاص کشور ایران، استاندارد مستندسازی محصولات نرم‌‌افزاری ایران تهیه و در گزارش بعدی ارائه گردد.در ادامه این گزارش، ابتداء اصول و تحولات استانداردهای مهندسی نرم‌‌افزار در بخش دوم شرح داده می‌‌شود. سپس به ترتیب، استانداردهای DOD ، سازمان NASA ، آژانس فضایی اروپا، مؤسسه ISO/IEC و مؤسسه IEEE هر یک در یک بخش مستقل بطور خلاصه معرفی می‌‌گردد. در بخش‌‌های هشتم و نهم گزارش، دو زبان PSL/PSA و UML که به ترتیب زبان‌‌های مدلسازی بر اساس روش ساختیافته و روش شی‌‌گراء هستند معرفی می‌‌گردد. این زبانها مخصوصاً UML می‌‌توانند تاثیرات خوبی بر استانداردسازی مستندات محصولات نرم‌‌افزاری بگذارند. نهایتاً در بخش دهم، ابزارها و محیط‌‌های پشتیبانی تولید نرم‌‌افزار و چند نمونه از آنها بصورت اجمالی معرفی می‌‌گردد.مهندسی نرم ‌افزارISO/IEC 12207: ایجاد مجموعه‌ی کاملی از فرآیندها، فعالیت‌ها و وظایف چرخه حیات نرم‌افزار برای محصولات و خدمات نرم‌افزاری مستقلISO/IEC TR 24748-3: راهنمایی‌هایی برای اجرایISO/IEC 12207 از جنبه استراتژی، برنامه‌ریزی، کاربردپذیری در سازمان و کاربردپذیری در پروژه ارائه می‌دهد.IEEE 1074: روشی را برای ایجاد یک فرآیند چرخه حیات پروژه نرم‌افزاری (SPLCP) ارائه‌ می‌‌کند.ISO/IEC 90003: راهنمایی برای کاربردی کردن استاندارد ISO 9001 در چرخه حیات نرم‌افزار شامل اکتساب، تامین، توسعه، عملیات و نگهداشت و شناسایی مشکلاتی است که باید رفع شوند.IEEE 730: در یک پروژه‌ نرم‌افزاری، نیازمندی‌های مرتبط با تضمین کیفیت نرم‌افزار در چرخه حیات (مطابق با ISO/IEC 12207) را تعیین و یک راهنمایی برای رسیدن به آن ارائه می‌کند.:IEEE 1044 ارائه مجموعه‌ای از ویژگی‌ها برای طبقه‌بندی خرابی‌ها و نقص‌ها در چرخه حیات پروژه، محصول و یا سیستممهندسی سیستمISO/IEC 15288: فرآیندها و مراحل چرخه حیات مهندسی سیستم را پوشش می‌دهد.ISO/IEC TR 24748-2: راهنمایی‌هایی برای اجرای ISO/IEC 15288 از جنبه‌های استراتژی، برنامه‌ریزی، کاربردپذیری در سازمان و کاربردپذیری در پروژه ارائه می‌دهد.ISO/IEC TR 24748-4: بر روی فرآیندهایی از استاندارد ISO/IEC 15288 تمرکز دارد که جهت برنامه‌ریزی و مدیریت یک پروژه مهندسی سیستم مورد نیاز هستندISO/IEC 90005: راهنمایی برای کاربردی کردن استاندارد ISO 9001 در چرخه حیات سیستم نظیر اکتساب، تامین، توسعه، عملیات و نگهداشتدر بخش چرخه حیات دو استاندارد دیگر نیز وجود دارند. استاندارد ISO 29110 که راهنمای چرخه حیات نرم‌افزار و سیستم برای سازمان و یا پروژه‌های کوچک (حداکثر 25 نفر) بوده و استاندارد ISO 24748-1 که راهنمایی برای مدیریت چرخه حیات سیستم و نرم‌افزار با فرض استفاده توامان از دو استاندارد ISO/IEC 12207 و ISO/IEC 15288 است.علاوه بر استانداردهای مذکور که ناظر به کل چرخه حیات است، برای بخش‌های مختلف و خاص چرخه حیات نرم‌افزار و سیستم نیز استانداردهای اختصاصی ارائه شده است:نیازمندی‌هاISO/IEC/IEEE 29148: تعریف ساختار یک نیازمندی خوب و ویژگی‌های یک نیازمندی در چرخه حیات مهندسی نرم‌افزار و سیستمطراحیIEEE 1016: توصیف طراحی نرم‌افزار و محتوای اطلاعاتی و چگونگی سازماندهی توصیف طراحی نرم‌افزاراکتساب نرم‌افزارIEEE 1062: روشی برای اکتساب نرم‌افزار بر مبنای مجموعه‌ای از ملاحظات کیفیمدیریت پیکربندیIEEE Std 1042: راهنمایی برای کاربرد اصول مدیریت پیکربندی برای مدیریت پروژه‌های مهندسی نرم‌افزار (شامل تعیین فاکتورهای مهم) از دو جنبه مدیریت پیکربندی، یعنی برنامه‌ریزی و پیاده‌سازیمستندسازیISO/IEC 15289: مستندات و محتوای مورد نیاز تمامی چرخه حیات نرم‌افزار و سیستم و همچنین نگاشت آیتم‌های اطلاعاتی (مستندات) به چرخه حیات را شامل می‌شود.ISO/IEC 26511: تعیین رویه‌هایی برای مدیران برای مدیریت مستندسازی کاربر در طی چرخه حیات نرم‌افزارISO/IEC 26512: راهنمایی برای کمک به کاربران استانداردهای ISO/IEC 12207 و ISO/IEC 15288 (تحویل‌گیرندگان/ تامین‌کنندگان) جهت مستندسازی کاربری به عنوان بخشی از فرآیندهای چرخه حیاتISO/IEC 26513: تعیین نیازمندی‌های مستندسازی برای بازبینی‌کنندگان مستندات کاربریISO/IEC 26514: تعیین نیازمندی‌های مستندسازی برای طراحان و توسعه‌دهندگان مستندات کاربریISO/IEC 26515: توسعه و ایجاد مستندات کاربردی در محیط چابک (Agile)معماریISO/IEC/IEEE 42010: توصیف معمارانه (ایجاد، آنالیز و نگهداری معماری سیستم) از نرم‌افزار، سیستم و معماری سازمانی (نیازمندی‌ها، دیدها، مدل‌ها، روابط و منطق‌های معماری)ISO/IEC/IEEE 42030: روش‌های سازماندهی و ضبط فرآیند و نتایج ارزیابی معماری نرم‌افزار و سیستمآزمونISO/IEC/IEEE 29119: تعریف یک سری از استانداردهای بین‌المللی مورد قبول کشورهای مختلف برای آزمون نرم‌افزار با هر مدل توسعه چرخه حیات است.:IEEE 1012 تعریف فرآیندهای صحت‌ سنجی و اعتبارسنجی در توسعه سیستم، نرم‌ افزار و سخت‌ افزار در حین چرخه حیات نرم‌ افزار:IEEE 1059 راهنمایی برای استفاده از استاندارد IEEE 1012. به طور خاص، محتوای مورد نیاز برای نوشتن یک برنامه صحت‌ سنجی و اعتبارسنجی را ارائه می‌دهد.:IEEE 1028 برای آزمون ایستای نرم‌ افزار و فراهم کردن حداقل نیازمندی‌ های لازم جهت بازبینی سیستماتیک نرم‌ افزار ارائه شده است.نگهداشت نرم‌ افزارISO/IEC 14764: ارائه جزئیات بیشتری از مدیریت فرآیند نگهداشت نرم‌افزار استاندارد ISO/IEC 12207 همراه با اصلاحات مورد نیاز. شامل تعاریف انواع مختلف نگهداشت می‌باشد.مدیریت پروژهISO/IEC/IEEE 16326: برای تعیین خصوصیات مناسب برنامه مدیریت پروژه نرم‌افزار و تدوین توصیه‌ها و بحث‌های دقیق در اعمال فرآیندهای پروژه موجود در استاندارد ISO/IEC 12207 ارائه شده است.ریسکISO/IEC 16085: این استاندارد به توصیف فرآیندهایی برای مدیریت ریسک در چرخه حیات نرم‌افزار و سیستم می پردازد.منابعhttps://softwareengineer.blogsky.com/https://www.jstandardization.ir/https://www.sqlist.ir/استاد : دکتر مریم حاجی اسمعیلیدکترای علوم کامپیوتر از دانشگاه کینگستون لندنDr.Maryam HajiesmaeiliPhD of computer science from Kingston university of London