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

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

  • Upload
    felice

  • View
    102

  • Download
    4

Embed Size (px)

DESCRIPTION

مقدمه ای بر مهندسی نرم افزار An Introduction to Software Engineering. فهرست. بحران نرم افزار مفهوم مهندسی تعريف مهندسی نرم افزار ماهيت نرم افزار و تفاوت مهندسی نرم افزار با ساير رشته های مهندسی کاربردهای نرم افزار اهميت مهندسی نرم افزار ارکان مهندسی نرم افزار تعريف متدلوژی نرم افزاری. - PowerPoint PPT Presentation

Citation preview

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

1

مقدمه ای بر مهندسی نرم افزارمقدمه ای بر مهندسی نرم افزار

An Introduction to An Introduction to Software EngineeringSoftware Engineering

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

2

فهرستفهرست

بحران نرم افزاربحران نرم افزارمفهوم مهندسی مفهوم مهندسی تعريف مهندسی نرم افزار تعريف مهندسی نرم افزار ماهيت نرم افزار و تفاوت مهندسی نرم افزار با ماهيت نرم افزار و تفاوت مهندسی نرم افزار با

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

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

3

بحران نرم افزاربحران نرم افزار

بحران نرم افزار اولين بار بصورت رسمی در کنفرانسی در سال بحران نرم افزار اولين بار بصورت رسمی در کنفرانسی در سال ميالدی مطرح گرديد . عوامل اصلی اين بحران عبارتند ميالدی مطرح گرديد . عوامل اصلی اين بحران عبارتند 19681968

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

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

4

تفاوت مهندس و محقق علومتفاوت مهندس و محقق علوم

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

مهندس از دانش موجود در عمل برای يافتن مهندس از دانش موجود در عمل برای يافتن بهترين راه حل مسئله استفاده می نمايد . بهترين راه حل مسئله استفاده می نمايد .

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

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

5

تعريف مهندسی نرم افزارتعريف مهندسی نرم افزار

( تعريف مهندسی نرم افزار از ديد پارناس( تعريف مهندسی نرم افزار از ديد پارناسParnasParnas: ): )

( از برنامه( از برنامهversionversionکار چند نفره برای توليد چند نسخه )کار چند نفره برای توليد چند نسخه )

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

تعريف مهندسی نرم افزار بنا بر پيشنهاد انجمن تعريف مهندسی نرم افزار بنا بر پيشنهاد انجمنIEEEIEEE: :

مهندسی نرم افزار عبارت است از بکارگيری يک روش مهندسی نرم افزار عبارت است از بکارگيری يک روش سيستماتيک، منظم و قابل اندازه گيری برای توليد و سيستماتيک، منظم و قابل اندازه گيری برای توليد و

توسعه ، عملياتی کردن و نگهداری نرم افزار . به عبارت توسعه ، عملياتی کردن و نگهداری نرم افزار . به عبارت ديگر بکارگيری اصول مهندسی در توليد نرم افزارديگر بکارگيری اصول مهندسی در توليد نرم افزار

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

6

)ادامه()ادامه(تعريف مهندسی نرم افزارتعريف مهندسی نرم افزار

: )تعريف مهندسی نرم افزار )از نگاهی ديگر( :تعريف مهندسی نرم افزار )از نگاهی ديگر

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

بصرفهبصرفه

مفهوم مهندسی

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

7

ماهيت نرم افزارماهيت نرم افزار

جهت مشخص شدن ماهيت نرم افزار آنرا با يک محصول جهت مشخص شدن ماهيت نرم افزار آنرا با يک محصول فيزيکی )همانند سخت افزار ( مقايسه می نماييم :فيزيکی )همانند سخت افزار ( مقايسه می نماييم :

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

نرم افزار توسعه داده می شود در صورتيکه سخت نرم افزار توسعه داده می شود در صورتيکه سخت developdevelop بکارگيری واژه بکارگيری واژه ((افزار ساخته می شود افزار ساخته می شود (.(.createcreate)پرورش دادن( بجای )پرورش دادن( بجای

. هزينه های نرم افزار در مهندسی آن متمرکز است . هزينه های نرم افزار در مهندسی آن متمرکز استلذا مديريت پروژه های نرم افزاری متفاوت از مديريت لذا مديريت پروژه های نرم افزاری متفاوت از مديريت

ساير پروژه های مهندسی است .ساير پروژه های مهندسی است .

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

8

)ادامه()ادامه(ماهيت نرم افزارماهيت نرم افزار

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

درخواستهای ناقص و اشتباه از سوی کاربران ، يا تغيير درخواستهای ناقص و اشتباه از سوی کاربران ، يا تغيير نيازمنديهای آنها امری غير عادی تلقی نمی شود.نيازمنديهای آنها امری غير عادی تلقی نمی شود.

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

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

وابزارهای سخت افزار است.وابزارهای سخت افزار است.

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

9

)ادامه()ادامه(ماهيت نرم افزارماهيت نرم افزار

سخت افزار فرسوده می گرددسخت افزار فرسوده می گردد

فرسودگی

مرگ زودرس

زمان

خ نر

یراب

خ

نمودار نرخ خرابی سخت افزار

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

10

)ادامه()ادامه(ماهيت نرم افزارماهيت نرم افزار

نمودار نرخ خرابی نرم افزار

زمان

خ نر

یراب

خ

تغيير

افزايش نرخ شکست بدليل

اثرات جانبی

منحنی واقعی

منحنی ايده آل

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

11

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

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

12

کاربردهای نرم افزارکاربردهای نرم افزار

نرم افزار برای هر موردی که در آن مورد مجموعه ای نرم افزار برای هر موردی که در آن مورد مجموعه ایمشخص از مراحل رويه ای )يعنی بصورت الگوريتميک( مشخص از مراحل رويه ای )يعنی بصورت الگوريتميک(

تعريف شده است می تواند بکار گرفته شود.تعريف شده است می تواند بکار گرفته شود.: کاربردهای اصلی نرم افزار در موارد زير است :کاربردهای اصلی نرم افزار در موارد زير است

: مجموعه ای از برنامه ها می باشد که جهت مجموعه ای از برنامه ها می باشد که جهت نرم افزار سيستم :نرم افزار سيستم ارائه سرويس به ساير برنامه ها ايجاد گرديده است . همانند ارائه سرويس به ساير برنامه ها ايجاد گرديده است . همانند

، ويراستارها ، ويراستارها DBMSDBMSکامپايلرها ، سيستم مديريت بانک اطالعات کامپايلرها ، سيستم مديريت بانک اطالعات و سيستم عاملو سيستم عامل

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

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

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

13

کاربردهای نرم افزارکاربردهای نرم افزار

: پردازش اطالعات تجاری پر کاربرد پردازش اطالعات تجاری پر کاربرد نرم افزار تجاری :نرم افزار تجاری ترين بخش استفاده از نرم افزار را تشکيل می دهد. ترين بخش استفاده از نرم افزار را تشکيل می دهد. سيستمهای کاربردی همانند سيستمهای حسابداری ، سيستمهای کاربردی همانند سيستمهای حسابداری ،

فهرست موجودی و عمليات ثبت نام دانشجويان فهرست موجودی و عمليات ثبت نام دانشجويان مثالهائی از اين گروه نرم افزار می باشد.مثالهائی از اين گروه نرم افزار می باشد.

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

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

14

اهميت مهندسی نرم افزاراهميت مهندسی نرم افزار

نرم افزار دارای پيچيدگی می باشد . به علت ماهيت نرم افزار دارای پيچيدگی می باشد . به علت ماهيت نرم افزار امکان حذف پيچيدگی وجود ندارد ، ليکن نرم افزار امکان حذف پيچيدگی وجود ندارد ، ليکن

می توان آنرا کنترل نمود .می توان آنرا کنترل نمود .

در خصوص سواالت زير تفکر نمائيد :در خصوص سواالت زير تفکر نمائيد : چگونه می توان نرم افزاری جهت يک سيستم چگونه می توان نرم افزاری جهت يک سيستم

پيچيده ايجاد نمود ؟پيچيده ايجاد نمود ؟ برنامه نويسی چه جايگاهی در مهندسی نرم افزار برنامه نويسی چه جايگاهی در مهندسی نرم افزار

دارد ؟ و چنانچه جهت توسعه سيستمها در مراحل دارد ؟ و چنانچه جهت توسعه سيستمها در مراحل آغازين کار و قبل از انجام تمهيدات الزم به سراغ آغازين کار و قبل از انجام تمهيدات الزم به سراغ

برنامه نويسی برويم چه مشکالتی ايجاد می شود ؟برنامه نويسی برويم چه مشکالتی ايجاد می شود ؟

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

15

)ادامه()ادامه(اهميت مهندسی نرم افزاراهميت مهندسی نرم افزار

جهت انجام پروژه نرم افزاری با هزينه مناسب جهت انجام پروژه نرم افزاری با هزينه مناسب)منظور از هزينه در اينجا ابعاد مالی ، زمانی و نيروی )منظور از هزينه در اينجا ابعاد مالی ، زمانی و نيروی انسانی است( و کيفيت خوب چه راهکارهايي را می انسانی است( و کيفيت خوب چه راهکارهايي را می

بايست اتخاذ نماييم ؟بايست اتخاذ نماييم ؟ بطور متوسط طول عمر نرم افزار در کشور ما تقريبا بطور متوسط طول عمر نرم افزار در کشور ما تقريبا

نصف طول عمر نرم افزار در جوامع صنعتی است . نصف طول عمر نرم افزار در جوامع صنعتی است . دليل اين اختالف را در چه می بينيد؟دليل اين اختالف را در چه می بينيد؟

آيا استفاده از دستورالعملها ، مستندات و نمودارهايي آيا استفاده از دستورالعملها ، مستندات و نمودارهاييکه مهندسی نرم افزار آنها را توصيه می نمايد ، صرفا که مهندسی نرم افزار آنها را توصيه می نمايد ، صرفا

جهت مستند سازی است يا مزايای ديگری نيز دارد؟جهت مستند سازی است يا مزايای ديگری نيز دارد؟

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

16

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

فرايند توليد

متدولوژیی

ابزارهای

سازخودکار

CA

SE

TO

OL

S

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

17

متدولوژیمتدولوژی

: )فرايندی منظم که با استفاده از مجموعه فرايندی منظم که با استفاده از مجموعه متد )روش( :متد )روش ای از نمادگذاريهای خوش تعريف ، مجموعه ای از مدلها ای از نمادگذاريهای خوش تعريف ، مجموعه ای از مدلها

را ايجاد می کند که هر کدام قسمتی از سيستم نرم را ايجاد می کند که هر کدام قسمتی از سيستم نرم افزاری در حال توسعه را توصيف می نمايد .افزاری در حال توسعه را توصيف می نمايد .

متدولوژیمتدولوژی :: ، ارائه چارچوب کاری معين در قالب فرمها ، ارائه چارچوب کاری معين در قالب فرمها

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

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

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

18

انتظار از متدولوژیانتظار از متدولوژی

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

: بازنمايي :بازنمايي( قدرت بيان و تشريح ( قدرت بيان و تشريح notationnotation))

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