نموذج الشلال

نموذج الشلال هو عملية تصميم متتالية عادة ما تستخدم في عمليات تطوير البرمجيات، و يكون التقدم في سير العمل على هيئة قطع ثابتة متدفقة من أعلى إلى أسفل (مثل الشلال)  من خلال المراحل: البدء ثم التحليل ثم التصميم ثم البناء ثم الاختبار ثم الإنتاج والتنفبذ ثم الصيانة. 
نموذج الشلال ينشأ في الصناعات التحويلية والتشييد، ولكن للبيئات المادية تعد التغييرات مكلفة وباهظة إن لم تكن مستحيلة. ومع عدم وجود منهجيات تطوير برمجيات رسمية في ذلك الوقت، تم تكييف هذا النموذج ببساطة لتطوير البرمجيات.

تاريخ النموذج

عقد أول عرض واصفاً استخدام مراحل مماثلة في هندسة البرمجيات من قبل هربيرت د. بينينجتون في ندوة حول أساليب البرمجة المتقدمة لأجهزة الكمبيوتر الرقمية يوم 29 يونيو عام 1956. ، وكان هذا عرض حول تطوير البرمجيات ل SAGE . عام 1983 أُعيد نشر الورقة مع تقديم من بينينجتون مشيراً إلى أن العملية لم تكن في الواقع من أعلى إلى أسفل ولكنها تعتمد على النموذج الأصلي.
وكثيرا ما يستشهد أول وصف رسمي لنموذج الشلال على أنه مقالة ونستون رويس التي طرحها عام 1970  ، و ذلك رغم أن رويس لم يستخدم مصطلح شلال في تلك المادة. قام رويس بعرض هذا هذا النموذج على أنه نموذج خاطئ و غير عامل؛ وهي الطريقة التي تستخدم هذا المصطلح في الكتابة عن تطوير البرمجيات لوصف رؤية نقدية لممارسات تطوير البرمجيات شائعة الاستخدام. 
أقرب استخدام لمصطلح "الشلال" قد يكون في ورقة بيل و ثاير في عام 1976.
وفي عام 1985 حددت وزارة الدفاع في الولايات المتحدة هذا النهج في DOD-STD-2167A ، ومعاييرها للعمل مع مقاولي تطوير البرمجيات كانت تنص على أن "يقوم المقاول بتنفيذ دورة تطوير البرمجيات التي تشمل المراحل التالية: التصميم الأولي ثم التصميم التفصيلي ثم الترميز ووحدة الاختبار ثم التكامل ثم الاختبار".

لماذا نستخدمه ؟

يوفر هذا النموذج نهج منظم من خلال مراحل منفصلة يسهل فهمها وتفسيرها، ويوفر المعالم التي يسهل التعرف عليها في عملية التطوير، ويمكن ان يكون مناسب لمشاريع حيث يتم اصلاح متطلبات نطاقها .

متى نستخدمه؟

عندما يكون لدينا متطلبات واضحة ولا توجد متطلبات غامضة ومعقدة ، عندما يوجد موارد متوفرة بحرية وتوافر الخبرة.
عندما يكون لدى العميل ثقة عالية في المنظمة، والمشروع يكون صغير.

دعم الادلة

اقضاء وقت مبكر في دورة إنتاج البرمجيات يمكن من تجنب التكاليف في مراحل لاحقة ، على سبيل المثال مشكلة وجدت في المراحل المبكرة ( مثل متطلبات المواصفات ) هي أرخص للإصلاح من نفس مشكلة وجدت  في وقت لاحق في العملية ( بمعامل 50 إلى 200 ) .
في الممارسات الشائعة تؤدي منهجيات  الشلال في الجدول الزمني للمشروع مع 20-40 ٪ من الوقت، استثمرت في المرحلتين الأولى والثانية ، 30-40 ٪ من الوقت إلى الترميز ، والباقي مخصص للإختبار والتنفيذ. وسوف تشمل معظم المشاريع المتوسطة والكبيرة مجموعة مفصلة من الإجراءات والضوابط التي تنظم كل عملية على المشروع.
وهناك حجة أخرى لنموذج الشلال وهو أنه يركز على وثائق ( مثل المستندات و متطلبات وثائق التصميم )، وكذلك شفرة المصدر. في منهجيات أقل مصممة بدقة و موثقة ، يتم فقدان المعرفة إذا ترك أعضاء الفريق قبل أن يتم الانتهاء من المشروع ، وأنه قد يكون من الصعب على مشروع ليتعافى من الخسارة. إذا كان مستند تصميم العمل بشكل كامل موجودة (كما هو القصد من تصميم كبير في خط الهجوم و نموذج الشلال ) ، وأعضاء فريق جديد أو حتى فرق جديدة تماما يجب أن تكون قادرة على التعرف من خلال قراءة الوثائق.  Arcisphere technologies (2012). "Tutorial: The Software Development Life Cycle (SDLC)" (PDF). Retrieved 2012-11-13. 
وفر نموذج الشلال نهج منظم ؛ النموذج نفسه تقدم خطيا من خلال مراحل منفصلة ، يسهل فهمها و تفسيرها ، وبالتالي من السهل أن نفهم . كما يوفر المعالم التي يسهل التعرف عليها في عملية التنمية . ولعله لهذا السبب نموذج الشلال يستخدم كنموذج بداية لنموذج التنمية في العديد من النصوص هندسة البرمجيات والدورات. 
ان نموذج الشلال يمكن أن يكون مناسب للمشاريع حيث يتم إصلاح متطلبات ونطاقها، المنتج في حد ذاته ثابت و مستقر ، و يفهم التكنولوجيا بشكل واضح.

النقد

العملاء قد لا يعرفون بالضبط ما هي متطلباتهم قبل أن يروا برنامج العمل و ذلك بتغيير متطلباتها ، مما أدى إلى إعادة تصميم ، إعادة الإعمار، و إعادة الاختبار ، وزيادة التكاليف.
المصممين قد لا يكون على بينة من صعوبات في المستقبل عند تصميم منتج البرنامج الجديد أو الميزة . في هذه الحالة ، فمن الأفضل لإعادة النظر في التصميم من التمادي في التصميم الذي لا يأخذ في الحسبان أي المكتشفة حديثا القيود ، والاحتياجات، أو مشاكل .
ردا على المشاكل التي لوحظت مع نموذج الشلال النقي، وأدخلت نماذج شلال تعديل ، مثل " الساشيمي ( الشلال مع مراحل متداخلة ) ، الشلال مع المشاريع الفرعية ، و الشلال مع الحد من المخاطر" .
بعض المنظمات، مثل الولايات المتحدة وزارة الدفاع ، لديها الآن التفضيل المعلن ضد منهجيات نوع شلال ، بدءا MIL- STD- 498 ، والتي تشجع اكتساب التطوري والتنمية التكرارية وتدريجية .
في حين يجادل دعاة تطوير البرمجيات رشيقة نموذج الشلال هو عملية غير فعالة لتطوير البرمجيات ، تشير بعض المتشككين بأن نموذج الشلال هو حجة كاذبة تستخدم بحتة لتسويق منهجيات التنمية البديلة