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





پاسخ با نقل قول