engeneer_19
6th August 2009, 02:45 AM
________________________________________يكي از مهمترين مسائلي كه مديران پروژههاي نرمافزاري به آن توجه دارند، استفاده از ابزارها، تكنيكها و روشهاي مختلف براي برآورد و كنترل راندمان كاري است. اين فاكتور ميتواند براي برآورد نيروي انساني،مدت زمان موردنياز پروژهها و برنامهريزي بسيار سودمند باشد. دانستن نرمافزار قبل از توليد آن ميتواند ما را در اين برآوردها ياري رساند. در شروع هر پروژه نرمافزاري اولين سؤال و شايد سختترين سؤالي كه ممكن است مطرح شود اين است: هزينه توليد نرمافزار و اندازه آن چهقدر است ؟ وقتي از اندازهگيري نرمافزار صحبت ميكنيم، بايد دنبال اندازههايي از نرمافزار باشيم كه به ما در مورد آن اطلاعاتي ميدهند. همانطور كه سانتيمتر و گرم، اطلاعاتي در مورد اندازه و وزن اشيا در فيزيك به ما ميدهند، اندازههاي نرمافزاري اطلاعاتي درباره مرغوبيت و كيفيت نرمافزار به ما ميدهند. بهعنوان مثال، اگر بخواهيم مدت يك پروژه نرمافزاري را حدس بزنيم، بايد اندازه نرمافزار را تخمين بزنيم و اگر بخواهيم كيفيت نرمافزار را اندازه گيري كنيم بايد يك اندازه داشته باشيم كه بتواند كيفيت نرمافزار را مشخص كند.براي اينكه بتوانيم هزينه نرمافزار را محاسبه كنيم، بايد اندازه نرمافزار را پيدا كنيم. اولين روشي كه براي اندازهگيري نرمافزارها ميتوان استفاده كرد، محاسبه اندازه خطوط برنامه است. در اين روش كه روشي استاندارد به نظر نميرسد، براساس تعداد خطوط برنامه اندازه آن و سپس قيمت آن محاسبه ميشود. البته، روشهاي ديگري مانند COSMIC و COCOMO روشهاي بهتري براي برآورد اندازه نرم افزار هستند. از طرف ديگر، براي اندازهگيري نيروي كاري كه در يك پروژه نرمافزاري مشغول كار هستند نيز مشكلاتي وجود دارد. به عبارتي كار يك نفر در ماه به تخصص و مهارت آن فرد بستگي مستقيم دارد. در نتيجه، پيشبيني نيروي كار مورد نياز به فاكتورهاي مختلفي بستگي دارد و بايد فرمول خاصي را براي به دست آوردن واحد كوشش يا Effort استفاده كرد. بهعنوان مثال، فرمول زير را در نظر بگيريد:(UoE= a+b (Siez)^c+ACCUM(factorsدر اين فرمول UoE (سرنام Units of Effort) يا واحد كوشش است كه اغلب بهصورت نفر در ماه يا نفر در روز است. a حداقل قيمت پروژه و Size، اندازه نرمافزار است كه به وسيله دو پارامتر c و b با استفاده از تجربههاي گذشته گروه نرمافزاري تغيير پيدا ميكند و در آخر نيز مجموع انباشتگي يا Accumulation فاكتورهايي مانند تكنيك، ابزار، تخصص گروه، پروسس و... به اين اندازه اضافه شده و UoE پروژه را مشخص ميكند.از آنجا كه اغلب پروژههاي نرمافزاري هماكنون به صورت شيء گرا آماده ميشوند، به نظر ميرسد روشهاي COCOMO و COSMIC نيز نتوانند با دقت اندازه نرمافزار را مشخص كنند. از اين رو، استفاده از تكنيكهايي براي اندازهگيري نرمافزارهاي OO پيشنهاد ميشود. يكي از اين روشها روش Lorenz و kidd است كه بر مبناي اندازهگيري تعداد كلاسها و كامپوننتهاي برنامه استوار است. اين اندازه ميتواند در فرمول UoE و به جاي پارامتر Size آوردهشود و تعيينكننده هزينه پروژه نرمافزاري است. براي محاسبه تعداد كلاسها و كامپوننتهاي برنامه بايد چهار مرحله زير را انجام داد:1- محاسبه تقريبي تعداد كلاسهاي برنامه با استفاده از شرح نيازمنديهاي كاربران 2- تقسيمبندي انواع واسط كاربر و دادن وزنهاي زير به آن:الف- عدم وجود رابط كاربري يا UI (وزن 2) ب- وجود واسط كاربر ساده (وزن 25/2)پ- واسط كاربر معمولي (وزن 5/2) ت- واسط كاربر پيچيده (وزن 3)3- محاسبه حاصلضرب عدد به دست آمده از مرحله اول با عدد مرحله دوم و جمع آن با تعداد كلاسهاي پيش فرض در مرحله اول.4- محاسبه حاصلضرب عدد به دست آمده در مرحله 3 با عددهاي 15 تا 20 (با توجه به بازدهاي كه گروه توليد نرمافزار در توليد يك كلاس دارد). بهعنوان مثال، فرض كنيد برنامهاي را ميخواهيم طراحي كنيم كه حدود پنجاه كلاس دارد و بهنظر ميرسد، اين برنامه داراي رابط كاربري پيچيدهاي است. در نتيجه class 200