یکی دیگر از مدلهای توسعه نرم افزار مدل iterative و یا تکراری می باشد. بر اساس این مدل کار توسعه نرم افزار با ارائه یک پیاده سازی ساده از زیر مجموعه کوچکی از نیازمندی های مطرح شده آغاز می گردد و سپس به صورت تکراری و یا همان iterative در نسخه های بعدی قابلیتهای بیشتری اضافه شده و نرم افزار تکمیل می گردد. این موضوع تا زمانی تکرار می شود که سیستم کامل پیاده سازی شود و آماده deploy شدن بگردد.
یک چرخه حیات تکراری و یا iterative سعی بر پیاده سازی کامل نیازمندیها در ابتدای کار ندارد. در عوض توسعه نرم افزار در این مدل با مشخص کردن و پیاده سازی کردن بخشی از نرم افزار نهایی آغاز می گردد. پس از این پیاده سازی نرم افزار مرحله اول بازبینی میشود و نیازمندی های بعدی مشخص میگردد. این فرآیند پس از انجام این کار دوباره تکرار می گردد و یک نسخه جدید از نرم افزار در پایان هر تکرار که به آن iteration نیز می گویند تحویل داده می شود.
بررسی مدل تکراری (iterative model): طراحی
فرایند تکراری و یا iterative با یک پیاده سازی ساده از مجموعه ای از نیازمندی های نرم افزار کار خود را آغاز کرده و سپس به صورت تکراری و در نسخه های بعدی این پیادهسازی را بهبود و یا تکمیل میکند. این موضوع تا زمانی اتفاق می افتد که سیستم نهایی به طور کامل پیاده سازی گردد. در هر تکرار که به آن iteration نیز می گویند تغییرات مربوط به طراحی در نظر گرفته شده و قابلیت های جدید به نسخه جدید اضافه میشوند.
ایده اصلی این مدل در این است که یک سیستم باید در قالب سیکل های تکراری توسعه داده شود و سپس در هر قسمت به صورت افزایشی و یا incremental قسمتهای کوچکتری به برنامه اضافه گردد. همانطور که گفتیم این روند تا جایی ادامه پیدا می کند تا نرم افزار کامل تولید بگردد. تصویری که در قسمت زیر مشاهده می کنید نمایی از عملکرد فرآیند تکراری و افزایشی که تحت نام های iterative و incremental شناخته میشوند را نشان میدهند.

نکته مهم دیگر اینکه توسعه افزایشی و تکراری ترکیبی از طراحی iterative و یا روش iterative به همراه مدل incremental و یا افزایشی میباشد. در روند توسعه نرم افزار با این فرآیند در هر لحظه ممکن است بیش از یک iteration از سیکل توسعه نرم افزار در حال انجام شدن باشد. این فرآیند ممکن است تحت عنوان evolutionary acquisition و یا incremental build نیز شناخته بشود.
در مدل افزایشی و یا incremental تمامی نیازمندی های نرم افزار به build های متعددی شکسته می شود. در هر تکرار و یا iteration روند توسعه نرم افزار از فازهای requirements و design و implementation و testing عبور میکند. هر release و یا انتشار از نسخه های بعدی نرم افزار شامل ماژولی است که قابلیت های بیشتری را نسبت به release قبلی اضافه کرده است. این فرآیند تا زمانی ادامه پیدا می کند تا کل سیستم تکمیل گردد و بر اساس نیازمندی ها آماده تحویل به مشتری باشد.
یکی از مهمترین اصول موفقیت یک پروژه نرم افزاری با این روش تست دقیق و بررسی کردن صحت عملکرد نرم افزار بر اساس نیازمندی های تعریف شده می باشد. به عبارت دیگر به دلیل اینکه نرم افزار بر اساس سیکل های تکرار شدنی و طی یک چرخه به صورت iterative تکمیل می گردد در هر مرحله تست هایی باید صحت عملکرد هر نسخه از نرم افزار را بررسی کنند.
مدل تکراری (iterative model): کاربرد
شبیه دیگر مدلهای SDLC روش iterative و incremental نیز کاربردهای خاص خود را در صنعت نرم افزار دارند. از این روش اکثراً در شرایطی که در قسمت زیر مشاهده می کنید استفاده میشود.
- در شرایطی که نیازمندی های کامل سیستم تعریف شده و مشخص باشند.
- نیازمندی های اساسی باید تعریف بشوند؛ اما برخی از قابلیت ها و تغییرات کوچک را میتوان در روند توسعه نرم افزار اضافه کرد.
- این روش زمانی بیشتر کاربرد دارد که یک تکنولوژی جدید توسط تیم توسعه در حال استفاده شدن می باشد که تیم توسعه نرم افزار نیز کمی با آن آشنایی دارد. به عبارت دیگر استفاده از این روش را زمانی توصیه می کنند که تیم توسعه نرم افزار ضمن استفاده از تکنولوژی مورد نظر برای تولید نرم افزار، قصد یادگیری آن را نیز دارد.
- وجود قابلیت های ریسک پذیر و اهدافی که ممکن است در آینده تغییر کنند نیز استفاده از این روش را بسیار مفید می کند.
مدل تکراری (iterative model): مزایا و معایب
همانطور که تا به اینجای کار متوجه شدید مزیت اصلی این مدل این است که در مراحل اولیه توسعه نرم افزار یک نسخه عملیاتی از نرم افزار نهایی در دسترس است. این موضوع باعث میشود که به راحتی بتوان مشکلات طراحی و عملکردی نرم افزار را تشخیص داد. طبیعتاً کشف کردن مشکلات در مراحل اولیه توسعه نرم افزار می توانند در روند حل و فصل کردن این مشکلات با حداقل هزینه ها موثر باشند.
عیب روش تکراری این است که فقط در پروژه های نرم افزاری بزرگ و پیچیده کاربرد دارند. به عبارت دیگر شکستن یک نرم افزار کوچک به قسمت های کوچک تر و سپس توسعه آن در یک روند تکراری عملاً سودی ندارد. در ادامه مزایای دیگری در رابطه با این روش را برای شما قرار داده ایم.
- برخی از قابلیت های نرم افزار می توانند در روند توسعه نرم افزار سریعاً ساخته شوند و مورد ارزیابی قرار بگیرند.
- نتایج به طور کاملاً سریع و در قالب زمان بندی های خاص تکمیل می شود.
- امکان ایجاد توسعه به صورت موازی وجود دارد.
- به راحتی می توان پیشرفت پروژه را اندازه گیری کرد.
- تغییر نیازمندی ها هزینه کمتری را دارد.
- به راحتی میتوان اشکال زدایی و یا debugging و تست کردن را در هر iteration کوچک انجام داد.
در ادامه نیز برخی از معایب مربوط به این روش را مشاهده میکنید.
- منابع بیشتری ممکن است مورد نیاز باشد.
- هر چند هزینه تغییرات کمتر است؛ اما برای همین مقدار کوچک نیز هزینه هایی را باید متحمل شد.
- نیاز به مدیریت دقیق بیشتری دارد.
- تغییراتی در طراحی و معماری نرم افزار ممکن است ایجاد بشود؛ چرا که از ابتدای کار تمامی نیازمندی های نرم افزار به طور کامل جمع آوری نشده است.
- برای پروژه های کوچک مفید نخواهد بود.
- پیچیدگی مدیریتی بیشتری دارد.
- زمان پایان پروژه ممکن است تغییر کند.
- برای تجزیه و تحلیل ریسک نیاز به متخصصین ویژهای داریم.
پرووید: مرکز آموزش تخصصی برنامه نویسی و توسعه نرم افزار