صفحه 1:
صفحه 2:
" اهداف جلسه
* درك مشکلات تولید نرمافزار و راه مقابله با آن
* درك اهمیت مهندسي نرمافزار
درك ضرورت روي آوردن به يك متدولوژي مدون
درك ماهیت نرمافزار و تفاوت آن با بقیه محصولات مهندسي
درك پيچيدگي نرمافزار و عوامل پدید آورنده آن
آشنائي با مبحث سيستمهاي پیچیده و ويژگيهاي آنها
صفحه 3:
۷" فهرست مطالب
* بحران نرمافزار
* مهندسي نرمافزار و ضرورت آن
* متدولوژي و اهمیت آن
تفاوت نرمافزار و سختافزار
پيچيدگي ذاتي نرمافزار
عوامل پدیدآورنده پيچيدگي نرمافزار
ساختار و ويژگي سيستمهاي پیچیده
* پيچيدگي سازمان یافته و سازماننیافته
صفحه 4:
1" بحران نرمافزار
"پیشرفت شگرف سختافزار و ضعف روشهاي توسعه
نرمافزار و ناتواني این روشها در کنترل پيچيدگي
نرمافزار بحران نرمافزار را بوجود آورد *
صفحه 5:
5 بحران نرمافزار (ادامه)
* علايم اين بحران عبار تند از:
" عدم بهردكيري كامل از قدرت سختافزار
* ناتواني روشهاي توليد نرمافزار در باسخكوئي به افزايش تقاضا
هزينههاي هنكفت توليد نرمافزار
عدم تحويل به موقع
عدم تامين نيازمنديهاي كاربر
۴ کیفیت پایین و نامطمئن
* سختي نگهداري بعلت کیفیت پایین طراحي
صفحه 6:
7 مهندسي نرمافزار و ضرورت آن
"براي مقابله با این بحران مهندسي نرمافزار مطرح
شد“
ويژگيهاي مهندسي نرمافزار
* تجدید نظر در روشهاي برنامهريزي و کنترل
* استفاده از تجربیات دیگر رشتههاي مهندسي (مثال الگوها)
* تهیه و جايگزيني استانداردهاي مطمئن
صفحه 7:
9 تعریف مهندسي نرمافزار
«بكاركيري يك روش سيستمانيك. منظم و قابل اندازمكيري
پراي تولید و نوسحه. عملياني گردن و نگهداري نرمافزار؛
بكارگيري اصول مهندسي در تولید نرمافزار»
صفحه 8:
7 اهداف مهندسی نرمافزار
* افزایش کیفیت. قابلیت اطمینان, قابلیت نگهداري
* رضایت کاربر و سهامداران
* کاهش هزبنه
* تحویل به موقع
* استفاده از مولفههاي استاندارد
* استفاده مجدد
صفحه 9:
53 اصول مهندسی نرمافزار
صفحه 10:
| اهمیت متدولوژی
«يكي از علل اساسي بحران نرمافزار عدم وجود روشهاي
مناسبي براي نولید نرمافزار»
(Method) روش *
* فرآیندی منظم که با استفاده از مجموعهای از نمادگذاریهاي
خوش تعریف: مجموعهای از مدلها را ایجاد ميکند که هر کدام بخشي
از سیستم نرمافزاري در دست تولید (با توسعه) را توصیف مينمایند
10
صفحه 11:
" اهميت متدو لو ژی (دامه)
* متدولوژي
* مجموعهاي از روشها که در تمام چرخه حیات سیستم نرمافزاري
اعمال شده و بر يك نوع نگرش كلي درباره جهان نرمافزار متکي
بنظر بسياري از متخصصین بكارگيري يك متدولوژي مدون
در توسعه نرمافزار ميتواند تا اندازه قابل توجهي مشکلات
بیان شده را برطرف سازد
صفحه 12:
ويزكيهاي يك متدولوژي مطلوب
* ارائه تعاريفي از مفاهیم اولیه بکار رفته در متدولوژي
9 ارائه مدلي براي فرآبند تولید
ل
داشتن مدل زيربنائي (مدل معماري)
" ارائه يك شيوه علامتكذاري استاندارد
معرفي تكنيكهايبي براي پيادهسازي متدولوژي که توانايي
كنترل بيجيدكي سيستمهاي كنوني را دارا باشند
12
صفحه 13:
8 ویزگيهاي يك متدولوژي ... (ادامه)
* ارائه معيارهاي براي ارزيابي نتایج حاصل از بكارگيري متدولوژي
* وجود ابزار اتوماتيك براي کمك به تولید و اجراي مدلهاي
مبتني بر متدولوژي
صفحه 14:
تفاوت نرمافزار و سختافزار
© فرآيند نوليد نرمافزار يك فرآيند مهندسي است نه
يك فرآيند نوليد صنحتي
سختافزار نرمافزار
مت a
بت فرآیند تولید اللكانبكي ١
صفحه 15:
" تفاوت نرمافزار 9 سختافزار (ادامه)
۳ نرمافزار با گذشت زمان دچار فرسودگي نشده بلکه فاسد ميگردد
يس از رفع خطاهاي
اراي و ساقت ترق قرابي
منحني نرخ خرابي سختافزار نسبت به زمان
صفحه 16:
۷" تفاوت نرمافزار 9 سختافزار (ادامه)
ole}
منحني نرخ خرابي ایدهآل نرمافزار نسبت به زمان
نرغ خرابي
صفحه 17:
" تفاوت نرمافزار 9 سختافزار (ادامه)
نرخ خرابي اغزايش يافته به
علت تاثيرات جانبي
منحني نرخ خرابي واقعي نرمافزار نسبت به زمان
صفحه 18:
5 تفاوت نو مافزار و سختافزار (ادامه)
GoPware Ovi
صفحه 19:
تفاوت نرمافزار 9 سختافزار (ادامه)
جه بیشتر نرمافزارها به شیوه سنتي ساخنه ميشوند و از
ترکیب مولفههاي استاندارد تولید نميگردند
صفحه 20:
a پيچید گي ذاتي نرمافزار
”بدليل تفاوت ذاتي بين نرمافزار و سختافزار پيچيدگي
بنابراين ”نمي توان اين بيجي دكي را از بين برد بلكه
بايد آن را كنترل نمود
* با بيجيدكي سيستمهاي طبيعي و محصولات فيزيكي ساخت دست
بشر متفاوت است
* يك خاصيت ذاتي سيستمهاي نرمافزاري بزرك
صفحه 21:
4 عوامل پدید آورنده پيچيدگي نرمافزار
9 پيچيدگي حوزة مساله
* نيازمنديهاي گوناگون و متضاد
۴ ارتباط بین کاربر و مهندس نرمافزار
* تغییر نیازها
* پيچيدگي فرآیند تولید
* انعطافپذيري نرمافزار و استاندارد نبودن آن
* مشکل توصیف رفتار سيستمهاي گسسته
21
صفحه 22:
a ویز گيهاي سيستمهاي پیچیده
ج "در اغلب سيستمهاي پیچیده پيچيدگي به صورت
سلسله مرائب (111672760) ظاهر ميشود *
مثال:
[computer |
ساسا
صفحه 23:
ويژگيهاي سيستمهاي پیچیده «س
@ " انتخاب مژلفههاي اولیه سیستم. امري است نسبتاً دلخواه
بوده و تا حدود زيادي بستگي په دید طراح سیستم دارد*
مثال: اين سطع مي تواند
و
=
Staten Map ALG Beontro! Unie Resistors |
shh وو
صفحه 24:
ويزكيهاى سد سیستمهای وه (ادامه)
© ” در سيسدمي كه از چند زیرسیستم تشکیل ميگردد.
ارتباط بين اجزاي دروني هر زير سيستم
(ntra-component Linkage)
فویتر از ارتباط پین خود زیر سیستمها
se! (Inter-components Linkage)
صفحه 25:
ويزكيهاى سد سيستم هاى د پیچیده (ادامه)
صفحه 26:
ويزكيهاى سد سیستمهای وه (ادامه)
© ”سيستمهاي سلسله مراتبي معمولاً از تعداد كمي از
زيرسيستمهاي مشخص و متفاوت تشکیل ميشوند که این
زبرسیستنمها به صورتهاي گوناگون و ترتيبهاي مختلف ظاهر
مي شو ند “
صفحه 27:
ويزكيهاى سد سيستم هاى د پیچیده (ادامه)
صفحه 28:
ويزكيهاى سد سیستمهای وه (ادامه)
© «محمولاً سيستمهاي بيجيده كه به صورت محكم و استوار عمل
مي كنند حاصل تكامل سيستمهاي سادهاي هستند كه به
درستي عمل م يكردند»
سيسنمهاي بيجيده كه از ابتدا به صورت بيجيده طراحي
مي شوند. هركز كار نخواهند كرد
صفحه 29:
ویزگیهای سیستمهای پیچید 6 (دام)
صفحه 30:
ويزكيهاى سيستمهاي پیچید 6 «داس
صفحه 31:
ور شكل اصلي سيستوهاي بيجيده
مجموعه ويزكيهاي كلي كه در همه سيستمهاي ”
“ بيجيده. صرفنظر از اندازه بيجيدكيء به جشم مي خورند
۰ ساختار کلاس: سلسه مراتب 15-۸
۰ ساختار شی: سلسه مراتب ۳۸۲-0۳
+ اصلي سيستمهاي پیچیده - خواص پنچگانه JS
۳۸۲۲-۵۳ سلسه مراتپ +15-۸ Gil ya سلسله
صفحه 32:
" شکل اصلی سيستمهاي یب سم ۵ دامه)
* پيچيدگي سازماننیافته: وضعیت مسئله قبل از تحلیل و طراحي
(جزاء بسیار زباد)
* پيچيدگي سازمانیافته: وضعیت مسئله پس از تحلیل و طراحي
3
قدرت پردازش همزمان - بيجيدكي سيستمهاي نرمافزاري
زان محدوداست. لک رو و دحا افش استه
راه حل
پوسیله متدولوژ
تجزیه = 9 ۱ ولوزي
52 نحوه اعمال حوب
32
صفحه 33:
بحران نرمافزار و بررسي پيچيدگي
نرمافزار
اهداف جلسه
درك مشكالت توليد نرمافزار و راه مقابله با آن
درك اهميت مهندسي نرمافزار
درك ضرورت روي آوردن به يك متدولوژي مدون
درك ماهيت نرمافزار و تفاوت آن با بقيه محصوالت مهندسي
درك پيچيدگي نرمافزار و عوامل پديد آورنده آن
آشنائي با مبحث سيستمهاي پيچيده و ويژگيهاي آنها
2
فهرست مطالب
بحران نرمافزار
مهندسي نرمافزار و ضرورت آن
متدولوژي و اهميت آن
سختافزار
تفاوت نرمافزار و
پيچيدگي ذاتي نرمافزار
عوامل پديدآورنده پيچيدگي نرمافزار
سيستمهاي پيچيده
ساختار و ويژگي
سازماننيافته
پيچيدگي سازمان يافته و
3
بحران نرمافزار
توسعه
هاي توسعه
روشهاي
ضعفروش
افزارووضعف
سختافزار
شگرفسخت
”پيشرفتشگرف
”پيشرفت
پيچيدگي
كنترلپيچيدگي
دركنترل
هادر
روشها
اينروش
ناتوانياين
افزارووناتواني
نرمافزار
نرم
آورد““
بوجودآورد
افزاررارابوجود
نرمافزار
بحراننرم
افزاربحران
نرمافزار
نرم
4
بحران نرمافزار
(ادامه)
عاليم اين بحران عبارتند از:
عدم بهرهگيري كامل از قدرت سختافزار
ناتواني روشهاي توليد نرمافزار در پاسخگوئي به افزايش تقاضا
هزينههاي هنگفت توليد نرمافزار
عدم تحويل به موقع
عدم تامين نيازمنديهاي كاربر
كيفيت پايين و نامطمئن
سختي نگهداري بعلت كيفيت پايين طراحي
5
مهندسي نرمافزار و ضرورت آن
”براي مقابله با اين بحران مهندسي نرمافزار مطرح
شد“
نرمافزار
ويژگيهاي مهندسي
تجديد نظر در روشهاي برنامهريزي و كنترل
استفاده از تجربيات ديگر رشتههاي مهندسي (مثال الگوها)
تهيه و جايگزيني استانداردهاي مطمئن
6
تعريف مهندسي نرمافزار
گيري
اندازهگيري
قابلاندازه
منظمووقابل
سيستماتيك،منظم
روش سيستماتيك،
يكروش
بكارگيرييك
««بكارگيري
افزار؛
نرمافزار؛
نگهدارينرم
كردنوونگهداري
عملياتيكردن
توسعه،عملياتي
توليدووتوسعه،
برايتوليد
براي
افزار»»
نرمافزار
توليدنرم
درتوليد
مهندسيدر
اصولمهندسي
بكارگيرياصول
بكارگيري
7
اهداف مهندسي نرمافزار
افزايش كيفيت ،قابليت اطمينان ،قابليت نگهداري
رضايت كاربر و سهامداران
كاهش هزينه
تحويل به موقع
مولفههاي استاندارد
استفاده از
استفاده مجدد
8
اصول مهندسي نرمافزار
تكنولوژي مهندسي نرمافزار
ابزارهاي خودكار
سازي
)(CASE Tools
متدولوژي
فرآيند توليد
9
اهميت متدولوژي
«يكي از علل اساسي بحران نرمافزار عدم وجود روشهاي
مناسبي براي توليد نرمافزار»
ش ()Method
رو
فرآيندي منظم كه با استفاده از مجموعهاي از نمادگذاريهاي
خوشتعريف ،مجموعهاي از مدلها را ايجاد ميكند كه هر كدام بخشي
از سيستم نرمافزاري در دست توليد (يا توسعه) را توصيف مينمايند
10
اهميت متدولوژي
(ادامه)
متدولوژي
مجموعهاي از روشها كه در تمام چرخه حيات سيستم نرمافزاري
اعمال شده و بر يك نوع نگرش كلي درباره جهان نرمافزار متكي
هستند
بنظر بسياري از متخصصين بكارگيري يك متدولوژي مدون
ميتواند تا اندازه قابل توجهي مشكالت
در توسعه نرمافزار
بيان شده را برطرف سازد
11
ويژگيهاي يك متدولوژي مطلوب
ارائه تعاريفي از مفاهيم اوليه بكار رفته در متدولوژي
ارائه مدلي براي فرآيند توليد
داشتن مدل زيربنائي (مدل معماري)
عالمتگذاري استاندارد
ارائه يك شيوه
پيادهسازي متدولوژي که توانايي
تكنيكهايي براي
معرفي
سيستمهاي كنوني را دارا باشند
كنترل پيچيدگي
12
ويژگيهاي يك متدولوژي ( ...ادامه)
ارائه معيارهاي براي ارزيابي نتايج حاصل از بكارگيري متدولوژي
مدلهاي
وجود ابزار اتوماتيك براي كمك به توليد و اجراي
مبتني بر متدولوژي
13
تفاوت نرمافزار و سختافزار
1
فرآيند توليد نرمافزار يك فرآيند مهندسي است نه
يك فرآيند توليد صنعتي
نرمافزار
سختافزار
تعيين مشخصات
بوسيله متخصصين
ماهيت فرآيند توليد مكانيكي
ماهيت محصول
فيزيكي
بوسيله استفادهكنندگان نهايي
فرآيند مهندسي كه براي هر
كاربرد جديد منحصر به فرد است
منطقي
14
تفاوت نرمافزار و سختافزار
(ادامه)
2نرمافزار با گذشت زمان دچار فرسودگي نشده بلكه فاسد ميگردد
پس از رفع خطاهاي
طراحي و ساخت
آغاز فرسودگي
نرخ خرابي
زمان
منحني نرخ خرابي سختافزار نسبت به زمان
15
تفاوت نرمافزار و سختافزار
(ادامه)
نرخ خرابي
زمان
نرمافزار نسبت به زمان
ايدهآل
منحني نرخ خرابي
16
تفاوت نرمافزار و سختافزار
(ادامه)
نرخ خرابي افزايش يافته به
علت تاثيرات جانبي
تغيير
منحني واقعي
منحني ايده آل
نرمافزار نسبت به زمان
منحني نرخ خرابي واقعي
17
)(ادامه
تفاوت نرمافزار و سختافزار
Dollars
Software Cost
Hardware Cost
1960
2005
Time
18
تفاوت نرمافزار و سختافزار
3
(ادامه)
بيشتر نرمافزارها به شيوه سنتي ساخته ميشوند و از
تركيب مولفههاي استاندارد توليد نميگردند
19
پيچيدگي ذاتي نرمافزار
”بدليل تفاوت ذاتي بين نرمافزار و سختافزار پيچيدگي
خاصي در ابعاد مختلف از جمله در تعريف نرمافزار ،طراحي،
دارد“
اينو نگهداري
تست
بلكه
وجود برد
آناز بين
پيچيدگي را
سازي،توان
پياده”نمي
بنابراين
كنترل نمود
آن را
ويژگيهاي اين بايد
عبارتند از:
پيچيدگي
با پيچيدگي سيستمهاي طبيعي و محصوالت فيزيكي ساخت دست
يك خاصيت ذاتي سيستمهاي نرمافزاري بزرگ
بشر متفاوت است
20
عوامل پديد آورنده پيچيدگي نرمافزار
پيچيدگي حوزة مساله
نيازمنديهاي گوناگون و متضاد
ارتباط بين كاربر و مهندس نرمافزار
تغيير نيازها
پيچيدگي فرآيند توليد
انعطافپذيري نرمافزار و استاندارد نبودن آن
سيستمهاي گسسته
مشكل توصيف رفتار
21
ويژگيهاي سيستمهاي پيچيده
پيچيدگي به صورت،سيستمهاي پيچيده
”در اغلب
“ميشود
) ظاهرHierarchy( سلسله مراتب
Computer
Computer
RAM
RAM
22
Keyboard
Keyboard
ALU
ALU
1
:مثال
CPU
CPU
Monitor
Monitor
Control
Control Unit
Unit
Registers
Registers
ويژگيهاي سيستمهاي پيچيده
(ادامه)
نسبتا دلخواه
ً
مؤلفههاي اوليه سيستم ،امري است
” 2انتخاب
بوده و تا حدود زيادي بستگي به ديد طراح سيستم دارد“
مثال:
اين سطح مي تواند
انتخاب اول باشد
Computer
Computer
Monitor
Monitor
CPU
CPU
Registers
Registers
Control
Control Unit
Unit
Keyboard
Keyboard
ALU
ALU
RAM
RAM
ممكن است اين
سطح انتخاب اول
!باشد
23
ويژگيهاي سيستمهاي پيچيده
(ادامه)
ميگردد،
” 3در سيستمي كه از چند زيرسيستم تشكيل
ارتباط بين اجزاي دروني هر زير سيستم
()Intra-component Linkage
سيستمها
قويتر از ارتباط بين خود زير
( )Inter-components Linkageاست“
24
ويژگيهاي سيستمهاي پيچيده
(ادامه)
مثال:
25
ويژگيهاي سيستمهاي پيچيده
4
(ادامه)
سيستمهاي سلسله مراتبي معموالً از تعداد كمي از
”
ميشوند كه اين
زيرسيستمهاي مشخص و متفاوت تشكيل
ترتيبهاي مختلف ظاهر
صورتهاي گوناگون و
زيرسيستمها به
ميشوند“
26
ويژگيهاي سيستمهاي پيچيده
(ادامه)
مثال:
27
سيستمهاي پيچيده
ويژگيهاي
(ادامه)
سيستمهاي پيچيده كه به صورت محكم و استوار عمل
معموال
ً
« 5
سيستمهاي سادهاي هستند كه به
ميكنند حاصل تكامل
ميكردند»
درستي عمل
سيستمهاي پيچيده كه از ابتدا به صورت پيچيده طراحي
ميشوند ،هرگز كار نخواهند كرد
28
سيستمهاي پيچيده
ويژگيهاي
(ادامه)
مثال:
اين سيستم كار
نخواهد كرد
29
سيستمهاي پيچيده
ويژگيهاي
(ادامه)
اين سيستم بخوبي
كار مي كند
اين سيستم نيز
بخوبي كار خواهد كرد
30
شكل اصلي سيستمهاي پيچيده
مجموعه ويژگيهاي كلي كه در همه سيستمهاي”
“ پيچيده ،صرفنظر از اندازه پيچيدگي ،به چشم ميخورند
كالس :سلسه مراتب IS-A
• ساختار
• ساختار شئ :سلسه مراتب PART-OF
شكل اصلي سيستمهاي پيچيده = خواص پنجگانه +
سلسله مراتب +IS-Aسلسه مراتب PART-OF
31
شكل اصلي سيستمهاي پيچيده
(ادامه)
سازماننيافته :وضعيت مسئله قبل از تحليل و طراحي
پيچيدگي
(اجزاء بسيار زياد)
سازمانيافته :وضعيت مسئله پس از تحليل و طراحي
پيچيدگي
قدرت پردازش همزمان
مغز انسان محدود است
؟
راه حل
نرمافزاري
پيچيدگي سيستمهاي
روز به روز در حال افزايش است
بوسيله متدولوژي
تجزيه
خوب
نحوه اعمال
32
پایان
33