توسعه نرم‌افزاری چابک: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
جز اصلاح نویسه نادرست با استفاده از AWB
خط ۲۸:
تمام مانیفست چابک به شرح زیر است:
 
<blockquote>ما با توسعه نرم‌افزار و کمک به دیگران در انجام آن، در حال کشف راه‌های بهتری برای توسعه نرم‌افزار هستیم. از این کار به ارزش‌های زیر می­رسیممیرسیم:
 
۱- افراد و تعاملات بالاتر از فرایندها و ابزارها
خط ۴۳:
 
=== افراد و تعاملات بالاتر از فرایندها و ابزارها ===
افراد مهمترین نقش را در پیروزی یک پروژه دارند. یک فرایند عالی بدون نیروی مناسب منجر به شکست می­گرددمیگردد و بر عکس افراد قوی تحت فرایند ضعیت ناکارآمد خواهند بود.
 
یک نیروی قوی لازم نیست که برنامه‌نویسی عالی باشد، بلکه کافیست که یک برنامه‌نویسی معمولی با قابلیت همکاری مناسب با سایر اعضای تیم باشد. کار کردن با دیگران، تعامل درست و سازنده با سایر اعضای تیم خیلی مهمتر از این که یک برنامه‌نویس با هوش باشد. برنامه نویسان معمولی که تعامل درستی با یکدیگر دارند به مراتب موفقتر هستند از تعداد برنامه‌نویسی عالی که قدرت تعامل مناسب با یکدیگر را ندارند.
 
در انتخاب ابزارها آنقدر وقت نگذارید که کار اصلی و تیم را فراموش کنید. به عنوان مثال می­توانیدمیتوانید در شروع به جای بانک اطلاعاتی از فایل استفاده کنید، به جای ابزار کنترل کد گرانقیمت از برنامه رایگان کد باز استفاده کنید. باید به هیچ ابزاری عادت نکنید و صرفاً به آنها به عنوان امکانی جهت تسهیل فرایندها نگاه کنید.
 
=== نرم‌افزار کار کننده بالاتر از مستندات جامع ===
خط ۵۶:
بهتر است که همیشه مستندات کم حجمی از منطق و ساختار برنامه داشته باشید و آن را به روز نماید. البته آنها باید کوتاه و برجسته باشند. کوتاه به این معنی که ۱۰ تا ۲۰ صفحه بیشتر نباشد و برجسته به این معنی که طراحی کلی و ساختار سطح بالای سیستم را بیان نماید.
 
اگر فقط مستندات کوتاه از ساختار و منطق سیستم داشته باشیم چگونه می‌توانیم اعضای جدید تیم را آموزش دهیم؟ پاسخ کار نزدیک شدن به آنها است. ما دانش خود را با نشستن در کنار آنها و کمک کردن به آنها انتقال می­دهیممیدهیم. ما آنها را بخشی از تیم می­کنیممیکنیم و با تعامل نزدیک و رو در رو به آنها آموزش می­دهیممیدهیم.
 
=== مشارکت مشتری بالاتر از قرارداد کاری ===
نرم‌افزار نمی­تواندنمیتواند مثل یک جنس سفارش داده شود. شما نمی‌توانید یک توصیف از نرم‌افزاری که می‌خواهید را بنویسید و آنگاه فردی آن را بسازد و در یک زمان معین با قیمت مشخص به شما تحویل دهد. بارها و بارها این شیوه با شکست مواجه شده است.
 
این قابل تصور است که مدیران شرکت به اعضای تیم توسعه بگویند که نیازهای آنها چیست، سپس اعضای تیم بروند و بعد از مدتی برگردند و یک سیستمی که نیازهای آنها را برآورده می‌کند، بسازند. اما این تعامل به کیفیت پایین نرم‌افزار و در نهایت شکست آن می‌انجامد. پروژه‌های موفق بر اساس دریافت بازخورد مشتری در بازه‌های زمانی کوتاه و مداوم است. به جای وابستگی به قرارداد یا دستور کار، مشتری به طور تنگاتنگ با تیم توسعه کار کرده و مرتباً اعمال نظر می­کندمیکند.
 
