جلسه دوم : اصول و مفاهیم مدیریت پروژه های نرم افزاری
یکی از فعالیتهای چتری مدیریت پروژه است. پیش از آغازفرآیند تحلیل و طراحی و .. مدیرپروژه کار خود را آغاز میکند. طرح پروژه که شامل: برنامهریزی, زمانبندی, ریسکها, محدودیتها, منابع مورد نیاز, مکانیزمهای کنترل کیفیت و زمان آغاز و پایان و هزینهها را تعیین میکند.
مدیر پروژه برای مدیریت حوزههای زیر را باید پوشش دهد:
1) افراد (People) : مهمترین جزء هر پروژه نرمافزاری است. 5 گروه از افراد درگیر پروژه هستند:
1-1) مدیران ارشد: کارهای مدیریت سیستم را انجام میدهند. تصمیمهای مهم و تاثیرگذار را میگیرند.
1-2) مدیرپروژه: رهگیری و سازماندهی و برنامهریزی پروژه را انجام میدهد.
1-3) مهندسان: کارهای تحلیل و طراحی و پیادهازی و تست و نگهداری را انجام میدهند (مجریان)
1-4) مشتری: نیازها, مشخصهها و خصوصیات نرمافزار را تعیین میکنند. (نرمافزار را سفارش میدهند)
1-5) کاربر: کسانی هستند که از نرمافزار استفاده میکنند.
مدل MOI رهبری:
الف) انگیزه: رهبر باید بتواند افراد را فعال کند تا پروژه به ثمر برساند. رهبری قوی انگیزه افراد را تا آخر پروژه حفظ میکند.
ب) سازماندهی: افراد با مهارتهای مختلف کنار هم باشند, وظیفه تعیین شده برای افراد متناسب با مهارتها و ویژگیهای افراد باشد.
ج) خلاقیت: شکوفایی خلاقیتهای افرلد.
2) محصول (Product) : مهمترین وظیفه مدیر در این بخش, تعیین محدوده نرمافزار و تجزیه آن است. یعنی زمانی که مشخصه سیستم را دریافت میکند آنقدر آن را گسترش میدهیم تا عملکرد, کارایی, رفتار, دادهها و محدودیت و .. مشخص شود.
عملکرد: نرمافزار چه کارهایی انجام میدهد.
رفتار: رفتار و حالتهای مختلف سیستم. اتفاقات مختلفی که در نرمافزار رخ میدهد.
دادهها: سیستم از چه داده و ساختمان دادهای استفاده میکند.
محدودیت: چه موانع و نبایدهایی در سیستم وجود دارد.
3) فرآیند (Process) : متناسب با مهارت اعضای تیم, نیازها, خصوصیات محصول, میزان پیچیدگی نرمافزار و نوع سیستم فرآیند مناسب باید انتخاب شود. در این مرحله فرآیند هم تجزیه میشود. از محصول و فرآیند مدل سازی انجام میشود. برای هر محصول تعیین میکنیم در هر گام از تحلیل و طراحی و .. چه کارهایی باید انجام شود. برای هریک تخمین زده میشود و زمانبندی کل پروژه و هزینه آن تعیین میشود.
4) پروژه (Project) : عواملی که باعث شکست پروژه میشوند:
عدم شناخت نیازهای مشتری, محدوده نرمافزار مشخص نشده, مدیریت ضعیف تغییرات, تغییر تکنولوژی, تغییر نیازهای مشتری, مشخص نبودن مهلتها, مقاومت کاربران, از میان رفتن حمایت حامیان, فقدان افراد ماهر, اجتناب از بکارگیری آموزشهای دیده شده.
اندازهگیری: یکی دیگر از وظایف مدیر پروژهاندازهگیری است. اندازهگیری در کار مهندسی معنا پیدا میکند. برای آنکه نسبت پروژه, فرآیند و محصول فهم درستی بدست آوریم باید یک سری صفات رااندازهگیری کنیم.
معیار: تخصیص اندازه به یک صفت کمی, یک معیار نامیده میشود. مانن هزینه, زمان, تعداد خطا
شاخص – دیدگاه: ترکیبی از معیارها که دیدگاهی را به ما میدهد.
کاربرد معیارها:
1) خصوصی: برای فرآیندهای خاص کاربرد دارد.
2) عمومی: در طول پروژه انجام میشود.
نرمالسازی: برای مقایسه معیارها و نتیجهگیری براساس آنها, ابتدا آنها را نرمالسازی میکنیم و بعد مقایسه.
1) نرمالسازی اندازهگرا: تعداد خطاها در هر هزار خط کد.(Kloc)
2) نرمالسازی عملگرا(FP) : براساس تعداد نقاط عملکرد. برای این کار ابتدا تعداد ورودیها, خروجیها, درخواستها,فایلها و رابطهای خارجی را محاسبه و در میزان پیچیدگی هر یک ضرب میکنیم و از فرمول زیر بدست میآید:
N = ∑ fi
C = ( 0.65 + 0.01 * N )
FP = ∑ ( Count * Weight ) * C
§ Kloc چون بستگی به برنامهنویس و زبان برنامهنویسی دارد مناسب نیست.
§ FP چون معلوم نیست چیست و کجاست و اینکه به عملکرد داخلی نرمافزار کاری ندارد مناسب نیست.
§ مقدار Kloc قابل تبدیل به FP است.
کیفیت: یکی دیگر از معیارهای نرمافزار, معیار اندازهگیری کیفیت است. کیفیت نرمافزاررا نمیتوان مستقیما اندازه گرفت, بلکه از دو روش استفاده میکنیم:
1) مستقیم: به طور مستقیم کیفیت نرمافزار را تعیین کنیم. که روش چندان مناسبی در مهندسی نیست.
2) غیر مستقیم: کیفیت را براساس معیارهای دیگری بررسی کرده و آنها را اندازهگیری میکنیم. این معیارها:
2-1) قابلیت نگهداری: درجهای که بعدا میتوانیم برنامه را تغییر دهیم یا آن را بهبود ببخشیم. معیار آن MTTC است. MTTC میانگین زمان لازم برای تغییر نرمافزار, که هرچه کمتر باشد نرمافزار قویتر است.
2-2) امنیت: هرچه میزان یکپارچگی نرمافزار بیشتر باشد امنیت هم بیشتر است. منظور از یکپارچگی, درجهای که نرمافزار در برابر تهدیدات خارجی مقاومت نشان میدهد.
2-3) قابلیت استفاده: میزان زمان مورد نیاز برای آموزش کاربران و کارکردن با نرمافزار, قابلیت سودندی, میزان فعالیت و مهارت لازم برای کار و استفاده از نرمافزار و میزان زمان لازم برای ورود.
برنامهریزی: هدف از ایجاد طرح پروژه, ایجاد یک استراتژی عملی برای کنترل و پیگیری یک پروژه تکنیکی پیچیده است. با ایجاد طرح پروژه میتوان نتیجه نهایی را در زمان تعیین شده و با کیفیت موردنظر تولید کرد واین یعنی برنامهریزی.
گامهای برنامهریزی:
1) مسئله و کارهایی که باید انجام شود را بشناسیم. دادهها, رفتار, عملکرد و محدودیتها مشخص باشد.
2) تخمین: تخمین میزان فعالیت و زمان موردنیاز
3) ریسک: چطور میتوان از وقوع آن جلوگیری کرد. در مورد هرکدام برنامهریزی میکنیم.
4) زمانبندی: کارهای متفاوت در طول پروژه را زمانبندی میکنیم.
5) کنترل استراتژی: استراتژیهای کنترل کیفیت و کنترل تغییرات را کنترل کنیم.
تخمین هزینه: برای این کار باید محدوده پروژه به روشنی تعیین شده باشد, تجزیه کارها و وظایف به اندازههای کوچکتر بسیار مفید خواهد بود.
تخمین تکنیکها:
مشابه پروژههای قبلی این کار را انجام دهیم.
از روشهای مرسوم تخمین استفاده کنیم.
· تفتیک وظایف و تخمین فعالیتها
· تخمین اندازه
استفاده از ابزارهای این کار مانند CheckPoint
تصمیم برای خرید:
پس از تخمین هزینهها تصمیم میگیریم هریک از وظایف و اجزای پروژه را چگونه تهیه کنیم. برای اینکار معیارهای موردنظر از جمله کارایی, زمان تحویل و .. را برای هریک از اجزای پروژه لیست میکنیم. سپس برای هریک از آنها یک درخت تصمیمگیری میسازیم و هزینه مربوط به هریک ازراهحلها از جمله ساخت سیستم, بهکاربردن اجزای از قبل تولیدشده, خرید و یا بستن قرارداد برای تولید سفارش زیرسیستم را تعیین میکنیم. هزینه هریک از راهحلها را در احتمالش ضرب میکنیمو در انتها میزان هزینه هریک را مقایسه میکنیم و هزینه عملکرد را انتخاب مینماییم.