Team Foundation Server
TFS یکی از ابزار های شرکت مایکروسافته که همزمان که میتونه کار سورس کنترل رو برای شما انجام بده، میتونین توسط اون کار کنترل پروژه رو هم انجام بدید. برخلاف عمده ی وبسایت ها و نرم افزار هایی که میتونن توی کنترل پروژه، خصوصا توی مدلهای مدیریت پروژه agile، به شما کمک کنن، مثل جیرا و پیووتال ترکر و … که تعدادشون هم اصلا کم نیست، TFS توی این زمینه به اندازه ی رقباش قوی و کامل نیست،
اما چیزی که باعث میشه یه تیم برای مدیریت پروژه هاش از TFS استفاده کنه اینه که شما همزمان دسترسی به یه سیستم جامع مدیریت پروژه (عمدتا مناسب برای مدل agile) و همزمان و به صورت یکپارچه یک سیستم سورس کنترل دارید که در صورتیکه با زبان های دات نتی هم کار کنین میتونه به شما و برنامه نویس های شما این چراغ سبز رو نشون بده که حتما ازTFS استفاده کنید.
نقاط ضعف TFS
ولی خب از اونجایی که TFS داره چند تا کار رو همزمان انجام میده طبعا نقطه ضعف های زیادی میتونه توی یکی از اونها داشته باشه و چون من به عنوان مدیر پروژه بیشتر با قسمت مدیریت پروژه توی TFS کار داشتم طبعا ضعف های اون قسمت برام پر رنگ تر بوده.
مدیریت چند پروژه همزمان روی TFS
اولین و بارز ترین اونها اینه که مدیریت چند پروژه همزمان روی TFS در صورتی که بخواید پروژه ها رو به صورت جداگانه تعریف کنید و نیروهای اشتراکی زیادی داشته باشید که همزمان روی اون پروژه ها کار میکنن، کار خیلی سخت و تقریبا بیفایده ایه، به خاطر اینکه شما ریسورس هاتون رو که اینجا برنامه نویس های تیم شما هستن رو باید در هر پروژه به صورت جدا مدیریت کنید،
این باعث میشه که در صورتی که همزمان روی بیشتر از ۲-۳ تا پروژه کار میکنید تقریبا بعد چند وقت کنترل همه چیز از دستتون در بره و به سختی بتونید اسپرینت ها (یا همون دوره هایی که متناوبا براش برنامه ریزی میکنید تا کار معینی رو تو اون دوره انجام بدید) رو مدیریت بکنید، و در نتیجه به یه مدیر پروژه بدقول تبدیل بشید که حتی دقیق نمیدونه نیروهاش هر کدوم دقیقا الآن دارن روی چه قسمتی از کدوم پروژه کار میکنن.
راه حل
من دنبال راه حل های مختلفی گشتم که ببینم بهترین حالتی که میشه تعداد زیادی پروژه رو با یک تیم روی TFS مدیریت کرد و درنهایت تنها راهی که پیش روی خودم دیدم این بود که یک پروژه اصلی داشته باشیم و تعدادی پروژه فرعی یا sub project توی اون.حالا مشکل اصلی ای که اینجا به وجود میاد اینه که چیزی به عنوان پروژه فرعی اصلا توی TFS تعریف نشده، اما میشه با یه سری ترفند ها چیزی شبیه پروژه فرعی روی اون ایجاد کرد.
شما میتونید توی TFS ناحیه یا area های مختلفی تعریف کنید. این به ما کمک میکنه که هر پروژه فرعی رو به صورت یک area روی TFS تعریف کنید و بعدا توسط کوئری های مختلفی که میتونید روی هر area بگیرید هر پروژه رو به صورت کامل مدیریت کنید.
برای اینکه یه جمع بندی روی همه چیزهایی که گفتیم داشته باشیم در صورتی که شما شرایط زیر رو دارید :
- برای مدیریت پروژه از TFS استفاده میکنید
- پروژه های زیادی رو همزمان پیش می برید
- یک تیم دارید که روی همه پروژه ها باید کار کنه یا اینکه تیم هاتون اشتراک زیاد دارند و بعضی از اعضا توی چند تا تیم هستن
- با همه این شرایط هنوزم اصرار دارید که از TFS برای مدیریت پروژه استفاده کنید.
برای اینکه پیگیری پروژه هاتون از دستتون خارج نشه و مجبور نباشید که منابع انسانی تون رو و کارهایی که بهشون می سپرید رو به صورت دستی کنترل و پیگیری کنید. پس بهتره به جای ساختن چندین پروژه متعدد روی TFS یک پروژه اصلی بسازید و برای هر پروژه هم یک بک لاگ مادر بسازید که بقیه بک لاگ های پروژه رو به عنوان زیر مجموعه اون بک لاگ اصلی بسازید و برای اینکه کوئری هایی که میگیرد هم بتونه محدود به یک پروژه خاص باشه برای هر پروژه یک ناحیه یا area بسازید و به بک لاگ ها وصلشون کنید.