se2 2 system development lifecycle

54
ار ز ف رم ا ن ی س د ن ه م2 ار ز ف رم ا ن د ن ل و ت ه خ ر چ ار ن م کا ن س ح م هد% ش م ی س زدو ف گاه% ش ن دا

Upload: vahidvs

Post on 08-Jun-2015

112 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: SE2 2 System Development LifeCycle

2مهندسی نرم افزار

چرخه تولید نرم افزارمحسن کامیار

دانشگاه فردوسی مشهد

Page 2: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

( روند تولید نرم افزارSoftware Process) یک قالب کاری برای انجام فعالیت های الزم تا

رسیدن به یک نرم افزار مفید( مهندسی نرم افزارSoftware

Enginnering) تکنولوژی های مورد استفاده برای پیش رفتن در

مسیر یک روند تولید نرم افزاری شامل: سیاست گذاری کیفیت، روند تولید، روش

ها و ابزارها

Page 3: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

( تعریف مهندسی نرم افزارFritz Bauer) شامل ایجاد و به کارگیری مفاهیم مهندسی

برای به دست آوردن یک نرم افزار تجاری قابل اطمینان و کارا برروی امکانات سخت

افزاری موجود می باشد. مهندسی نرم افزار یک تکنولوژی الیه ای

به شکل زیر است.

سیاست های کیفیتیفرآیند هاروش هاابزارها

Page 4: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

هر فرآیند شامل تعدادی محدوده کلیدی( می باشد که Key Process Areaفرآیند )

تعیین کننده محصوالت )مدل ها، مستندات، داده ها، گزارش ها، فرم ها و ...(، نقاط

(، کیفیت قابل دسترس Mile Stonesمرزی )و مدیریت تغییرات می باشد.

ابزارها ممکن است در قسمت های مختلفیمورد استفاده قرار گیرند.

CASE (Computer Aided Software Engineering)

Page 5: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

بعضی از انواع ابزارهایCASE:BPM

JBPMBEA Aqua LogicIBM Web Sphere

Model AnalyzerRational Suit

MDA (Model Driven Architectures)Open Blue Lab

Page 6: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

،در یک روند مهندسی هدف تحلیل، طراحیساخت، درستی یابی و مدیریت موجودیت

های تکنولوژیک می باشد. بنابراین به طور کلی می توان این سؤال ها

را اساسی دانست؟مسئله چیست؟ خصوصیت مهم مورد استفاده برای حل مسئله

چیست؟روند عملی نمودن راه حل چگونه است؟

Page 7: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

چطور باید محصول ساخته شود؟ با چه روندی می توان خطاهای موجود در

طراحی و ساخت را کشف نمود؟ روند پشتیبانی از محصول برای ایجاد تغییرات

جهت افزایش کارایی، نیازهای جدید و ... چگونه باید باشد؟

سه فاز اصلی را می توان برای مهندسینرم افزار در نظر گرفت

فاز تعریف

Page 8: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

فاز توسعهفاز پشتیبانی

در فاز معرفی شناخت های زیر فراهم میگردند

چه اطالعاتی باید پردازش شوندچه کارکردها و کارایی مد نظر می باشدچه واسط کاربری باید طراحی گرددچه محدودیت های طراحی موجود استمعیار درستی یابی سیستم چیست

Page 9: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

فاز توسعه به این فعالیت ها می پردازدساختار نگهداری داده هاساختار پیاده سازی یک کارکرد باید چگونه باشد چگونه می توان نیازهای واسط کاربر را تبدیل

به جزئیات فنی نمود چطور طراحی به یک زبان برنامه نویسی تبدیل

شودروند آزمایش و درستی یابی چگونه است

Page 10: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

مسائل مطرح در فاز پشتیبانیانجام تغییرات جهت کارایی بهتر

این تغییرات در دسته های زیر خالصه می شوند تصحیح: رفع مواردی که بر اساس نیاز مشتری

طراحی شده اند اما به درستی عمل نمی کنند تطابق: ایجاد تغییرات برای سازگاری با شرایط

محیطی جدید )تغییر نیازها، تغییر زیرساخت ها و ...(تقویت: افزودن خواسته های ناشناخته قبلی پیش گیری: انجام تغییراتی برای سهولت در انجام

تغییرات بعدی

Page 11: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

پیش گیری: اصطالحا مهندسی دوباره نیز گفته می( و به عنوان یک نمونه پیشرفته reengineeringشود )

( Businessدر مهندسی دوباره نیازهای کسب و کار) اشاره نمود.ERPمی توان به

عالوه بر این فازهای اساسی تعدادی فعالیت هایپوششی نیز در هر پروژه موجود است

کنترل و پیگیری پروژه بازبینی های منظم و رسمی تکنولوژی های مورد

استفاده انجام فعالیت های برای امکان تضمین کیفیت

محصول

Page 12: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

مدیریت پیکربندی محصولتولید مستنداتمدیریت استفاده مجدداندازه گیریمدیریت ریسک

Page 13: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

می توان یک چرخه را به شکل کلی زیربیان نمود:

قالب کاری کلی چرخه

فعالیت های پوششی

فعالیت های قالب مجموعه وظایفکاری

وظایف

نقاط مرزی، تحویل دادنی ها

نقاط اصلی برای تضمین کیفیت محصول

مستقل از نوع پروژه

وابسته به پروژه

Page 14: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

بر اساس طراحی چرخه می توان یکنمره به مجموعه استفاده کننده از آن

چرخه تخصیص داد که نشانه کیفیت محصوالت تولیدی می باشد. این سطوح را

Capability Maturityمدل بلوغ توانایی ها )Model.می گوییم )

