مهندسی نرم افزار چیست؟

Download Report

Transcript مهندسی نرم افزار چیست؟

‫به نام خداوند جان و خرد‬
‫فصل نخست‬
‫مهندسي نرمافزار چيست؟‬
‫به سوي توليد بهتر نرمافزار‪ :‬اصول مهندسي نرمافزار‬
‫نوشته‪ :‬دكتر محسن صديقي ُمشكناني‬
‫‪www.sadighim.ir‬‬
‫فهرست مطالب‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫افراد و مسئوليتهايشان در قبال نرمافزار‬
‫نرمافزار خوب‬
‫چرخهي عمر و فرايند نرمافزار‬
‫مهندسي نرمافزار‬
‫چرا مهندسي نرمافزار؟ ‪ /‬اهميت مهندسي نرمافزار‬
‫مدل نرمافزار‬
‫چند مفهوم مرتبط‬
‫افراد و مسئوليتهايشان در قبال نرمافزار‬
‫‪‬‬
‫كارفرمايان‪ :‬خريداران و يا تصميمگيرندگان‬
‫‪‬‬
‫كاربران‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫متصديان‪ :‬مسئولين فعال نگاه داشتن محصول در محيط‬
‫اجرايي‬
‫توليدكنندگان‪ :‬دستاندكاران ايجاد نرمافزار‬
‫نگهداران‪ :‬مسئولين نگهداري از محصول‬
‫توزيعكنندگان و فروشندگان‪ :‬رابط بين توليدكنندگان و‬
‫كارفرمايان‬
‫نرمافزار خوب‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫از نظر كاربر‬
‫از نظر كارفرما‬
‫از نظر نگهدارنده‬
‫از نظر توزيعكننده و فروشنده‬
‫از نظر توليدكننده‬
‫چرخهي عمر و فرايند نرمافزار‬
‫‪‬‬
‫‪‬‬
‫تدوين مشخصات‬
‫توليد‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫تحليل‬
‫طراحي‬
‫پيادهسازي‬
‫آزمايش‬
‫استقرار‬
‫تكامل‬
‫بازنشستگي‬
‫مراحل ساخت نرم افزار‬
‫– ‪PROCESS MODEL‬‬
‫مسئله‬
‫‪A‬‬
‫بررسی و تایید‬
‫کاربر‬
‫گزارش تایید شده‬
‫مدیریت‬
‫کنترل‬
‫پروژه‬
‫مستند‬
‫سازی‬
‫مهندسی خواسته‬
‫ها‬
‫مشخصه خواسته ها‬
‫پیاده سازی‬
‫تحلیل خواسته ها‬
‫سیستم آماده آزمون‬
‫گزارش امکان‬
‫سنجی‬
‫بررسی و تایید‬
‫کاربر‬
‫سیستمی که کار میکند‬
‫گزارش تایید شده‬
‫استقرار سیستم‬
‫طراحی کالن‬
‫آزمون و تست‬
‫سیستم عملیاتی‬
‫نگهداری‬
‫سیستم اصالح شده‬
‫گزارش طراحی‬
‫کالن‬
‫طراحی‬
‫تفضیلی‬
‫مشخصه فنی‬
‫‪A‬‬
‫مهندسي نرمافزار‬
‫‪‬‬
‫بر اساس تعريف‬
‫‪‬‬
‫‪‬‬
‫بر اساس اهداف‬
‫‪‬‬
‫‪‬‬
‫ديدگاه نظاممند به توليد‪ ،‬كاركرد‪ ،‬نگهداري و بازنشستگي‬
‫نرمافزار‬
‫توليد نرمافزار باكيفيت‪ ،‬بهموقع و بهقيمت‬
‫بر اساس واژهها‬
‫‪‬‬
‫‪‬‬
‫نرمافزار‬
‫مهندسي‬
‫چرا مهندسي نرمافزار؟‪ /‬اهميت مهندسي‬
‫نرمافزار‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫سابقهي تاريخي‬
‫نقش و اهميت رو به تزايد‬
‫تقاضاي بيشتر‬
‫كاهش قيمت و افزايش توان سختافزار‬
‫افزايش سرمايهگذاري‬
‫ويژگيهاي نرمافزار‬
‫گراني و دشواري توليد نرمافزار‬
‫كمبود نيروي انساني متخصص‬
‫مدل نرمافزار‬
‫‪‬‬
‫‪‬‬
‫تجسم و تجريدي از كل فرايند نرمافزار (فصل‪)12‬‬
‫نقش مدل نرمافزار‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫معرفي مراحل مختلف فرايند نرمافزار و چهارچوب فعاليتهاي‬
‫هر مرحله‬
‫معرفي محصوالت هر مرحله‬
‫معرفي معيار(هاي) گذر از يك مرحله به مرحلهي ديگر‬
‫معرفي نظام عالمتگذاري‬
‫مدل توليد سريع‬
‫‪‬‬
‫تأكيد روي فرايند فزاينده و فوقالعاده سريع‬
‫مدل بلوغ قابليت‬
‫جدول‪ :1-1‬سطح بلوغ‬
‫سطح‬
‫فرايند‬
‫نام‬
‫‪1‬‬
‫بدوي )‪(initial‬‬
‫•پراكنده‪.‬‬
‫‪2‬‬
‫قابل تكرار )‪(repeatable‬‬
‫•موفقیتهاي تولید قابل تكرار هستند‪.‬‬
‫‪3‬‬
‫تعریف شده )‪(defined‬‬
‫•به خوبي مشخص و درك شده؛پ‬
‫•تعریف شده در رویههاي استاندارد؛‬
‫•با ابزارها و روشها؛‬
‫•تنها كمیت قابل پیشبیني است‪.‬‬
‫‪4‬‬
‫مدیریت شده به لحاظ كمیت‬
‫)‪(quantitatively managed‬‬
‫•استفاده از اندازهگیريهاي دقیق؛‬
‫•زیر فرایندهاي كنترل شده؛‬
‫•كیفیت قابل پیشبیني است‪.‬‬
‫‪5‬‬
‫بهینه شونده )‪(optimizing‬‬
‫•رشد مداوم؛‬
‫•رشد محصول و رشد فنّاوري؛‬
‫• هم فرایندهاي تعریف شده و هم مجموعه استانداردهاي سازماني؛‬
‫هدف فعالیتهاي رش ِد قابل اندازهگیري هستند‪.‬‬
‫هردو‬
‫ِ‬
‫چند مفهوم مرتبط‬
‫‪‬‬
‫تكرار و تكامل‬
‫چند مفهوم مرتبط‬
‫‪‬‬
‫تداوم فعاليتها‬
‫روش‪ ،‬روششناسي و رويكرد‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫روش‪ :‬دستورالعملها و دنبالهاي از گامها‬
‫روششناسي‪ :‬مجموعهاي مدون از شيوهها و راه و‬
‫رسم پيشنهادي و گاهي همراه با مواد و برنامهي‬
‫آموزشي رسمي‪ ،‬كارگاه و ابزار است (جدول‪)2-1‬‬
‫رويكرد‪ :‬انتخاب مدل و روش مورد نظر از مجموعه‬
‫مدلها و روشها و يا حتي خارج از آنها توسط‬
‫توليدكنندهي نرمافزار‬
‫ مثالهايي از روششناسي مهندسي نرمافزار‬:2-1‫جدول‬
Agile Unified Process (AUP)
Constructionist design methodology (CDM)
Dynamic Systems Development Method
Enterprise Unified Process (EUP)
Extreme Programming (XP) since 1999
Flowcharting
ICONIX Process (use case driven object modeling with UML)
Information Engineering (IE/IEM)
Jackson Structured Programming
Metaprogramming, subject of Charles Simonyi's doctoral thesis
MPMM
Object Oriented Design using Prototype Methodology (OODPM) since 1994
Open Unified Process
Praxis
Rational Unified Process (RUP)
Scrum (development)
Structured programming since 1969
Structure System Analysis and Design Method (SSADM)
System Development Methodology
Top-down programming
Virtual finite state machine (VFSM) since 1990's
Waterfall model