مدل حلزونی (Spiral Model) در توسعه نرم ‌افزار

مدل حلزونی که تحت عنوان spiral model نیز شناخته می شود روند توسعه تکراری و یا iterative را با جنبه های کنترل شده و سیستماتیک روش آبشاری ترکیب می‌کند. این مدل حلزونی ترکیبی از فرآیند توسعه نرم ‌افزار به صورت iterative و ساختار خطی و ترتیبی موجود در مدل آبشاری است. تاکید اصلی و تمرکز ویژه این روش بر روی تجزیه و تحلیل risk می باشد.با استفاده از این روش نیز می توانیم release ها و یا انتشارهای افزایشی مربوط به محصول نرم ‌افزاری را ارائه بدهیم که در قالب هر تکرار و یا iteration قابلیت‌های جدیدی به برنامه اضافه گردد و یا برنامه تکمیل شود.مدل حلزونی (spiral model): طراحیمدل حلزونی دارای ۴ فاز است. پروژه نرم افزاری به طور تکراری از این فازها عبور می‌کند و این اتفاق در غالب iteration های مختلفی رخ می دهد. به هر کدام از این فازها اصطلاحاً spiral می گوییم.بررسی فاز identificationاین فاز با جمع آوری نیازمندی های تجاری اتفاق می افتد. در spiral های بعدی با پیشرفت محصول نرم افزاری کشف نیازمندی های سیستم و همچنین زیر سیستم ها و در کنار آن ها نیازمندیهای هر واحد به شکل دقیق تری در این فاز رقم می خورد. در این فاز بحث مربوط به درک نیازمندی‌ های سیستم با ارتباط مستمر بین مشتری و تیم تجزیه و تحلیل نیز گنجانده شده است.در پایان spiral محصول به بازار deploy می شود.بررسی طراحی (design)فاز طراحی و یا design با یک طراحی ذهنی آغاز شده و شامل طراحی معماری، طراحی منطقی ماژول ها، طراحی محصول فیزیکی و نهایتاً طراحی کامل spiral های بعدی می باشد.فاز ساخت و یا constructفاز ساخت که تحت عنوان فاز construct و یا build نیز شناخته می شود، به ساخت نرم افزار مورد نظر در هر spiral دلالت دارد. زمانی که محصول فقط از لحاظ ذهنی آماده شده است و بر روی طراحی آن کار می شود، یک POC و یا Proof of Concept توسعه داده می شود و بازخورد مشتری در رابطه با این POC دریافت می گردد. سپس در spiral های بعدی و با داشتن نیازمندی‌ های دقیق تر و جزئیات طراحی مستندتر، یک مدل عملیاتی از نرم افزار که به آن build می‌گوییم تولید می‌شود.این build یک شماره نسخه و یا version number دارد. این build ها به مشتری ارسال می گردند تا بازخورد مشتری در رابطه با هر کدام از آنها دریافت بشود.فاز ارزیابی و تجزیه و تحلیل risk (evaluation and risk analysis)فاز تجزیه و تحلیل risk شامل شناخت، تخمین زدن و رصد کردن امکان پذیری سیستم و همچنین risk های مدیریتی از قبیل زمان بندی و بودجه است. پس از تست build ساخته شده در قسمت قبل مشتری نرم افزار تولید شده را ارزیابی می‌کند و بازخورد خود را به تیم توسعه ارائه می دهد. تصویری که در قسمت زیر مشاهده می کنید نمایی از مدل حلزونی است که فعالیت های هر فاز را در خود نشان می دهد.بر اساس ارزیابی مشتری فرآیند توسعه نرم افزار وارد iteration بعدی می شود و به همین ترتیب روش خطی تعریف شده را برای پیاده سازی بازخوردی که توسط مشتری دریافت کرده است اتخاذ می کند. فرآیند iteration ها به همراه هر کدام از spiral ها تا پایان چرخه حیات توسعه نرم افزار ادامه پیدا می کند.بررسی spiral model: کاربردمدل حلزونی و یا spiral در صنعت نرم‌ افزار کاربرد بسیاری دارد؛ چرا که با فرآیند توسعه طبیعی هر محصولی بسیار تطابق دارد. دلیل این موضوع نیز این است که با استفاده از این مدل با روند پیشرفت نرم افزار risk ها به حداقل می‌رسد و با استفاده از بازخورد مشتری توسعه نرم افزار به شکل دقیق تری اتفاق می افتد. موارد زیر برخی از کاربردهای این مدل را نشان می دهد.زمانی که محدودیت های مالی و ارزیابی risk اهمیت دارد از این روش استفاده می کنیم.این روش برای پروژه هایی که ریسک بالایی دارند کاربرد دارد.زمانی که مشتری درک درستی از نیازمندی ‌های سیستم ندارد این موضوع اغلب اتفاق می افتد.زمانی که نیازمندی ها پیچیده هستند و باید به طور دقیق ارزیابی گردند.زمانی که محصول جدید باید در فازهای مختلف و بر اساس بازخورد مشتری توسعه داده شود.زمانی که تغییرات بزرگی در محصول نهایی و چرخه توسعه نرم افزار امکان پذیر هستند.بررسی spiral model: مزایا و معایبمزیتهای روش spiral و یا حلزونی این است که اجازه می‌دهد عناصر مختلف نرم افزار به مرور به برنامه اضافه گردند. این قابلیت های جدید بر اساس بازخوردهای مشتری شناخته می شوند و به صورت افزایشی به محصول اضافه می گردند. این موضوع باعث می‌شود تا تضاد و یا conflict بین طراحی و نیازمندی به حداقل برسد.این روش زمانی استفاده می شود که build ها و یا release های مختلفی از نرم افزار مورد نیازند و به این ترتیب به صورت بسیار مناسبی از فاز توسعه به فاز نگهداری حرکت می‌کنیم.یک جنبه مثبت دیگر در استفاده از این روش در این است که مدل حلزونی درگیر کردن مشتری در روند توسعه سیستم را پیاده سازی می کند که این موضوع خود می تواند ریسک را به حداقل برساند.با وجود این مزایا معایبی نیز برای این روش وجود دارد. برای مثال مدیریت سختگیرانه برای تکمیل کردن هر محصول و همچنین امکان اجرا شدن spiral ها به صورت نامتناهی برخی از معایب این روش هستند. بنابراین درک درست از تغییرات و اینکه چقدر باید به این تغییرات بازخورد مثبت نشان داد در این روش بسیار مهم است.اگر قرار است که نرم ‌افزار با موفقیت توسعه و تحویل داده شود به این نکته مهم باید دقت کنیم. در ادامه برخی از مزایای روش spiral را مشاهده می کنید.تغییرات در نیازمندیها را می توان مدیریت کرد.می توان به راحتی از نمونه های اولیه و یا prototype ها استفاده کرد.نیازمندی ها را می توان به طور دقیق تری تشخیص داد.کاربران، سیستم را در مراحل اولیه توسعه خواهند دید.توسعه نرم افزار را می توان به قسمت های کوچک تر شکست و قسمت‌ های ریسکی را در مراحل اول انجام داد.در ادامه لیستی از معایب این روش را مشاهده می‌کنید.مدیریت این روش دشوارتر و پیچیده‌تر است.پایان پروژه ممکن است از ابتدای کار مشخص نباشد.برای پروژه های کوچک که ریسک کمی دارند مناسب نیست.فرآیند پیچیده ای دارد.ممکن است در یک حلقه نامتناهی تکرار بشود.مستند سازی مراحل مختلف در آن باید به طور گسترده‌ ای انجام گردد.پرووید: مرکز آموزش تخصصی برنامه نویسی و توسعه نرم افزار