« مولد کامپایلر Lisa 2.2 | صفحه اصلی | Date mining داده كاوي »
CMM

Capability Maturity Model:CMM
مدل بلوغ قابلیت
مقدمه
توسعه نرم افزار فرایند پیچیده ای است. اطمینان از نرم افزار برای پوشش انتظارات مشتری و تحویل به موقع و با قیمت مناسب آن، می تواند منجر به چشم پوشی از کیفیت شده و باعث ارائه آن با ارجحیت های پایین تری شود.
علاوه بر آن توسعه دهنده گان خلاق و پویای نرم افزار نمی توانند براحتی در محیط های ساختارمند با یکدیگر کار کنند. جایی که کیفیت سختگیرانه ای فرایندهای کیفیت را تحت فشار قرار داده است. با این وجود شرکتهای نرم افزاری ، چون مایکروسافت و IBM ، که در آنها کیفیت نرم افزار و بهبود کیفیت آن حرف اول را می زند، کمپانی های نرم افزاری بسیار موفقی هستند.
مثالهای فراوانی برای پروژه های نرم افزاری ناموفق وجود دارد. این گونه مثالها ثابت می کند که هزینه های بالا با ضعف تضمین کیفیت و ضعف اجرای موثر فرآیندهای توسعه نرم افزار در ارتباط است. یک مثال روشن، شرکت Visteon ، سازنده قطعات بزرگ صنعت خودرو در دیربورن میشیگان است. این شرکت در سال 1999 یک سازمان داخلی برای بهبود کیفیت نرم افزاری محصولات خود ایجاد کرد تا ایرادات نرم افزاری شرکت را رفع کند. این امر دهها میلیون دلار هزینه به شرکت تحمیل کرد!
پروژه های نرم افزاری، عموما به خاطر فقدان فرآیندهای موثر توسعه نرم افزار با شکست مواجه می شوند و عموما عملکردهای تخصصی مشکل اصلی نیستند. دی مارکو تصریح کرده است:
« موفقیت یا شکست پروژه، به ندرت در جریان عملکردهای تخصصی و تکنیکال بروز می کند ... و این اتفاق عمدتا در مسائل غیر تخصصی و مشکلات ناشی از عملکرد انسانی بروز می کند. تیم دچار افت می شود و توسعه دهندگان به خاطر مصرف کنندگان مجبور به ارائه گزارش سود می شوند، به عبارت دیگر؛ مردم بصورت پایان ناپذیر با عملکردهای بی معنی روش شناختی مواجه می شوند!»
واتس هامفری، کارشناس پردازش نرم افزار در کتاب خود با عنوان «مقدمه ای بر فرآیند تیمی نرم افزار» می نویسد:«پارامترهای قابل اندازه گیری، ضروری ترین قسمت اجرای پایدار فعالیت با کیفیت بالا هستند»
فعالیت های هامفری در طول سال 1980، شالوده چهارچوب جدیدی را برای فرآیندهای نرم افزاری آماده کرد که مدل بلوغ قابلیت (CMM) نامیده می شود. پس از آن، در سال 1991، CMM به یک استاندارد عملی برای سازمانهایی تبدل شد که بر حسب فرآیندهای نرم افزاری سنجش می شدند. و آن موسسات ملزم به بهبود کیفیت محصولات خود شدند.
بطور کلی اجرای CMM تعهد مهمی است که به سرمایه گذاری و زمان قابل توجهی نیازمند است. یک سازمان قبل از قبول CMM ، نخست می بایست اهداف خود را تعیین کرده و ریسک ها، هزینه ها، و مزایای نامعلوم را مورد بررسی قرار دهد.
این مقاله تحقیقی بر شناخت CMM، مراحل رشد آن و فرآیند کلیدی ساخت زمینه های بهبود رشد خواهد پرداخت و سپس یک قالب حرفه ای برای قبول CMM در یک سازمان طرح ریزی می شود.

The Capability Maturity Model: Defined and Explained
تعریف و تشریح مدل بلوغ قابلیت

