مهندسی نرم افزار 2 Metrics محسن کامیار دانشگاه فردوسی مشهد
Metrics
در هر فرآیند تولید مهندسی باید معیارهایی (سنجه ،محک) برای کیفیت محصول تولید شده وجود داشته باشند که بتوان با استفاده از آن میزان کارایی فرآیند را ارزیابی نمود. مهمترین مشکل مهندسی نرم افزار را می توان غیر دقیق بودن این معیارها دانست. چیزی که در بسیاری از رشته های مهندسی کامل به صورت کمی موجود
Metrics
مهمترین عوامل بروز ناکارایی را می توان در موارد زیر خلصه نمود:
زیربنای سنجش کیفیت را می توان نیازمندی های یک سیستم نرم افزاری دانست .عدم انطباق تولید بر نیازمندی ها یکی از منابع ناکارایی خواهد بود استانداردها راه کارهایی برای تولید یک محصول با کیفیت ارائه می نمایند .مسلما عدم پیروی از این استانداردها منجر به تولید محصولت بدون کیفیت مناسب خواهد شد.
Metrics
همیشه تعدادی نیازمندی های ضمنی هست که مد نظر قرار نمی گیرند (مانند کاربرپسند بودن واسط کاربر) .عدم برآورده سازی این نیازمندی ها باعث عدم دست یابی به کارایی مناسب خواهد شد.
Metrics
می توان عوامل تأثیر گذار برروی کیفیت نرم افزار را شامل دو دسته زیر دانست
عوامل قابل اندازه گیری (مانند تعداد باگ ها به ازای هر تابع و )... عوامل غیرقابل اندازه گیری (مانند استفاده مجدد ،قدرت نگهداری و )...
در کل می توان عوامل زیر را مهمترین عوامل در کیفیت محصول دانست:
Metrics
صحت ( :)correctnessمحصول بتواند نیازمندی ها و مشخصات مد نظر و اهداف اصلی مشتری را برآورده سازد. قابلیت اطمینان ( :)Reliabilityمحصول بتواند کارکردهای خواسته شده را با دقت کافی برآورده سازد. کارایی ( :)Efficiencyحجم منابع مورد استفاده برای انجام کارکردها امنیت کافی ( :)Integrityکنترل دسترسی افراد برای دستیابی به توابع و داده ها
Metrics
استفاده آسان ( :)Usabilityتلش مورد نیاز برای آموزش ،تفسیر خروجی ها ،آماده سازی وروردی ها و ... قدرت نگهداری ( :)Maintainabilityفعالیت مورد نیاز برای اصلح یک خطا در برنامه انعطاف پذیری ( :)Flexibilityفعالیت مورد نیاز برای تغییر یک کارکرد قابلیت تست ( :)Testabilityمیزان فعالیت مورد نیاز برای تست یک کارکرد مورد انتظار
Metrics
قابلیت انتقال ( :)Portabilityمیزان فعالیت مورد نیاز برای انتقال نرم افزار از یک بستر سخت افزاری و یا نرم افزاری به یک بستر دیگر استفاده مجدد ( :)Reusabilityمیزان قابلیت استفاده مجدد از همه یا قسمتی از برنامه تهیه شده قابلیت همکاری ( :)Interoperabilityقابلیت همکاری با دیگر نرم افزارها
Metrics
Metrics
برای اندازه گیری هر یک از جنبه های ذکر شده در بال باید معیارهای قابل اندازه گیری وجود داشته باشد که می توان به موارد زیر اشاره نمود .این معیارها عمدتا به نحوی انتخاب شده اند که مستقل باشند .هر معیار امتیاز 0تا 10را دریافت می کند و تأثیر هر یک بر عوامل ذکر شده در بال نیز در جدولی آمده است.
Metrics
این معیارها شامل موارد زیر هستند:
:Auditabilityسادگی بررسی سازگاری با استانداردها :Accuracyدقت محاسبات و عملیات کنترلی :Communication commonalityمیزان استفاده از واسطها و پروتکل های استاندارد :Concisenessاستفاده از حداقل میزان کد :Consistencyاستفاده از روش های طراحی و مستندسازی یکسان در طول تولید
Metrics
:Data commonalityاستفاده از ساختارها و انواع داده استاندارد در تولید :Error toleranceمیزان تأثیر وجود یک خطا برروی دقت و ...داده ها :Execution Efficiencyکارایی زمان اجرای برنامه :Expandabilityقابلیت گسترش طراحی ساختار ،داده ها و یا توابع :Generalityآینده نگری در کاربردهای قابل فرض برای اجزاء برنامه
Metrics
:Hardware independenceمیزان استقلل نرم افزار از سخت افزار مورد نیاز :Instrumentationامکانات نرم افزار برای کنترل وضعیت داخلی نرم افزار و تشخیص خطاها :Modularityمیزان استقلل کارکردی اجزاء مختلف سیستم :Operabilityسادگی استفاده از برنامه :Securityاستفاده از مکانیزم های حفظ داده ها و توابع
Metrics
:Software system independenceمیزان استقلل سیستم از عوامل محیطی مانند محدودیت های سیستم عامل و ... :Traceabilityقابلیت پیگیری رو به عقب از یک جزء خاص از سیستم به سمت طراحی مورد نظر :Trainingمیزان کمک های مکانیزه به کاربر برای استفاده از سیستم
Metrics دو استاندارد دیگر نیز در مورد عوامل مؤثر در کیفیت وجود دارند که استفاده :گسترده ای می شوند به نامHP استاندارد ارائه شده توسط FURPS )Functionality, Usability, )Reliability, Performance, Supportability ISO 9126 )Functionality, استاندارد Usability, Reliability, Efficiency, )Maintainability, Portability
Metrics
در ادامه سعی می کنیم تا معیارهای کامل فنی را برای اندازه گیری کیفیت ارائه نماییم. معیارهای فنی باید:
در سنجش مدل های تحلیل و طراحی کمک لزم را بنمایند معیاری برای میزان پیچیدگی طراحی و کد ارائه نمایند در طراحی تست های مورد نیاز حداکثر کمک لزم را بنمایند
Metrics
به همین منظور این معیارها باید از اصول زیر پیروی نمایند:
:Formulationجمع آوری معیارهایی که برای نرم افزار مورد نظر مناسب تر می باشند :Collectionتعیین مکانیزم های لزم برای جمع آوری داده های مورد استفاده در معیارهای تعیین شده :Analysisاستفاده از ابزارهای لزم برای محاسبه معیارها :Interpretationبررسی نتایج برای ایجاد تغییر
Metrics
:Feedbackانتقال پیشنهادات جمع آوری شده براساس معیارها به تیم تولید نرم افزار
Metrics
در پایان معیارها باید از خصوصیات زیر پیروی نمایند:
ساده و قابل محاسبه :فهم و محاسبه به سادگی انجام گیرد به صورت تجربی و عینی قابل تفسیر و توجیه باشند (دقیقا مشخص باشد که این معیار قصد دارد تا چه مشخصه ای را اندازه گیری نماید) کامل مستقل و بی طرفانه تهیه شده باشد به صورتی که یک شخص ثالث نیز بتواند به نتیجه مشابه ما با استفاده از داده های یکسان
Metrics
در استفاده از واحدها و ابعاد کامل سازگار عمل کند استقلل از زبان برنامه نویسی امکان فراهم نمودن بازخوردهای مناسب به تیم تولید برای دستیابی به نرم افزار با کیفیت بالتر
– Metricsمعیارهای مدل تحلیل
معیارهای مورد استفاده در مدل تحلیل: دسته های مختلفی از این معیارها موجودند که در زیر به آنها می پردازیم
معیارهای برپایه کارکرد :این معیارها (معیارهای نقطه کارکرد) می توانند برای برآورد اندازه سیستم حاصل از تحلیل انجام گرفته استفاده شوند .این معیار دارای موارد زیر می باشد:
تعداد ورودی های کاربر تعداد خروجی های کاربر
– Metricsمعیارهای مدل تحلیل
تعداد فایل ها تعداد واسط های خارجی
سپس از جدول زیر برای محاسبه استفاده می کنیم تا مجموع کل را به دست آوریم
– Metricsمعیارهای مدل تحلیل در نهایت عدد به دست آمده را در فرمول زیر قرار می دهیم و عدد FPرا به دست می آوریم. در این فرمول fiها اعدادی هستند که نتیجه جوابگویی به پرسش های 14گانه زیر می باشند و به هر پرسش عددی بین 0تا 5نسبت داده می شود. در نهایت براساس تجاربی مانند اینکه هر واحد FPمتناظر 60خط کد است و هر 12واحد
– Metricsمعیارهای مدل تحلیل
– Metricsمعیارهای مدل تحلیل
معیار :Bangمانند مدل قبل برای به دست آوردن برآوردی از اندازه سیستم مورد استفاده قرار می گیرد. برای محاسبه این معیار ابتدا باید تعداد اجزاء اولیه را محاسبه نماییم .اجزاء اولیه اجزائی از تحلیل هستند که دیگر در مدل تحلیل شکسته نمی شوند .این اجزاء اولیه دارای گروه های زیر می باشند:
اجزاء اولیه کارکردی (:)Functional Primitives تعداد عملیاتی که برروی داده ها انجام می شود. این تعداد را می توان با استفاده از آخرین سطح
– Metricsمعیارهای مدل تحلیل نشان می دهند به دست آورد و یا در زبان UMLاین معیار را می توان برابر تعداد usecaseهای موجود در آخرین سطح تحلیل دانست. اجزاء داده ای ( :)Data Elementsتعداد اجزاء داده ای یا به عبارتی داده هایی که نوع داده ترکیبی محسوب نمی شوند. اشیاء ( :)Objectsتعداد اشیائ تعریف شده در سیستم. روابط ( :)Relationshipsتعداد روابط تعریف شده بین اشیاء مختلف حالت ها ( :)Statesتعداد حالت های قابل مشاهده توسط کاربر در سیستم
– Metricsمعیارهای مدل تحلیل
انتقال ها ( :)Transitionsتعداد انتقال های بین حالت ها در نمودار حالت ها
علوه بر این باید اعداد زیر نیز به دست آیند:
تعداد کارکردهای دستی اولیه تغییر یافته (:)Modified Manual Function Primitives, FuPM تعداد کارکردهایی که در حوزه این سیستم نمی گنجند اما باید برای سازگاری با این سیستم تغییر یابند. اجزاء داده ای ورودی (Input Date Elements, :)DEIتعداد اجزاء داده در ورودی های سیستم اجزاء داده ای خروجی (Output Data Elements, )DEO
– Metricsمعیارهای مدل تحلیل
اجزاء داده ای نگهداری شده (Retained Data :)Elements, DERتعداد اجزاء داده ای که توسط سیستم ذخیره می شوند. :Data Tokens – TCiتعداد داده هایی که در مرز کارکرد اولیه ٍ-iام شکسته نمی شوند. رابطه ها (:)Relationship Connections, REi تعداد رابطه هایی که بین داده iام در مدل داده ها با دیگر داده ها موجود است.
بر اساس این موارد می توان کاربردها را به دو دسته کاربردهای مبتنی بر داده و کارکرد تقسیم نمود .با استفاده از معیار زیر می توان
– Metricsمعیارهای مدل تحلیل
RE/FuP < 0.7کاربردهای مبتنی برکارکرد RE/FuP<1.4<0.8کاربردهای ترکیبی RE/FuP<1.5کاربردهای مبتنی بر داده
و یا معیار زیر می تواند نشان دهنده این باشد که آیا تمام توابع دارای درشت دانگی یکسانی هستند
در نهایت برای محاسبه معیار Bangدر کاربردهای مبتنی بر کارکرد از الگوریتم زیر استفاده می شود.
– Metricsمعیارهای مدل تحلیل
در این الگوریتم تعداد توکن برابر تعداد توکن های مجزایی است که در آن کارکرد اولیه دیده می شوند CFuPI .از جدولی که توسط DeMarcoارائه شده است به دست می آید که نسخه ساده شده آن در زیر آمده
– Metricsمعیارهای مدل تحلیل
و در نهایت کلس های ذکر شده 16کلس هستند که دارای وزن های 0.6برای کارکردهای شامل انتقال ساده داده ها تا 2.5برای کارکردهای مدیریت داده ها می باشند. برای محاسبه معیار Bangدر کاربردهای مبتنی بر داده نیز به صورت زیر عمل می کنیم.
– Metricsمعیارهای مدل تحلیل
در این الگوریتم نیز COBIاز جدول زیر به دست می آید.
– Metricsمعیارهای مدل تحلیل
پیشنهاد عمده در این روش این است که هر مجموعه ای جدول های متناسب با سازمان خود را براساس تجارب موجود در سازمان ایجاد نماید تا انطباق بیشتری با واقعیت داشته باشد.
– Metricsمعیارهای مدل طراحی
در این بخش نیز مسلما برای دست یابی به محصولی که کیفیت لزم را داشته باشد باید معیارهای مناسب وجود داشته باشند که در ادامه به توضیح در این مورد می پردازیم. یکی از اولین دسته معیارها ،معیارهای ساختار طراحی (Architectural Design )Metricمی باشند .این معیارها را می توان معیارهای جعبه سیاه دانست زیرا تنها
– Metricsمعیارهای مدل طراحی عملیات در اجزاء سیستم نمی شوند. سه معیار پیچیدگی طراحی نرم افزار توسط Cardو Glassارائه شده است :پیچیدگی ساختاری ( ،)Structural Complexityپیچیدگی داده ( )Data Complexityو پیچیدگی سیستم (.)System Complexity این سه معیار بر اساس فرمول های زیر محاسبه می گردند.
– Metricsمعیارهای مدل طراحی
در این فرمول ها fout)i( )fan outیک ماژول) برابر است با تعداد ماژول هایی که مستقیما توسط ماژول iام فراخوانی می شوند )v)i .نیز برابر تعداد متغیرهای ورودی و خروجی است.
یکی دیگر از معیارها توسط Henryو Kafura ارائه شده است و به صورت زیر محاسبه می شود.
در این معیار )length)iبرابر است با تعداد دستورات زبان برنامه نویسی در ماژول مورد نظر .البته در این معیار finو foutعلوه بر
– Metricsمعیارهای مدل طراحی
هر چه دو معیار ذکر شده در بال بیشتر گردند میزان تلش برای یکپارچه سازی و تست نیز بال می روند. همچنین معیار زیر نشان دهنده چگالی ارتباط بین اجزاء مختلف سیستم است.
– Metricsمعیارهای مدل طراحی
همچنین نیروی هوایی آمریکا معیاری را به نام )Design Structure Quality Index )DSQI معرفی نموده است که مقداری بین 0و 1را ارائه نموده و باید مقادیر زیر با استفاده از طراحی داده ها و ساختار محاسبه گردند:
: S1تعداد ماژول های موجود در سیستم.
: S2تعداد ماژول هایی که صحت کارکرد آن ها وابسته به داده های ورودی است و یا داده هایی را برای استفاده در دیگر ماژول ها فراهم می آورند( .ماژول های کنترلی در این دسته قرار نمی گیرند).
– Metricsمعیارهای مدل طراحی
: S4تعداد اقلم داده ای موجود در پایگاه داده
: S5تعداد اقلم داده ای یکتای موجود در پایگاه داده : S6تعداد قسمت های پایگاه داده
: S7تعداد ماژول های با یک ورودی و خروجی (ماژول های کنترل استثنائات چند خروجی محسوب نمی شوند)
بر این اساس مقادیر زیر نیز محاسبه می گردند:
ساختار برنامه :اگر بر اساس روش های مبتنی بر جریان داده و یا شیءگرا طراحی صورت گرفته
– Metricsمعیارهای مدل طراحی
استقلل ماژول ها: استقلل ماژول ها از پردازش های قبلی: اندازه پایگاه داده: تقسیم پذیری پایگاه داده: خصوصیات ورود و خروج پایگاه داده:
با استفاده از این مقادیر معیار مورد نظر به صورت زیر محاسبه می شود که در آن
– Metricsمعیارهای مدل طراحی
دسته بعدی از معیارها ،معیارهای طراحی در سطح اجزاء (Component-level )Design Metricsمی باشند .این معیارها بر اساس مشخصات داخلی اجزاء نرم افزار می باشند و از سه cبرای اندازه گیری استفاده می نمایند.
( Cohesionچسبیدگی) ( Couplingهمکاری) ( Complexityپیچیدگی)
– Metricsمعیارهای مدل طراحی
در همین سه دسته به بررسی معیارهای موجود می پردازیم:
معیارهای :cohesionاین معیار میزان یکپارچگی یک ماژول را مشخص می کند و براساس مفاهیم زیر محاسبه می شود:
:Data sliceقسمت های داده ای که تعیین کننده محل شروع حرکت یک ماژول در بین حالت های مختلف می باشند. :Data tokensداده هایی که می توانند به عنوان توکن برای ماژول مورد نظر محسوب شوند.
– Metricsمعیارهای مدل طراحی
:Glue Tokensاین توکن ها برروی یک یا چند data sliceساخته شده اند. :Super Glue Tokensاین توکن ها در بین تمام data sliceها مشترک هستند. :Sticknessبرای یک glue tokenبرابر است با تعداد data sliceها متناظر با آن.
و در نهایت معیار زیر برای strong functional coherenceارائه می گردد.
– Metricsمعیارهای مدل طراحی
معیارهای :couplingاین معیارها نشان دهنده میزان ارتباط یک ماژول با ماژول های دیگر می باشد و شامل دسته های مختلف ارتباط مانند ارتباط داده ای ،ساختارهای کنترل جریان ،سراسری و محیطی می باشد.
برای محاسبه باید معیارهای زیر به دست آیند:
ارتباطات داده ای و کنترل اجرا
ارتباط سراسری
– Metricsمعیارهای مدل طراحی
ارتباط محیطی
بر این اساس معیار ارتباط ماژول محاسبه می شود که به صورت زیر محاسبه می شود: که در آن k=1و a=b=c=2و
میزان ارتباط با دیگر ماژول ها برابر خواهد بود با
– Metricsمعیارهای مدل طراحی
معیارهای واسط کاربر به عنوان ارائه موضوع بسیار مناسبی می باشد.
– Metricsمعیارهای کد
در این دسته از معیارها می توان از مهترین متغیرها به موارد زیر اشاره نمود:
با استفاده از این مقادیر می توان Programارائه نمود Lengthزیر را معیارهایی مانند Program Volume Program Volume Ratio
Metrics
همچنین معیارهایی برای تست و پشتیبانی وجود دارند که در اینجا بیشتر در این زمینه بحث را ادامه نخواهیم داد.