مقدمه:

با توجه به گستردگی روز افزون دانش کامپیوتر ، و با عنایت به اینکه در این برهه از زمان ، زمانبندی مناسب در انتشار نرم افزار و کاهش هزینههای تولید نرم افزار نقش مهمی در تأمین محصولات نرم افزاری به بازار ایفاء می کند بـ رای دسـ تیابی بـ ه ایـ ن مهـ م در سـ الهای اخیـ ر سـ عی شـ ده اسـ ت بـ ا اسـ تفاده از انـ واع سیـ ستم هـ ایهوشـ مند و خبـ ره بـ ـه زمـ ان انتـ شار بهینـ ـه دسـ ت یافـ ت. سیـ ستم هـ ایی هوشـ مندی نظیـ ر الگـ ـوریتمژنتیـــک ، شـــیکه هـــای عـــصبی ، منطـــق فـــازی و سیـــستم هـــای تکامـــل تـــدریجی بـــه ایـــن موضـــوعپرداختـــ ه اســـ ت .در ایـــ ن نوشـــ ته ســـ عی شـــ ده اســـ ت ابتـــ دا بـــ ه بررســـ ی موضـــ وع release planningپرداختـــه شـــود ســـپس بـــا اســـتفاده از الگـــوریتم ژنتیـــک بـــه ارایـــه روشـــی بـــرای تولیـــدزمان انتشار بهینه یا یک ورژن جدید نرم افزارپرداخته میشود.
در ایـ ن راسـ تا مـ دیریت نیازمندیهابـ ه کنتـ رل نیازهـ ایی کـ ه قـ رار اسـ ت بـ ه سیـ ستم اختـ صاص یابـ د ، میپردازد.
ایـ ن موضـ وع کمـ ک میکنـ د تـ ا هزینـ ه در نظـ ـر گـ رفتن نیازههـ ای جدیـ د کـ اهش یافتـ ه و الویـ تبندی نیازهها بر اساس درجه اهمیت آنها و سهم آنها در ارزش نهایی پروژه لحاظ گردد. الگـوریتم هـ ای ژنتیـ ک الگـ وریتمهـ ای قدرتمنـ دی در یـ افتن جـ واب مـ سئله هـ ستند، امـ ا بایـ د توجـ ه داشـــت کـــه شـــاید بتـــوان کـــاربرد اصـــلی ایـــن الگـــوریتم هـــا را در مـــسائلی در نظـــر گرفـــت کـــهدارای فــ ضای حالــ ت بــ سیار بــ زرگ هــ ستند و عمــ لاً بررســ ی همــ ه حالــ ت هــ ا بــ رای انــ سان در زمـ ان هـ ای نرمــال (در حـ د عمـ ر بـ شر ماننـ د ورژن هـ ای مختلـ ف یـ ک نـ رم افـ زار در طـ ول عمـ راســتفاده از آن ) ممکـ ن نیـ ست .از طرفـ ی بایـ د توجـ ه داشـ ت کـ ه حتمـ اً بـ ین حـ الات مختلـ فمـــسئله پیوســـتگی مناســـب و منطقـــی برقرارباشـــد. در نهایـــت الگـــوریتم هـــای ژنتیـــک ایـــن امکـــان رابـــه مـــا مـــی دهـــد کـــه مـــساله درlocal optima گیرنکنـــد و در جهـــت بدســـت آوردن جـــواببهینه حرکت کند.

بررسی توسعه تکاملی در نرم افزار

بررسی توسعه تکاملی در نرم افزار

فهرست مطالب

چکیده:…………………………………………………………………………………………………………………….1

.مقدمه:…………………………………………………………………………………………………………………… 2

فصل اول : کلیات

