‫مقایسه روش‌های MSF Agile و MSF CMMI

توسعه نرم افزار این یک مقایسه سریع السیر بین این دو روش یا متودولوژی توسعه نرم افزار است که یکی از آنها در آخر کار بیشتر بررسی شده است. سریع السیر بودن یعنی این که ممکن است خیلی چیزها از قلم افتاده یا اشتباه کوچکی رخ داده باشد. از آنجا که وقت خیلی زیادی برای انجام این کار نداشته و فعلا تمرکزم بر روی خود برنامه نویسی و تکنولوژی‌های روز است بررسی چندان عمیقی انجام نداده و سعی کرده‌ام که کار را به طور خلاصه و نقل قول از سایت‌های دیگر انجام داده و صرفا نتیجه گیری کلی خودم را در پایان بیاورم. این نتیجه گیری تحت تاثیر دانسته‌ها و گرایش‌های قبلی من در این موضوع هم بوده است. در صورت تمایل به مطالعه دقیق‌تر، لینک‌ها را دنبال کنید. همان طور هم که قابل حدس است هر دوی این روش‌ها به قصد استفاده در Team Foundation Server بررسی شده‌اند.
  • هر دو Process نشات گرفته از MSF هستند و به طور مادرزاد در TFS قرار داده شده‌اند. هر چند که می‌توان پروسس‌های دیگری را به TFS اضافه و از آنها استفاده کرد.
  • CMMI فقط خاص نرم افزار نیست بلکه در خیلی از صنایع دیگر مثل تولیدات الکترونیکی هم استفاده می‌شود.
  • توضیحی در سایت برنامه نویس (agile خلاصه‌تر از CMMI است): http://barnamenevis.org/forum/showthread.php?t=92169
  • جدالی بر سر تعاریف مربوط به agile و rup در سایت برنامه نویس: http://barnamenevis.org/forum/showthread.php?t=59278
  • در این مقاله سایت برنامه نویس گفته شده که agile سرعت بیشتری دارد و در پروژه‌های زیر ۳۰ نفر خیلی بهتر از RUP عمل می‌کند: http://www.barnamenevis.org/forum/showthread.php?t=20625
  • ظاهرا در متودولوژی‌هایی مثل xp نیازی نیست که همه دیاگرام‌های یوام‌الی از قبل در بیاید. و عملا کار برنامه نویس و تحلیل‌گر و… با هم پیش می‌رود. علی الظاهر agile نام یک مجموعه از روش‌های توسعه سریع نرم افزار است که یکی از مثال‌هایش xp (و حتی شاید MSF for Agile) است. http://www.barnamenevis.org/forum/showthread.php?t=67708
  • در اینجا هم گفته شده که MSF Agile تنها روش Agile Software Development نیست بلکه می‌شود از SCRUM، XP، Crystal Clear و Lean هم استفاده کرد. همچنین معلوم است که MSF Agile و MSF CMMI تنها قالب‌های قابل استفاده در TFS نیستند، بلکه می‌توان از قالب‌هایی که اشخاص دیگر هم تهیه کرده‌اند استفاده کرد. مثلا از قالب‌های Agile مثل XP یا SCRUM: باز هم گفته شده که افراد تیم باید راجع به روش‌های Agile مطالعه کرده و آموزش ببینند. و این طور نیست که هر کس با TFS MSF Agile کار کرد یعنی Agile Software Development بلد است!http://blogs.neudesic.com/blogs/phil_scott/archive/2005/12/16/14.aspx
  • مقایسه توضیحات ویکی‌پدیا راجع به agile software development: http://en.wikipedia.org/wiki/Agile_software_development و CMMI: http://en.wikipedia.org/wiki/CMMI هم نشان می‌دهد که CMMI خیلی عمومی و جنرال است و در صنایع غیر نرم افزار هم کاربرد دارد. در حالی که Agile فقط برای مباحث توسعه نرم افزار و احتمالا صنایعی کاربرد دارد.
  • اینجا گفته شده که MSF Agile زیرمجموعه‌ای از MSF CMMI هست به عبارت دیگر هر چیزی که در MSF Agile وجود دارد در MSF CMMI هم وجود دارد یعنی این که MSF CMMI همان MSF Agile است ولی گسترده‌تر و بزرگ‌تر. باز هم آمده که MSF CMMI برای پروژ‌های بزرگ‌تر و طولانی‌تر کاربرد دارد و MSF Agile برای پروژه‌های بین ۳ تا ۱۰ نفره خوب است. در حالی که MSF CMMI برای یکی تیم اقلا ۲۰ نفره مناسب است.  http://social.msdn.microsoft.com/Forums/en-US/vstsmsf/thread/f8e3d872-d815-4be6-96ff-fdefdaad1b47/
  • مقایسه RUP و MSF در یک نوشته فارسی http://www.nfgp.com/Portals/0/Download/Comparing%20the%20Rational%20Unified%20Process%20(RUP)%20and%20Microsoft%20Solutions%20Framework%20(MSF).pdf
  • مقایسه CMMI و Agile که فرصت خواندن آن را نداشتم: http://somamos.blogfa.com/post-254.aspx
  • دو منبع تکمیلی:http://msdn.microsoft.com/en-us/library/ms400752(vs.80).aspx و http://msdn.microsoft.com/en-us/vsts2008/aa718795.aspx

خلاصه این که با توجه به توضیحات و لینک‌های بالا و زیر ۲۰ نفر بودن تیم توسعه نرم افزار ما و اکثر قریب به اتفاق تیم‌های برنامه نویسی ایران و مبتذل شدن نام RUP در بین خیلی از هم سنگران، استفاده از یکی از متدولوژی‌ها (روش‌های) Agile توصیه می‌شود. از بین روش‌های توسعه نرم افزار چابک (Agile) هم با توجه به دم دست بودن مایکروسافت، ویژوال استودیو، TFS و علاقه و راحتی خیلی از تیم‌های ایرانی و خود ما، روش MSF Agile توصیه می‌گردد. امید آنکه بتوانم مطالعه کاملی راجع به این نکات کرده و بتوانم نرم افزار بهتری تولید کنم.
و حالا نکاتی راجع به خود Agile و MSF Agile:

  
پ. ن. ۱: ممکن است من مفاهیمی مثل پروسس، روش، متود، متودولوژی و temaplte را به خاطر کم آگاهی اشتباها به جای یکدیگر به کار برده باشم.
پ. ن. ۲: خیلی دوست بدانم که آیا هیچ جایی در ایران به طور واقعی و -نه خالی‌بندی- از روش‌های Agile برای توسعه نرم افزار استفاده کرده است یا نه.