Page 15: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

در حالت کلی می توان یک چرخه تولید .Lنرم افزار را مانند یک فراکتال دانست. )

B. S. Raccoon)

Page 16: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

در این بخش انواع چرخه های تولیدزیر را بررسی می کنیم

مدل های متوالی خطی( Linear Sequential)مدل های نمونه اولیه( Prototyping)مدل های تولید سریع کاربرد( Rapid

Application Development) مدل های روند تولید نرم افزار تکاملی

(Evolutionary Software Process)

Page 17: SE2 2 System Development LifeCycle

چرخه تولید نرم افزار

( مدل های توسعه مبتنی بر اجزاءComponent

Based)( مدل های روش های رسمیFormal Method)

Page 18: SE2 2 System Development LifeCycle

مدل های متوالی خطی

در این دسته از مدل ها که به چرخه عمر( و یا مدل Classic Life Cycleکالسیک )( نیز مشهورند Water Fall Modelآبشاری )

فعالیت های اصلی زیر را داریم:تحلیل نیازهای نرم افزاری

حوزه داده ای مرتبطکارکردهای مورد نیازکارایی مورد نیازواسط کاربر مورد نیاز

Page 19: SE2 2 System Development LifeCycle

مدل های متوالی خطی

طراحیساختار داده هامعماری نرم افزارطراحی واسط کاربرجزئیات اجرای یک کارکرد

تولید کدآزمایش

جزئیات منطق

Page 20: SE2 2 System Development LifeCycle

مدل های متوالی خطی

جزئیات کارکردیپشتیبانی

ممکن است هر کدام از دسته فعالیت هایپیشین را برروی یک قسمت از محصول

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

توسط تیم های تولید نرم افزار می باشد

Page 21: SE2 2 System Development LifeCycle

مدل های متوالی خطی

با این وجود مشکالتی در این روش موجوداست:

بعضی از پروژه های واقعی دارای ماهیت ترتیبینیستند. تغییرات در نیازهای سیستم باعث تداخل

در عملکرد تیم تولید خواهد شد. مشتری نمی تواند در ابتدای کار تمام نیازهای خود

را منعکس نماید مشتری باید صبر زیادی داشته باشد تا محصول را

در آخرین مرحله مشاهده نماید. ممکن است مشکالت جدی در محصول وجود داشته باشد.

Page 22: SE2 2 System Development LifeCycle

مدل های نمونه اولیه

نمونه های موارد استفاده را می توان بهصورت زیر داشت:

مشتری اهداف کلی خود را می شناسد تیم تولید در مورد کارایی یک الگوریتم

اطمینان ندارد در جاهایی که احتیاج به ارتباط نزدیک بین

نیازهای مشتریسیستم و انسان وجود داردساخت

تست توسط مشتری

Page 23: SE2 2 System Development LifeCycle

مدل های نمونه اولیه

مشکالت موجود در این روش را می توان درموارد زیر خالصه نمود

مشتری چون نسخه های نسبتا سریعی را ازمحصول می بیند متوجه کیفیت محصول نیست و ممکن است پس از مدتی موجه شود که باید کل

نرم افزار از نو نوشته شود تا نیازهای کیفیتی برآورده شوند

چون تولید به سرعت صورت می گیرد ممکن استسازگاری با نسخه خاصی از سیستم عامل داشته

باشد.

Page 24: SE2 2 System Development LifeCycle

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