مدیریت نیازمندیها به طور کلی به کنترل نیازمندیهایی که قرار است به نرم افزار اختصاص پیدا کند؛ می پردازد. این موضوع کمک می کند تا برنامه ها و هزینه تغییر نیازمندیها تخمـین زده شـود و الویـت بنـدی نیازمنـدیها بـراساس درجه اهمیت و سهم آنها در ارزش نهایی پروژه معین گردد. بنابراین دلیل بسیار خوبی برای اثبات اهمیـتبلوغ این فرایندها وجود دارد. در این راستا میتوان سه دلیل عمده که مدیریت نیازمنـدیها را در کیفیـت نـرم افـزار و زمـان تحویـل یـک ورژنجدید نرم افزاری حایز اهمیت میسازد ، به شرح ذیل نام برد:
1- ناکامل بودن اطلاعاتی که از طرف کاربر داده می شود.
2- نیازمندیهای ناقص و نامشخص
3- تغییر خصوصیات نیازمندیها Software Release planning درواقع مجموعه ای از ویژگیها و feature های تغییـر یافتـه ای اسـت کـه یـکمحصول جدید را شکل می دهد.
برنامه ریزی ورژن بندی یک نرم افزار برای توسعه تکاملی آن در واقع الحاق کـردن ویژگیهـای جدیـد بـه نـرمافزار با توجه به برخی محدودیت ها مانند محدودیت های تکنولو ژیکی،ریسک،منابع و بودجـه مـی باشـد.بـدونیک برنامه ریزی اعلان نسخ یک نرم افزار،ویژگی ها وfeatureهای مهـم وبحرانـی در زمـان مناسـب بـه برنامـهاضافه نمی شود واین موضوع باعث نارضایتی مشتری وازدست رفتن سرمایه خواهد شد و سـهم بـازار خـود را ازدرست خواهند داد.راه مناسب برای جلب رضایت مشتری و وابـسطه نگهداشـتن مـشتری بـه محـصول جدیـد آن اسـت کـه تعـدادمناسبی از نیازمندی ها رادرهر توسعه تکاملی نرم افزار ارائه دهیم.
در این مبحث ما بر روی برنامه ریزیfeature های ورژن بندی یک نرم افزار تمرکز خـواهیم کـرد.ویژگیهـاییکه به نیازمندیهای عملیاتی وکیفی می پردازد به عبـارت دیگـر بـهfeature هـایی پرداختـه مـی شـود کـه هـممجری(تولید کننده نرم افزار) وهم مشتری آنها را درک کرده باشد.مفهوم feature برای توسعه نرم افزار بسیار حائز اهمیت است همچنین این مفهوم برای هر تولیـد تکامـل توسـعه ای نیز دارای اهمیت است در واقع featureها واحد های فروشی هستند که برای مشتری تهیه می شود.
١-٢ پیشینه تحقیق و فواید توسعه تکاملی
توسعه تکاملی فواید زیادی نسبت به ایده سنتی و آبشاری در توسعه نرم افزار دارد که برخی از آنهـا عبارنتـداز:
1- اولویت بندی featureها این اطمینان خاطررا بوجود می آورد کهfeatureهایی که دارای اهمیـت هـستندزودتــر تحویــل مــشتری داده مــی شــوند واگــر در هزینــه وزمــان پــروژه محــدودیتی باشــد بــه ایــنطریقfeatureهای که دارای اهمیت کمتری هستند حذف خواهند شد.
2- مشتری به زودی زود یک ورژن از نرم افزار را دریافت می کند واین موضـوع سـبب رضـایت منـدی شـدهوبازخورد مناسبی ایجاد می کند.
3- زمان بندی و هزینه هر مرحله از تحویل پروژه آسان ترمی شود و این موضـوع مـدیریت و کنتـرل پـروژه را تسهیل می نماید.
۴- در هرمرحله از تحویل،بازخورد وfeedback کاربر ومشتری معین می شود.
۵- ایده توسعه تکاملی برای مجری ومشتری ملموس تر میشود.
در ای ن راس تا مت دهایAgile وچاب ک ب رای توس عه ن رم اف زار ب ا اس تفاده از فوای د ف وق بهین ه م ی ش ود ودر Extreme Programming یک محصول نرم افزاری به صورت یکسری از User Stories ها تعریف می شود و در واقع این story ها توصیفی از نیاز مندی های سیستم توسط کاربر می باشـند ایـن موضـوع در برنامـه ریـزی نـرمافزار به Planning Games معروف است.

