**مدل ساخت افزایشی** یک مدل برای توسعه نرم‌افزار است که محصول به صورت افزایشی طراحی، پیاده‌سازی و تست می‌شود. (در هر مرجله بخش کوچکی به آن اضافه می‌شود) تا زمانی که محصول نهایی تولید شود.

این مسئله توسعه و نگهداری را شامل می‌شود. یک محصول نهایی است اگر تمام نیازهای در نظر گرفته شده برای آن را برآورده کند. این مدل ترکیبی از مدل آبشاری و منطق تکرار شونده در مدل پروتوتایپ است.

هر محصول به تعدادی کامپاننت شکسته می شود، که هر کدام به صورت جداگانه طراحی و ساخته می شوند. هر کامپاننت پس از تکمیل به مشتری تحویل می شود.

این کار امکان به کار گیری محصول به صورت بخش به بخش را فراهم می کند(بخشی از محصول که به اتمام رسیده است) و از طولانی شدن فرایند توسعه نرم افزار جلوگیری می کند. همچنین نیاز به سرمایه اولیه زیاد و انتظار طولانی مدت را از بین می برد.

همچنین این مدل کمک می کند اثر آسیب پذیری که معرفی یک محصول کامل و جدید به صورت یکجا دارد را کاهش دهیم(با معرفی و ارائه تدریجی محصول)

مدل افزایشی
-----------

مدل افزایشی، مدل آبشاری را به طور تکرار شونده به کار می گیرد.

مجموعه های انتشار یافته "افزایش ها" نامیده می شوند، و به وسیله هر یک از این افزایش ها عملکرد های بیشتری به مشتری ارائه می شود(هر کدام از این افزایش ها بخشی از نیازهای مشتری را شامل می شوند).

با ایجاد اولین افزایش هسته کار به مشتزی تحویل داده می شود چیزی که در همان لحظه توسط مشتری قابل به کاری گیری است. با توجه به بازخورد مشتری یک برنامه برای افزایش های بعدی طراحی می شود و تغییرات براساس آن انجام می شود. این فرایند با تحویل افزایش ها تا تحویل محصول نهایی ادامه پیدا می کند. منطق به کار گرفته شده در مدل افزایشی همچنین در مدل چابک نیز به کار گرفته می شود.

مدل افزایش می تواند برای توسعه نرم افزارهای دواپس به کار گرفته شود. در دواپس تمرکز بر ایده کاهش ریسک و کاهش هزینه به کار گیری دواپس است در حالی که مهارت های لازم را ایجاد می کنیم.

### ویژگی های مدل افزایشی

۱- سیستم به تعداد زیادی پروژه شکسته می شود.

۲- بخش های سیستم ساخته می شوند تا سیستم نهایی را تولید کنند.

۳- نیازهای اساسی در اولویت اول قرار می گیرند و اول به آنها رسیدگی می شود.

۴- نیازهای یک بخش تا زمانی که افزایش آن بخش توسعه نیابد غیر فعال است(تابعی که مربوط به بخشی است که افزایش آن هنوز توسعه نیافته است در حالت غیرفعال قرار می گیرد.)

**مزایا** 

۱- بعد از هر تکرار تست رگرسیوت باید انجام شود. در طول این تست بخش های مشکل دار سیستم سریعا تشخیص داده می شوند زیرا در هر تکرار تغییرات ایجاد شده اندک و مشخص است.

۲- عموما تست و رفع خطای در این مدل راحت تر از سایر مدل های توسعه نرم افزار است زیرا تغییرات ایجاد شده در هر تکرار نسبتا اندک است. این کار تست هدفمند و دقیقتر هر جز در کل نرم افزار را می دهد.

۳- مشتری می تواند به ویژگی ها پاسخ و فیدبک دهد و محصول را برای هر نیاز یا تغییرات مفید بازبینی کند.

۴- تحویل محصول اولیه سریعتر و کم هزینه تر است.

**معایب** 

۱- هزینه نهایی ممکن است از بودجه سازمان بیشتر باشد.

۲- با ایجاد یک افزایش و عملکرد به محصول، مشکل مربوط به معماری سیستم ممکن است به وجود بیاید چیزی که در نسخه قبلی وجود نداشت.

**وظایف درگیر**

این وظایف در بین تمام مدل ها مشترک است:

Tasks In Incremental Model
* ارتباطات: کمک به درک مساله
* برنامه ریری: تعداد اعضای مورد نیاز ( اعضای تیم) که بر روی پروژه یم پروژه یکسان اما عملکردها و نیازهای متفاوت کار می کنند.
* مدل سازی: مدل تجاری، مدل داده و مدل پردازش را شامل می شود.
* ساخت: این بخش به کارگیری مجدد کامپاننت ها و کدهای خودکار را شامل می شود.
* توسعه: ادغام تمام افزایش ها و ایجاد محصول نهایی.

جستارهای وابسته
---------------

* توسعه تکرار شونده و افزایشی
* توسعه سریع نرم‌افزار

منابع
-----

1. 1 2  Pressman, Roger (2010). *Software Engineering: A Practitioner's Approach*. Boston: McGraw Hill. pp. 41-42. ISBN 9780073375977.
2. ↑  Kim, Gene (22 January 2013). "DevOps distilled, Part 1: The three underlying principles" (PDF). *IBM DeveloperWorks*.
3. ↑  www.softdevteam.com/ Incremental- lifecycle.asp
4. ↑  What is Incremental model - advantages, disadvantages and when to use it
5. ↑  «Methodology:: Development Methods». بایگانی‌شده از اصلی در ۳ مارس ۲۰۱۶. دریافت‌شده در ۷ دسامبر ۲۰۱۸.

* مشارکت‌کنندگان ویکی‌پدیا. «Incremental build model». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۷ دسامبر ۲۰۱۸.

پیوند به بیرون
--------------

* Methodology::Development Models
* Incremental lifecycle
* What is Incremental model - advantages, disadvantages and when to use it
* Incremental Model in Software Engineering