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

با بزرگ شدن پروژه هاي نرم افزاري  و پيشرفت علم مهندسي نرم افزار ، روش هاي سازمان يافته اي براي توسعه نرم افزارها ابداع شد که هر کدام بسته به نوع پروژه و محدوديت هاي آن در جاي خاصي کاربرد دارد. برخي روش ها مانند R.A.D به دليل کمبود زمان توليد، برخي مانند spiral به دليل مشخص نبودن نيازمندي هاي اوليه نرم افزار و برخي مانند X.P براي کساني که کار طراحي نرم افزار را با کدنويسي شروع ميکنند ابداع شدند. ايجاد پروژه هاي بزرگ بدون بکارگيري يکي از روش هاي مهندسي نرم افزار ممکن نيست.

1 - روش آبشاري (waterfall) : اين روش اولين روش مهندسي نرم افزار محسوب ميشود و گاهي آنرا روش سنتي نيز مي‌نامند. هر روش مهندسي معمولا شامل 5 پروسه اصلي است که عبارتند از آناليز سيستم، طراحي سيستم، کدنويسي و اجرا، تست و تحويل و پشتيباني . اين 5 پروسه در روش آبشاري به ساده ترين شکل بيان ميشوند. بدين ترتيب که هر فاز از پروسه ي کلي، انجام ميشود و بعد فاز بعدي آغاز ميشود. اين روش در پروژه هايي کاربرد دارد که فاز اول که آناليز است توسط مهندس نرم افزاري که کار تحليل را بر عهده دارد کاملا شناخته شود و طراح کاملا نيازمندي هاي سيستم مربوطه را بداند تا در فاز بعدي بتواند طراحي معماري سيستم را آغاز کند. در عکس زير نمودار عملياتي روش آبشاري را مراجعه ميکنيد. گرچه در هر مرحله امکان برگشت به مرحله قبل گنجانده شده، اما اين برگشت هزينه ي بسياري را بر دوش تيم نرم افزاري ميگذارد. زيرا هر تغيير در مرحله قبل، ميتواند باعث شود تا پروژه در فاز بعدي نيازمند شروع از ابتدا باشد.

مهندسي نرم افزار. روش آبشاري

2 - روش افزايشي (Incremental): اين روش براي زماني است که نيازمندي هاي نرم افزاري که بايد نوشته شود تشخيص داده شده است ، اما امکان استفاده از روش رو به جلوي آبشاري وجود ندارد.به همين دليل با ترکيب چند پروسه ي آبشاري، روش افزايشي ايجاد ميشود. بطور مثال شما ميخواهيد يک نرم افزار مانند word بنويسيد. در هر مرحله بخشي از نرم افزار را از آناليز تا پياده سازي و تست پيش مي بريد و بار بعدي امکانات جديدي را در نظر ميگيريد تا به نرم افزار اضافه کنيد. امکانات ضروري تر در اولويت بالاتر اجرا قرار مي گيرند.
 
روش هاي مهندسي نرم افزار - افزايشي

 
3روش R.A.D اين روش زير مجموعه روش افزايشي است و بر روي چرخه ي کوتاه مدت توليد نرم افزار تاکيد دارد. در اين روش از برنامه نويسي با استفاده از کامپوننت هاي آماده بيشترين بهره را مي بريم تا سرعت تحويل پروژه را افزايش دهيم . معمولا پروژه هايي با اين روش اجرا ميشوند که کمتر از 90 روز وقت مي گيرند و براي افزايش سرعت از تيم هاي موازي نيز براي اجرا کمک ميگيريم تا هر تيم بخشي از نرم افزار را اجرا کند و نهايتا آن بخش ها را با هم يکپارچه ميکنيم. با توجه به اهميت سرعت در اين مدل ، افراد تيم بايد همگي زبده باشند تا بتوانند بدون هدر رفتن وقت پروژه را در موعد مقرر تحويل دهند. همانطور که در تصوير زير ميبينيد پروژه توسط چند تيم در حال پيشبرد است: 
مهندسي نرم افزار RAD
 
 
4 - روش الگويي (prototyping) : اين روش معمولا زماني بکار گرفته ميشود که مشتري مجموعه اي از نيازها را بيان ميکند ، اما از ورودي و خروجي ها و الگوريتم هاي داخلي اش اطلاع کافي ندارد. با توجه به اينکه معمولا اولين نسخه ي هيچ نرم افزاري کامل نيست و نيازمند بازنگري است، اين روش با چرخه ي توليد و تست خود باعت ميشوند ايرادات نرم افزار استخراج و رفع شود. اما گاهي خارج شدن از اين سيکل (با توجه به بالارفتن سطح توقع مشتري) سخت ميشود.
 
مهندسي نرم افزار
 
 
 5 - روش حلزوني (spiral) : اين روش ترکيبي از روش سيستماتيک آبشاري و روش prototyping است. در اين روش نرم افزار طي چندين نسخه ي ارائه شده به تکامل مي رسد. در هر مرحله ريسک هاي پروژه با جزئيات بررسي ميشوند. همانطور که درنمودار زير ميبينيد، کليه ي مراحل انجام پروژه در هر گردش در سايز بزرگتري اجرا ميشوند.
 
روش مهندسي نرم افزار حلزوني
 
  6 - روش مهندسي همزمان (concurrent development) : اين روش شامل يکسري فاز اجرايي است. هر فاز خود شامل يکسري وضعيت (state) است. هر يک از اينstate ها بر اساس event هايي که برايشان تعريف ميکنيدم تغيير ميکنند و به وضعيت ديگري مي روند. در عکس زير بخش آناليز را در اين مدل مهندسي مشاهده ميکنيد. اگر در موقعيت development   باشيم و تغييري در نيازمندي هاي تعريف شده توسط مشتري ايجاد شود، به وضعيت awaiting changes مي رويم. زيرا تغييراتي در ساختار پروژه ايجاد شده که ميتواند منجر به تغيير در فاز development شود. اين روش معمولا براي نرم افزارهايي که بصورت کلاينت سروري کار ميکنند بکار مي رود. 
 
مهندسي نرم افزار همزمان
 
علاوه بر مدل هاي مهندسي نرم افزار فوق، روش هاي ديگري مانند XP ، Clean Room ، component-based ، Agile و غيره وجود دارند. که هر يک در جاي خود قابل استفاده هستند. اما روش هاي فوق متداول ترين مدل هايي هستند که بکار گرفته ميشوند. 

تاریخ: 1388/02/16       نویسنده: حسین شرفی    

مقالات مرتبط :


• روش های مهندسی توسعه نرم افزار
• نرم افزار های مهندسی نرم افزار - رسم Usecase ، DFD ، ERD
• الگوریتم های مرتب سازی آرایه ها
• مهندسی نرم افزار و طراحی سرویس های تحت وب
• نظریه زبان ها و ماشین ها