1-1) هدف …………………………………………………………………………………………………………………..4

برای دانلود رایگان قسمت های بیشتراز فایل به انتهای مطلب مراجعه کنید

فصل دوم

مدیریت نیازمندیها به کنترل نیازمندیهای سیستم والویت بندی و درجه اهمیت آنها در سود حاصل از تولیـد نـرمافزار میپردازد پیش از اینکه این نیازمندیها در نرم افزار ایجاد مشکل نماید. و دلایل ضـرورت آن بـه شـرح ذیـلاست:
نبود ورودی کافی توسط کاربر ارائه نیازمندیهای ناقص در ابتدای پروژه تغییر نیازمندیها در واقع مهندسی نیازمندیها یکی ازارکان اصلی Software Release Planning است و دلایل برتری Release Planning بر روش سنتی آبشاری عبارتند از :
کنار گذاشتن ویژگیهای کم اهمیت در ابتدای پروژ دریافت سیستم کامل در هر زمان زمان بندی سیستم و برآورد هزینه ها به دلیل بخش بندی پروژه فیدبک کاربر در هر لحظه قابل دریافت است بوجود آمدن حساسیت نسبت به تغییرات خواص Release planning اولویت ها و انواع تفاوتهای احتمالی در رای سهامداران را در نظر می گیرد.
خروجی elease planning یک سری ویژگیها و خواص جدید است که قرار است به نسخه جدید الحاث شـود . در واقع در release planning سعی در حفظ تعادل بین نیازمندیهای مشتری ،نظر ذینفعان و منـابع موجـود دارد. Release planningبعنوان یکی از انواع روشهای توسعه نرم افزار شامل مراحل زیر می باشد: آنالیز ، طراحی سیستم ، طراحی جزئیات ، راه اندازی ، آزمایش اجزا ، آزمایش سیستم