CMM بعنوان مدلی برای تشخیص بلوغ فرآیندهای نرم افزاری در سازمانها، به منظور تعیین شیوه های کلیدی که به افزایش رشد این فرایندها منجر می شود، توسعه یافته است.
در سال 1991، CMM در بنیاد مهندسی نرم ا افزار (SEI) در دانشگاه کارنگی ملون پیترزبورگ پنسیلوانیا توسعه یافت.
پژوهشی که سرانجام منجر به ساخت مدلی با پشتوانه مالی دولت آمریکا شد ، که این پژوهش راهی را جستجو می کرد تا مقاطعه کاران جزء توسعه دهنده نرم افزار را برای وزارت دفاع آمریکا ارزیابی و مقایسه کند.
دو شاخه از CMM توسط SEI گسترش یافت. توسعه دهنده گان نرم افزار، CMM را به عنوان یک نرم افزار(SW-CMM) پذیرفتند تا فرآیندهای نرم افزاری در سازمان را اندازه گیری کند. و رشد اینگونه فرآیند ها را بهبود بخشد.
از سوی دیگر سازمانهایی نرم افزاری را خریداری و استفاده کردند که می توانست مدل رشد یافتگی قابليت‌ها براي سفارش نرم‌افزار (SA-CMM) را اتخاذ کند. در واقع (SA-CMM) برای ارزیابی و بهبود فرآیند سفارش نرم افزار ساخته شد. تمرکز قسمت اول این مقاله بر (SW-CMM) و طی مبحث جداگانه بعدی (SA-CMM) مورد بحث و ارزیابی قرار خواهد گرفت.
سازندگان CMM، آنرا بدین صورت تعریف کرده اند: « چهارچوبی که عناصر کلیدی یک فرآیند موثر نرم افزاری را شرح می دهد. CMM یک مسیر بهبود تکاملی را برای سازمانهای نرم افزاری توصیف می کند تا از یک فرآیند فاقد عمومیت و رشد نیافته، به یک پروسه رشد یافته و نظام مند تبدیل شوند. این مسیر پنچ مرحله بلوغ را در بر می گیرد.»
قبل از اینکه این مراحل رشد یافتگی و بلوغ را شرح دهیم، نخست با مقایسه خصوصیات سازمانهای بالغ و نابالغ، بلوغ را در سازمانهای نرم افزاری تعریف خواهیم کرد.
سازمانهای نرم افزاری نابالغ سازمانهای هستند که در آنها فرآیندهای نرم افزاری توسط توسعه دهندگان و مدیران اصلاح می شوند و موفقیت یا شکست پروژه به توانایی های تخصصی و تلاش آنها بستگی دارد.
نتایج این فرایند قابل پیش بینی نیستند. بطور نمونه در سازمانهای نرم افزاری نابالغ، امکان برآورد زمانبندی و هزینه ها ناممکن است و خطاهای نرم افزاری نمی توانند بطور موثر پیش بینی یا اداره شوند و اجزای نرم افزاری قابل استفاده مجدد نیستند.
مشتری با دریافت نرم افزاری با کیفیت پایین و عدم قابلیت نگهداری و با هزینه ای گرانتر از معمول و یا حتی با تاخیر در تحویل به مدت چند ماه یا چند سال دیرتر از برنامه زمانبندی، هزینه ای را برای این عدم بلوغ می پردازد.
یک سازمان نرم افزاری بالغ فاقد فرآیندهای معمول است که در طی آن، فرآیندها در میان پروژه ها به اشتراک گذاشته می شوند. و سرانجام اینکه این نوع از ساختار نرم افزار، زیان زیادی را در بازار رقابتی تحمل خواهد کرد.
یک سازمان نرم افزاری باغ دارای سیستم های کنترلی موردنیاز و فرآیند های بجایی است تا از مدیریت و سنجش موثر فرآیند توسعه نرم افزار اطمینان حاصل کند.
در جهت تصمیم گیری بهینه، هزینه ها، برنامه های زمانبندی و کیفیت، به دقت پیش بینی می شوند. فرآیندهای روزمره ، از همه پروژه هایی که در داخل سازمان، تغییرات را مرتفع می کنند، دنباله روی می کنند. به همین صورت، قبل از تحویل محصول به مشتری، یک فرآیند تست مستند شده، خطاها را به کمترین حد ممکن می رساند. در این حالت کدها قابل نگهداری و زمانهای تعمیر قابل پذیرش می شوند. به طور کلی کیفیت نرم افزار، استحکام آن در طول پروژه هاست و اینکه اجزاء آن قابل استفاده مجدد باشند. و بالاخره یک سازمان نرم افزاری بالغ بهتر می تواند رفت و آمد موثر ارتباطات را سازماندهی کند و در زمینه بازاریابی در مقایسه با سازمانهای نابالغ موفق تر خواهد بود.