این مدل در اصل ترکیبی از دو روشترتیبی و مبتنی بر اجزاء می باشد.

در صورت وجود شناخت کافی در موردمشخصات و اجزاء سیستم قابل استفاده

خواهد بود. عمدتا برای تولید سیستم های اطالعاتی در

روزه مورد استفاده 90 تا 60بازه های زمانی قرار می گیرد.

Page 25: SE2 2 System Development LifeCycle

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

گام های اصلی در هر جزء شامل موارد زیر میباشد:

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

مدل کردن داده هاتشخیص اشیاء داده ای مورد استفاده

مدل کردن فرآیندهاتولید کاربرد

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

Page 26: SE2 2 System Development LifeCycle

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

آزمایش و تحویل محصول با تست هر زیر سیستم هزینه تست کامل کاهش

می یابد

اگر بتوان یک پروژه بزرگ را چنان بخش ماه 3بندی نمود که هر بخش حداکثر در

بهترین RADقابل پیاده سازی باشد آنگاه گزینه است.

Page 27: SE2 2 System Development LifeCycle

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

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

مدل کردنکسب و

کارمدل کردن

داده ها

مدل کردن فرآیندها

تولید کاربرد

آزمایش و تحویل محصول

گروه اول

مدل کردن

کسب و کار

مدل کردن داده ها

مدل کردن فرآیندها

تولید کاربرد

آزمایش و تحویل محصول

گروه دوممدل کردن

کسب و کار

مدل کردن داده ها مدل

کردن فرآیندها تولید

کاربردآزمایش و

تحویل محصول

گروه سوم

Page 28: SE2 2 System Development LifeCycle

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

مشکالت عمده این روش را می توان بهشرح زیر ذکر نمود:

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

دارد تا تیم های الزم ساخته شده و هماهنگی بین آن ها صورت پذیرد

درRAD باید ارتباط متقابل بسیار نزدیکی بین مشتری و تیم تولید وجود داشته باشد، در غیر

این صورت پروژه با شکست مواجه خواهد شد.

Page 29: SE2 2 System Development LifeCycle

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

همه کاربردها برایRAD ،مناسب نیستند سیستم بایدکامال قسمت یندی شده باشد

RAD برای کاربردهایی که از نظر تکنولوژی دارای ریسک باالیی هستند قابل استفاده نمی

باشد.

Page 30: SE2 2 System Development LifeCycle

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

یک نرم افزار با توجه به وابستگی که به نیازهایانسانی دارد باید مدام در حال تغییر باشد. شاید بهترین راه ارتباط دائم با مشتری برای برآورده

کردن نیازهای وی باشد اما حدودی که در یک پروژه برروی زمان و هزینه

وجود دارد اجازه چنین کاری را نمی دهد بهترین راه ارائه روندی است که در آن این تعادل

بین نیازها و محدودیت منابع پروژه لحاظ شده باشد

Page 31: SE2 2 System Development LifeCycle

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

حتی در روند نمونه اولیه نیز مسئله تکاملنیازها و تغییر آن ها دیده نشده است، بلکه تنها

نمایی از شناخت انجام شده نمایش داده می شود تا تنها صحت شناخت انجام شده تأیید

شود. همه روشهای تکاملی مبتنی بر تعدادی تکرار

می باشند که در تمام این تکرارها همه گام های اساسی تولید حضور دارند و تنها سهم آن

ها در هر تکرار متفاوت است.

Page 32: SE2 2 System Development LifeCycle

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

این مدل ها را می توان در دسته های زیربررسی نمود:

مدل افزایشیمدل حلزونیمدل حلزونی برد – بردمدل توسعه همزمان

Page 33: SE2 2 System Development LifeCycle

مدل افزایشی

در این روش در هر تکرار یک روند خطیمتوالی مورد استفاده قرار می گیرد

نتیجه تکرار اول را می توان محصولهسته ای اصلی دانست که مهم ترین

کارکردها را پوشش می دهد. در پایان شناخت و تحلیل هر گام برنامه

ریزی برای کارکردهایی که باید در تکرار بعدی تحویل شوند صورت می گیرد.

Page 34: SE2 2 System Development LifeCycle

مدل افزایشی

نمای کلی از این روش را می توان بهصورت زیر دید:

Page 35: SE2 2 System Development LifeCycle

مدل افزایشی

تفاوت اصلی با روند نمونه اولیه را می توان دراین دانست که در این روند در پایان هر تکرار

یک محصول قابل استفاده داریم و نه یک نما از محصول نهایی

:این مدل از دو جنبه مناسب می باشد در صورتی که در ابتدای پروژه نیروی انسانی کافی