در release planning بیشتر بر دو قسمت تاکید میشود :
• مدیریت نیازمندیها ، مخصوصا اولویت بندی نیازمندیها
• برنامه ریزی و مدیریت پروژه نرم افزاری
مدیریت نیازمندیها روشی برای تعیین و شناسایی ، مـستند سـازی ، ارتبـاط سـازی ، تعقیـب و مـدیریت نیازهـایپروژه( مانند تغییرات نیازها) است( زمانی که نیازها تغییر پیدا می کنند و یا بهتر درک مـی شـوند و یـا نیازهـایجدیدی مطرح می شوند مدیریت نیازها فعال میشود.)
اولویت بندی نیازمندیها باعث تعیین درجه تفاوت یک اولویت میـشود. مـشکل آنجاسـت کـه مقـادیر زیـادی ازخواص که نیازی به آنها نیست تولید میشود و برعکس آن دسته از خواص که به آنها نیاز داریم تولید نمیشود.در Software Release Planning به 5 نکته اساسی توجه میشود:
• Software Release Planning بستگی به ذینفعانی دارد کـه نیازمنـدی هایـشان را بـا اسـتفاده از اینترنـتاستخراج می کنند.
• یک روش معمول برای متعادل کردن اولویت های ذینفعان ، درجه بندی اهمیت ذینفعـان مختلـف مـیباشد.
• Release Planning در حین اجرا باعث بوجود آمدن اثراتـی شـود. ( ماننـد ایجـاد محـدودیت هـایی درارتباط با خطر پذیری، پول و منابع )
• Release Planning ، زمان اجرایی شدن را با توجه به خواص ورژن در نظر می گیرد.
• روش متداول Release Planning می تواند موارد مهم را در نظر گیرد و مجموع آنهـا را در یـک روشمتعادل کنار هم قرار دهد.
مدیریت و برنامه ریزی پروژه نرم افزاری ، هنر مقایسه اهداف ، مدیریت خطـر پـذیری ، و غلبـه بـر محـدودیتهاست تا با موفقیت ، محصولی عرضه شود که نیازمندیهای مشتریان و کاربران را تامین کند.
٢-٢ نیازمندیها ،خصیصه ها و محدودیتها :
Release Planning براساس گسترش یک سری از نیازمندیها و خواص صورت میگیرد. شـماره ور ژن هـایی کـهبعنوان نسخه های جدید در نظر گرفته میشود از یک مورد به مورد بعدی دارای تفاوت است. ما از گزینه K برای تعیین خواص نسخهK استفاده می کنیم. یک چشم انداز خوب به آینده زمانی وجود خواهد داشت کـه پـذیرشعدم قطعیت و سرعت تعییرخواص وجود داشته باشد. در نتیجه به عنوان نتیجـهRelease Planning هـر خاصـیتممکن است یکی از موارد زیر باشد :
گزینه یک : ورژن بعدی
گزینه دو : محصول بعدی ولی همان ورژن
گزینه سه : هیچگونه نظری در مورد به تعویق انداختن یا نیانداختن نداشتن
اگر {F = {f1 , f2 , . . . , fn یک سری از خواص ورژن باشد ، هنگام کـاربرد بـدون ابهـام{1, 2, … , n} جـای آنقرار میگیرد. همانطور که قبلا ذکر شد ، Release Planning در 3 گروه به کار میرود:
ورژن بعدی ؛ محصول بعدی ولی همان ورژن ؛ هنوز تصمیم گیری نشده
در نتیجه یک Release Plan با یک شاخص (X) به عنوان متغییر تصمیم گیری تعیین ویژگی میشوند :
(1) X = (X(1) , X(2) , … , X(n)) به شرط X(i) = k .صادق باشد k در مورد گزینه i اگر خاصیتبکار بردن خواص برای ورژنها ، بدون در نظر گرفتن انواع توابع میان خواص، ممکن نیست. این توابع بـا روابـطبیان شده در سری محصولF*F برایF ارائه شده است. درذیل 6 نوع مختلف از توابع نیازمندیها مورد بررسـیقرار گرفته شده است.

5
1-2 پیشینه تحقیق و فواید توسعه تکاملی …………………………………………………………………………….. 5
2-1 مدیریت نی ازمندیها …………………………………………………………………………………………………… 8
2-2 نیازمندیها ،خصیصه ها و محدودیتها : ………………………………………………………………………………… 9
2-3 اولو یت ها ی ذینفعان:…………………………………………………………………………………………………..14
2-4 اولو یت بند ی ……………………………………………………………………………………………………………..14
2-52-6 مشکلات برنامه ریزی ورژن جد ی د یک نرم افزار……………………………………………………………………17
2-8 Release Planning توسط تصم یم گیر ی هوشمند …………………………………………………………………….20
2-8-1دیدگاه راه حل تکم یلی EVOLVE….ا…………………………………………………………………………………….20

فصل سوم

برای بد ست آوردن یک نرم افزار منعطف که در آن نیازمندیهای حقیقی مشتری دیده شده است،تمایل به سمتتولید توسعه ای نرم افزار می باشد در این وضعیت نیازمندیهای مشتری در ورژن هـای مختلـف بـه آنهـا تحویـلداده می شود ودائماً این فکر وجود دارد که کدام نیازمشتری،چه زمانی باید مرتفع گردد.
در ادامه این فصل سعی بر این است تا:
1. یک روش برای تخصیص بهینه نیازمندیهای به ورژن های جدید نرم افزار بررسی شود.
2. توازنی بین الویت بندی نظر سهامداران ومحدودیت های تکنولوژیکی بدست آید.
3. توازن وتعادلی بین منابع برای تمام ورژن ها بدست آید.
۴. در نهایت یک متدی به نام متد Evolve برای بهینه نمودن مباحث مذکور ارایه شود.
الف)تحویل ورژن جدید یک نرم افزار
در مدل فرآیند توسعه ای نرم افزار نیازمندیها جمع آوری می شوند و وابستگی های تکنیکی والویـت بنـدیهــای کــاربر وموضــوع ســود و هزینــه در مــورد آنهــا بررســی مــی شــود وســپس سیــستم بــه چنــد توس عه(increment) تف سیم م ی ش ود.در س اده ت رین حال ت تم ام نیازه ای م شتری ب صورت کام ل در آغازپروژه شناخته شده است.اما در عالم واقع چنین نمی باشد. ومعمولاً نیازمندیهای مشتری به دلیـل شـفافنبودن در آغاز پردازه،در طول پروژه دچار تغییر شده ونیازهای جدیدی شناسایی می شود بنـابراین بایـستیدر تخصیص منابع و الویت بندی آنها نیز تجدید نظر نمود.

در این مرحله هر یک از نیازمندیهایی که از سوی مشتری مطرح شده است را به توسعه جدید نـرم افـزار الـصاقمی کنند فرض کنید RK شامل نیازمندیهای که قرار است در K امین itration به سیستم اضافه مـی شـود و IncK شامل نیازمندیهایی باشد که بعد از برنامه ریزی ورژن جدید نرم افزار بایستی به سیستم الصاق شوند.
RK Evolve(K) IncK , IncK+1 , IncK+2 , …
در داخل سیستم Evolve،که مبتنی بر الگولیتم ژنتیک است
یک جمعیت اولیه از فرمول تولید جمعیت ایجاد می شود و هر کدام از اعضا ایـن جمعیـت کـه درایـن جـا یـکنیازمندی جدید است در برابر مجموعه ای از داده ها مورد آزمایش قرار می گیرد(مانند:هزینه،زمان،میزان تلاش لازم برای تولید آنها،… )ومناسبترین آنها (شاید حدود 10%انتخـاب شـده وبقیـه کنـار گذاشـته مـی شـوند وحـالمناسبترین نیازمندیها بر اسـاس توابـع موجـود در الگـوریتم ژنتیـک ماننـدRoulette،Elitist ،…)انتخـاب شـده وبـااستفاده از توابع crossover بصورت تصادفی،یک والد انتخاب وآن را در نسل بعد جایگزین می نماید. ودر این هنگام با استفاده از mutation بعضی از ژن ها بصورت تصادفی تغییر می یابند.

3-1 توسعه تدریجی یک نرم افزار با رویکرد تکاملی…………………………………………………………………………….22
3-2 تکامل هر یک از توسعه های نرم افزار ……………………………………………………………………………………..24

فصل چهارم.

4-1 نتیجه گیری………………………………………………………………………………………………………………………31
4-2 پیشنهادات……………………………………………………………………………………………………………………….31

منابع و ماخذ…………………………………………………………………………………………………………………………..31 فهرست منابع فارسی ………………………………………………………………………………………………………………31
فهرست منابع لاتین……………………………………………………………………………………………………………………31 سایت های اطلاع رسانی……………………………………………………………………………………………………………..33
چکیده انگلیسی…………………………………………………………………………………………………………………………34

Abstract
To achieve higher flexibility and to better satisfy actual customer requirements, there is an increasing tendency to develop and deliver software in an incremental fashion. In adopting this process, requirements are delivered in releases and so a decision has to be made on which requirements should be delivered in which release. Three main considerations that need to be taken account of are the technical precedences inherent in the requirements, the typically conflicting priorities as determined by the representative stakeholders, as well as the balance between required and available effort. The technical precedence constraints relate to situations where one requirement cannot be implemented until another is completed or where one requirement is implemented in the same increment as another one. Stakeholder preferences may be based on the perceived value or urgency of delivered requirements to the different stakeholders involved. The technical priorities and individual stakeholder priorities may be in conflict and difficult to reconcile. This paper provides i) a method for optimally allocating requirements to increments; ii) a means of assessing and optimizing the degree to which the ordering conflicts with stakeholder priorities within technical precedence constraints; iii) a means of balancing required and available resources for all increments; and iv) an overall method called EVOLVE aimed at the continuous planning of incremental software development. The optimization method used is iterative and essentially based on a genetic algorithm. A set of the most promising candidate solutions is generated to support the final decision. The paper evaluates the proposed approach using a sample project



مقطع : کارشناسی ارشد

قیمت 25 هزار تومان

خرید فایل pdf به همراه فایلword

قیمت:35هزار تومان