مهندسی کامپیوتر( مهندسی نرم افزار

فصل1
مهندسی نرم افزار
FAQ هایی راجع به مهندسی نرم افزار:
نرم افزار چیست ؟
نرم افزار شامل برنامه های کامپیوتری همراه است با مستندات و داده های پیکربندی است که برای درست کارکردن برنامه ضروری است .
دو نوع محصول نرم افزاری :
1- محصولات کلی
2- محصولات سفارشی
مهندسی نرم افزار چیست؟
یک نظام مهندسی است که با جنبه های نرم افزاری محصول ، از مراحل اولیه تعیین مشخصات سیستم تا نگهداری سیستم ، سروکار دارد .
شامل مراحل زیر است :
1- نظام مهندسی .
2- تمام جنبه های محصول نرم افزاری .
تفاوت مهندسی نرم افزار و علم کامپیوتر چیست ؟
علم کامپیوتر با تئوری و اصول سروکار دارد . مهندسی نرم افزار با فعالیت های توسعه و تحویل نرم افزار سروکاردارد .
تفاوت مهندسی نرم افزار و مهندسی سیستم چیست ؟
مهندسی سیستم با تمام جنبه های توسعه سیستم های مبتنی بر کامپیوتر از جمله سخت افزار ، نرم افزار و مهندسی فرایند سروکار دارد . مهندسی نرم افزار بخشی از این فرایند است .
فرایند نرم افزار چیست ؟
مجموعه ای از فعالیت ها است که هدف آن ها توسعه یا تکامل نرم افزار است.
شامل فعالیت های اساسی زیر است :
1- تعیین مشخصات نرم افزار
2- توسعه نرم افزار
3- اعتبار سنجی نرم افزار
4- تکامل نرم افزار
مدل فرایند نرم افزار چیست ؟
نمایش ساده ای از فرایند نرم افزار است که از جنبه خاصی ارائه شده است .
نمونه هایی از انواع مدل فرایند نرم افزار :
1- مدل جریان کار .
2- مدل جریان داده یا فعالیت .
3- مدل نقش/ فعالیت .
مدل های مختلفی که برای توسعه نرم افزار وجود دارد :
1- رهیافت آبشاری .
2- توسعه تکاملی .
3- تبدیل رسمی .
4- مونتاژ سیستم با قطعات قابل استفاده مجدد .
هزینه های مهندسی نرم افزار کدامند ؟
تقریباً 60 درصد هزینه ها مربوط به توسعه ، و 40 درصد مربوط به تست است .
کیس چیست ؟
سیستم های نرم افزاری اند که از فعالیت های فرایند نرم افزار بطور خودکار پشتیبانی می کنند .
توزیع هزینه فعالیت نرم افزار
مدل آبشاری

توسعه تکراری


روش های مهندسی نرم افزار کدامند ؟
رهیافت های ساخت یافته توسعه نرم افزار که حاوی مدل های سیستم ، نشانه گذاری ها ، قواعد ، توصیه طراحی و راهنمای فرایند است .
این روش ها باید تعدادی قطعات را در اختیار داشته باشند :
1- توصیف های مدل سیستم
2- قوانین
3- پیشنهادات
4- راهنمای فرایند
صفات نرم افزار خوب کدامند ؟
1- قابلیت نگهداری
2- قابلیت اتکا
3- کار آمدی
4- قابلیت استفاده
مسئولیت تخصصی و اخلاقی
1- محرمانگی.
2- صلاحیت.
3- حقوق معنوی.
4- سوء استفاده از کامپیوتر.
فصل2
سیستم های اجتماعی - تکنیکی
سیستم :
یک مجموعه هدفمند از قطعات مرتبط به هم است که با هم کار می کنند تا هدفی را بر آورده نمایند .
سیستم هایی که شامل نرم افزار هستند :
1- سیستم های کامپیوتری تکنیکی .
2- سیستم های اجتماعی- تکنیکی .
ویژگی های اصلی سیستم های اجتماعی- تکنیکی :
1- ویژگی های جدیدی که به ویژگی های سیستم به عنوان یک کل مربوط می شود .
2- اغلب غیر قطعی اند .
3- بسط سیستم برای پشتیبانی از اهداف سیستم فقط به خود سیستم بستگی ندارد .
ویژگی های جدید سیستم :
1- ویژگی های عملکردی .
2- ویژگی های غیر عملکردی .
مثال هایی از ویژگی های جدید :
1- حجم .
2- قابلیت اعتماد .
3- امنیت.
4- قابلیت ترمیم و بکارگیری.
عوامل موثردرقابلیت اعتماد سیستم :
1- قابلیت اعتماد سخت افزار .
2- قابلیت اعتماد نرم افزار .
3- قابلیت اعتماد اپراتور .
مهندسی سیستم ها :
فعالیت تعیین مشخصات، طراحی، پیاده سازی، اعتبار سنجی، استقرار ونگهداری سیستم های اجتماعی- تکنیکی می باشد .
تفاوت های بین فرایند مهندسی سیستم و فرایند توسعه نرم افزار:
1- وجود حوزه محدود برای کار مجدد در اثنای توسعه سیستم.
2- پیچیدگی نظام های داخلی .
فرایند مهندسی سیستم :

تعریف خواسته های سیستم :
این فعالیت، عملکرد و خواص اساسی و مطلوب سیستم را مشخص می کند .
انواع خواسته ها :
1- خواسته های عملکردی انتزاعی .
2- ویژگی های سیستم .
3- خواصی که سیستم نباید از خود نشان دهد.
طراحی سیستم :
مشخص می کند که عملکرد سیستم چگونه باید توسط قطعات مختلف سیستم انجام شود .
فعالیت های موجود در این فرایند :
1- تقسیم بندی خواسته ها .
2- شناسایی زیر سیستم ها .
3- انتساب خواسته ها به زیر سیستم ها .
4- تعیین عملکرد زیر سیستم ها .
5- تعریف واسط های زیر سیستم .
فرایند طراحی سیستم :

مدل سازی سیستم :
در اثنای خواسته ها و طراحی سیستم ، سیستم باید بصورت مجموعه ای از قطعات و روابط بین آنها مدل سازی شود .
سیستم به چند زیر سیستم تجزیه می شود که هر زیر سیستم می تواند به زیر سیستم های دیگری تجزیه شود تا قطعات عملکردی به دست آیند .
توسعه زیر سیستم :
در این فرایند ، زیر سیستم هایی که در اثنای طراحی سیستم شناسایی شدند ، پیاده سازی می شوند .
جامعیت زیر سیستم :
زیر سیستم هایی که مستقل از هم توسعه داده شدند، در کنار هم قرار می گیرند تا سیستم کامل ایجاد کنند .
تکامل سیستم :
سیستم های بزرگ ، در اثنای زندگی شان، باید تکامل یابند تا خطاهای موجود در خواسته های اصلی سیستم را اصلاح کنند و خواسته های جدید را برآورده نمایند .
تجزیه سیستم :
سیستم پس از طول عمر مفید عملیاتی آن، کنار گذاشته می شود .
سازمان ها ، افراد و سیستم های کامپیوتری
عوامل سازمانی و انسانی در محیط سیستم که طراحی سیستم را تحت تاثیر قرار دهند :
1- تغییرات فرایند .
2- تغییرات شغل .
3- تغییرات سازمانی .
فرایند تهیه سیستم :

فرایند های تهیه، توسعه و عملیاتی :

فرایند تهیه :
این فرایند به تصمیم گیری در مورد بهترین روش دستیابی یک سازمان به سیستم و بهترین تهیه کننده سیستم مربوط می شود .
فرایندهای عملیاتی :
فرایند هایی هستند که در بکارگیری از سیستم برای رسیدن به اهدافش نقش دارد .
سیستم های کهنه :
سیستم های کامپیوتری اجتماعی – تکنیکی هستند که در گذشته ایجاد شدند و معمولاً از فن آوری قدیمی تر استفاده می نمایند .
قطعات سیستم کهنه :
1- سخت افزار سیستم
2- نرم افزار پشتیبان .
3- نرم افزارهای کاربردی .
4- داده های کاربردی .
5- فرایند تجاری .
6- قوانین و سیاستهای تجاری .
مدل لایه ای سیستم های قدیمی
فرایند های تجاری
نرم افزار کاربردی
نرم افزار پشتیبان
سخت افزار
فصل3
سیستم های حیاتی
سیستم های حیاتی :
سیستم هایی هستند که شکست می تواند منجر به ضررهای اقتصادی ، خرابی فیزیکی یا آسیب رسانی به انسان می شود .
سه نوع سیستم حیاتی وجود دارد :
1- سیستم های حیاتی امنیتی .
2- سیستم های حیاتی مأموریتی .
3- سیستم های حیاتی تجاری .
مهم ترین ویژگی سیستم های حیاتی قابلیت اعتماد می باشد.
دلایل اهمیت ویژگی قابلیت اعتماد:
1- سیستم هایی که قابل اعتماد و امن نیستند توسط کاربران رد می شوند .
2- هزینه های شکست سیستم ممکن است خیلی زیاد باشد .
3- سیستم بی اعتماد ممکن است اطلاعات را از بین ببرد .
قطعاتی از سیستم حیاتی که ممکن است دچار مشکل شود :
1- سخت افزار سیستم .
2- نرم افزار سیستم .
3- اپراتورهای انسانی .
قابلیت اتکای سیستم :
به معنای درجه ای از اعتماد کاربر به سیستم که مطابق خواسته او عمل می کند ودر کاربرد عادی با شکست مواجه نمی شود .
چهار بعد اصلی قابلیت اعتماد :
1- قابلیت دسترسی .
2- قابلیت اعتماد .
3- امنیت
4- حفاظت .
منحنی هزینه/ قابلیت اتکا

ویژگی های دیگری که در قابلیت اتکا می توان در نظر گرفت :
1- قابلیت ترمیم .
2- قابلیت نگهداری .
3- قابلیت بقا .
4- تحمل عیب .
ابعاد قابلیت اتکا

قابلیت دسترسی :
احتمال این که سیستم در نقطه ای از زمان فعال باشد و سرویس های درخواستی را تحویل دهد .
قابلیت اعتماد :
احتمال انجام عملیات بدون خطا در مدت زمان معین و در محیط خاصی و برای هدف خاص .
اصطلاحات قابلیت اتکا :
1- خرابی سیستم .
2- خطای سیستم .
3- عیب سیستم .
4- خطا یا اشتباه انسان .
سه روش مکمل برای بهبود قابلیت اعتماد :
1- اجتناب از خرابی .
2- کشف وحذف عیب .
3- تحمل عیب .
امنیت :
سیستم های امنیتی حیاتی آنهایی هستند که عملیات سیستم همواره امن باشد . یعنی حتی اگر سیستم خراب شود نباید به افراد و محیط آسیب برساند.
نرم افزار امنیتی حیاتی دو دسته اند :
1- نرم افزار های حیاتی امنیتی اولیه .
2- نرم افزار های حیاتی امنیتی ثانویه .
به دلایل زیر سیستم قابل اعتماد الزاماً
امن نیست :
1- مشخصات ممکن است کامل نباشد .
2- بد عمل کردن سخت افزار ممکن است باعث شود که رفتار سیستم قابل پیش بینی نباشد و نرم افزار را در محیطی پیش بینی نشده ارائه دهد.
3- اپراتور سیستم ممکن است ورودیی را تولید کند که به تنهایی نادرست نباشد اما در وضعیت خاصی منجر به عملکرد بد سیستم شود .
سه روش مکمل برای بهبود امنیت :
1- اجتناب از خطر .
2- تشخیص و رفع خطر .
3- محدود کردن خسارت .
حفاظت :
صفتی از سیستم است که توانایی سیستم را در حفاظت از خودش در مقابل حملات خارجی که ممکن است سهوی یا عمدی باشند، منعکس می سازد .
اصطلاحات حفاظتی :
1- افشاگری .
2- آسیب پذیری .
3- حمله .
4- تهدیدها .
5- کنترل .
از طریق تهاجم خارجی ، سه نوع خسارت ممکن است پیش آید :
1- عدم پذیرش سرویس .
2- تخریب برنامه ها و داده ها .
3- افشاگری اطلاعات محرمانه .
سه روش مکمل برای بهبود امنیت :
1- اجتناب از آسیب پذیری .
2- تشخیص و خنثی سازی حمله .
3- محدود کردن افشاگری .
سیستم های حیاتی
سیستم های حیاتی :
سیستم هایی هستند که شکست می تواند منجر به ضررهای اقتصادی ، خرابی فیزیکی یا آسیب رسانی به انسان می شود .
سه نوع سیستم حیاتی وجود دارد :
1- سیستم های حیاتی امنیتی .
2- سیستم های حیاتی مأموریتی .
3- سیستم های حیاتی تجاری .
مهم ترین ویژگی سیستم های حیاتی قابلیت اعتماد می باشد.
دلایل اهمیت ویژگی قابلیت اعتماد:
1- سیستم هایی که قابل اعتماد و امن نیستند توسط کاربران رد می شوند .
2- هزینه های شکست سیستم ممکن است خیلی زیاد باشد .
3- سیستم بی اعتماد ممکن است اطلاعات را از بین ببرد .
قطعاتی از سیستم حیاتی که ممکن است دچار مشکل شود :
1- سخت افزار سیستم .
2- نرم افزار سیستم .
3- اپراتورهای انسانی .
قابلیت اتکای سیستم :
به معنای درجه ای از اعتماد کاربر به سیستم که مطابق خواسته او عمل می کند ودر کاربرد عادی با شکست مواجه نمی شود .
چهار بعد اصلی قابلیت اعتماد :
1- قابلیت دسترسی .
2- قابلیت اعتماد .
3- امنیت
4- حفاظت .
منحنی هزینه/ قابلیت اتکا

ویژگی های دیگری که در قابلیت اتکا می توان در نظر گرفت :
1- قابلیت ترمیم .
2- قابلیت نگهداری .
3- قابلیت بقا .
4- تحمل عیب .
ابعاد قابلیت اتکا

قابلیت دسترسی :
احتمال این که سیستم در نقطه ای از زمان فعال باشد و سرویس های درخواستی را تحویل دهد .
قابلیت اعتماد :
احتمال انجام عملیات بدون خطا در مدت زمان معین و در محیط خاصی و برای هدف خاص .
اصطلاحات قابلیت اتکا :
1- خرابی سیستم .
2- خطای سیستم .
3- عیب سیستم .
4- خطا یا اشتباه انسان .
سه روش مکمل برای بهبود قابلیت اعتماد :
1- اجتناب از خرابی .
2- کشف وحذف عیب .
3- تحمل عیب .
امنیت :
سیستم های امنیتی حیاتی آنهایی هستند که عملیات سیستم همواره امن باشد . یعنی حتی اگر سیستم خراب شود نباید به افراد و محیط آسیب برساند.
نرم افزار امنیتی حیاتی دو دسته اند :
1- نرم افزار های حیاتی امنیتی اولیه .
2- نرم افزار های حیاتی امنیتی ثانویه .
به دلایل زیر سیستم قابل اعتماد الزاماً
امن نیست :
1- مشخصات ممکن است کامل نباشد .
2- بد عمل کردن سخت افزار ممکن است باعث شود که رفتار سیستم قابل پیش بینی نباشد و نرم افزار را در محیطی پیش بینی نشده ارائه دهد.
3- اپراتور سیستم ممکن است ورودیی را تولید کند که به تنهایی نادرست نباشد اما در وضعیت خاصی منجر به عملکرد بد سیستم شود .
سه روش مکمل برای بهبود امنیت :
1- اجتناب از خطر .
2- تشخیص و رفع خطر .
3- محدود کردن خسارت .
حفاظت :
صفتی از سیستم است که توانایی سیستم را در حفاظت از خودش در مقابل حملات خارجی که ممکن است سهوی یا عمدی باشند، منعکس می سازد .
اصطلاحات حفاظتی :
1- افشاگری .
2- آسیب پذیری .
3- حمله .
4- تهدیدها .
5- کنترل .
از طریق تهاجم خارجی ، سه نوع خسارت ممکن است پیش آید :
1- عدم پذیرش سرویس .
2- تخریب برنامه ها و داده ها .
3- افشاگری اطلاعات محرمانه .
سه روش مکمل برای بهبود امنیت :
1- اجتناب از آسیب پذیری .
2- تشخیص و خنثی سازی حمله .
3- محدود کردن افشاگری .
فصل4
فرایند های نرم افزار
فرایند نرم افزار مجموعه ای از فعالیت هاست که منجر به تولید محصول نرم افزاری می شود
فعالیت های اساسی که در تمام فرایند های نرم افزاری مشترکند :
1- تعیین مشخصات نرم افزار .
2- طراحی و پیاده سازی نرم افزار .
3- اعتبار سنجی نرافزار .
4- تکامل نرم افزار.
مدل های فرایند نرم افزار :
1- مدل آبشاری .
2- توسعه تکاملی .
3- مهندسی نرم افزار مبتنی بر قطعه .
چرخه حیات نرم افزار :

مدل آبشاری :
مدل معروف فرایند توسعه نرم افزار است که از سایر فرایندهای مهندسی ناشی می شود و شامل مراحل زیر می شود :
1- تحلیل و تعریف خواسته ها .
2- طراحی سیستم و نرم افزار .
3- پیاده سازی و تست واحد .
4- جامعیت و تست سیستم .
5- به کارگیری و نگهداری .
توسعه تکاملی :
سیستمی ایجاد می شود و به تدریج اصلاح می گردد تا سیستم نهایی توسعه یابد .
دو نوع توسعه تکاملی وجود دارد :
1- توسعه اکتشافی .
2- ساخت نمونه اولیه موقتی .
در این سیستم دو اشکال وجود دارد :
1- فرایند قابل مشاهده نیست .
2- سیستم ها چندان ساخت یافته نیستند .
توسعه تکاملی :

توسعه نرم افزار مبتنی بر قطعه :
در این روش استفاده مجدد به عنوان ابزاری برای توسعه سریع سیستم است و شامل مراحل زیر است :
1- تحلیل قطعه .
2- اصلاح خواسته ها .
3- طراحی سیستم با استفاده مجدد .
4- توسعه و جامعیت .
توسعه سیستم مبتنی بر استفاده مجدد :

تکرار فرایند :
فعالیت های فرایند در پاسخ به تغییر در خواست ها ، تکرار خواهد شد .
دو مدل فرایند برای پشتیبانی از تکرار فرایند ارائه شدند .
1- تحویل تدریجی .
2- توسعه مارپیچی .
تحویل تدریجی :
امتیازات مدل توسعه تدریجی :
1- لازم نیست مشتریان صبر کنند تا کل سیستم تحویل داده شود. اولین مرحله ای که انجام شد، خواسته های حیاتی آن را پاسخ می دهد و نرم افزار می تواند به کارگرفته شود.
2- مشتریان می توانند از مراحل اولیه به عنوان الگو ، استفاده کنند .
3- ریسک کمتری در مورد خرابی پروژه وجود دارد .
4- چون سرویس هایی با اولویت بالاتر، زودتر تحویل داده می شوند، بنابر این بخش های مهم سیستم ، بیشتر مورد تست قرار می گیرند .
توسعه تدریجی :

توسعه مارپیچی :
این مدل فرایند نرم افزار را بصورت دنباله هایی از فعالیت ها نشان می دهدکه از فرایندی به فرایند دیگر عقبگرد می شود. این فرایند بصورت مارپیچ نشان داده می شود .
هر حلقه در مارپیچ به چهار قطاع تقسیم می شود :
1- تنظیم هدف .
2- برآورد و کاهش ریسک .
3- توسعه و اعتبار سنجی .
4- برنامه ریزی .
فعالیت های فرایند :
هر فرایند دارای چهار فعالیت اصلی است :
1- تعیین مشخصات نرم افزار یا مهندسی خواسته ها.
2- توسعه یا طراحی و پیاده سازی نرم افزار.
3- اعتبار سنجی نرم افزار .
4- تکامل نرم افزار .
تعیین مشخصات نرم افزار
فرایند درک و تعریف سرویس های مورد نیاز سیستم و مشخص کردن قیدهای روی عملیات و توسعه سیستم است .
مراحل اصلی در فرایند مهندسی خواسته ها :
1- مطالعه امکان سنجی .
2- استخراج و تحلیل خواسته .
3- تعیین مشخصات خواسته ها .
4- اعتبارسنجی خواسته ها .
فرایند مهندسی خواسته ها

طراحی و پیاده سازی نرم افزار
فرایند تبدیل مشخصات سیستم به سیستم اجرایی است .
فعالیت های فرایند طراحی عبارتند از :
1- طراحی معماری .
2- مشخصات انتزاعی .
3- طراحی واسط .
4- طراحی قطعه .
5- طراحی ساختمان داده ها .
6- طراحی الگوریتم .
روش های ساخت یافته از یک یا چند مدل سیستم که در زیر آمده است پشتیبانی می کند :
1- مدل شیء .
2- مدل توالی .
3- مدل تغییر حالت .
4- مدل ساختاری .
5- مدل جریان داده .
اعتبارسنجی نرم افزار
اعتبارسنجی نرم افزار سعی می کند نشان دهد که سیستم با مشخصاتش جور در می آید .
مراحل فرایند تست عبارت اند از:
1- تست قطعه و واحد .
2- تست سیستم .
3- تست پذیرش .
فرایند اشکالزدایی :

فرایند تست :

تکامل نرم افزار
شامل انجام تغییرات پس از بکارکیری است .

فرایند یکنواخت
RUP می گوید مدل های فرایند عادی، نمای یکتایی از فرایند را ارائه می کند .
از سه دیدگاه توصیف شده است :
1- دیدگاه پویا : مراحل مدل را در طول زمان نشان می دهد.
2- دیدگاه ایستا : فعالیت های انجام شده فرایند را نشان می دهد.
3- دیدگاه عملی : اعمال مناسبی که باید در اثنای فرایند اجرا شود را مشخص می کند .
مراحل موجود در RUP
1- شروع : ایجاد یک حالت تجاری برای سیستم .
2- اکتشاف : توسعه ودرک دامنه مسئله، ایجاد چارچوب معماری برای سیستم، برنامه ریزی پروژه و شناسایی ریسک های مهم پروژه .
3- ساخت : باطراحی سیستم، برنامه نویسی و تست سروکار دارد.
4- انتقال : ایجاد یک سیستم مستند سازی شده
دیدگاه عملی شش عمل خوب پیشنهاد می کند :
1- توصیف نرم افزار به طور تکراری .
2- مدیریت خواسته ها .
3- از معماری های مبتنی بر قطعه استفاده کنید .
4- نرم افزار را بطور ویژوال مدل سازی کنید .
5- کیفیت نرم افزار را مدل سازی کنید .
6- تغییرات در نرم افزار را کنترل کنید .
جریانهای کار ایستا درRUP
1- مدل سازی تجاری .
2- خواسته ها .
3- تحلیل و طراحی .
4- پیاده سازی .
5- تست .
6- استقرار.
7- پیکربندی و تغییر مدیریت .
8- مدیر پروژه .
9- محیط .
مهندسی نرم افزار به کمک کامپیوتر
نرم افزاری برای پشتیبانی ازفعالیت های فرایند نرم افزاری بکارمی رود و شامل فعالیت های زیر است:
1- توسعه مدل های گرافیکی سیستم .
2- درک طراحی با استفاده از دیکشنری .
3- تولید واسط کاربر .
4- اشکالزدایی برنامه از طریق آماده سازی داده هایی راجع به برنامه در حال اجرا .
5- ترجمه خودکار برنامه ها از نسخه قدیمی به نسخه های جدید آن .
دیدگاهها برای دسته بندی کیس:
1- دیدگاه عملکردی .
2- دیدگاه فرایندی .
3- دیدگاه جامعیت .
پیشنهاد فوگتا برای دسته بندی سیستم های کیس :
1- ابزارها .
2- محیط کاری .
3- محیط .
فرایند های نرم افزار
فرایند نرم افزار مجموعه ای از فعالیت هاست که منجر به تولید محصول نرم افزاری می شود
فعالیت های اساسی که در تمام فرایند های نرم افزاری مشترکند :
1- تعیین مشخصات نرم افزار .
2- طراحی و پیاده سازی نرم افزار .
3- اعتبار سنجی نرافزار .
4- تکامل نرم افزار.
مدل های فرایند نرم افزار :
1- مدل آبشاری .
2- توسعه تکاملی .
3- مهندسی نرم افزار مبتنی بر قطعه .
چرخه حیات نرم افزار :

مدل آبشاری :
مدل معروف فرایند توسعه نرم افزار است که از سایر فرایندهای مهندسی ناشی می شود و شامل مراحل زیر می شود :
1- تحلیل و تعریف خواسته ها .
2- طراحی سیستم و نرم افزار .
3- پیاده سازی و تست واحد .
4- جامعیت و تست سیستم .
5- به کارگیری و نگهداری .
توسعه تکاملی :
سیستمی ایجاد می شود و به تدریج اصلاح می گردد تا سیستم نهایی توسعه یابد .
دو نوع توسعه تکاملی وجود دارد :
1- توسعه اکتشافی .
2- ساخت نمونه اولیه موقتی .
در این سیستم دو اشکال وجود دارد :
1- فرایند قابل مشاهده نیست .
2- سیستم ها چندان ساخت یافته نیستند .
توسعه تکاملی :

توسعه نرم افزار مبتنی بر قطعه :
در این روش استفاده مجدد به عنوان ابزاری برای توسعه سریع سیستم است و شامل مراحل زیر است :
1- تحلیل قطعه .
2- اصلاح خواسته ها .
3- طراحی سیستم با استفاده مجدد .
4- توسعه و جامعیت .
توسعه سیستم مبتنی بر استفاده مجدد :

تکرار فرایند :
فعالیت های فرایند در پاسخ به تغییر در خواست ها ، تکرار خواهد شد .
دو مدل فرایند برای پشتیبانی از تکرار فرایند ارائه شدند .
1- تحویل تدریجی .
2- توسعه مارپیچی .
تحویل تدریجی :
امتیازات مدل توسعه تدریجی :
1- لازم نیست مشتریان صبر کنند تا کل سیستم تحویل داده شود. اولین مرحله ای که انجام شد، خواسته های حیاتی آن را پاسخ می دهد و نرم افزار می تواند به کارگرفته شود.
2- مشتریان می توانند از مراحل اولیه به عنوان الگو ، استفاده کنند .
3- ریسک کمتری در مورد خرابی پروژه وجود دارد .
4- چون سرویس هایی با اولویت بالاتر، زودتر تحویل داده می شوند، بنابر این بخش های مهم سیستم ، بیشتر مورد تست قرار می گیرند .
توسعه تدریجی :

توسعه مارپیچی :
این مدل فرایند نرم افزار را بصورت دنباله هایی از فعالیت ها نشان می دهدکه از فرایندی به فرایند دیگر عقبگرد می شود. این فرایند بصورت مارپیچ نشان داده می شود .
هر حلقه در مارپیچ به چهار قطاع تقسیم می شود :
1- تنظیم هدف .
2- برآورد و کاهش ریسک .
3- توسعه و اعتبار سنجی .
4- برنامه ریزی .
فعالیت های فرایند :
هر فرایند دارای چهار فعالیت اصلی است :
1- تعیین مشخصات نرم افزار یا مهندسی خواسته ها.
2- توسعه یا طراحی و پیاده سازی نرم افزار.
3- اعتبار سنجی نرم افزار .
4- تکامل نرم افزار .
تعیین مشخصات نرم افزار
فرایند درک و تعریف سرویس های مورد نیاز سیستم و مشخص کردن قیدهای روی عملیات و توسعه سیستم است .
مراحل اصلی در فرایند مهندسی خواسته ها :
1- مطالعه امکان سنجی .
2- استخراج و تحلیل خواسته .
3- تعیین مشخصات خواسته ها .
4- اعتبارسنجی خواسته ها .
فرایند مهندسی خواسته ها

طراحی و پیاده سازی نرم افزار
فرایند تبدیل مشخصات سیستم به سیستم اجرایی است .
فعالیت های فرایند طراحی عبارتند از :
1- طراحی معماری .
2- مشخصات انتزاعی .
3- طراحی واسط .
4- طراحی قطعه .
5- طراحی ساختمان داده ها .
6- طراحی الگوریتم .
روش های ساخت یافته از یک یا چند مدل سیستم که در زیر آمده است پشتیبانی می کند :
1- مدل شیء .
2- مدل توالی .
3- مدل تغییر حالت .
4- مدل ساختاری .
5- مدل جریان داده .
اعتبارسنجی نرم افزار
اعتبارسنجی نرم افزار سعی می کند نشان دهد که سیستم با مشخصاتش جور در می آید .
مراحل فرایند تست عبارت اند از:
1- تست قطعه و واحد .
2- تست سیستم .
3- تست پذیرش .
فرایند اشکالزدایی :

فرایند تست :

تکامل نرم افزار
شامل انجام تغییرات پس از بکارکیری است .

فرایند یکنواخت
RUP می گوید مدل های فرایند عادی، نمای یکتایی از فرایند را ارائه می کند .
از سه دیدگاه توصیف شده است :
1- دیدگاه پویا : مراحل مدل را در طول زمان نشان می دهد.
2- دیدگاه ایستا : فعالیت های انجام شده فرایند را نشان می دهد.
3- دیدگاه عملی : اعمال مناسبی که باید در اثنای فرایند اجرا شود را مشخص می کند .
مراحل موجود در RUP
1- شروع : ایجاد یک حالت تجاری برای سیستم .
2- اکتشاف : توسعه ودرک دامنه مسئله، ایجاد چارچوب معماری برای سیستم، برنامه ریزی پروژه و شناسایی ریسک های مهم پروژه .
3- ساخت : باطراحی سیستم، برنامه نویسی و تست سروکار دارد.
4- انتقال : ایجاد یک سیستم مستند سازی شده
دیدگاه عملی شش عمل خوب پیشنهاد می کند :
1- توصیف نرم افزار به طور تکراری .
2- مدیریت خواسته ها .
3- از معماری های مبتنی بر قطعه استفاده کنید .
4- نرم افزار را بطور ویژوال مدل سازی کنید .
5- کیفیت نرم افزار را مدل سازی کنید .
6- تغییرات در نرم افزار را کنترل کنید .
جریانهای کار ایستا درRUP
1- مدل سازی تجاری .
2- خواسته ها .
3- تحلیل و طراحی .
4- پیاده سازی .
5- تست .
6- استقرار.
7- پیکربندی و تغییر مدیریت .
8- مدیر پروژه .
9- محیط .
مهندسی نرم افزار به کمک کامپیوتر
نرم افزاری برای پشتیبانی ازفعالیت های فرایند نرم افزاری بکارمی رود و شامل فعالیت های زیر است:
1- توسعه مدل های گرافیکی سیستم .
2- درک طراحی با استفاده از دیکشنری .
3- تولید واسط کاربر .
4- اشکالزدایی برنامه از طریق آماده سازی داده هایی راجع به برنامه در حال اجرا .
5- ترجمه خودکار برنامه ها از نسخه قدیمی به نسخه های جدید آن .
دیدگاهها برای دسته بندی کیس:
1- دیدگاه عملکردی .
2- دیدگاه فرایندی .
3- دیدگاه جامعیت .
پیشنهاد فوگتا برای دسته بندی سیستم های کیس :
1- ابزارها .
2- محیط کاری .
3- محیط .
+ نوشته شده در سه شنبه ۱۳۹۱/۰۷/۲۵ ساعت ۱:۲۷ ب.ظ توسط مــهـــدیـــه
|
با آرزوی موفقیت روزافزون تمام دوستان گرامی در لحظه لحظه زندگی!