صفحه 1:
مقدمه ای بر مهندسی نرم افزار
Omid.Mofidian@qmail.co
m
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 2:
re RV.)
Sone ees ren eae
بررسی مسائل کلیدی مطرح در مهندسی نرم افزار
Serre rst Ye nee ots Reece
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 3:
مهندسى نرم افزار
اقتصاد جهانی به نرم افزار وابسته است.
I ia Se a 0 ان
مهندسى نرم افزار به تئورى هاء متدها و ابزار حرفه اى توسعه ى نرم افزار
وابستة است.
هرینه ی نرم افراز کسری معنی داری از تولید ناخالض ملی را دز تمامی
OBS gi Sl TAU eena (els os
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 4:
هزینه های فرم افزار
غالباً هزينه ى نرم افزار به هزينه هاى سيستم كامبيوترى محدود مى شود.
See nee) ا ا ا 0ت لك
مى باشد.
ا اي ne
renee ل ا ا ا ۱
هزینه ی توسعه گردد.
ل ا ا
1 «ماوحطه SOS Cent eR 4 6 للتتعسصره5 ممه
صفحه 5:
نرم افزار جیست؟
FO Carpe EUSTON INTER TO ert ا
Brean men CaTarer 5)
Se aa eed eS Sent ا ne cone Ik SRD Ewa)
داده شود.
6 Ee ad
* _ کلی - برای فروش به مشتریان مختلف کامپیوتر شخصی توسعه داده می شود مانند اکسل یا
ورد
سس رات ا ا
يي ا ا ا ا ل ا ا ]
Pee Se ee ea ae aes
eras PLS SOS Cent eR eC «ماوحطه 1
صفحه 6:
ere سنا
ee Re een Re nS ene
محصول نرم افزار اهمیت می دهد.
SNe SUS Mee ا ل ا ل
م ا Rye eS tclecpy
نیز مدنظر قرار گیرد.
eek CS eNOS ere Reet Benet ا
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 7:
oS ee درل دز مس Leen te DDL
Pek Steen ane ore erase Ee Saas
1 era ea oe
كت ee oe CRS bene ae
نیست.
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 8:
تفاوت مهندسی فرم افزار و سیستم
ی سوت سل دا تحت لت و مت وی بر
کامپیوتر اهمیت داده که شامل سخت افزار, نرم افزار و مهندسی فرآیند
است. مهندسى نرم افزار بخشى از فرايند زيرساخت نرم افزار. كنترل»
ا ا ا ا ل ا م
مهندسين نرم افزار در مشخصات سيستم, معمارى؛ يكبارجكى و
1 «ماوحطه SOS Cent eR 4 6 للتتعسصره5 ممه
صفحه 9:
فرآيند نرم افزار جيست؟
ل ا ا ا ل ا |
© فعاليت هاى كلى در تمامى فرآيندهاى نرم افزارى:
مشخصات - سيستم جه كارى بايد انجام دهد و محدوديت هاى توسعه
۱
*؟ اعتبارسنجى - بررسى شود كه مشترى جه مى خواهد
|
ر پاسخ به تقاضای تغییر
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 10:
مدل فر آیند نرم افزار چیست؟
نمايش ساده اى از فرآيند نرم افزار است كه از ديدكاهى خاص نشان داده
د
evel ENESCO TEN Lewy ee!
؟ء ديدكاه جريان كارى - توالى فعاليت هاء
ا ا لل ل
* ديدكاه نقش/فعاليت - نقش افراد.
مدل هاى كلى
¢ آبشارى.
ae ل
|
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 11:
000000
* تقريباً 7١ درصد هزينه. هزينه ى توسعه استء 48 درصد هزينه ى تست
مى باشد. براى نرم افزار سفارشی, هزينه هاى تكامل بر هزينه ى توسعه
وا
3
هزینه ها به نو توسعه ی سیستم و PPD Can tel LE MENtES) م
ae ا يي ل
rl nce oe ا ل
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 12:
100
and evolution
1 «ماوحطه SOS Cent eR eC 4 ه6للتتعسصره5 مهلم
صفحه 13:
هزينه هاى توسعه ى محصول
0 25 50 75
]«ٍ ____
Specification Development system testing
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 14:
010000
00 ا
Etc ole Ce ea ne rere
fon v re er ee
cre rae SCENES Se ne ا
Use اا
ols
Ache ex د
0
0
eras 4 SOS Cent eR «ماوحطه 1
صفحه 15:
Senta) لا در سول(
سيستم هاى نرم افزارى براى فعاليت هاى فرآيند نرم افزار يشتيبانى
لا
سیستم های کیس غالباً برای پشتیبانی مورد استفاده قرار می گيرند.
* حدبالاى كيس
ا ا ا ا ا ا ل
* حدپایین کیس
ا ی
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 16:
Se oe TO ree.)
rere es pe reece to
_قابل اطمینان *
|
؟ راندمان
و م
ا ل cca 0
eee CS ee ۳
نرم افزار نبايد منابع سيستم را پبهوده مورد استفاده قرار دهد؛
eras PLS SOS Cent eR eC «ماوحطه 1
صفحه 17:
eg ا بل
م 0
ناهمكنى
اا ا ل ا ا ل oer
ها و محيط هاى اجرايى ناهمكون برآيد؛
م
۱
اعتبار
ع er Ur bn Sean Se eee ie en it |
اطمینا
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 18:
مسئولیت اخلاقی و حرفه ای
ا ا ا ا لت
تکنیکی یک برنامه ی کاربردی ساده است.
9 0 4
me
*؟ رفتارى منطبق بر قانون اخلاقى داشته باشد.
1 «ماوحطه SOS Cent eR 4 6 للتتعسصره5 ممه
صفحه 19:
پی آمدهای مسئولیت حرفه ای ۱
ا
ا مهندسان باید بطور طبیعی اطلاعات کارمندانشان یا مشتریانشان را حفظ کنند.
* صلاحیت
* . مهندسان نباید بدصلاحیت جلوه کنند. نباید دانسته کاری را بپذیرند که خارج
Os] ۳
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 20:
پی آمدهای مسئولیت حرفه ای ۲
* حقوق مالکیت فکری
ا مهندسان باید به قوائین محلی نسبت به استفاده ی از امکانات و مالکیت
پبب۰پبببپپ ببس
ا TORR 19
؟ مووءاستفاده از کامییوتر
] SEC De Oe ieee ee
و eee
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 21:
نظام نامه ى اخلاقى :0000/10:0):0)
et eet ave ا ات ل ا
* اعضاى اين سازمان موظفند به قانون عمل نمايند.
قانون دربرگیرنده ی هشت ماده در مورد رفتارها و تصمیمات حرفه ای
مهندسین نرم افزار شاغلان. معلمان. مديران. ناظران و سياست كذاران
است.
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 22:
نظام نامه ى اخلاقى - مقدمه
مقدمه
قوانين در سطح بالايى مطرح شد رحا از عرد به صورت جر
EP ME TE iene جره اى ملسي
نرم افزار را بيان مى دارند.
ا ا ا 0
الل ات ا ل ا 0
1 «ماوحطه SOS Cent eR 4 6 للتتعسصره5 ممه
صفحه 23:
Are es rey)
ea
ae ae ee ck Sie ee
ل
مهندسان نرم افزار بايد به روشى عمل نمايد كه مطابق با علايق متقاضيان و *
pales eee ice
؟ محصول
0 ا ORD DY Pete no
RUF
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 24:
نظام نامه ی اخلاقی - اصول ۲
داوری
* مهندسان نرم افزار باید درستی و استقلال را در داوری حفظ نمایند.
* مدیریت
مدیران و سرپرستان مهندس نرم افزار باید شیوه ی اخلاقی را در مدیریت
ال ار
59 حرفه
ee ee ee ean eee شهرت کسب کنند.
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 25:
نظام نامه ی اخلاقی - اصول ۳
© شمكاران
ا ا ا ا ا ل ا lO cone tb)
© 0 5
*؟ء مهندسين نرم افزار بايد تمام عمر در ارتقاى سطح علمى و اخلاقى خود كوشا
تاش
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
صفحه 26:
مسائل غیرقابل حل اخلاقی
* مخالفت با سياست كلى مديريت.
ل ل 0
کار را ترک کنند.
مشاركت در توسعه ى سيستم هاى سلاح هاى كشتار جمعى يا سيستم
۳
1 «ماوحطه SOS Cent eR eC 4 مللزنعههه5 صعاق
مقدمه ای بر مهندسی نرم افزار
Omid.Mofidian@gmail.co
m
©Ian Sommerville 2004
Software Engineering, 7th edition. Chapter 1
اهداف
معرفی مهندسی نرم افزار و تشریح اهمیت آن
بررسی مسائل کلیدی مطرح در مهندسی نرم افزار
طرح مباحث اخالقی ،حرفه ای و دغدغه های مهندسین نرم افزار
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
مهندسی نرم افزار
اقتصاد جهانی به نرم افزار وابسته است.
بیشتر سیستم ها توسط نرم افزار کنترل می شوند.
مهندسی نرم افزار به تئوری ها ،متدها و ابزار حرفه ای توسعه ی نرم افزار
وابسته است.
هزینه ی نرم افزار کسری معنی داری از تولید ناخالص ملی را در تمامی
کشورهای توسعه یافته را نمایش می دهد.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
هزینه های نرم افزار
غالب ًا هزینه ی نرم افزار به هزینه های سیستم کامپیوتری محدود می شود.
در یک کامپیوتر شخصی هزینه ی نرم افزار بیشتر از هزینه ی سخت افزار
می باشد.
هزینه های نرم افزار بیشتر در توسعه و نگهداری صرف می شود .در
سیستم های با عمر طوالنی ،هزینه ی نگهداری ممکن است چند برابر
هزینه ی توسعه گردد.
برای مهندسین نرم افزار هزینه ی موثر توسعه اهمیت دارد.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
نرم افزار چیست؟
برنامه های کامپیوتر و مستندات مربوطه – نیازمندی ها ،مدل های طراحی و کتاب
راهنمای کاربر – هستند.
محصوالت نرم افزاری ممکن است برای مشتری خاص یا عرضه ی عمومی توسعه
داده شود.
محصوالت نرم افزاری ممکن است
•
•
کلی – برای فروش به مشتریان مختلف کامپیوتر شخصی توسعه داده می شود مانند اکسل یا
ورد.
سفارشی – برای مشتری خاصی توسعه داده می شود.
در حال حاضر نرم افزار با توسعه ی برنامه های جدید ،پیکربندی سیستم های نرم
افزاری کلی یا استفاده ی مجدد نرم افزار موجود ایجاد شود.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
مهندسی نرم افزار چیست؟
مهندسی نرم افزار یک نظام مهندسی است که به تمامی جنبه های
محصول نرم افزار اهمیت می دهد.
مهندسین نرم افزار باید با یک شیوه ی اصولی و سازماندهی شده را در
کارشان پذیرفته و ابزار و تکنیک های مناسب برای حل مشکالت را بکار
گیرند .در این راستا باید محدودیت های توسعه و دسترس پذیری منابع
نیز مدنظر قرار گیرد.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
تفاوت بین مهندسی نرم افزار و علوم کامپیوتر
علوم کامپیوتر به تئوری و اصول اهمیت می دهد ،مهندسی نرم افزار به
مسائل عملی توسعه و تحویل نرم افزار اهمیت می دهد.
مهندسی نرم افزار از تئوری های علوم کامپیوتر استفاده می کند اما کافی
نیست.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
تفاوت مهندسی نرم افزار و سیستم
مهندسی سیستم به تمامی جنبه های توسعه ی سیستم های مبتنی بر
کامپیوتر اهمیت داده که شامل سخت افزار ،نرم افزار و مهندسی فرآیند
است .مهندسی نرم افزار بخشی از فرآیند زیرساخت نرم افزار ،کنترل،
برنامه های کاربردی و بانک های اطالعاتی در سیستم است.
مهندسین نرم افزار در مشخصات سیستم ،معماری ،یکپارچگی و
گسترش درگیر شده اند.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
فرآیند نرم افزار چیست؟
مجموعه ای از فعالیت ها که هدف شان توسعه یا تکامل نرم افزار است.
فعالیت های کلی در تمامی فرآیندهای نرم افزاری:
•
•
•
•
مشخصات – سیستم چه کاری باید انجام دهد و محدودیت های توسعه
چیست
توسعه – تولید سیستم نرم افزاری
اعتبارسنجی – بررسی شود که مشتری چه می خواهد
تکامل – تغییر نرم افزار در پاسخ به تقاضای تغییر.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
مدل فرآیند نرم افزار چیست؟
نمایش ساده ای از فرآیند نرم افزار است که از دیدگاهی خاص نشان داده
می شود.
نمونه هایی از دیدگاه های فرآیند:
مدل های کلی
•
•
•
•
•
•
دیدگاه جریان کاری – توالی فعالیت ها،
دیدگاه جریان داده – جریان اطالعات،
دیدگاه نقش/فعالیت – نقش افراد.
آبشاری،
توسعه ی تکراری،
مهندسی نرم افزار قطعه گرا.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
*ه های مهندسی نرم افزار
هزین
تقریباً 60درصد هزینه ،هزینه ی توسعه است 40 ،درصد هزینه ی تست
می باشد .برای نرم افزار سفارشی ،هزینه های تکامل بر هزینه ی توسعه
می چربد.
هزینه ها به نوع توسعه ی سیستم و نیازمندی ها مانند کارآیی و قابلیت
اطمینان سیستم بستگی دارد.
توزیع هزینه ها به مدل توسعه وابسته اند.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
توزیع هزینه
Waterfall model
0
25
Specification
Design
50
75
Development
100
Integration and testing
It erative development
0
25
Specification
50
75
Iterative development
100
System testing
Component-based software eng
ineering
0
25
Specification
50
Development
75
100
Integration and testing
Development and evolution costs for long-lifetime syst
ems
0
10
System development
©Ian Sommerville 2004
200
30
400
System evolution
Software Engineering, 7th edition. Chapter 1
هزینه های توسعه ی محصول
0
Specification
25
Development
©Ian Sommerville 2004
50
75
System testing
Software Engineering, 7th edition. Chapter 1
100
متدهای مهندسی نرم افزار
شیوه های ساخت یافته ی توسعه ی نرم افزار شامل مدل های سیستم ،نمادسازی ها،
قوانین ،توصیه ی طراحی و راهنمای فرآیند می باشد.
توصیف های مدل
•
قوانین
•
محدودیت هایی در مدل های سیستم اعمال می شود،
پیشنهادات
•
توصیف های گرافیکی مدل ها باید تولید شوند،
طراحی خوب توصیه می شود،
راهنمای فرآیند
•
فعالیت های جاری چه هستند.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
مهندسی نرم افزار به کمک کامپیوتر
سیستم های نرم افزاری برای فعالیت های فرآیند نرم افزار پشتیبانی
خودکاری فراهم می نمایند.
سیستم های کیس غالباً برای پشتیبانی مورد استفاده قرار می گیرند.
حدباالی کیس
•
ابزاری برای پشتیبانی از فعالیت های فرآیند نیازمندی ها و طراحی،
حدپایین کیس
•
ابزاری برای فعالیت های برنامه نویسی ،اشکال زدایی و تست.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
ویژگی های نرم افزار خوب
نرم افزار باید وظیفه مند و کارآ بوده همچنین قابل نگهداری ،قابل اطمینان و قابل
پذیرش باشد.
قابل نگهداری
•
قابل اطمینان
•
نرم افزار باید قابل اعتماد باشد؛
راندمان
•
نرم افزار باید قدرت تغییر پذیری را داشته باشد؛
نرم افزار نباید منابع سیستم را بیهوده مورد استفاده قرار دهد؛
قابل پذیرش
•
نرم افزار باید توسط کاربران قابل پذیرش باشد .بدین معنی که قابل درک ،قابل استفاده و
سازگار با سیستم های دیگر باشد.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
چالش های کلیدی مهندسی نرم افزار
ناهمگن ،تحویل و اطمینان.
ناهمگنی
•
تحویل
•
تکنیک های توسعه برای ایجاد نرم افزاری است که بتواند از عهده ی پالتفرم
ها و محیط های اجرایی ناهمگون برآید؛
تکنیک های توسعه به تحویل سریعتر نرم افزار منتهی می شود؛
اعتبار
•
تکنیک های توسعه ثابت می کند که نرم افزار می تواند توسط کاربرانش مورد
اطمینان قرار گیرد.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
مسئولیت اخالقی و حرفه ای
مهندس نرم افزار درگیر مسئولیت های گسترده تری از مهارت های
تکنیکی یک برنامه ی کاربردی ساده است.
مهندسین نرم افزار باید رفتار صادقانه ای داشته باشد و مسئولیت پذیر
باشد.
رفتاری منطبق بر قانون اخالقی داشته باشد.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
پی آمدهای مسئولیت حرفه ای 1
محرمانگی
•
مهندسان باید بطور طبیعی اطالعات کارمندانشان یا مشتریانشان را حفظ کنند.
صالحیت
•
مهندسان نباید بدصالحیت جلوه کنند .نباید دانسته کاری را بپذیرند که خارج
از صالحیتشان باشد.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
پی آمدهای مسئولیت حرفه ای 2
حقوق مالکیت فکری
•
مهندسان باید به قوانین محلی نسبت به استفاده ی از امکانات و مالکیت فکری
به عنوان اختراعات ،حق تالیف و غیره احترام بگذارند .آنها باید مراقب باشند
از حقوق کارفرمایان و مالکیت فکری حمایت شود.
سوءاستفاده از کامپیوتر
•
مهندسین نرم افزار نباید از مهارت های تکنیکی خود نسبت به کامپیوتر مردم
سوءاستفاده کنند.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
نظام نامه ی اخالقی ACM/IEEE
انجمن های حرفه ای امریکا از قوانین اخالقی حمایت می کنند.
اعضای این سازمان موظفند به قانون عمل نمایند.
قانون دربرگیرنده ی هشت ماده در مورد رفتارها و تصمیمات حرفه ای
مهندسین نرم افزار شاغالن ،معلمان ،مدیران ،ناظران و سیاست گذاران
است.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
نظام نامه ی اخالقی -مقدمه
مقدمه
•
•
قوانین در سطح باالیی مطرح شدند؛ برخی از مواد به صورت جزیی
و با مثال هایی همراه است که چگونگی فعالیت حرفه ای مهندسین
نرم افزار را بیان می دارند.
مهندسین نرم افزار باید در تحلیل ،تعیین مشخصات ،طراحی ،توسعه،
تست و نگهداری نرم افزار صالحیت داشته و آن را تعهد نمایند.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
نظام نامه ی اخالقی – اصول 1
عمومیت
•
متقاضی و کارمند
•
مهندسان نرم افزار باید مطابق با عالیق عمومی عمل نماید.
مهندسان نرم افزار باید به روشی عمل نماید که مطابق با عالیق متقاضیان و
کارمندان باشد.
محصول
•
مهندسان نرم افزار باید مطمئن باشند که محصوالتشان و اعمال تغییرات را
مبتنی بر استانداردهای حرفه ای انجام خواهند داد.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
نظام نامه ی اخالقی – اصول 2
داوری
•
مدیریت
•
مهندسان نرم افزار باید درستی و استقالل را در داوری حفظ نمایند.
مدیران و سرپرستان مهندس نرم افزار باید شیوه ی اخالقی را در مدیریت
توسعه ی و نگهداری نرم افزار ترویج کنند.
حرفه
•
مهندسان نرم افزار باید به درستی و حسن عملکرد شهرت کسب کنند.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
نظام نامه ی اخالقی – اصول 3
همکاران
•
مهندسین نرم افزار باید بیطرف بوده و از همکاران خود پشتیبانی نمایند.
مسائل شخصی
•
مهندسین نرم افزار باید تمام عمر در ارتقای سطح علمی و اخالقی خود کوشا
باشند.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004
مسائل غیرقابل حل اخالقی
مخالفت با سیاست کلی مدیریت.
کارمندانتان به روشی غیراخالقی عمل کنند و قبل از پایان و تست سیستم
کار را ترک کنند.
مشارکت در توسعه ی سیستم های سالح های کشتار جمعی یا سیستم
های هسته ای.
Software Engineering, 7th edition. Chapter 1
©Ian Sommerville 2004