پنچ مرحله رشد یافتگی
پنج مرحله تعریف شده رشد یافتگی در CMM عبارتند از:
1) Initial ابتدایی
2) Repeatable تکرارپذیر
3) Defined تعریف شده
4) Managed مدیریت شده
5) Optimized بهینه سازی
در این بخش مراحل فوق توضیح داده می شود. و ویژگی های حوزه های فرآیندهای کلیدی (KPA) آنها شرح داده می شود. حوزه های فرآیندهای کلیدی موضوعاتی را که در یک مرحله از بلوغ بیشترین آدرس دهی به آرشیو داشته اند را تعیین می کند.
سطح ابتدایی بعنوان اولین مرحله از رشدیافتگی بصورت زیر تعریف می شود:
«روال نرم افزار بصورت تک کاره علامتگذاری می شود و به همین روش گاهی بی نظمی ها رفع می شوند. آموده های کمی تعرف شده و موفقیت به تلاش شجاعانه شخصی بستگی دارد.»
در این سطح، شیوه های معمول به ندرت به چشم می خورند و موفقیت صرفا به مهارتها و تلاشهای کلیدی شخصی بستگی دارد و هیچ مکانیزم سازماندهی شده ای برای تضمین موقیت همه پروژه ها وجود ندارد. بیشتر سازمانهای نرم افزاری در این سطح قرار دارند. (SEI) انیستیتو مهندسی نرم افزار، 76 درصد از حوزه های تولید نرم افزار را در این سطح از رشد یافتگی ارزیابی کرده است!
این مرحله از رشد یافتگی با عرصه های حوزه های فرآیندهای کلیدی مرتبط نیست
تکرارپذیری به عنوان دومین سطح از رشد یافتگی بصورت زیر تعریف می شود:
«فرآیندهای اساسی مدیریت پروژه به محوریت قیمت، زمانبندی و عاملیت بنا شده است. برای تکرار موفقیت های سابق پروژه ها با ابزارهای کاربردی مشابه، انضباط لازم در اجرای فرآیند رعایت می شود.»
اساسا دومین مرحله از بلوغ، تکرار موفقیت های سابق در پروژه های نرم افزاری پیشین و تکار نکردن اشتباهات قبلی است.
حوزه های فرآیندهای کلیدی در مرحله دوم عبارتست از:
• مدیریت نیازمندی ها : ساخت فرآیند مشتری مدار به منظور تحقق پیش بینیها و ملزومات نرم افزار، که در قالب تغییرات آنها مدیریت و کنترل می شوند.
• برنامه‌ريزي پروژه : طراحی اهداف و خطوط زمانی در دسترس برای فرآیند توسعه نرم افزار.
• پی گیری و نظارت پروژه : ایجاد مدیریت اشکال یابی به منظور اینکه پیشرفت پروژه به هنگام مواجهه با خطاها قابلیت نمایش و تنظیم داشته باشد.
• مديريت پيمانكاران فرعي نرم افزاری : ایجاد ملاکهای موثر برای انتخاب و مدیریت مقاطعه کاران فرعی نرم افزاری
• تضمین کیفیت نرم افزار : ایجاد فرآیندهای ارزیابی و ممیزی به منظور تضمین با کیفیت محصول نرم افزاری
• مدیریت پیکربندی نرم افزار: ایجاد فرآیندهایی به منظور تضمین نگهداری و مدیریت موثر محصول نرم افزاری در طول دوران زندگی آن.
سطح دوم از CMM نیازمند سازمانی است که روش مدیریت پروژه را اجرا کرده و در تمام مراحل اجرای پروژه ها از این مشی پیروی کند. SEI فقط 15 درصد از حوزه های تولید نرم افزار را در این سطح از رشدیافتگی ارزیابی کرده است.
تعریف شده به عنوان سومین سطح از CMM بصورت زیر توصیف می شود:
«برای سازمان، فعالیت های مهندسی و مدیریت فرآیند نرم افزار، در قالب یک فرآیند نرم افزاری، طبقه بندی، استاندارد سازی و یکپارچه سازی شده است. به منظور توسعه و نگهداری نرم افزار، همه پروژه ها از یک نسخه تایید شده و مناسب برای فرآیند استاندارد سازمانی استفاده می کنند.»
حوزه های فرآیندهای کلیدی در این سطح سازمانی، موضوعات و مباحث مطرح شده در سطح دوم را نیز شامل می شود. حوزه های فرآیندهای کلیدی در سطح سوم عبارتند از:
• تمرکز بر فعالیت های سازمان: ایجاد مسئولیت برای فعالیت های فرآیند به منظور بهبود همه قابلیت های فرآیند های نرم افزاری سازمان
• تعريف فرايندهاي سازمان : ساخت و نگهداری نرم افزار استاندارد فرآیند مهندسی و توسعه سازمان
• برنامه آموزش : ایجاد فرآیندی برای توسعه مهارتها و دانش همه افراد سازمان
• مدیریت نرم افزار یکپارچه : این حوزه فرآیند کلیدی بر روی حوزه های کلیدی فرآیند سطح دوم ساخته شده است تا پروژه نرم افزاری مطابق یک فرآیند نرم افزار استاندارد سازمانی طراحی و مدیریت شود.
• مهندسی محصول نرم افزاری : ایجاد یک فرآیند مهندسی نرم افزار برای تضمین استحکام و اصلاح شیوه های برنامه نویسی سازمان
• هماهنگی درون گروهی : ایجاد فرآیند ارتباطی به منظور بیشینه شدن کارآمدی در داخل سازمان و تضمین اینکه سیستم ها به هنگام یکپارچه شدن، به درستی با هم ارتباط داشته باشند.
• ارزیابی توسط متخصصین : ساخت یکی فرآیند ارزیابی، به منظور برطرف کردن هر چه سریعتر خطاها در چرخه توسعه و پرورش دادن ارتباط و فهم سازمانی.
این سطح از رشد یافتی برای سازمانهای مبتنی بر آرشیو، مشکل و دست نیافتنی است. SEI فقط هشت درصد از حوزه های تولید نرم افزار را در این سطح از رشد یافتگی ارزیابی کرده است. شرکت مایکروسافت در سطح سوم از سطوح CMM طبقه بندی می شود.
مدیریت شده ؛ به عنوان چهارمین سطح از رشد یافتی بصورت زیر تعریف می شود:
«جزئیات مراحل نرم افزار، فرآیند نرم افزاری و کیفیت کلی محصول و فرآیند نرم افزاری، بصورت کمیتی قابل فهم و کنترل باشد»
این سطح از رشدیافتگی برای ایجاد فرآیند توسعه نرم افزار، به حجم بالای اندازه گیری نیاز دارد.
حوزه های فرآیندهای کلیدی در سطح چهارم عبارتند از :
• مدیریت کمی فرآیند: سنجش و کنترل کمیتی نتایج فرآیند نم افزار به منظور شناسایی حوزه های با عملکرد ضعیف.
• مدیریت کیفیت نرم افزار : سنجش کمیتی و دستیابی به اهداف کیفیت تعیین شده در محصولات نرم افزاری
SEI کمتر از یک درصد از حوزه های تولید نرم افزار را دراین سطح از رشدیافتگی ارزیابی کرده است. IBM در این سطح از CMM واقع است.
بهینه سازی : به عنوان پنجمین سطح از CMM بدین صورت تعریف می شود:
«فرآیند پیوسته بهبود بوسیله بازخوردهای کمی از فرآیند و از طریق جهت دهی ایده ها و تکنولوژی های ابتکاری ممکن خواهد بود.»
این سطح از توسعه یافتگی بندرت قابل دستیابی است. بنا بر اعلام SEI در سرتاسر جهان تنها 42 سازمان به سطح 5 در مقیاس CMM دست یافته اند. جالبتر آنکه 25 سازمان از 42 سازمان مذکور در کشور هند مستقر هستند!
حوزه های فرآیندهای کلیدی در این سطح عبارتند از:
پیشگیری از خطاها : تعیین علل بروز خطاها و پیشگیری از رخداد دوباره آنها در آینده.
مدیریت تغییر فن آوری : وارد کردن تکنولوژی های نو در سازمان، به شکل منظم
مدیریت تغییرات فرآیند : فرآیندی برای بهبود دائمی فرآیندهای کلیدی که کیفیت، بهره وری و کارآمدی را تحت تاثیر قرار دهد.

مقاله انگلیسی مرجع
ترجمه: هادی خلیل پور

توسط در December 20, 2007 5:16 PM |
لینک به این مطلب

آدرس لینک به این مطلب:
http://www.asahand.com/cgi-bin/mt/mt-tb.cgi/46

نظرات

برای من که دانشجوی مهندسی نرم افزار هستم خیلی جالب و مفید بود

خیلی عالیه. اولین باری بود که از یک مقاله مهندسی نرم افزار خوشم اومد. خسته نباشی.

نظر شما

اگر قبلا در این وبلاگ نظر نداده اید، نظر شما توسط مدیر وبلاگ بررسی خواهد شد. تا آن زمان نظر شما نمایش داده نخواهد شد. از این که نظر داده اید متشکریم.