مدل های فرآیند نرم افزار
مدل فرآیند نرم افزار، نمایش انتزاعی فرآیند نرم افزار است. هر مدل فرآیند، فرآیند را از دیدگاه خاصی نمایش می دهد و در نتیجه فقط بخشی از اطلاعات راجع به آن فرآیند را در اختیار قرار می دهد. در این بخش تعدادی از مدلهای کلی فرآیند را معرغی می کنم و آنها را از دیدگاه معماری نمایش می دهدم. یعنی چارچوب فرآیند را خواهیم دید نه جزئیات فعالیت های خاص را.
این مدلهای کلی، توصیف قطعی فرآیند نرم افزار نیستند، بلکه انتزاعهای مفیدی اند که برای توصیف رهیافتهای مختلف توسعه نرم افزار به کار گرفته می شوند. برای بسیاری از سیستم های بزرگ، فقط از یک فرآیند نرم افزار استفاده نمی شود، برای توسعه بخش های مختلف سیستم از فرآیندهای مختلفی استفاده می شود.
مدل های نرم افزاری که قصد بحث در مورد آن ها را دارم عبارتند از :
1- مدل آبشاری : این مدل، فعالیت های اساسی فرآیند تعیین مشخصات، توسعه، اعتبار سنجی و تکامل را در نظر می گیرد و آن ها را به صورت مراحل جدا گانه ای از فرآیند مثل تعیین مشخصات خواسته ها، راحی نرم افزار، پیاده سازی، تست و غیره نمایش می دهد.
2- توسعه تکاملی : این رهیافت، فعالیت های تعیین مشخصات، توسعه و اعتبارسنجی را جایگذاری (Interleave) می کند. یک سیستم اولیه با استفاده از مشخصات انتزاعی ساخته می شود. سپس این سیستم با ورودیهای مشتری اصلاح می شود تا سیستمی ایجاد شود که خواسته های کاربر را برآورده کند.
فرآیندهای مبتنی بر مدل آبشاری و توسعه تکاملی، برای توسعه ی سیستم های عملی به کار می روند.
3.مدل افزايشی:
ترکيب مدل خطی و مدل ساخت نمونه اوليه
در انتهاي هر ترتيب خطی يک محصول از نرم افزار ارائه می گردد.اولين محصول با نام محصول هسته ای (Core Product) به نيازمنديهای پايه ای پرداخته و پس از بازنگری توسط کاربر اصلاح و بهينه می گردد.
4.مدل حلزونی(Spiral Model):
نسخه اوليه از محصول در اين مدل نسخه ساده ای می باشد که در تکرارهای بعدی کامل می گردد. در اين مدل فعاليتها به شش دسته تقسيم می گرددکه هر کدام از آنها را با نام نواحی کاری(Work Area) می شناسند :
تعامل با مشتری و تعريف نيازمنديها : تعيين خواسته ها از جانب مشتری
برنامه ريزی (Planning) : تعيين اهداف ، آلترناتيوها و محدوديتها
تعيين منابع و ايجاد زمانبندی
آناليز ريسک : تحليل آلترناتيوها ، شناسائی ريسکها و راهکارهای مقابله با آنها
مهندسی (Engineering) : توسعه محصول سطح بعدی
ساخت و ارائه : ساخت ،آزمايش و انتقال ( تحويل مستندات ، آموزش و ...)
ارزيابی مشتری ( Customer Evaluation) : ارزيابی نتايج مهندسی
در تمامی مراحل فوق فعاليتهای چتری نيز به موازات اجرا می گردند.
مدل حلزونی برنده برنده(Win-Win):
در بخش تعامل با مشتری نيازمنديها از سوی مشتری می بايست مشخص شوند .جهت اين موضوع لازم است مشتری به يک موازنه (trade off) بين نيازمنديهای خود و تيم توسعه برسد. به عبارت ديگر موازنه ای بين عملکرد ، قابليتهای سيستم و کارائی از طرفی و هزينه و زمان از سوی ديگر برقرار نمايد. در اين شرايط تلاش می گردد اکثر نيازمنديهای مشتری در مقابل زمان و قيمت مناسب جهت تيم توسعه دهنده نرم افزار فراهم گردد(برد-برد). در مدل مذکور به جای بخش تعامل با مشتری و تعيين نيازمنديها قسمتهای زير جايگزين می گردد:
شناسائی واگذارنده و تعيين شرايط برد او
مذاکره جهت حصول به توافق ( در راستای قاعده برد – برد)
علاقه مندی ها (Bookmarks)