كارگاه مهندسي نرم افزار

Download Report

Transcript كارگاه مهندسي نرم افزار

‫كارگاه مهندس ي نرم افزار‬
‫مدرس ‪ :‬شهراد رضايي‬
‫متدولوژي‬
‫قانونمند كردن توليد نرم افزار براي جلوگيري از بروز مشكل‬
‫‪‬‬
‫‪‬‬
‫فرمولي را كه براي توليد و توسعه نرم افزار ارائه مي دهند را‬
‫متدولوژي مي گويند‪.‬‬
‫‪‬‬
‫يك متدولوژي چرخه حيات نرم افزار را مشخص مي كند ‪.‬‬
‫انواع متدولوژی‬
‫‪.1‬‬
‫متدولوژی سنتی‬
‫‪.2‬‬
‫متدولوژی فرآیند گرا‬
‫‪.3‬‬
‫متدولوژی ساختمان داده‬
‫‪.4‬‬
‫متدولوژی مدل سازی اطالعات‬
‫‪.5‬‬
‫متدولوژی ش یءگرا‬
‫چرخه حيات توليد و توسعه نرم افزار يا ‪SDLC‬‬
‫‪‬‬
‫مخفف ‪ System Development Life Cycle‬مي‌باشد ‪.‬‬
‫مراحلي را كه طي توليد و توسعه نرم افزار به كار مي‌روند را چرخه حيات‬
‫توليد و توسعه نرم افزار مينامند ‪.‬‬
‫انواع چرخه‌هاي حيات توليد و توسعه نرم افزار‬
‫‪‬‬
‫چرخه حيات سيستم‌هاي قديمي يا ‪TLC‬‬
‫‪‬‬
‫چرخه حيات سيستم‌هاي ش ي گرا يا ‪OODLC‬‬
‫چرخه حيات سيستم‌هاي قديمي يا‪TLC‬‬
‫‪‬‬
‫در گذشته‬
‫‪TLC‬مخفف ‪ Traditional Life Cycle‬است ‪‌ .‬‬
‫چون‌ برنامه ها به صورت فرايند گرا يا ‪Process Oriented‬‬
‫نوشته مي‌شدند ‌از روش ‪ TLC‬براي توليد ‌و توسعه نرم افز ‌ار استفاده‬
‫مي شد ‪.‬‬
‫‪‬‬
‫بيشتر ‌از نمودارهاي ‪ DFD‬و ‪ ERD‬استفاده مي‌شد‬
‫‌‬
‫در اين روش‬
‫‌‬
‫مدلهای مورد استفاده در ‪TLC‬‬
‫‪‬‬
‫روش حلزونی )‪(Spiral‬‬
‫‪‬‬
‫تولید پیش الگو )‪(Prototyping‬‬
‫‪‬‬
‫‪RAD‬‬
‫‪‬‬
‫‪SCRUM‬‬
‫‪‬‬
‫‪DSDM‬‬
‫مدل آبشاري يا‪Water Fall‬‬
‫‪‬‬
‫مدل آبشاري از معروف ترين متدولوژي هاي ‪ TLC‬است كه كاربرد‬
‫زيادي در گذشته داشته و مبناي اساس ي براي مدل هاي ش ي گرا هم‬
‫همين مدل ‪ WaterFall‬است‪.‬‬
‫چرخه حيات سيستم هاي ش ي گرا يا ‪OODLC‬‬
‫‪‬‬
‫اين نوع چرخه حيات بعد از بوجود آمدن روش جديد برنامه نويس ي‬
‫يعني روش ش ي گرا بوجود آمد ‪.‬‬
‫‪‬‬
‫زبانهايي مانند ‪ JAVA ، #C‬و ‪ ++C‬و بسياري ديگر از زبانهاي برنامه‬
‫نويس ي كه قابليت پياده سازي خواص ‪( Object Oriented‬ش ي‬
‫گرايي) را دارا هستند امروزه از مهمترين زبانهاي برنامه نويس ي دنيا‬
‫محسوب مي شوند ‪.‬‬
‫مهمترين عامل برتري روش‪ Object Oriented‬نسبت به روش ‪Process‬‬
‫‪Oriented‬‬
‫‪‬‬
‫استقالل هويتي دارند ‪ .‬يعني هر بخش عمال از ساير بخشها مجزا است ‪.‬‬
‫‪‬‬
‫پايداري سيستم يا ‪ System Stability‬است‪ .‬به اين معني كه سيستم در‬
‫مقابل تغييرات مقاومت داشته باشد ‪ .‬يعني پيدايش نيازمنديهاي جديد منجر به اين‬
‫نشود كه سيستم نياز به تغييرات كلي داشته باشد‪.‬‬
‫‪‬‬
‫قابليت نگهداري يا ‪ : Main ability‬به دليل جدا بودن اشيا ‪ ،‬نگهداري سيستم‬
‫پس از ارائه به مشتري نيز به راحتي امكان پذير است ‪ .‬مثال ورژن هاي جديد برنامه‬
‫هايي كه با شماره هاي پشت سر هم وارد بازار مي شوند به همين دليل است ‪.‬‬
‫‪ ‬قابليت استفاده مجدد اجزا يا ‪Reusable‬‬
‫‪Component‬‬
‫‪ ‬داشتن ديد واقعي به دنياي اطراف ‪.‬‬
‫‪ ‬قابليت دسترس ي به اطالعات و داده ها‬
‫‪‬‬
‫دوستانه بودن از نظر كاربر يا ‪ User Friendly‬بودن برنامه‪.‬‬
‫خواص اساس ی متدولوژی ش یءگرا‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫‪.8‬‬
‫روش های متداول برای سازماندهی‬
‫تجرید‬
‫کپسوله کردن یا مخفی سازی اطالعات‬
‫وراثت‬
‫چند شکلی‬
‫ارتباطات پیامی‬
‫همروندی‬
‫قابلیت استفاده مجدد‬
‫ی‬
‫مجرد ساز ‌‬
‫ی) اصل نادیده گرفتن جنبه هایی از حوزه مسئلله اسئت کئه‬
‫تجرید(مجرد ساز ‌‬
‫بئئه هئئدف امن مئئا مربئئو نیسئئتند‪ .‬ایئئن اصئئل همهنئئين بئئه معنئئای خالص ئه‬
‫سئئازی مئئی باشئئد عنئئی آنکئئه مئئا مئئی تئئوانیم بئئه مسئئلله از ی ئ دیئئد کلئئی‪ ،‬بئئه‬
‫راحتی و بدون لحاظ کردن جزئیات‪ ،‬نگاه کنئیم‪ .‬مثئل نقشئه کشئور‪ ،‬شئهر و‬
‫منطقه‪.‬‬
‫کپسوله کردن‬
‫منظ ئئور از کپس ئئوله ک ئئردن ای ئئن اس ئئت ک ئئه جزئی ئئات ی ئ فراین ئئد ی ئئا عم ئئل از دی ئد‬
‫اسئئتفاده کننئئده آن مخفئئی باشئئد‪ .‬همهنئئين صئئفات و اطالعئئات یئ شئ یء از‬
‫دیئ ئئد سئ ئئایر اشئ ئئیاء و اج ئ ئزاء مخفئ ئئی باشئ ئئد و ارتبئ ئئا از طری ئ ئ ارسئ ئئال پیئ ئئام‬
‫صورت گيرد‪.‬‬
‫وراثت‬
‫‪‬‬
‫وراثت‪ ،‬روش ی برای بیان شباهت ها است‪ .‬به عنوان مثال“ برای مدل‬
‫سازی‌ انسان های ی دانشگاه می توانیم آنها را به اشیاء“ دانشجو‪،‬‬
‫استاد ‌و کارمند“ تفکی کنیم‪ .‬اما برخی خصوصیات این اشیاء‪ ،‬مشابه‬
‫یکدیگر می باشند‪ ،‬نظير‪ ” :‬نام‪ ،‬نام خانوادگی‪ ،‬تلفن و‪ “. .‬برای اجتناب ‌از‬
‫‌‬
‫تکر ‌ار خصوصیات مشترک اشیاء کالس ی به نام ” انسان“ ایجاد می کنیم‬
‫که صفات آن همان صفات تکراری‌ سه کالس اصلی دانشگاه است‪.‬‬
‫هر ی ‌از آن سه کالس‪ ،‬تمام خصوصیات این کالس جدید را به‬
‫سپس ‌‬
‫ارث می گيرند‪.‬‬
‫شکل وراثت‬
‫‪17‬‬
‫‪ .5‬چند شکلی‬
‫چن ئئد ش ئئکلی ی ئئا چن ئئد ریخت ئئی‪ ،‬ب ئئه معن ئئای ی ئ چي ئئز ب ئئودن و چن ئئد ش ئ ل داش ئئتن‬
‫است‪ .‬مثل آب که دارای چند ش ِل جامد‪ ،‬ما ع و گاز ظاهر می شود‪.‬‬
‫‪19‬‬
‫‪ .6‬ارتباطات پیامی‬
‫ارتباطئئات پیئئامی راهئئی اسئئت کئئه اشئئیاء در ی ئ متئئدولوژی ش ئ یءگرا بئئا یک ئدیگر‬
‫ارتب ئئا برقئ ئرار م ئئی کنن ئئد‪ .‬ش ئئویه روی ئئه ه ئئا و تواب ئئع در زب ئئان ه ئئای برنام ئئه‬
‫نویسئ ی کئئه بئئا ارسئئال پئئارامتر از نقطئئه ای درون برنامئئه‪ ،‬ی ئ رویئئه یئا تئئابع‬
‫فراخوانی می شود‪.‬‬
‫‪20‬‬
‫‪ .7‬همروندی‬
‫در‬
‫همرونئئدی‪ ،‬اجئرای هئئم زمئئان دو یئئا چنئئد فعالیئئت سیسئئتم اسئئت‪ .‬بئرای مثئئال ‌‬
‫یئ چئاپگر‪ ،‬مئی تئوانیم هئم زمئان بئا چئاو نامئه مئورد نظرمئان‪ ،‬نشئئانه(آرم)‬
‫ش ئئرکت را ني ئئز ب ئئه عن ئئوان زمین ئئه نام ئئه و ه ئئم زم ئئان ب ئئا م ئئتن نام ئئه ب ئئه چ ئئاو‬
‫برسانیم‪.‬‬
‫‪21‬‬
‫‪ .8‬قابلیت استفاده مجدد‬
‫اسئئتفاده مجئئدد قئئابلیتی اسئئت کئئه بیئئان گئئر اسئئتفاده دوبئئاره از چيئئزی اسئئت کئئه‬
‫هم اکنون وجود دارد‪.‬قابلیت استفاده مجدد خاصیتی است کئه هئر رو‌ز از‬
‫آن اسئئتفاده مئئی کنئئیم ماننئئد کائئی کئئردن اطالعئئات و در اختیئئار دیگئران قئرار‬
‫دادن‪.‬‬
‫‪22‬‬
‫یک مدل ش یء گرا‬
‫م ئئدل ش ئ یء گ ئرا مجموع ئئه ای اس ئئت از اش ئئیاء و ک ئئالس ه ئئا ک ئئه در جه ئئت پی ئئاده‬
‫سئئازی رفتئئار کئئل سیسئئتم بئئه یکئئدیگر پیغئئام مئئی فرسئئتند و اعمئئا ی را انجئئام‬
‫مئئی دهنئئد‪.‬ی ئ ش ئ یء‪ ،‬س ئئاختمان داده و رفت ئئار مربوطئئه اش را ی ئ ج ئئا و ب ئئه‬
‫طور مجتمع در خود نگاه میدارد‪.‬‬
‫‪23‬‬
‫مدل ‪up‬‬
‫‪‬‬
‫ي را‬
‫در روش هاي قديمي يك مدل خاص مثل مدل آبشار ‌‬
‫همانگونه كه ‌‬
‫نيز ‌از‬
‫در اين بخش ‌‬
‫بررس ي كرديم ‌و مزايا ‌و معايب آن را بررس ي نموديم ‌‬
‫در سيستم هاي ش ي گرا به بررس ي مدل معروف‬
‫ميان مدل هاي موجود ‌‬
‫‌و نامي ‪ UP‬مي پردازيم ‪.‬‬
‫‪‬‬
‫مخفف ‪ Unified Processing‬است ‪ .‬اين روش يكي از روشهاي‬
‫توليد نرم افزار است كه با چرخه حيات سيستم را با تاكيد روي تكرارها‬
‫مدل مي كند‪.‬‬
‫معرفی ‪RUP‬‬
‫‪‬‬
‫‪ RUP‬ی فرایند تولید نرم افزار است که توسط شرکت ‪rational‬‬
‫ایجاد شده است (هم اکنون ‪ )IBM‬و هدف آن کم به تولید کنندگان‬
‫و مدیران صنعت نرم افزار است‪.‬‬
‫–‬
‫‪ RUP‬برای جنبه های مختلف تولید چيزهایی مانند نقشها‪ ،‬محصومت‪،‬‬
‫فعالیتها و گردش کار تعریف میکند‬
‫خالصه‬
‫فازها‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫آغاز ( ‪:) Inception‬‬
‫خير ‌و این تصمیم پس ‌از تولید ی‬
‫آغاز کنیم یا ‌‬
‫فاز تصمیم گرفته ایم که آیا پروژه را ‌‬
‫در انتهای این ‌‬
‫‌‬
‫‪ Business Case‬گرفته می شود‪.‬‬
‫اجرا ( ‪: )Elaboration‬‬
‫اکثر نیازمنديهای باقی مانده شناسایی شده اند ‌و ی معماری‌ مانع ( ‪sound‬‬
‫فاز ‌‬
‫در انتهای این ‌‬
‫‌‬
‫‪ )architecture‬برای نرم افز ‌ار بناشده است‪.‬‬
‫ساخت ( ‪:)Construction‬‬
‫در طی‬
‫فاز قبل ‌و تولید ی سری‌ افزا ش ‌بر روی نرم افز ‌ار ‌‬
‫کار روی معماری‌ حاصل ‌از ‌‬
‫فاز با ‌‬
‫در این ‌‬
‫‌‬
‫در محیط کار ‌بر ساخته می شود‪.‬‬
‫تعدادی تکرار‪ ،‬نسخه او ‌ل محصو ‌ل برای اجرا ‌‬
‫انتقال ( ‪:)Transition‬‬
‫نرم افز ‌ار ساخته شده به سایت مشتری‌ انتقال داده می شود ‌و بررس ی میگردد که آیا کام ‌ال نیازمنديهای‬
‫نيز تحویل می شود‪.‬‬
‫ی ‌‬
‫ی برطرف شده است؟ مستندات کاربر ‌‬
‫مشتر ‌‬
‫دیسیپلینهای فرایند‬
‫‪‬‬
‫مدلسازی تجاری‌‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫‪‬‬
‫درک ساختار و فعالیتهای سازمانی که قرار است سیستم در آنجا استقرار یابد‬
‫درک مشکالت فعلی در سازمان و شناسایی پتانسیل های بهبود‬
‫حصول اطمینان از اینکه مشتریان‪ ،‬کاربران نهایی و ایجاد کنندگان نرم افزار درک یکسان از‬
‫سازمان مقصد دارند‪.‬‬
‫بيرون کشیدن نیازمنديهای نرم افزاری که برای پشتیبانی سازمان مقصد مورد نیاز است‬
‫تشخیص نیازمندیها ‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫فراهم آوردن اساس تخمين هزینه و زمان ایجاد سیستم‬
‫بستن قرارداد با مشتری بر اساس آنهه سیستم باید انجام دهد‬
‫فراهم کردن درک بهتر از نیازمنديهای سیستم برای تولیدکنندگان‬
‫تعیين مرزهای سیستم‬
‫فراهم آوردن پایه ای برای طرح ریزی بخشهای فنی تکرارها‬
‫واسط کاربر سیستم با تاکید بر نیازها و اهداف کاربران تهیه می شود‬
‫دیسیپلینهای فرایند‬
‫‪‬‬
‫تحلیل و طراحی‪:‬‬
‫–‬
‫–‬
‫–‬
‫‪‬‬
‫طراحی سیستم نهایی بر اساس نیازمنديها‬
‫ایجاد ی معماری قوی برای سیستم‬
‫تطبی طراحی و پیاده سازی (وارد ساختن مالحظات خاص پیاده سازی )‪ ،‬ایجاد ی‬
‫طراحی کارآ‬
‫پیاده سازی‌‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫میه بندی زیرسیستم های پیاده سازی‌‬
‫کالسها و موجودیتها پیاده سازی می شوند (به ش ل فایلهای ‪ ،source‬باینريها‪ ،‬اجرایی‬
‫ها و ‪)...‬‬
‫انجام آزمون واحد بر روی مولفه ها‬
‫مجتمع کردن مولفه ها و ایجاد ی سیستم اجرایی‬
‫دیسیپلینهای فرایند‬
‫‪‬‬
‫‪‬‬
‫ن‪:‬‬
‫آزمو ‌‬
‫–‬
‫ارزیابی صحت تعامل بين موجودیتها‬
‫–‬
‫ارزیابی مجتمع سازی همه مولفه های نرم افزار‬
‫–‬
‫ارزیابی اینکه همه نیازمنديها بطور صحیح پیاده شده اند‬
‫–‬
‫شناسایی عیب ها و حصول اطمینان از اینکه قبل از استقرار مرتفع شده اند‪.‬‬
‫استقرار‪:‬‬
‫–‬
‫استقرار نرم افزار در محیط کاربری ( نصب‪ ،‬دسترس ی بر روی اینترنت‪ ،‬پیشنهاد‬
‫بخش ی از نرم افزار)‬
‫دیسیپلینهای پشتیبانی‬
‫‪‬‬
‫مدیریت پروژه‪:‬‬
‫–‬
‫–‬
‫–‬
‫‪‬‬
‫مدیریت تغیير و پیکر بندی‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫‪‬‬
‫مدیریت ریس‬
‫طرح ریزی ی پروژه تکرار شونده‬
‫مونیتور کردن پیشرفت پروژه‪ ،‬متری ها‬
‫پشتیبانی روشهای تولید‬
‫مراقبت ا ‌ز مجتمع بودن نرم افزار‬
‫حصول اطمینان از کامل بودن و صحت محصول پیکربندی شده‬
‫فراهم آوردن ی محیط مناسب برای تولید محصو ‌ل‬
‫فراهم آوردن قابلیت پاسخ به این سوال‪ :‬ی دستاورد توسط چه کس ی‪ ،‬کی و چرا تغیير یافته است‪.‬‬
‫آماده سازی محیط‪:‬‬
‫–‬
‫–‬
‫تمرکز اصلی بر پیکربندی فرایند برای ی پروژه است بعالوه تعیين ابزارها‬
‫تولید راهنمایی های برای پشتیبانی ی پروژه‬
‫تکرار )‪)Iteration‬‬
‫‪‬‬
‫تکرار ی گذر کامل از همه ‪Discipline‬ها شامل حداقل تشخیص‬
‫نیازمنديها‪ ،‬تحلیل و طراحی‪ ،‬پیاده سازی و آزمون است‪ .‬تکرار مانند ی‬
‫پروژه کوچ مدل آبشاری است‬
Rational Rose ‫نمودار هاي‬
Use-case
Class diagram
Sequence diagram
Colaboration Diagram
State digram
Activity diagram
Physical diagrams