جمعه, ۳۱ فروردین, ۱۴۰۳ / 19 April, 2024
مجله ویستا

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


فرآیند توسعه نرم افزار
به بهانه تدریس این بخش از درس مهندسی نرم افزار یک در دانشگاه بد ندیدم، خلاصه ای از درس را تحت عنوان مروری بر فرآیند توسعه نرم افزار و روشهای مختلف آن را در اینجا نیز ذکر کنم باشد که مورد استفاده علاقه مندان قرار گیرد.چرا؟ چون فکر می کنم چنانچه هم مشتری و هم تولید کننده با فرآیند توسعه نرم افزار آشنا باشند ارتباط بهتری با هم برقرار می کنند و هر یک وظیفه و حقوق خودش را بهتر می داند و بهتر می تواند بر جریان تولید نظارت داشته باشد.
در ساخت یک سیستم نرم افزاری سه فرآیند مهم تاثیر گذار می باشند:
۱) فرآیند توسعه (Development Process): سازماندهی فعالیت ها است برای ساخت یک سیستم
۲) فرآیند مدیریت (Management Process): انتخاب افراد، تجهیزات و فرآیند هاست برای توسعه یک سیستم و کنترل و نظارت بر روند اجرای پروژه (مدیریت پروژه)
۳) فرآیند پشتیبانی (Maintenance Process): کنترل و پشتیبانی نرم افزار پس از تولید آن
در این بین در فرآیند توسعه هدف آن است که یک سیستم با مشخصات خواسته شده تولید شود و بنابراین برای تولید هر نوع سیستم متفاوت است.فرآیند توسعه از مرحله طرح یک راه حل مفهومی برای مساله خواسته شده (امکان سنجی) آغاز شده، پس از دریافت خواسته ها و تحلیل سیستم طراحی صورت گرفته و در نهایت این طراحی با کمک ابزارهای پیاده سازی تبدیل به یک سیستم واقعی می شود. هدف این فرآیند آن است که از یک سو برآورده ساختن نیازهای کاربران و از سوی دیگر کیفیت مناسب عملکرد سیستم تضمین گردد و بنابراین بایستی حاوی مکانیسم هایی برای اعتبار سنجی: خروجی مطابق با خواسته ها (Validation) و وارسی پذیری: صحت عملکرد خروجی (Verification) باشد. فرآیند توسعه ضمن دادن آزادی به تحلیل گر باید تضمین کند که زمانبندی رعایت شود.
روشهای مختلفی برای فرآیند توسعه سیستم وجود دارد که در این میان می توان گفت ۱۲ روش مطرح تر وجود دارد که بدون اشاره به مزایا و معایب آنها عبارتند از:
۱) ساده ترین روش: تبدیل فرآیند توسعه سیستم در قالب دنباله ای از وظایف مشخص و ترسیم CPM: Critical Path Model ، یک نمودار از تمام فعالیت ها
۲) فرایند توسعه خطی Liner: به ترتیب مراحل انتخاب پروژه، تعریف مفهومی (تعریف مساله، امکان سنجی) ، تعریف مشخصات (خواسته ها ، تعریف مساله) ، طراحی (طراحی معماری، تفصیلی) ، توسعه (ساخت سیستم، تست) ، ارزیابی و درنهایت تعریف پروژه جدید
۳) مدل آبشاری (Water Fall) : تقسیم وظائف توسعه سیستم در قالب یک مدل آبشاری از تعریف مساله، امکان سنجی، تحلیل (سیستم، خواسته ها)، طراحی ، پیاده سازی و تست ، یکپارچه سازی و تست، نصب و تست ، نگهداری و مرور , با امکان برگشت از یک مرحله به مرحله قبل
۴) توسعه مرحله ای، افزایشی و یا نموی Incremental Methods : تقسیم یک مساله به مسائل کوچکتر و انجام هر زیر سیستم (مساله کوچکتر) و انجام هر یک به صورت جداگانه و در صورت امکان اجرا به صورت همزمان
۵) الگو سازی (Prototyping) :ایجاد یک الگو برای کاربران برای اینکه درک بهتری از سیستم داشته باشند و درنهایت پیاده سازی سیستم بر اساس این نمونه
۶) توسعه سریع سیستم RAD: Rapid Application Development : ادغام برخی مراحل با یکدیگر و استفاده از زبانهای نسل چهارم برای توسعه سیستم (مراحل: برنامه ریزی، طراحی و تست)
۷) طراحی تکاملی به صورت حلزونی و یا مارپیچی (Spiral) : توسعه سیستم به صورت افزایشی به صورت بازگشتی Recursive
۸) با اضافه کردن مفاهیم برنامه سازی شی گرایی (OOP) به روش حلزونی و تبدیل به صورت موازی بازگشتی (Parallel Recursive Method )
۹) توسعه سیستم مبتنی بر مولفه ها (CBSD: Component Based Software Development )
۱۰) توسعه همزمان (Concurrent Development) : توسعه به صورت یک فرآیند سیستماتیک و مرحله بندی و لیبل گذاری هر بخش در هر مرحله. تقسیم سیستم به بخش های مختلف و تقسیم نیروها در بین پروژه های مختلف برای اجرای این بخش ها به صورت همزمان
۱۱) روشهای فرمال : بکارگیری مدل ها و مفاهیم ریاضی در توسعه سیستم
۱۲) روشهای نسل چهارم: بگارگیری از ابزارهای گرافیکی و ابزارهای مهندسی نرم افزار (CASE Tools)
با توجه به تعدد روشها و مدل های فرآیند توسعه باید در یک پروژه انتخاب صورت بگیرد. این انتخاب بر اساس موارد زیر می تواند باشد:
- درجه ساختاری سیستم
- آشنایی با فنآوری
- اندازه پروژه
برای مثال چرخه های خطی برای پروژه های آسان و ساختیافته و یا زمانی که با فنآوری کاملا آشنا هستیم مناسب می باشند و برای پروژه های بزرگ و ناشناخته روشهای افزایشی بهتر می باشند.اما نمی توان انتظار داشت یک گروه تولید کننده نرم افزار در هر پروژه یک معیار را انتخاب کند. چون این کار بسیار هزینه بر است و به لحاظ مختلف ناصواب. دلایل انتخاب یک روش استاندارد برای یک تیم و استفاده در همه پروژه ها آنست که:
- طراحان برای یادگیری تکنیک های جدید وقت زیاد تلف نمی کنند.
- مستند سازی بهتر صورت می گیرد
- کاهش هزینه آموزش کاربران سیستم ها
همانطور که قبلا نوشته ام در رادمان روش نهم از روشهای بالا انتخاب شده است.چون از یکسو برای همه پروژه ها می توان استفاده نمود و هم مولفه های خوبی در هر پروژه تولید و یا بهبود می یابند که می توان از آنها در پروژه های بعدی نیز استفاده کرد
منبع : شبکه اطلاع رسانی اندیمشک


همچنین مشاهده کنید