مقدمه:

با توجه به گستردگي روز افزون دانش كامپيوتر ، و با عنايت به اينكه در اين برهه از زمان ، زمانبندي مناسب در انتشار نرم افزار و كاهش هزينههاي توليد نرم افزار نقش مهمي در تأمين محصولات نرم افزاري به بازار ايفاء مي كند بـ راي دسـ تيابي بـ ه ايـ ن مهـ م در سـ الهاي اخيـ ر سـ عي شـ ده اسـ ت بـ ا اسـ تفاده از انـ واع سيـ ستم هـ ايهوشـ مند و خبـ ره بـ ـه زمـ ان انتـ شار بهينـ ـه دسـ ت يافـ ت. سيـ ستم هـ ايي هوشـ مندي نظيـ ر الگـ ـوريتمژنتيـــك ، شـــيكه هـــاي عـــصبي ، منطـــق فـــازي و سيـــستم هـــاي تكامـــل تـــدريجي بـــه ايـــن موضـــوعپرداختـــ ه اســـ ت .در ايـــ ن نوشـــ ته ســـ عي شـــ ده اســـ ت ابتـــ دا بـــ ه بررســـ ي موضـــ وع 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هزار تومان