بخشی از مقاله
*** این فایل شامل تعدادی فرمول می باشد و در سایت قابل نمایش نیست ***
بررسي و تحليل انواع معيارهاي پيچيدگي نرم افزار و طبقه بندي آنها
چکيده
يکي از دلايل اصلي که برنامه هاي توسعه نرم افزار در نهايت با شکست مواجه ميشوند، تخمين ضعيف اندازه نرمافزار است . اندازه عامل مهمي در تعيين هزينه ، زمان و تلاش است . تخمين حجم ، يک فعاليت پيچيده است ، که نتايج آن بايد به طور مداوم در سراسر چرخه حيات نرمافزار به روز شده باشد. اقدامات تشخيص حجم نرمافزار شامل تعداد خط کد منبع ، تعداد نقاط تابع و تعداد نقاط ويژه ميباشد. پيچيدگي، تابعي از اندازه است ، که تا حد زيادي تحت تاثير خطاهاي طراحي و نقص پنهان هستند که منجر به مشکلات کيفيت و افزايش هزينه ها خواهد شد. پيچيدگي را بايد به طور مداوم اندازه گيري، رديابي و کنترل کرد. معيارهاي اندازه گيري نرم افزار جنبه هاي مختلفي از پيشرفت و پيچيدگي نرم افزار را دارد در نتيجه نقش مهمي در تجزيه و تحليل و بهبود کيفيت نرم افزارخواهد داشت . معيارهاي نرم افزار اغلب به معيارهاي محصولات و معيارهاي فرآيند طبقه بندي شده اند. در اين مقاله به بررسي و تجزيه و تحليل انواع معيارهاي پيچيدگي نرمافزار و دسته بندي آنها خوهيم پرداخت .
١- مقدمه
معيارهاي نرمفزار از يک ديدگاه به دو دسته ي معيارهاي فرآيند و معيارهاي محصول تقسيم ميشـوند. معيارهـاي فرآينـد بـه عنـوان معيارهاي مديريت شناخته شده اند و براي اندازه گيري مورد استفاده قرار ميگيرند و از خواص فرايند براي به دست آوردن انـدازه نرم افزار استفاده ميشود. معيارهاي فرآيند شامل معيارهاي هزينه ، معيارهاي تلاش، معيارهاي پيشـرفت و معيارهـاي اسـتفاده مجـدد است . معيارهاي فرآيند در پيش بيني اندازه سيستم نهايي و تعيين يک پروژه با توجه به برنامه در حال اجرا کمک ميکند.
معيارهاي محصول نيز به عنوان معيارهاي با کيفيت شناخته شده اند و براي اندازه گيري خواص يک نرم افـزار اسـتفاده مـي شـوند.
معيارهاي محصول شامل محصول غير قابل اطمينان، معيارهاي عملکرد، معيارهاي قابل استفاده، معيارهاي هزينه ، معيارهـاي انـدازه، معيارهاي پيچيدگي و معيارهاي سبک است . معيارهاي محصول در بهبود کيفيت بخش هاي مختلف سيستم و مقايسـه ميـان سيسـتم هاي موجود کمک ميکند[١].
به طور معمول استفاده از معيارهاي نرمافزار با اهداف زير صورت ميگيرد:
مطالعه تطبيقي روش هاي مختلف طراحي سيستم هاي نرم افزاري.
براي تجزيه و تحليل ، مقايسه و مطالعه زبان هاي برنامه نويسي مختلف با توجه به ويژگي هاي آنها.
مقايسه و ارزيابي توانايي ها و بهره وري از افراد درگير در توسعه نرم افزار.
تهيه مشخصات از نرم افزار با کيفيت .
تأييد انطباق نرم افزار مورد نياز سيستم ها و مشخصات.
ساخت استنتاج در مورد تلاش براي در طراحي و توسعه سيستم هاي نرم افزاري.
گرفتن يک ايده در مورد پيچيدگي کد.
گرفتن تصميمات مربوط به تقسيم بيشتر ماژول پيچيده که بايد انجام شود يا نه .
ارائه راهنمايي به مدير منابع براي بهره برداري مناسب خود.
مقايسه و مبادلات بين طراحي و توسعه نرم افزار و هزينه هاي تعمير و نگهداري.
ارائه بازخورد به مديران نرم افزار در مورد پيشرفت و کيفيت در مراحل مختلف چرخه عمر توسعه نرم افزار.
تخصيص منابع تست ، براي تست کد[٢].
از طرف ديگر معيارهاي نرمافزار محدوديت هايي هم دارند. از آن جمله ميتوان به موارد زير اشاره نمود:
• استفاده از متريک هاي نرم افزاري هميشه آسان نيست و در برخي موارد دشوار و پر هزينه است .
• تأييد و توجيه معيارهاي نرم افزار بر اساس داده هاي تاريخي.تجربي که اعتبار آن به سختي قابل بررسي است .
• براي مديريت محصولات نرم افزاري مفيد هستند ولي براي ارزيابي عملکرد کارکنان فني کارا نيستند.
• تعريف و استخراج معيارهاي نرم افزار دقيق نيست و به طور کلي فرض بر اين است که معيارهاي نرم افزار اسـتاندارد نيسـتند و بـه ابزارهاي موجود و محيط کار بستگي دارد.
• اکثر مدل هاي پيش بيني در برآورد متغيرهاي خاصي که اغلب شناخته شده اند تکيه مي کنند.
• بسياري ازمدل هاي توسعه نرم افزارها احتمالي وتجربي هستند[٣].
ادامه مقاله بدين صورت ميباشد: در بخش ٢ يک طبقه بندي براي معيارهاي نرمافزار ارائـه مـيشـود. در بخـش هـاي ٣ تـا ٨ نيـز بـه ترتيب معيارهاي اندازهاي، علمي، کنترل جريان، جريان اطلاعات، پيچيدگي وزن، شيگرا بررسي ميشوند. در انتها نيز نتيجه گيري انجام خواهد شد.
٢- طبقه بندي معيارهاي نرم افزار
معيارهاي نرمافزار را مي توان مانند شکل ١ طبقه بندي و دسته بندي نمود.
در ادامه مهمترين اين معيارها را توضيح خواهيم داد.
٣- معيارهاي اندازهاي
٣-١- تعداد خط کد
تعداد خط کد يکي از اولين و ساده ترين متريک ها براي محاسبه اندازه برنامه هاي کامپيوتري است . به طـور کلـي از ايـن معيـار براي محاسبه و مقايسه بهره وري از برنامه نويسان استفاده مي شود. هر خط از متن برنامه بدون در نظر گرفتن توضـيحات و يـا خـط خالي يک خط کد در نظر گرفته ميشود.
٣-٢- تعداد نشانه
در اين معيارها، يک برنامه کامپيوتري به عنوان يک مجموعه اي از نشانه ها در نظـر گرفتـه شـده اسـت کـه ممکـن اسـت براسـاس اپراتور يا عملوندها طبقه بندي شده باشد. همه معيارهاي نرم افزار را مي توان درقالب نمادهاي اساسي تعريف کـرد. ايـن نمادهـا بـه عنوان نشانه ناميده مي شود.
مقياس هاي اساسي عبارتند از:
n١= تعداد دفعات مشاهده اپراتورهاي منحصر به فرد
n٢= تعداد دفعات مشاهده شده از عملوند هاي منحصر به فرد.
N١= تعداد دفعات مشاهده کل وقوع اپراتورها.
N٢= تعداد مجموع تکرار عملوند.
٣-٣- تعداد عملکرد
اندازه بزرگ محصول نرم افزاري را مي توان از راه بهتري و از طريق يک واحد بزرگتر به نام ماژول تخمين زد. ماژول را مي تـوان به عنوان بخشي از کد که ممکن است به طور مستقل وارد شده تعريف کرد.
به عنوان مثال، اجازه دهيد يک محصول نرم افزاري به N ماژول احتياج داشته باشد. به طور کلي توافق شده که انـدازه مـاژول بايـد حدود ٥٠-٦٠ خط از کد باشد. بنابراين تخمين اندازه اين محصول نرم افزاري حدود ٦٠×N خط از کد ميباشد.
٤- معيارهاي علمي نرمافزار
مدل Halstead نيز به عنوان نظريه علم نرم افزار شناخته شده است . بر اساس اين فرضيه ساخت و ساز و برنامه شامل يـک فراينـد ذهني دستکاري اپراتورهاي منحصر به فرد (n١)و عملوند منحصر به فـرد(n٢) ميباشـد. ايـن بـدان معنـي اسـت کـه يـک برنامـه از اپراتورهاي N١ و عملوندهاي N٢ با انتخاب اپراتورهاي منحصر به فرد از n١ و عملوند هاي منحصر به فرد n٢ ساخته شده اند. بـا استفاده از اين مدل، Halstead از تعدادي از معادلات مربوط به برنامه نويسي مانند سطح برنامه ، تلاش زبان پياده سازي و غيـره به دست آمده است . ويژگي مهم و جالب اين مدل آن است که برنامه را مي توان از ويژگي هاي مختلف مانند اندازه، تلاش و غيره تجزيه و تحليل کرد[٤].
واژگان برنامه اينگونه تعريف شده اند :
و طول واقعي برنامه ها به عنوان:
يکي از اين فرايض اين نظريه اين است که طول يک برنامه به خوبي ساختار يک تابع فقط n١و n٢ است .
اين رابطه به عنوان معادله پيش بيني طول شناخته شده و تعريف شده است مانند:
طول پيشنهادي برآورد برخي ديگر محققان:
برآورد طول برنامه جنسن
اين توسط جنسن و وايرون براي زمان واقعي برنامه هاي کاربردي نوشته شده توسط پاسکال بکار گرفته و معتبر شـده اسـت وحتـي نتايجي دقيق تر از برآورد هالستيد کسب کرد.
برآورد طول برنامه جيف [Nz] :
که در آن n به عنوان واژگان برنامه درنظر گرفته شده است .
برآورد طول برنامه بيل مش [Nb] :
= تعدادي ازاپراتورهاي منحصربه فرد که شامل عملگرهاي اساسي، کلمات وتوابع .روشها.
= تعداد عملوندهاي منحصر به فرد.
حجم برنامه (V)
برنامه نويسي لغت منجر به اقدامات يکي ديگر از اندازه که ممکن است به عنوان تعريف مـي شود.
حجم پتانسيل (*V)
ممکن است به عنوان تعريف شود که در آن n١ به معني حداقل تعداد اپراتورها و n٢ حداقل تعداد عملوند ها است .
٥- معيارهاي کنترل جريان
٥-١- معيار McCabe’s Cyclomatic
McCabe برنامه هاي کامپيوتري را به عنوان يک مجموعه ي قوي متصل به گراف جهت دار تفسير مي کند. گره ها نشان دهنده بخش هايي از کد منبع هستند که هيچ شعبه و کمان نماينده که ممکن است در حين کنترل جريان اجراي برنامه انتقال يابند، ندارند.
مفهوم گراف برنامه براي اندازه گيري استفاده مي شود و آن را براي اندازه گيري و کنترل تعدادي از مسيرها از طريـق يـک برنامـه استفاده ميکنند. پيچيدگي يک برنامه کامپيوتري را مي توان با پيچيدگي توپولوژيک يک گراف ارتباط داد[٥].
McCabe تعداد cyclomatic را پيشنهاد داد، (V)G نظريه گراف به عنوان يک شاخص پيچيدگي نرم افزار ارائـه شـده اسـت .
تعداد cyclomatic برابر با تعداد مسيرهاي خطي مستقل از طريق يک برنامه در نمودار آن است . بـراي کنتـرل برنامـه ، گـرافG، تعدادcyclomatic،V)G( ، اينگونه در نظر گرفته شده اند: