Presentation is loading. Please wait.

Presentation is loading. Please wait.

مقدمه ای بر مهندسی نرم افزار An Introduction to Software Engineering

Similar presentations


Presentation on theme: "مقدمه ای بر مهندسی نرم افزار An Introduction to Software Engineering"— Presentation transcript:

1 مقدمه ای بر مهندسی نرم افزار An Introduction to Software Engineering

2 فهرست بحران نرم افزار مفهوم مهندسی تعريف مهندسی نرم افزار
ماهيت نرم افزار و تفاوت مهندسی نرم افزار با ساير رشته های مهندسی کاربردهای نرم افزار اهميت مهندسی نرم افزار ارکان مهندسی نرم افزار تعريف متدلوژی نرم افزاری

3 بحران نرم افزار بحران نرم افزار اولين بار بصورت رسمی در کنفرانسی در سال 1968 ميلادی مطرح گرديد . عوامل اصلی اين بحران عبارتند از : هزينه بالای ايجاد نرم افزار تاخير در توليد و تحويل نرم افزار نگهداری پرهزينه نرم افزار پيشرفت سريع سخت افزار کيفيت پايين نرم افزار افزايش پيچيدگی کاربردها

4 تفاوت مهندس و محقق علوم يک محقق علوم با استفاده از دانش موجود ، دانش نوينی را استخراج می نمايد، ولی يک مهندس از دانش موجود در عمل برای يافتن بهترين راه حل مسئله استفاده می نمايد . يک مهندس به صرفه اقتصادی و قابليت اطمينان راه حل خود می انديشد.

5 کار چند نفره برای توليد چند نسخه (version) از برنامه
تعريف مهندسی نرم افزار تعريف مهندسی نرم افزار از ديد پارناس (Parnas) : کار چند نفره برای توليد چند نسخه (version) از برنامه تعريف پارناس به علت قديمی بودن مهندسی نرم افزار را با برنامه سازی يکی می داند. تعريف مهندسی نرم افزار بنا بر پيشنهاد انجمن IEEE : مهندسی نرم افزار عبارت است از بکارگيری يک روش سيستماتيک، منظم و قابل اندازه گيری برای توليد و توسعه ، عملياتی کردن و نگهداری نرم افزار . به عبارت ديگر بکارگيری اصول مهندسی در توليد نرم افزار

6 تعريف مهندسی نرم افزار(ادامه)
تعريف مهندسی نرم افزار (از نگاهی ديگر) : شامل مجموعه ای از تکنيکها و قواعد معتبر مهندسی بمنظور توليد نرم افزار قابل اطمينان و مقرون بصرفه مفهوم مهندسی

7 ماهيت نرم افزار جهت مشخص شدن ماهيت نرم افزار آنرا با يک محصول فيزيکی (همانند سخت افزار ) مقايسه می نماييم : نرم افزار محصولی منطقی است ، در صورتيکه سخت افزار يک محصول فيزيکی قابل لمس است . نرم افزار توسعه داده می شود در صورتيکه سخت افزار ساخته می شود ) بکارگيری واژه develop (پرورش دادن) بجای create). هزينه های نرم افزار در مهندسی آن متمرکز است . لذا مديريت پروژه های نرم افزاری متفاوت از مديريت ساير پروژه های مهندسی است .

8 ماهيت نرم افزار(ادامه)
جمع آوری نيازمنديها در رشته های مهندسی با کمک صاحب نظران و طراحان در رشته مربوطه صورت می پذيرد ، در صورتيکه جمع آوری اطلاعات جهت تعيين نيازمنديهای نرم افزار از طريق افراد معمولی صورت می پذيرد . لذا وجود درخواستهای ناقص و اشتباه از سوی کاربران ، يا تغيير نيازمنديهای آنها امری غير عادی تلقی نمی شود. مفهوم استفاده مجدد در نرم افزار و سخت افزار : صنعت به سمت نصب قطعات حرکت می نمايد ، ليکن اين امر در نرم افزار کمرنگتر می باشد. روشها و ابزارهای آزمايش نرم افزار متفاوت از روشها وابزارهای سخت افزار است.

9 ماهيت نرم افزار(ادامه)
سخت افزار فرسوده می گردد مرگ زودرس فرسودگی نرخ خرابی زمان نمودار نرخ خرابی سخت افزار

10 ماهيت نرم افزار(ادامه)
افزايش نرخ شکست بدليل اثرات جانبی نرم افزار به تدريج دچار فرسودگی نمی گردد ، بلکه فاسد می شود. تغيير منحنی واقعی نرخ خرابی منحنی ايده آل زمان نمودار نرخ خرابی نرم افزار

11 هزینه تغییرات در نرم افزار

12 کاربردهای نرم افزار نرم افزار برای هر موردی که در آن مورد مجموعه ای مشخص از مراحل رويه ای (يعنی بصورت الگوريتميک) تعريف شده است می تواند بکار گرفته شود. کاربردهای اصلی نرم افزار در موارد زير است : نرم افزار سيستم : مجموعه ای از برنامه ها می باشد که جهت ارائه سرويس به ساير برنامه ها ايجاد گرديده است . همانند کامپايلرها ، سيستم مديريت بانک اطلاعات DBMS ، ويراستارها و سيستم عامل نرم افزار بلادرنگ : جهت تحليل و کنترل رخدادهای دنيای واقعی استفاده می شود. اين نرم افزار در هنگام وقوع رخداد بصورت بلادرنگ پاسخ مناسب را ارائه می نمايد . کنترل واکنشها در يک کارخانه توليد مواد شيميائی مثالی از اين مورد می باشد.

13 کاربردهای نرم افزار نرم افزار تجاری : پردازش اطلاعات تجاری پر کاربرد ترين بخش استفاده از نرم افزار را تشکيل می دهد. سيستمهای کاربردی همانند سيستمهای حسابداری ، فهرست موجودی و عمليات ثبت نام دانشجويان مثالهائی از اين گروه نرم افزار می باشد. نرم افزار علمی و مهندسی نرم افزار کامپيوتر شخصی نرم افزار جاسازی شده نرم افزار هوش مصنوعی نرم افزار Web

14 اهميت مهندسی نرم افزار نرم افزار دارای پيچيدگی می باشد . به علت ماهيت نرم افزار امکان حذف پيچيدگی وجود ندارد ، ليکن می توان آنرا کنترل نمود . در خصوص سوالات زير تفکر نمائيد : چگونه می توان نرم افزاری جهت يک سيستم پيچيده ايجاد نمود ؟ برنامه نويسی چه جايگاهی در مهندسی نرم افزار دارد ؟ و چنانچه جهت توسعه سيستمها در مراحل آغازين کار و قبل از انجام تمهيدات لازم به سراغ برنامه نويسی برويم چه مشکلاتی ايجاد می شود ؟

15 اهميت مهندسی نرم افزار(ادامه)
جهت انجام پروژه نرم افزاری با هزينه مناسب (منظور از هزينه در اينجا ابعاد مالی ، زمانی و نيروی انسانی است) و کيفيت خوب چه راهکارهايي را می بايست اتخاذ نماييم ؟ بطور متوسط طول عمر نرم افزار در کشور ما تقريبا نصف طول عمر نرم افزار در جوامع صنعتی است . دليل اين اختلاف را در چه می بينيد؟ آيا استفاده از دستورالعملها ، مستندات و نمودارهايي که مهندسی نرم افزار آنها را توصيه می نمايد ، صرفا جهت مستند سازی است يا مزايای ديگری نيز دارد؟

16 تکنولوژی مهندسی نرم افزار
متدولوژی ابزارهای خودکارسازی CASE TOOLS فرايند توليد

17 متدولوژی متد (روش) : فرايندی منظم که با استفاده از مجموعه ای از نمادگذاريهای خوش تعريف ، مجموعه ای از مدلها را ايجاد می کند که هر کدام قسمتی از سيستم نرم افزاری در حال توسعه را توصيف می نمايد . متدولوژی : ارائه چارچوب کاری معين در قالب فرمها ، نمودارها ، قالبهای متنی با توجه به فرايند توسعه مجموعه ای از روشها که در تمام چرخه حيات سيستم نرم افزاری اعمال شده و بر يک نوع نگرش کلی درباره جهان نرم افزار متکی می باشند.

18 انتظار از متدولوژی بازشناسی : دريافت و توصيف نيازمنديها
بازنمايي : قدرت بيان و تشريح (notation) گذر : دارای تکنيک و دستورالعمل برای گذر از يک مرحله به مرحله ديگر باشد.


Download ppt "مقدمه ای بر مهندسی نرم افزار An Introduction to Software Engineering"

Similar presentations


Ads by Google