آموزش تحلیل نرم افزار بخش سوم

بخش سوم

برنامه زمانی عملی

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

آنچه مشتری می خواهد زمان 90 روزه
آنچه ما با یک نفر نیرو تخمین زدیم زمان 489 روزه است

خوب راه حل چیست ؟ چه کار باید کرد ؟
برای جواب به این سوال ابتدا شما باید فاصله زمانی تکرارها را مشخص کنید
همانطور که گفتیم ما در تحلیلمون به 2 مورد مهم نیاز داشتیم
1-user story   یا همان کارتهای داستانهای کاربر است که هر کدام یک نیاز توضیح می داد . ما باید از نیازهای کاربران مطلع باشیم . نیازی نیست همه چیز را از اول بدانیم و از جزییات آگاه باشیم بلکه نیازهای کلی در مرحله اول کافیست
2- iteration  تکرارها در واقع چرخه زمانی بود که در پایان هر چرخه یا تکرار جزیی از پروژه تحویل مشتری می شود .
پروژه باید به دوره های زمانی کوتاه مدت تقسیم بندی شود . مثلا 2 هفته ای یا ماهانه و در پایان هر دوره بخشی از نیارهای مشتری را تحویل می دهیم. و از مشتری نظر خواهی می کنیم و اگر نیازی بود نظر مشتری ،سریعا اعمال می شود و وارد دوره بعدی(iteration) می شویم 
وقتی یک تکرار iteration   جدید آغاز می شود . مشتری دیگر حق عوض کردن نیازهای قبلی خود را ندارد زیرا بر سر آن توافق شده است .

خوب با این مقدمه حالا شما در مقابلتان مجموعه ای از کارتهای نیازمندیها را می بینید که حاصل جلسات مشترک با مشتر ی است . از طرفی دیگر شما محدودیت زمانی دارید.
شما باید از بین کارتها ، کارتهایی (نیازهایی ) را اولویت بندی کنید که در همان محدوده مشخص شده توسط مشتری انجام شوند. شما بعد از بررسیهای طولانی و سخت ، بالاخره باید کارتهای نیازمندیها را اولویت بندی کنید.
برای اینکار با مشتری جلسه  بگزارید و مهمترین نیازها را تشخیص دهید و به آنها امتیاز دهید . شما در این جلسه باید به عنوان یک کارشناس به
مشتری کمک کنید تا بتواند اولویتها و نیازهای اولیه خود را تشخیص و انتخاب کند . فراموش نکنید که انتخاب اولویتها به عهده مشتری باشد.
خوب اکنون که نیازها اولیت بندی شد . شما باید ببینید که قرار است چند دوره تکرار در پروژه داشته باشید ، مثلا اگر قرار است زمان 90 روز باشد شما می توانید برای هر دوره تکرار زمان 30 روزه تعیین کنید
پس حالا در تکرار اول ، نیازهایی که دارای بالاترین اولویتها است را انتخاب کنید و آنها را در دوره اول تکرار انجام دهید و به همان ترتیبب در دوره بعدی تا آخر پروژه.
اما شما حالا اولویتها را مشخص کرده اید ، و تصمیم گرفتید که برخی اولویتها را در فاصله زمانی 30 روزه انجام دهید ، اما وقتی نگاه می کنید متوجه می شوید که زمان مورد نیاز این اولویتها بیش از 30 روز است .
خوب حالا شما باید دوباره اولویتها را مرور کنید و فقط نیازهایی را انتخاب می کنید که در محدوه قابل انجام باشد و همچنین نیازهای مهمتری هستند

خوب تا حالا فرض کردیم که کار بصورت تک نفره است در حالی که طبق محاسبات ما کار بصورت تک نفره بیش از 400 روز زمان می برد ، پس تصمیم می گیریم گروهی 3 نفره تشکیل دهیم آیا زمان پروژه تقسیم بر 3 یعنی همان تعداد نیرو خواهد شد ؟ جواب خیر . چرا؟

برای جواب دادن به این سوال باید به نکات زیر در تشکیل گروه دقت کنید
1-شما وقتی گروهی را تشکیل می دهید باید به پارامتر ، روشهای سرعت دادن و بالا بردن بازدهی افراد گروه دقت کنید ، افراد گروه باید با هم هماهنگ باشند ، اگر گروه شما تاز ه تشکیل شده مسلما بازدهی شما کم است چرا که افراد با هم آشنا نیستند و سابقه همکاری با یکدیگر ندارند .
علاوه بر همه اینها نرخ بازدهی افراد را باید در نظر بگیرید ، یعنی یک فرد در یک روز ، چند در صد از زمان کارش مفید است . طبق محاسبات در خوشبینانه ترین حالت شما فقط تا 70 در صد بازدهی مناسب می توانید داشته باشید . و بقیه وقت زمان تلف شده است .

2-فهمیدن نرم افزار : شما باید دقت کنید که یکی از موارد مهم در گروه نرم افزاری این است که افراد گروه ، پروژه را بفهمند ودرک کنند ، چرا که افراد نمی توانند بر چیزهای مبهم ونامعلوم براحتی کارکنند .

3-تصمیمات فنی و تکنیکی : شما باید یک روال و فرایندی برای تصمیمات فنی داشته باشید . مثلا با هماهنگی گروه تصمیم می گیرید که برای کار از چه ایزارهایی استفاده کنید که همگی به آن آشنا باشند و سرعت عمل شما را بالا می برد . از چه زبان برنامه نویسی استفاده می کنید.
چگونه کارهای برنامه را تقسیم بندی کنید و چگونه دوباره آنها را با هم تلفیق دهید

حالا می گوییم با توجه به نکات بالا اضافه کردن افراد به گروه برنامه نویسی نیاز دارد به هماهنگی برخی نکات بالا دارد که بالطبع بخشی از انرژی و زمان شما را خواهد گرفت ، نکته مهم کار اینجاست که مدیریت منابع انسانی از مدیریت نرم افزار به مراتب سخت تر و پیچیده تر است
همچنین اصطلاحات زمان را به خوبی باید درک کنید
وقتی می گوییم این پروژه 90 روزه است باید مشخص شود که آیا منظور 90 روز تقویمی است یا 90 روز کاری است ؟
یک مثال :
فرض کنید برای یک پروژه 30 روز تقویمی فرصت دارید از طرف یگر ضریب بازدهی افراد گروه شما 70 در صد است  . زمان واقعی


20  ضربدر 70 درصد = 14

عدد 20 نشان دهنده روزهای کاری است چرا که شما در یک فاصله 30 روزه تقویمی نمی توانید 30 روز کار کنید و بصورت تقریبی فقط 20 روز کاری دارید علاوه بر این در این 20 روز افراد شما 24 ساعته کار نمی کنند همچنین با در نظر گرفتن اوقات تلف شده فقط تا 70 در صد در هر روز شاید مفید باشند یعنی هر نفر از پرسنل شما در ماه کاری فقط تا 14 روز مفید می تواند کار کند .

ادامه دارد