در دسترس نباشد و یا اطالعی از تعداد نیروی انسانی مورد نیاز نداشته باشیم، پس از تهیه نسخه اولیه در صورت نیاز نیروهای جدید جذب می گردند

Page 36: SE2 2 System Development LifeCycle

مدل افزایشی

می توان ریسک ها را مدیریت نمود. به عنوانمثال یک قطعه سخت افزاری مورد نیاز در

یکی از بخش ها ممکن است آماده نباشد. با انتقال آن به تکرارهای آخر این ریسک

مدیریت بهتری می شود.

Page 37: SE2 2 System Development LifeCycle

مدل حلزونی

این روند مهم ترین گزینه برای تولید سریعکاربردها در قالب چندین نسخه می باشد

در این روند در تکرارهای اولیه محصول در حدمدل های داده و ... می باشد اما در گام های پایانی می توان به سمت محصوالت واقعی تر

حرکت نمود. در این روند هر تکرار دارای تعدادی ناحیه به نام

6 تا 3نواحی وظایف است. این ناحیه ها بین عدد می باشند.

Page 38: SE2 2 System Development LifeCycle

مدل حلزونی

.هر ناحیه شامل تعدادی وظایف کاری می باشداین وظایف می توانند شامل فعالیت های

پوششی که پیش از این صحبت کردیم نیز باشند.ناحیه های وظایف شامل موارد زیر می باشند

ارتباط با مشتری: طرح ریزی روند مناسب ارتباط بامشتری و انجام ارتباط جهت کسب اطالعات

برنامه ریزی: تعیین منابع مورد نیاز، زمان بندی ودیگر طرح های الزم جهت پیشبرد پروژه

Page 39: SE2 2 System Development LifeCycle

مدل حلزونی

تحلیل ریسک: استخراج ریسک ها تکنیکی ومدیریتی

مهندسی: تهیه نمایی از کاربرد ساخت و تحویل: تولید، تست، نصب و پشتیبانی

کاربران برآورد مشتری: دریافت بازخوردهای کاربران در

مورد تولیدات صورت گرفته مدل حلزونی در اصل یک پیاده سازی از مدل

خطی در یک قالب کاری تکاملی می باشد

Page 40: SE2 2 System Development LifeCycle

مدل حلزونی

نمای کلیCommunication

Page 41: SE2 2 System Development LifeCycle

مدل حلزونی

نکات قابل توجه در مورد وظایف کاری هر وظیفه را می توان به عنوان یک پروژه در

حین پروژه کلی دید که در مرحله ای آغاز و در مرحله ای به پایان می رسد

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

موفقیت این مدل با توجه به استفاده از آندر پروژه های بسیار بزرگ کامال وابسته به

تجربه در تعیین ریسک ها می باشد.

Page 42: SE2 2 System Development LifeCycle

مدل حلزونی برد – برد

در شرایط ایده آل )مشتری به درستی تمامنیاز ها را منتقل کرده است و تیم پیاده سازی

