توسعه نرم افزار از آبشاری تا چابک
توسعه نرم افزار از آبشاری تا چابک : مدلهای توسعه و استقرار نرمافزار طی سالیان گذشته با تغییرات و پارادایم های مختلفی روبرو بوده است. در ابتدا برنامهنویسان مدلهای آبشاری را تجربه کردند. در این مدلها، هریک از مراحل توسعه نرمافزار به صورت متوالی و سلسله مراتبی تعریف شده بودند. آغاز هر مرحله مستلزم اتمام مرحله قبل و تایید خروجی های آن بود، این مدل ها با تمام مزایایی که به همراه داشتند، اعمال تغییرات در نرمافزار را مشکل نموده و فرآیند توسعه سیستم نیز براساس آنها طولانی بود. به همین دلیل مدل های توسعه تدریجی مطرح شدند. در این مدلها فازهای توسعه نرمافزار به صورت متوالی و چرخشی در چندین چرخش اجرا شده و به صورت تدریجی تکمیل میشدند. از این رو آغاز فازهای بعدی منوط به اتمام صد در صدی فازهای قبلی و تایید تمامی خروجیهای آنها نبود.
در چنین شرایطی انعطافپذیری فرآیند توسعه نرمافزار برای پوشش نیازمندیهای کسب و کار و اعمال تغییرات جدید بیشتر بود. فرآیند توسعه تدریجی مبنایی برای تعریف بسیاری از متدولوژیهایی است که در حال حاضر متداول هستند. نیاز به انعطافپذیری نرمافزار و تطابق بالاتر آن با نیازمندیها و تغییرات کسب و کار باعث شد، کار به همین جا ختم نشده و نسل جدیدی از متدولوژی های توسعه نرمافزار تحت عنوان متدلوژیهای چابک ارائه شدند. این متدولوژی ها سرعت تولید نرمافزار را افزایش داده و فرآورده های نرمافزاری را در اندازه های کوچکتر و در دوره های کوتاه تر در اختیار کاربران قرار می دادند.
دوره های تولید نرمافزار
در این متدولوژیها به جای اینکه نرمافزار به یکباره به کاربر عرضه شود، در دوره های زمانی متوالی، بخش هایی از نرمافزار تولید شده و کاربر می توانست محصول تولید شده را پس از آزمون مشاهده نماید. چنین روندی در حوزه نرمافزار ضمن همراستا شدن با توسعه محیط های خودکار تولید نرمافزار باعث شکل گیری مفهوم جدیدی تحت عنوان DevOps شد. هدف اصلی این مفهوم نزدیک نمودن هر چه بیشتر تیم های توسعه نرمافزار با تیمهای عملیاتی فناوری اطلاعات برای تحویل سریعتر نرمافزار به کاربران در محیط عملیاتی بوده است. همانطور که اشاره شد در نسل های نخستین متدولوژیهای توسعه نرمافزار از زمان تولید نرمافزار تا زمان ارائه آن به کاربر نهایی زمان زیادی طول می کشید چرا که ارائه نرمافزار مستلزم تکمیل شدن تمامی بخش های آن بود.
پس از آن در متدولوژی های توسعه تدریجی کاربران طی چندین نوبت می توانستند فرآورده های تولید نرمافزار را در اختیار داشته باشند. این رویکرد نیز فاقد چابکی لازم برای تحویل نرمافزار بود چرا که تحویل یکباره به تحویل چند باره تبدیل شده بود و هنوز یک تاخیر زمانی جدی بین زمان توسعه تا زمان انتقال و تحویل نرمافزار وجود داشت. پس از آن متدولوژیهای چابک سعی نمودند تا این تاخیر را کاهش دهند. سیطره فلسفه تولید نرمافزار به صورت چابک به همراه بلوغ زیرساختهای توسعه نرمافزار باعث شکل گیری مفهوم DevOps شود. در این منطق زمان انتقال خروجیهای فرآیند تولید نرمافزار به محیط عملیاتی به کمترین مقدار ممکن کاهش می یابد.
تولید نرمافزار
همانطور که اشاره گردید برای تولید نرمافزار، مدل های مختلفی وجود داشته که هریک دارای مزیت ها و معایب خاص خود هستند. تمامی این مدلها در حال حاضر معتبر بوده و در محیط و شرایط عملیاتی خاص خود قابل استفاده می باشند. از این رو نمی توان به صراحت بیان نمود که برخی از این مدل ها منسوخ شده اند. انتخاب هریک از این مدل ها و توسعه نرمافزار براساس آن مستلزم در نظر گرفتن مجموعه ای از شرایط و معیارها است.
در منابع مختلف برای از معیارهای کلیدی از جمله شفافیت و پایداری نیازمندیهای کاربران، مدت زمان پیادهسازی، پیچیدگی سیستم، ارائه فرآوردهها در دورههای زمانی کوتاه، محدودیت هزینه، محدودیت مهارت های تیم پروژه، جدید بودن فناوری و نیاز به انعطاف پذیری برای اعمال تغییرات برای انتخاب مدل مناسب توسعه نرمافزار پیشنهاد شدهاند. براین اساس در جدول زیر ، مدل های توسعه نرمافزار براساس این معیارها مقایسه شده اند.
مقایسه مدل های توسعه نرم افزار
معیارها | مدلهای آبشاری | مدلهای توسعه تدریجی | مدلهای چابک |
نیازمندیهای غیرشفاف و غیرپایدار کاربران | ضعیف | خوب | بسیار خوب |
مدت زمان محدود برای پیاده سازی | ضعیف | خوب | بسیار خوب |
پیچیدگی بالای سیستم | متوسط | خوب | خوب |
ارائه فرآورده ها در دوره های زمانی کوتاه | بسیار ضعیف | خوب | بسیار خوب |
محدودیت هزینه | ضعیف | ضعیف | خوب |
محدودیت مهارت های تیم پروژه | خوب | خوب | ضعیف |
جدید بودن فناوری | خوب | خوب | ضعیف |
نیاز به انعطافپذیری برای اعمال تغییرات | بسیار ضعیف | خوب | بسیار خوب |
توسعه نرم افزار از آبشاری تا چابک
همانطور که در جدول فوق نیز مشاهده می شود، هریک از مدل های توسعه نرمافزار برای برخی شرایط مناسب هستند. مدل های آبشاری در زمانی که نیازمندی ها کاملا شفاف و پایدار بوده و در زمان و هزینه پیاده سازی نیز محدودیت جدی وجود ندارد مناسب می باشند. استفاده از این مدل ها مستلزم بکارگیری تیم های توانمند و حرفه ای مسلط به فناوری های روز نیست. مدل های توسعه تدریجی برخی از محدودیت های مدل های آبشاری را بر طرف کرده و انعطاف پذیری بالاتری را در اختیار تیم توسعه قرار می دهند.
لیکن این مدل ها نیز نمی توانند برخی از نیازمندی ها از جمله انعطاف پذیری برای اعمال تغییرات جدید و نیازمندی های غیرشفاف و متغییر را به نحو مطلوبی پاسخ دهند. مدل های چابک، چنین ضعفی را پوشش می دهند. این متدولوژی ها می توانند همزمان با افزایش انعطاف پذیری فرآیند توسعه در زمان و هزینه تولید سیستم صرفه جویی به همراه داشته باشند. مهمترین محدودیت این متدولوژی ها، نیاز به تیم توانمند و حرفه و مسلط به فناوری های روز برای توسعه سیستم است. این مدل ها تنها یک رویکرد جدید برای توسعه سیستم به شمار نمی روند، بلکه بکارگیری آنها نیازمند اعمال تغییرات در دیدگاه و نگرش تیم پروژه و حتی فرهنگ سازی در سطح سازمان است.