۶-- تعاریف مفاهیم پایهای تکامل فرآیندها:
- فرآیند نرمافزاری (Software Process):
مجموعه فعالیتها، روشها و اقداماتی که برای ایجاد و نگهداری یک نرمافزار و محصولات جانبی آن به کار گرفته میشوند.
- قابلیت فرآیند نرمافزاری (Software Process Capability):
دامنه نتایج مورد انتظاری را که از یک فرآیند نرمافزاری میتوان بدست آورد، توصیف میکند. با کمک این پارامتر میتوان نتایج احتمالی پروژه نرمافزاری را پیشبینی کرد.
- عملکرد فرایند نرمافزاری (Software Process Performance):
نتایج عملی حاصل شده از یک فرآیند نرمافزاری را نشان میدهد. بنابراین عملکرد فرآیند نرمافزاری به نتایج عملی بدست آمده توجه دارد در حالیکه قابلیت فرآیند نرمافزاری در مورد نتایج مورد انتظار بحث میکند.
- تکامل فرآیند نرمافزاری (Software Process Maturity):
تکامل فرآیند نرمافزاری بستگی به تعریف دقیق، مدیریت، ارزیابی و اثربخشی آن فرآیند دارد. تکامل فرآیند نشان دهنده پتانسیل رشد قابلیتها است و توانمندی فرآیند نرمافزاری و میزان بکارگیری این توانمندی را در پروژههای سازمان را نشان میدهد.
فرآیند نرمافزاری در یک سازمان رشدیافته از طریق آموزش و مستندسازی خوب درک میشود و به طور مستمر نظارت شده و توسط کاربران بهبود مییابد. تکامل فرآیند نرمافزاری متضمن آن است که بهرهوری و کیفیت حاصل از فرآیند نرمافزاری سازمان به مرور زمان بهبود یابد.
- فرآیند (Process):
- مجموعه عملیاتی که باعث تولید خدمت و یا محصولی شود.
- یک سری اعمال و تغییراتی که به یک نتیجه منتهی میشوند.
- مجموعه اقدامات متوالی که با هدف خاصی انجام میگیرد.
7-- از CMM برای چه مواردی استفاده می شود؟
1- بهبود فرایند نرم افزار :که یک طرح سازمانی برای توسعه و پیاده سازی فرآیند نرم افزاری است.
2- سنجش و ارزیابی فرآیند نرم افزار : که یک سلسله تیمی از مهندسین حرفه ای حالات سازمانی فرآیند نرم افزاری جاری را مشخص می کند. و همچنین ارتباطات فرآیندهای مرتبط به همدیگر را مشخص می کند. و برای بهبود فرآیند نرم افزاری ؛ پشتیبانی های لازم را به عمل می آورد.
3- ارزیابی قابلیت نرم افزار: که یک تیمی نتشکل از پیمانکاران حرفه ای ؛ که نیازها را بازگو کرده و سپس کارهای انجام شده توسط سیستم مورد نظر را مشاهده کرده و جالات را بررسی می کنند و در صورت نیاز قابلیت های جدید را بازگو می نمایند.
-- 8 مراحل پنجگانه تکامل نرم افزاری :
بهبود مستمر فرآیندها بهتراست به جای آنکه بر ابتکارات دگرگونساز متکی باشد بر اقدامات کوچک و تدریجی بنا شود. CMM چارچوبی ارائه میدهد که این اقدامات تدریجی را به پنج سطح تکامل تقسیم میکند و این سطوح زیربنای بهبود مستمر فرآیندها خواهند بود.
یک سطح تکامل، یک فاز تدریجی تعریف شده میباشد که برای دستیابی به تکامل فرآیند نرمافزاری طراحی شده است. هر سطح به عنوان پایهای برای رسیدن به سطح بالاتر میباشد.
سازماندهی CMM به پنج سطح اقدامات مورد نیاز برای افزایش تکامل فرآیند نرمافزار را اولویتبندیمیکند.
1- سطح ابتدایی (Initial)
فرآیند مشخصی برای ساخت نرمافزار وجود ندارد. در این سطح، پروژه به روش خاص خودش اجرا شده و موفقیت آن بستگی به تلاشهای فردی دارد.
2- سطح تکرارپذیر (Repeatable)
فرآیندهای پایهای مدیریت پروژه برای کنترل هزینه و زمانبندی و کارکرد تعریف شدهاند. در این سطح، ضابطه لازم برای تکرار موفقیتهای قبلی در پروژههای مشابه وجود دارد.
3- سطح تعریف شده (Defined)
فرآیندهای نرمافزاری هم در مورد مدیریت پروژه و هم در مورد فعالیتهای مهندسی به صورت استاندارد و مستند هستند. در این سطح استاندارد سازمان برای استفاده در هر پروژه بهینه میشود.
4- سطح مدیریت شده (Managed)
معیارهای دقیقی برای فرآیند تولید نرمافزار و کیفیت محصول وجود دارد و فرآیندها و نتایج به صورت کمّی قابل اندازهگیری و کنترل هستند.
5- سطح بهینهسازی (Optimizing)
با استفاده از بازخوردهای کمّی و هدایت فنآوریها و ایدههای جدید، بهبود مستمر فرآیندها امکانپذیر میشود.
9-- مشخصههای رفتاری سطوح تکامل:
9-1-- سطح ابتدایی (سطح 1):
در این سطح سازمان عموماً محیط باثباتی برای توسعه و نگهداری نرمافزارها نیست. چنانچه سازمانی فاقد مدیریت مطلوب باشد، مزایای اقدامات خوب مهندسی نرمافزار بواسطه برنامهریزی ناکارآمد از بین میرود. در مواقع بحرانی روندهای برنامهریزی شده کنار گذاشته میشوند و به مرحله برنامهنویسی و آزمون اکتفا میگردد. در هر حال موفقیت پروژه تماماً به یک مدیریت استثنایی و یک تیم طراحی نرمافزار کارآمد و مؤثر بستگی دارد. حتی یک فرآیند قوی مهندسی و طراحی هم نمیتواند بر ناپایداری ناشی از مدیریت ضعیف، غلبه کند.
تکامل فرآیند تولید نرمافزار در سازمانهای سطح 1 غیرقابل پیشبینی است زیرا به تدریج که کار پیشرفت میکند فرآیند دائماً تغییر میکند یا اصلاح میشود. عملکرد، بستگی به ویژگیهای فردی مجریان پروژه دارد و با مهارتهای ذاتی، دانش و انگیزه آنها تغییر میکند.
9-2-- سطح تکرار پذیر (سطح 2) :
در این سطح خط مشی مدیریت پروژههای نرمافزاری و فرآیندهای اجرای این
خط مشیها مشخص شدهاند و برنامهریزی و مدیریت پروژههای جدید بر تجربیات حاصل از پروژههای مشابه متکی میباشد. هدف از دستیابی به این سطح، رسمیت بخشیدن به فرآیندهای مدیریتی مؤثر برای پروژههای قبلی است (هرچند که فرآیندهای اختصاصی هر پروژه ممکن است متفاوت باشد).
در سازمانهای سطح 2، کنترلهای پایه مدیریت نرمافزار برای پروژهها مورد استفاده قرار میگیرد. تکامل فرآیندهای نرمافزاری سازمانهای سطح 2 را میتوان به طور خلاصه «ضابطهمند» نامید. زیرا طراحی و پیگیری پروژه نرمافزاری پایدار است و امکان تکرار موفقیتهای قبلی وجود دارد.
9-3-- سطح تعریف شده (سطح 3):
در این سطح، فرآیند استاندارد توسعه و نگهداری نرمافزار، مشتمل بر فرآیندهای مهندسی و فرآیندهای مدیریتی، مستند میشوند و به صورت یک مجموعه هماهنگ در میآیند. فرآیندهای سطح 3 به مدیران و کارکنان فنی کمک میکنند که کار خود را به صورت اثربخشتری اجرا کنند.
در سازمان سطح 3 گروهی (گروه فرآیندهای مهندسی نرمافزار) وجود دارد که مسئول فرآیندهای نرمافزاری آن است. در این راستا برای حصول اطمینان از اینکه مدیران و کارکنان، دانش و مهارتهای لازم برای انجام وظایف خود را دارا باشند، یک برنامه آموزشی جامع در کل سازمان اجرا میشود. برای هر پروژه، استاندارد سازمان به گونهای اصلاح میشود که ویژگیهای منحصر به فرد آن پروژه را شامل شود. در CMM به این فرآیند، فرآیند نرمافزاری تعریف شده برای پروژه میگویند.
یک فرآیند نرمافزاری معین شامل مجموعهای هماهنگ و یکپارچه از فرآیندهای مهندسی و مدیریتی، میباشد. تکامل فرآیند نرمافزاری در سازمانهای سطح 3 را میتوان در رده استاندارد و هماهنگ قرار داد زیرا فعالیتهای مهندسی و مدیریتی، پایدار و تکرار پذیر هستند. این قابلیت بر اساس فهم مشترک سازمانی از فعالیتها، وظایف و مسئولیتها در یک فرآیند معین نرمافزاری بنا شده است.
9-4-- سطح مدیریت شده (سطح 4):
در سطح مدیریت شده، سازمان اهداف کمّی را برای فرآیندها و محصولات نرمافزاری در نظر میگیرد. به عنوان بخشی از برنامه سنجش سازمانی، بهرهوری و کیفیت فرآیندهای مهم در تمام پروژهها اندازهگیری میشوند. در این سطح ، فرآیندهای نرمافزاری با معیارهای هماهنگ و متناسب سنجیده میشوند. این اندازهگیریها زیربنایی کمّی برای ارزیابی فرآیندها و محصولات پروژه فراهم میکند. قابلیت فرآیندهای نرمافزاری برای سازمانهای سطح 4 را میتوان به طور خلاصه قابل پیشبینی نامید، زیرا فرایندها با معیارهای قابل اندازهگیری سنجیده میشوند. چنانچه اندازهگیریها تخطی از حدود مجاز را نشان دهد برای تصحیح عملکرد اقدام میشود.
9-5-- سطح بهینهسازی (سطح 5):
در این سطح کل سازمان بر بهبود مستمر فعالیتها متمرکز میشود. سازمان با هدف جلوگیری از وقوع نقص و اشکال در کارها امکان شناسایی و پیشبینی قوت و ضعف فرآیندها را دارد. از دادههای بدستآمده درباره اثربخشی فرآیندهای نرمافزاری برای تحلیل هزینه - فایده فنآوریهای جدید و تغییرات احتمالی فرآیندها استفاده می شود. تیمهای انجامدهنده پروژهها در سازمانهای سطح 5 نقائص را تحلیل میکنند تا علل آن را مشخص کنند. برای جلوگیری از تکرار نقائص شناخته شده، فرآیندها مورد ارزیابی قرار گرفته و درسهای آموخته شده در مورد سایر پروژهها نیز به کار گرفته میشود.
1-- نگاه کلی بر مدل تکامل قابلیتها (CMM):
مدل تکامل قابلیتها برای نرمافزار، اصول و برنامههایی را توصیف میکند که زیربنای تکامل و توسعه نرمافزارهاست. این مدل روشهای کنترل فرآیندها برای توسعه و نگهداری و همچنین بهبود فرهنگ مهندسی نرمافزار و مدیریت را فراهم میکند.
در نوامبر 1986 مؤسسه مهندسی نرمافزار[1] (SEI) وابسته به دانشگاه کارنگی ملون با کمک شرکت Mitre توسعه چارچوب تکامل فرآیندها را آغاز کردند. این اقدام در پاسخ به درخواست دولت فدرال برای تعیین میزان تکامل فرآیندهای نرمافزاری، آغاز شد. در سپتامبر 1987 مؤسسه SEI خلاصهای از چارچوب تکامل فرآیندها را منتشر کرد. بعد از چهار سال استفاده آزمایشی از چارچوب تکامل فرآیندهای نرمافزاری و نسخه اولیه پرسشنامه تکامل، در سال 1991 SEI مدل تکامل قابلیت (CMM) برای نرمافزار را تدوین نمود. CMM بر مبنای دانش کسب شده از ارزیابیهای فرآیندهای نرمافزاری و بازخورد دریافت شده از صنعت و دولت بنا شده است. نسخه1.0 CMM در سالهای 1991 و 1992 مورد استفاده و بازبینی قرار گرفت. کارگاهی در آوریل 1992 درباره CMM با حضور بیش از 200 متخصص نرمافزار برگزار شد و حاصل آن CMM نسخه 1.1 بود. مستندات این استاندارد که به صورت رایگان در دسترس عموم میباشد را میتوان از سایت www.sei.cmu.edu/cmm بدست آورد.
2-- هدف از طراحی :CMM
هدف از طراحی CMM تعیین میزان تکامل فرآیندهای موجود و مشخص کردن نکات اساسی کیفیت نرمافزار و بهبود فرآیندها برای سازمانهای تولید کننده نرمافزار بود تا آنها را برای انتخاب راهبردهای بهبود فرآیندها یاری کند. ساختار مرحلهبندی شده CMM متکی بر اصول کیفیت محصولات است که از 60 سال قبل مورد استفاده بوده است.
3-- چرا SACMM ایجاد شد؟
دولت و صنعت هر دو نیاز دارند که فرآیند تدارک و سفارش نرمافزار را بهبود دهند. برای این منظور اهداف نهایی و آنچه برای رسیدن به آن لازم است باید شناسایی شوند. علاوه بر آن پیشرفت حاصل در نائل آمدن به اهداف باید قابل اندازهگیری باشد. مدل تکامل قابلیتها ـ تدارک نرمافزار *(SA-CMM) چارچوب مورد نیاز را برای دستیابی به موارد فوقالذکر بوجود آورده است.
4-- تفاوت SACMM با SEI :
تجربه SEI در توسعه مدل تکامل قابلیتها برای نرمافزار (SW-CMM) نقش پدیدآورنده (و پشتیبانی کننده) را توصیف میکند در حالی که SA-CMM درباره خریدار (سفارشدهنده) و نقش آن در فرآیند سفارش میباشد. در SA-CMM یک درخواست با فرآیند تعریف نیازهای سیستم آغاز میشود.
SA-CMM شامل بعضی اقدامات ما قبل قرارداد نیز میشود از قبیل آمادهسازی مجموعه درخواستها، شناسایی نیازهای اولیه و مشارکت در انتخاب منابع، در SA-CMM، یک سفارش موقعی پایان مییابد که قرارداد نهایی شود.
SA-CMM حوزههای فرایند کلیدی را برای چهار سطح از پنج سطح تکامل شناسائی میکند. حوزههای فرآیند کلیدی، اهدافی که برای رسیدن به هر سطح تکامل باید محقق شوند، را مشخص میکنند.
SA-CMM به گونه ای طراحی شده است که برای تدارک هر نرمافزاری، بدون توجه به ابعاد اجرایی پروژه، قابل استفاده باشد.
5--CMMI چیست و چرا راه اندازی شد؟
در سال 2000 مدل تکامل قابلیت ها به مدل مجتمع سازی تکامل قابلیت ها ارتقا پیدا کرد. انجمن مهندسین نرم افزار برای مدت طولانی cmm را حفظ و نگهداری نکردند. زیرا آن در ارتباط با روشهای ارزیابی بودیا فقط قابلیت های آموزشی داشت . برای اطلاعات بیشتر درباره اینکه انجمن مهندسین نرم افزار چگونه cmmi را جایگزین cmm کردند می توانید به لینک زیر مراجعه کنید :
http://www.sei.cmu.edu/cmmi/adoption/sunset.html
پروژه cmmi در سال 1997 شروع به کار کرد. برای اینکه به بررسی مجدد فعالیت های sei بپردازد. این پروژه به وسیله اداره امنیت و دفاع (OUSD) برای اینکه امنیت اطلاعات را بالا ببرد ایجاد شد.