این نیاز ها را به درستی درک کرده است( مدل حلزونی بسیار خوب عمل خواهد کرد.

اما این شرایط ایده آل عمدتا پیش نمی آیندو برای دستیابی به اطالعات کامل باید به

داشتن بخشی تحت عنوان ارتباط با مشتری آن را در طول هر تکرار پخش نماییم.

Page 43: SE2 2 System Development LifeCycle

مدل حلزونی برد-برد

این فعالیت ها را می توان در موارد زیرخالصه نمود:

( تعیین کننده افراد کلیدیStakeholder افرادی :)که بیشترین اهمیت را به کارکردهای مورد نظر

در آن مرحله می دهند تعیین معیارهای افراد کلیدی برای سنجش

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

محدودیت های تیم تولید با همکاری فرد کلیدی

Page 44: SE2 2 System Development LifeCycle

مدل حلزونی برد-برد

تعیین اهداف، محدودیت ها و گزینه های مختلفدر تکرار بعدی

ارزیابی گزینه های مختلف برای فائق آمدن برریسک ها

تعیین کارکردهای قابل پیاده سازی در تکرار بعدیتعیین اعتبار محصول و فرآیندهای استخراج شدهمرور مدل های طراحی شده و دریافت نظرات

Page 45: SE2 2 System Development LifeCycle

مدل حلزونی برد-برد

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

دارد( اهداف چرخه زندگیLife Cycle Objectives :)

اهداف هر فعالیت اصلی در چرخه تولید را تعیین می نماید. مانند اهداف و کارکردهای اصلی از تولید این

سیستم( ساختار چرخه زندگیLife Cycle Architecture :)

اهدافی که در طول روند تولید باید در هر مرحله به دست آیند. به عنوان مثال تشخیص اجزاء آماده و

قابل استفاده در تولید فعلی

Page 46: SE2 2 System Development LifeCycle

مدل حلزونی برد-برد

( قابلیت عملیاتی اولیهInitial Operational Capability اهدافی که باید در طول استقرار :)

مورد بررسی قرار گیرند. از جمله نیروهای مورد نیاز جهت همکاری، آماده سازی سایت

کامپیوتری و ... این نقاط مرزی به تعیین پایان موفقیت

آمیز یک تکرار کمک شایانی می نمایند.

Page 47: SE2 2 System Development LifeCycle

مدل توسعه همزمان

مشکل اصلی در تمام روندهای نرم افزارتوضیح داده شده تا کنون عدم شناخت الزم در

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

مختلف می باشد. در یک سیستم بزرگ ممکن است تمام فعالیت

های شناخت، تحلیل، طراحی، پیاده سازی، تست، تست جهت یکپارچه سازی اجزاء و ... در

بخش های مختلف در حال انجام باشند.

Page 48: SE2 2 System Development LifeCycle

مدل توسعه همزمان

شاید راه حل بهتر برای کنترل چنینفعالیت هایی وجود یک شمای کلی از

ارتباط بین فرآیندها باشد تا بتوان کنترل بهتری برروی اجرای آن ها داشت

راه حلی که تا کنون در این زمینه مطرحشده است طراحی نمودارهای حالت برای

هر فعالیت است. ورود به این نمودار حالت با رخ دادن یک رویداد صورت می گیرد.

Page 49: SE2 2 System Development LifeCycle

مدل توسعه همزمان

به عنوان نمونهنمودار مقابل را می

توان برای فعالیت تحلیل در نظر

گرفت:

Page 50: SE2 2 System Development LifeCycle

مدل توسعه همزمان

به عنوان مثال فرض کنید که در زمان طراحیبه یک تناقض در تحلیل برخورد می کنیم. چنین

از نمودار حاالت doneتناقضی ما را به حالت Awaitingوارد می کند و از آنجا باید وارد حالت

Changes.شویم در این مدل، فعالیت ها از دو دیدگاه مختلف

نگریسته می شوند: دیدگاه سیستمی: طراحی، یکپارچه سازی و

استقراردیدگاه اجزاء: طراحی و ایجاد نمونه

Page 51: SE2 2 System Development LifeCycle

مدل های توسعه مبتنی بر اجزاء

تکنولوژی های شیءگرا نمونه بسیار مهمی درزمینه طراحی مبتنی بر اجزاء محسوب می

گردند. این مدل در اصل یک نمونه از روندهای تکاملی

محسوب می شود. اما اصوال تکرارهای خود را بر اساس اجزاء اصلی سیستم معرفی می نماید.

این مدل به علت تأکید برروی استفاده مجدد از درصد و 70اجزاء توانسته است چرخه تولید را تا

درصد کاهش دهد و به 84هزینه کلی را تا درصدی را 26،2صورت کلی میانگین سود دهی

درصدی صنعت نرم 16،9نسبت به میانگین افزار به همراه داشته باشد.

Page 52: SE2 2 System Development LifeCycle

مدل های توسعه مبتنی بر اجزاء

نمای کلی از روند مبتنی بر اجزاء

Page 53: SE2 2 System Development LifeCycle

مدل های توسعه مبتنی بر اجزاء

Unified software development process یک نمونه از روندهای مبتنی بر اجزاء است که

Unified Modelingوارد صنعت شده و از زبان Language برای بیان ساختارهای مورد نیاز

جهت پیشبرد روند تولید استفاده می نماید. یک نمونه تجاری از این روندRational Unified

Process می باشد که نرم افزارهای کمکی زیادی برای این روند تولید شده است.

Page 54: SE2 2 System Development LifeCycle

مدل های روش های رسمی

در این دسته از روندها یک زبان ریاضی برایبیان مشخصات نرم افزار مورد استفاده قرار

می گیرد و از این طریق می توان ابهام ها، تناقض ها و ... را با استفاده از یک تحلیل

ریاضی به دست آورد. یکی از پرکاربردترین روش های طراحی

شده بر پایه این دسته از روندها را می توان Cleanroom Software Engineering.دانست

مهم ترین زبان در بیان مشخصات سیستم نام دارد.Zنیز زبان