قراردادی که مشخص کننده نیازمندیها، زمانبندی و قیمت پروژه است، اساساً نقص دارد. بهترین قرارداد این است که مشتری در ازای اینکه زودتر به نرم‌افزار سفارش داده شده خود برسد متعهد شود دفعات بیشتری به طور تنگاتنگ با تیم توسعه تعامل داشته باشد.
 
=== پاسخگویی به تغییرات بالاتر از پیروی از یک برنامه ===
توانایی پاسخ به تغییرات اغلب تعیین کننده موفقیت یا شکست یک پروژه نرم‌افزاری است. وقتی که طرحی را می­ریزیممیریزیم باید مطمئن شویم که به اندازه کافی انعطاف‌پذیر است و آمادگی پذیرش تغییرات در سطح بیزنس و تکنولوژی را دارد.
 
مسیر یک پروژه نرم‌افزاری نمی­تواندنمیتواند برای بازه زمانی طولانی برنامه‌ریزی شود. اولاً احتمالاً محیط تغییر می­کندمیکند و باعث تغییر در نیازمندی‌ها می­شودمیشود. ثانیاً همین که سیستم شروع به کار کند مشتریان نیازمندی­هاینیازمندیهای خود را تغییر می‌دهند؛ بنابراین اگر بدانیم که نیازها چیست و مطمئن شویم که تغییر نمی­کنند،نمیکنند، قادر به برآورد مناسب خواهیم بود، که این شرایط بعید است.
 
یک استراتژی خوب برای برنامه‌ریزی این است که یک برنامه‌ریزی دقیق برای یک هفته بعد داشته باشیم و یک برنامه‌ریزی کلی برای سه ماه بعد.<ref name="abmmw">Ambler, S.W. [http://www.ambysoft.com/essays/agileManifesto.html "Examining the Agile Manifesto"]. Retrieved 6 April 2011.</ref>
خط ۱۶۹:
در نگاه اول، این روش در گروه متدهای استاتیک انطباق به نظر می‌رسد، اما آزمایش‌ها با روش RDP می‌گوید این روش می‌تواند مانند یک متد دینامیک انطباق عمل کند. تفاوت ظریفی بین متدهای استاتیک انطباق و متدهای دینامیک انطباق وجود دارد. فرض کلیدی در مورد متد استاتیک انطباق این است که زمینهٔ پروژه در ابتدای یک پروژه داده می‌شود و در طول اجرای پروژه نیز ثابت می‌ماند. نتیجه یک تعریف استاتیک از زمینهٔ پروژه است. با دادن چنین تعریفی و با استفاده از مسیر نقشه‌ها می‌توان تعیین کرد کدام قسمت متد ساخت‌یافته، بر اساس مجموعه‌ای از معیارهای از پیش‌تعیین‌شده، باید برای آن پروژهٔ خاص به کار رود.
در مقابل، متد دینامیک انطباق، فرض می‌کند پروژه در یک زمینهٔ نوظهور واقع شده است. یک زمینهٔ نوظهور به این موضوع اشاره می‌کند که یک پروژه با فاکتورهای نوظهوری سر و کار خواهد داشت که بر شرایط مربوطه اثر می‌گذارند، اما قابل‌پیش‌بینی نیستند. همچنین به این معناست که زمینهٔ پروژه ثابت نیست و در طول اجرا تغییر می‌کند. در چنین موردی نقشه‌های مسیر تجویزی مناسب نیستند.
مفهوم کاربردی متد دینامیک انطباق این است که مدیران پروژه اغلب ناچارند در طول اجرای یک پروژه، قسمت‎هایقسمت‌های ساخت‌یافته را تغییر دهند یا حتی قسمت‌های جدیدی ابداع کنند (Aydin و همکاران، 2005).<ref name="Aydin2005"/>
 
=== چرخهٔ عمر توسعهٔ نرم‌افزار ===