SE2 2 System Development LifeCycle
Transcript of SE2 2 System Development LifeCycle
2مهندسی نرم افزار
چرخه تولید نرم افزارمحسن کامیار
دانشگاه فردوسی مشهد
چرخه تولید نرم افزار
( روند تولید نرم افزارSoftware Process) یک قالب کاری برای انجام فعالیت های الزم تا
رسیدن به یک نرم افزار مفید( مهندسی نرم افزارSoftware
Enginnering) تکنولوژی های مورد استفاده برای پیش رفتن در
مسیر یک روند تولید نرم افزاری شامل: سیاست گذاری کیفیت، روند تولید، روش
ها و ابزارها
چرخه تولید نرم افزار
( تعریف مهندسی نرم افزارFritz Bauer) شامل ایجاد و به کارگیری مفاهیم مهندسی
برای به دست آوردن یک نرم افزار تجاری قابل اطمینان و کارا برروی امکانات سخت
افزاری موجود می باشد. مهندسی نرم افزار یک تکنولوژی الیه ای
به شکل زیر است.
سیاست های کیفیتیفرآیند هاروش هاابزارها
چرخه تولید نرم افزار
هر فرآیند شامل تعدادی محدوده کلیدی( می باشد که Key Process Areaفرآیند )
تعیین کننده محصوالت )مدل ها، مستندات، داده ها، گزارش ها، فرم ها و ...(، نقاط
(، کیفیت قابل دسترس Mile Stonesمرزی )و مدیریت تغییرات می باشد.
ابزارها ممکن است در قسمت های مختلفیمورد استفاده قرار گیرند.
CASE (Computer Aided Software Engineering)
چرخه تولید نرم افزار
بعضی از انواع ابزارهایCASE:BPM
JBPMBEA Aqua LogicIBM Web Sphere
Model AnalyzerRational Suit
MDA (Model Driven Architectures)Open Blue Lab
چرخه تولید نرم افزار
،در یک روند مهندسی هدف تحلیل، طراحیساخت، درستی یابی و مدیریت موجودیت
های تکنولوژیک می باشد. بنابراین به طور کلی می توان این سؤال ها
را اساسی دانست؟مسئله چیست؟ خصوصیت مهم مورد استفاده برای حل مسئله
چیست؟روند عملی نمودن راه حل چگونه است؟
چرخه تولید نرم افزار
چطور باید محصول ساخته شود؟ با چه روندی می توان خطاهای موجود در
طراحی و ساخت را کشف نمود؟ روند پشتیبانی از محصول برای ایجاد تغییرات
جهت افزایش کارایی، نیازهای جدید و ... چگونه باید باشد؟
سه فاز اصلی را می توان برای مهندسینرم افزار در نظر گرفت
فاز تعریف
چرخه تولید نرم افزار
فاز توسعهفاز پشتیبانی
در فاز معرفی شناخت های زیر فراهم میگردند
چه اطالعاتی باید پردازش شوندچه کارکردها و کارایی مد نظر می باشدچه واسط کاربری باید طراحی گرددچه محدودیت های طراحی موجود استمعیار درستی یابی سیستم چیست
چرخه تولید نرم افزار
فاز توسعه به این فعالیت ها می پردازدساختار نگهداری داده هاساختار پیاده سازی یک کارکرد باید چگونه باشد چگونه می توان نیازهای واسط کاربر را تبدیل
به جزئیات فنی نمود چطور طراحی به یک زبان برنامه نویسی تبدیل
شودروند آزمایش و درستی یابی چگونه است
چرخه تولید نرم افزار
مسائل مطرح در فاز پشتیبانیانجام تغییرات جهت کارایی بهتر
این تغییرات در دسته های زیر خالصه می شوند تصحیح: رفع مواردی که بر اساس نیاز مشتری
طراحی شده اند اما به درستی عمل نمی کنند تطابق: ایجاد تغییرات برای سازگاری با شرایط
محیطی جدید )تغییر نیازها، تغییر زیرساخت ها و ...(تقویت: افزودن خواسته های ناشناخته قبلی پیش گیری: انجام تغییراتی برای سهولت در انجام
تغییرات بعدی
چرخه تولید نرم افزار
پیش گیری: اصطالحا مهندسی دوباره نیز گفته می( و به عنوان یک نمونه پیشرفته reengineeringشود )
( Businessدر مهندسی دوباره نیازهای کسب و کار) اشاره نمود.ERPمی توان به
عالوه بر این فازهای اساسی تعدادی فعالیت هایپوششی نیز در هر پروژه موجود است
کنترل و پیگیری پروژه بازبینی های منظم و رسمی تکنولوژی های مورد
استفاده انجام فعالیت های برای امکان تضمین کیفیت
محصول
چرخه تولید نرم افزار
مدیریت پیکربندی محصولتولید مستنداتمدیریت استفاده مجدداندازه گیریمدیریت ریسک
چرخه تولید نرم افزار
می توان یک چرخه را به شکل کلی زیربیان نمود:
قالب کاری کلی چرخه
فعالیت های پوششی
فعالیت های قالب مجموعه وظایفکاری
وظایف
نقاط مرزی، تحویل دادنی ها
نقاط اصلی برای تضمین کیفیت محصول
مستقل از نوع پروژه
وابسته به پروژه
چرخه تولید نرم افزار
بر اساس طراحی چرخه می توان یکنمره به مجموعه استفاده کننده از آن
چرخه تخصیص داد که نشانه کیفیت محصوالت تولیدی می باشد. این سطوح را
Capability Maturityمدل بلوغ توانایی ها )Model.می گوییم )
چرخه تولید نرم افزار
در حالت کلی می توان یک چرخه تولید .Lنرم افزار را مانند یک فراکتال دانست. )
B. S. Raccoon)
چرخه تولید نرم افزار
در این بخش انواع چرخه های تولیدزیر را بررسی می کنیم
مدل های متوالی خطی( Linear Sequential)مدل های نمونه اولیه( Prototyping)مدل های تولید سریع کاربرد( Rapid
Application Development) مدل های روند تولید نرم افزار تکاملی
(Evolutionary Software Process)
چرخه تولید نرم افزار
( مدل های توسعه مبتنی بر اجزاءComponent
Based)( مدل های روش های رسمیFormal Method)
مدل های متوالی خطی
در این دسته از مدل ها که به چرخه عمر( و یا مدل Classic Life Cycleکالسیک )( نیز مشهورند Water Fall Modelآبشاری )
فعالیت های اصلی زیر را داریم:تحلیل نیازهای نرم افزاری
حوزه داده ای مرتبطکارکردهای مورد نیازکارایی مورد نیازواسط کاربر مورد نیاز
مدل های متوالی خطی
طراحیساختار داده هامعماری نرم افزارطراحی واسط کاربرجزئیات اجرای یک کارکرد
تولید کدآزمایش
جزئیات منطق
مدل های متوالی خطی
جزئیات کارکردیپشتیبانی
ممکن است هر کدام از دسته فعالیت هایپیشین را برروی یک قسمت از محصول
اعمال نماید این مدل پرکاربردترین روند مورد استفاده
توسط تیم های تولید نرم افزار می باشد
مدل های متوالی خطی
با این وجود مشکالتی در این روش موجوداست:
بعضی از پروژه های واقعی دارای ماهیت ترتیبینیستند. تغییرات در نیازهای سیستم باعث تداخل
در عملکرد تیم تولید خواهد شد. مشتری نمی تواند در ابتدای کار تمام نیازهای خود
را منعکس نماید مشتری باید صبر زیادی داشته باشد تا محصول را
در آخرین مرحله مشاهده نماید. ممکن است مشکالت جدی در محصول وجود داشته باشد.
مدل های نمونه اولیه
نمونه های موارد استفاده را می توان بهصورت زیر داشت:
مشتری اهداف کلی خود را می شناسد تیم تولید در مورد کارایی یک الگوریتم
اطمینان ندارد در جاهایی که احتیاج به ارتباط نزدیک بین
نیازهای مشتریسیستم و انسان وجود داردساخت
تست توسط مشتری
مدل های نمونه اولیه
مشکالت موجود در این روش را می توان درموارد زیر خالصه نمود
مشتری چون نسخه های نسبتا سریعی را ازمحصول می بیند متوجه کیفیت محصول نیست و ممکن است پس از مدتی موجه شود که باید کل
نرم افزار از نو نوشته شود تا نیازهای کیفیتی برآورده شوند
چون تولید به سرعت صورت می گیرد ممکن استسازگاری با نسخه خاصی از سیستم عامل داشته
باشد.
مدل های تولید سریع کاربرد
این مدل در اصل ترکیبی از دو روشترتیبی و مبتنی بر اجزاء می باشد.
در صورت وجود شناخت کافی در موردمشخصات و اجزاء سیستم قابل استفاده
خواهد بود. عمدتا برای تولید سیستم های اطالعاتی در
روزه مورد استفاده 90 تا 60بازه های زمانی قرار می گیرد.
مدل های تولید سریع کاربرد
گام های اصلی در هر جزء شامل موارد زیر میباشد:
مدل کردن کسب و کارگردش اطالعات در بین بخش های مختلف کسب و کار
مدل کردن داده هاتشخیص اشیاء داده ای مورد استفاده
مدل کردن فرآیندهاتولید کاربرد
عمدتا از کدهای آماده برای تولید زیر سیستم ها استفادهمی شود
مدل های تولید سریع کاربرد
آزمایش و تحویل محصول با تست هر زیر سیستم هزینه تست کامل کاهش
می یابد
اگر بتوان یک پروژه بزرگ را چنان بخش ماه 3بندی نمود که هر بخش حداکثر در
بهترین RADقابل پیاده سازی باشد آنگاه گزینه است.
مدل های تولید سریع کاربرد
نمایی از مدل های تولید سریع کاربرد
مدل کردنکسب و
کارمدل کردن
داده ها
مدل کردن فرآیندها
تولید کاربرد
آزمایش و تحویل محصول
گروه اول
مدل کردن
کسب و کار
مدل کردن داده ها
مدل کردن فرآیندها
تولید کاربرد
آزمایش و تحویل محصول
گروه دوممدل کردن
کسب و کار
مدل کردن داده ها مدل
کردن فرآیندها تولید
کاربردآزمایش و
تحویل محصول
گروه سوم
مدل های تولید سریع کاربرد
مشکالت عمده این روش را می توان بهشرح زیر ذکر نمود:
برای پروژه های بسیار بزرگ اما قابل شکستن احتیاج به تعداد زیادی پرسنل RADاستفاده از
دارد تا تیم های الزم ساخته شده و هماهنگی بین آن ها صورت پذیرد
درRAD باید ارتباط متقابل بسیار نزدیکی بین مشتری و تیم تولید وجود داشته باشد، در غیر
این صورت پروژه با شکست مواجه خواهد شد.
مدل های تولید سریع کاربرد
همه کاربردها برایRAD ،مناسب نیستند سیستم بایدکامال قسمت یندی شده باشد
RAD برای کاربردهایی که از نظر تکنولوژی دارای ریسک باالیی هستند قابل استفاده نمی
باشد.
مدل های روند تولید نرم افزار تکاملی
یک نرم افزار با توجه به وابستگی که به نیازهایانسانی دارد باید مدام در حال تغییر باشد. شاید بهترین راه ارتباط دائم با مشتری برای برآورده
کردن نیازهای وی باشد اما حدودی که در یک پروژه برروی زمان و هزینه
وجود دارد اجازه چنین کاری را نمی دهد بهترین راه ارائه روندی است که در آن این تعادل
بین نیازها و محدودیت منابع پروژه لحاظ شده باشد
مدل های روند تولید نرم افزار تکاملی
حتی در روند نمونه اولیه نیز مسئله تکاملنیازها و تغییر آن ها دیده نشده است، بلکه تنها
نمایی از شناخت انجام شده نمایش داده می شود تا تنها صحت شناخت انجام شده تأیید
شود. همه روشهای تکاملی مبتنی بر تعدادی تکرار
می باشند که در تمام این تکرارها همه گام های اساسی تولید حضور دارند و تنها سهم آن
ها در هر تکرار متفاوت است.
مدل های روند تولید نرم افزار تکاملی
این مدل ها را می توان در دسته های زیربررسی نمود:
مدل افزایشیمدل حلزونیمدل حلزونی برد – بردمدل توسعه همزمان
مدل افزایشی
در این روش در هر تکرار یک روند خطیمتوالی مورد استفاده قرار می گیرد
نتیجه تکرار اول را می توان محصولهسته ای اصلی دانست که مهم ترین
کارکردها را پوشش می دهد. در پایان شناخت و تحلیل هر گام برنامه
ریزی برای کارکردهایی که باید در تکرار بعدی تحویل شوند صورت می گیرد.
مدل افزایشی
نمای کلی از این روش را می توان بهصورت زیر دید:
مدل افزایشی
تفاوت اصلی با روند نمونه اولیه را می توان دراین دانست که در این روند در پایان هر تکرار
یک محصول قابل استفاده داریم و نه یک نما از محصول نهایی
:این مدل از دو جنبه مناسب می باشد در صورتی که در ابتدای پروژه نیروی انسانی کافی
در دسترس نباشد و یا اطالعی از تعداد نیروی انسانی مورد نیاز نداشته باشیم، پس از تهیه نسخه اولیه در صورت نیاز نیروهای جدید جذب می گردند
مدل افزایشی
می توان ریسک ها را مدیریت نمود. به عنوانمثال یک قطعه سخت افزاری مورد نیاز در
یکی از بخش ها ممکن است آماده نباشد. با انتقال آن به تکرارهای آخر این ریسک
مدیریت بهتری می شود.
مدل حلزونی
این روند مهم ترین گزینه برای تولید سریعکاربردها در قالب چندین نسخه می باشد
در این روند در تکرارهای اولیه محصول در حدمدل های داده و ... می باشد اما در گام های پایانی می توان به سمت محصوالت واقعی تر
حرکت نمود. در این روند هر تکرار دارای تعدادی ناحیه به نام
6 تا 3نواحی وظایف است. این ناحیه ها بین عدد می باشند.
مدل حلزونی
.هر ناحیه شامل تعدادی وظایف کاری می باشداین وظایف می توانند شامل فعالیت های
پوششی که پیش از این صحبت کردیم نیز باشند.ناحیه های وظایف شامل موارد زیر می باشند
ارتباط با مشتری: طرح ریزی روند مناسب ارتباط بامشتری و انجام ارتباط جهت کسب اطالعات
برنامه ریزی: تعیین منابع مورد نیاز، زمان بندی ودیگر طرح های الزم جهت پیشبرد پروژه
مدل حلزونی
تحلیل ریسک: استخراج ریسک ها تکنیکی ومدیریتی
مهندسی: تهیه نمایی از کاربرد ساخت و تحویل: تولید، تست، نصب و پشتیبانی
کاربران برآورد مشتری: دریافت بازخوردهای کاربران در
مورد تولیدات صورت گرفته مدل حلزونی در اصل یک پیاده سازی از مدل
خطی در یک قالب کاری تکاملی می باشد
مدل حلزونی
نمای کلیCommunication
مدل حلزونی
نکات قابل توجه در مورد وظایف کاری هر وظیفه را می توان به عنوان یک پروژه در
حین پروژه کلی دید که در مرحله ای آغاز و در مرحله ای به پایان می رسد
ممکن است در بازه های زمانی چند تا از اینپروژه ها با هم فعال باشند
موفقیت این مدل با توجه به استفاده از آندر پروژه های بسیار بزرگ کامال وابسته به
تجربه در تعیین ریسک ها می باشد.
مدل حلزونی برد – برد
در شرایط ایده آل )مشتری به درستی تمامنیاز ها را منتقل کرده است و تیم پیاده سازی
این نیاز ها را به درستی درک کرده است( مدل حلزونی بسیار خوب عمل خواهد کرد.
اما این شرایط ایده آل عمدتا پیش نمی آیندو برای دستیابی به اطالعات کامل باید به
داشتن بخشی تحت عنوان ارتباط با مشتری آن را در طول هر تکرار پخش نماییم.
مدل حلزونی برد-برد
این فعالیت ها را می توان در موارد زیرخالصه نمود:
( تعیین کننده افراد کلیدیStakeholder افرادی :)که بیشترین اهمیت را به کارکردهای مورد نظر
در آن مرحله می دهند تعیین معیارهای افراد کلیدی برای سنجش
موفقیت یا شکست در آن تکرار تطبیق معیارهای سنجش موفقیت با معیارها و
محدودیت های تیم تولید با همکاری فرد کلیدی
مدل حلزونی برد-برد
تعیین اهداف، محدودیت ها و گزینه های مختلفدر تکرار بعدی
ارزیابی گزینه های مختلف برای فائق آمدن برریسک ها
تعیین کارکردهای قابل پیاده سازی در تکرار بعدیتعیین اعتبار محصول و فرآیندهای استخراج شدهمرور مدل های طراحی شده و دریافت نظرات
مدل حلزونی برد-برد
عالوه بر اینها سه نقطه مرزی برای تعیینپیشرفت درست روند تولید در هر تکرار وجود
دارد( اهداف چرخه زندگیLife Cycle Objectives :)
اهداف هر فعالیت اصلی در چرخه تولید را تعیین می نماید. مانند اهداف و کارکردهای اصلی از تولید این
سیستم( ساختار چرخه زندگیLife Cycle Architecture :)
اهدافی که در طول روند تولید باید در هر مرحله به دست آیند. به عنوان مثال تشخیص اجزاء آماده و
قابل استفاده در تولید فعلی
مدل حلزونی برد-برد
( قابلیت عملیاتی اولیهInitial Operational Capability اهدافی که باید در طول استقرار :)
مورد بررسی قرار گیرند. از جمله نیروهای مورد نیاز جهت همکاری، آماده سازی سایت
کامپیوتری و ... این نقاط مرزی به تعیین پایان موفقیت
آمیز یک تکرار کمک شایانی می نمایند.
مدل توسعه همزمان
مشکل اصلی در تمام روندهای نرم افزارتوضیح داده شده تا کنون عدم شناخت الزم در
مورد میزان پیشرفت واقعی سیستم به علت وجود فعالیت های همزمان از حیطه های
مختلف می باشد. در یک سیستم بزرگ ممکن است تمام فعالیت
های شناخت، تحلیل، طراحی، پیاده سازی، تست، تست جهت یکپارچه سازی اجزاء و ... در
بخش های مختلف در حال انجام باشند.
مدل توسعه همزمان
شاید راه حل بهتر برای کنترل چنینفعالیت هایی وجود یک شمای کلی از
ارتباط بین فرآیندها باشد تا بتوان کنترل بهتری برروی اجرای آن ها داشت
راه حلی که تا کنون در این زمینه مطرحشده است طراحی نمودارهای حالت برای
هر فعالیت است. ورود به این نمودار حالت با رخ دادن یک رویداد صورت می گیرد.
مدل توسعه همزمان
به عنوان نمونهنمودار مقابل را می
توان برای فعالیت تحلیل در نظر
گرفت:
مدل توسعه همزمان
به عنوان مثال فرض کنید که در زمان طراحیبه یک تناقض در تحلیل برخورد می کنیم. چنین
از نمودار حاالت doneتناقضی ما را به حالت Awaitingوارد می کند و از آنجا باید وارد حالت
Changes.شویم در این مدل، فعالیت ها از دو دیدگاه مختلف
نگریسته می شوند: دیدگاه سیستمی: طراحی، یکپارچه سازی و
استقراردیدگاه اجزاء: طراحی و ایجاد نمونه
مدل های توسعه مبتنی بر اجزاء
تکنولوژی های شیءگرا نمونه بسیار مهمی درزمینه طراحی مبتنی بر اجزاء محسوب می
گردند. این مدل در اصل یک نمونه از روندهای تکاملی
محسوب می شود. اما اصوال تکرارهای خود را بر اساس اجزاء اصلی سیستم معرفی می نماید.
این مدل به علت تأکید برروی استفاده مجدد از درصد و 70اجزاء توانسته است چرخه تولید را تا
درصد کاهش دهد و به 84هزینه کلی را تا درصدی را 26،2صورت کلی میانگین سود دهی
درصدی صنعت نرم 16،9نسبت به میانگین افزار به همراه داشته باشد.
مدل های توسعه مبتنی بر اجزاء
نمای کلی از روند مبتنی بر اجزاء
مدل های توسعه مبتنی بر اجزاء
Unified software development process یک نمونه از روندهای مبتنی بر اجزاء است که
Unified Modelingوارد صنعت شده و از زبان Language برای بیان ساختارهای مورد نیاز
جهت پیشبرد روند تولید استفاده می نماید. یک نمونه تجاری از این روندRational Unified
Process می باشد که نرم افزارهای کمکی زیادی برای این روند تولید شده است.
مدل های روش های رسمی
در این دسته از روندها یک زبان ریاضی برایبیان مشخصات نرم افزار مورد استفاده قرار
می گیرد و از این طریق می توان ابهام ها، تناقض ها و ... را با استفاده از یک تحلیل
ریاضی به دست آورد. یکی از پرکاربردترین روش های طراحی
شده بر پایه این دسته از روندها را می توان Cleanroom Software Engineering.دانست
مهم ترین زبان در بیان مشخصات سیستم نام دارد.Zنیز زبان