در مراحل تولید و چرخه فرایندی توسعه نرم افزار مدل آبشاری یا Waterfall Model اولین مدل فرآیندی بود که معرفی شد. از مدل آبشاری به عنوان یک مدل چرخه زندگی خطی / ترتیبی یاد میشود.
درک و استفاده از این مدل بسیار ساده است. در مدل آبشاری، هر فاز باید قبل از شروع فاز بعدی تکمیل شود و هیچ تداخلی در فازها وجود نداشته باشد.
برای درک بهتر این مدل از فرآیند توسعه نرم افزار ادامه این مطلب را بخوانید. البته اگر میخواهید اطلاعات خود را در زمینه مرحل تولید و چرخه فرآیندی توسعه نرم افزار کامل کنید، مطلب مراحل تولید و چرخه فرایندی توسعه نرم افزار سفارشی چگونه است؟ را از وبلاگ یگانه مطالعه کنید. همچنین برای این که بدانید مدل اجایل که یکی از مدلهای جدید در فرآیند توسعه نرم افزار است، میتوانید مطلب توسعه نرم افزار چابک یا اجایل چیست؟ را در ویرگول مطالعه کنید.
مدل Waterfall اولین رویکرد SDLC است که برای توسعه نرم افزار استفاده شده است. مدل آبشاری فرآیند توسعه نرم افزار جدید یا ایجاد تغییرات خیلی مهم در یک نرم افزار قدیمی را در یک جریان متوالی خطی نشان میدهد. یعنی هر مرحله از فرآیند توسعه تنها در صورتی آغاز میشود که مرحله قبلی کامل شده باشد. نکته مهمی که در این شیوه وجود دارد این است که در مدل آبشاری، فازها با هم همپوشانی ندارند.
رویکرد Waterfall اولین مدلی بود که به طور گسترده در مهندسی نرم افزار استفاده شد. این روش میتوانست مدیران را از موفقیت پروژه مطمئنتر کند. در این روش کل فرآیند توسعه نرم افزار به فازهای جداگانه تقسیم میشود. در این مدل آبشار، به طور معمول، نتیجه یک فاز به عنوان ورودی برای فاز بعدی و به صورت متوالی عمل میکند.
تصویر زیر نشان میدهد که درمدل آبشاری چه اتفاقی در تیم توسعه نرمافزار رخ میدهد.
در این مرحله باید تمام الزامات احتمالی سیستمی که باید توسعه داده شود را جمعآوری کنید. این اطلاعات در یک سند که مثلاً اسم آن مشخصات نیازمندیهاست، مستند میشود.
مشخصات مورد نیاز که در فاز اول تشخیص داده شدند باید در این مرحله مطالعه شده و برای طراحی سیستم آماده شوند. فاز طراحی سیستم به تعیین سخت افزار و الزامات سیستم کمک میکند و به تعریف کلی معماری منجر میشود.
با ورودیهایی که از فاز طراحی سیستم میآیند، سیستم ابتدا در برنامههای کوچکی به نام واحد توسعه داده میشود. این بخش باید در فاز بعدی یکپارچه شود. هر واحد برای عملکرد خود توسعه یافته و آزمایش میشود که به آن تست واحد گفته میشود.
در این مرحله تمام واحدهای توسعه یافته در مرحله اجرا و پس از آزمایش هر واحد در یک سیستم، یکپارچه میشوند. پس از ادغام این مرحله با خروجی 3 فاز قبلی، کل سیستم برای هر گونه عیب و نقص آزمایش میشود.
پس از انجام آزمایش عملکردی و غیرعملکردی. محصول در محیط مشتری مستقر شده یا به بازار عرضه میشود. البته در این مرحله ابتدا باید برای مدتی محصول در محیط آلفا (شرکت توسعه دهنده) تست شود، سپس به محیط بتا (محیطی که در آن تعداد بیشتری کاربر با نرم افزار کار میکنند) برود و در نهایت در محل اصلی مستقر شود.
برخی از مسائل در محیط مشتری به وجود میآید یا بسیاری از باگها روی اطلاعات واقعی پدید میآیند. برای رفع این مشکلات است که پلاگینها، سرویس پکها یا ورژنهای جدید منتشر میشوند. در چرخه فرایندی توسعه نرم افزار با مدل آبشاری تعمیر و نگهداری برای ارائه این تغییرات در محیط مشتری انجام میشود و تقریباً یک کار دائمی و مداوم است.
همه این فازها به صورت آبشاری به یکدیگر متصل میشوند که در آن پیشرفت به صورت پیوسته به سمت پایین (مانند یک آبشار) در میان فازها جریان دارد. یعنی مرحله بعدی تنها در صورتی آغاز میشود که مجموعه اهداف تعریف شده برای فاز قبلی به دست آمده باشد.
قبل از توضیح این که مدل آبشاری برای توسعه چه نوع نرم افزارهایی مناسب است باید به این نکته اشاره کنیم که این که در فرآیند توسعه هر نرم افزار از کدام شیوه SDLC باید استفاده کرد، متفاوت است.
مثلاً این که توسعه به شیوه اجایل در سالهای اخیر خیلی مورد توجه بوده اصلاً دلیل بر این نیست که ما در توسعه همه نوع نرم افزاری از این شیوه استفاده کنیم.
توسعه به شیوه آبشاری برای پروژههایی عالی است که:
مهمترین مزیت مدل آبشاری این است که امکان بخشبندی و کنترل روی همه فازهای پروژه را فراهم میکند. در ضمن میتوان یک زمان بندی درست باضربالاجل برای هر بخش آن تعیین کرد. به جز این:
مهمترین عیب توسعه به شیوه آبشاری این است که اجازه بازتاب یا تجدید نظر زیادی در آن وجود ندارد. همچنین وقتی که یک برنامه در مرحله آزمایش باشد، بازگشت به عقب و تغییر چیزی که به خوبی مستند نشده یا در مرحله مفهومی به آن فکر نشده، بسیار دشوار است.
به جز معایب عمده این شیوه را میتوان در موارد زیر خلاصه کرد:
انتخاب این که برای توسعه نرم افزارهای خود از کدام شیوه برای طی کردن مراحل تولید و چرخه فرایندی توسعه نرم افزار سفارشی استفاده کنیم موضوعی بسیار تخصصی و جدی است و نیازمند تحقیقات گسترده و تسلط روی دورنمایی است که از پروژه مورد نظر داریم.
پس نمیتوان به صرف این که متد اجایل این روزها بیشتر برسرزبانهاست و پروژههای موفق زیادی با این شیوه به خروجی یا محصول مطلوب رسیدهاند، فکر کنیم که ما هم باید از این شیوه برای توسعه نرم افزارهای خود استفاده کنیم.