شی گرایی در مهندسی نرم افزار
2
اهداف جلسه
آشنائی با اصول شئ گرائی
درک نقش اصول شئ گرائی در کنترل پیچیدگی
سیستمهای نرم افزاری
درک مزایای مدل شئ و کاربردهای آن
3
فهرست
مقدمه
روشهای طراحی
تجرید Abstraction
محصور کردن Encapsulation
واحدبندی Modularity
سلسله مراتب Hierarchy
مزایای مدل شئ و کاربردهای آن
4
نقش نرم افزار در روزهای اولیه عصر کامپیوتر
نقش ثانویه تلقی می شد(Afterthought)
هزینه اساسی طراحی یک سیستم کامپیوتری از آن سخت افزار بود
بیشتر نرم افزارها بوسیله یک نفر تولید می شدند
مقدمه
5
نقش نرم افزار در روزهای اولیه عصر کامپیوتر (ادامه)
فرایند طراحی به صورت ضمنی در ذهن برنامه نویس انجام می شد
زبان رایج: زبان ماشین سپس اسمبلی ابداع شد
قابلیت سخت افزار بسیار محدود بود برنامه ها کوچک و ساده بودند
ظاهراً نیازی به مستندسازی نبود
مقدمه (ادامه)
6
نقش نرم افزار در روزهای کنونی
نقش بسیار اساسی
هزینه اساسی طراحی یک سیستم کامپیوتری از آن نرم افزار است
بیشتر نرم افزارها بوسیله تیمهای چند نفره تولید می شوند
فرآیند طراحی به صورت صریح در خارج از ذهن برنامه نویس انجام می شود
مقدمه (ادامه)
7
نقش نرم افزار در روزهای کنونی (ادامه)
سخت افزار سریعتر، ارزانتر، و قابل اطمینان تر اقتصادی شدن فرایند خودکارسازی بسیاری ازکاربردهای صنعتی و تجاری تقاضا برای نرم افزارهای پیچیده تر
زبانهای رایج: زبانهای سطح بالا، ساخت یافته و شئ گرا
درک اهمیت مستندسازی سیستمها
احساس نیاز به روشهای تحلیل و طراحی
مقدمه (ادامه)
8
درصد هزینه های نرم افزار در مقابل هزینه های سخت افزار از سالهای 1955 تا 1985
9
تاریخچه
روش شیءگرا در توسعه نرم افزار اولین بار در اواخر دهه ۱۹۶۰ برای توسعه نرم افزار به کار گرفته شد. ولی ۲۰ سال طول کشید تا فنآوری شیء گرا به طور گسترده مورد استفاده قرار گیرد. در سرتاسر دهه ۱۹۹۰ ، مهندسی نرم افزار شیء گرا الگوی انتخابی بسیاری از نرم افزار نویسان شد
10
مزایای شی گرایی
فنآوری های شیء گرا منجر به استفاده مجدد می شود و استفاده مجدد (از مولفه های برنامه) منجر به توسعه سریعتر نرم افزارها و برنامه هایی با کیفیت بالاتر می شود. نگهدرای نرم افزارهای شیء گرا آسانتر است زیرا ساختار آن ذاتاً فاقد پیوستگی است. این موضوع، به هنگام اعمال تغییرات، اثرات جانبی کمتری به وجود می آورد و برای مهندس نرم افزار و مشتری دردسر کمتری ایجاد می کند. به علاوه، تطبیق دادن و تغییر دادن اندازه سیستم های شیء گرا آسانتر است
(یعنی سیستم های بزرگ را می توان با مونتاژ کردن زیرسیستم های قابل استفاده مجدد ایجاد کرد).
11
مدل فرایند شی گرا
مشخص نمودن
کلاسهای کاندید
جستجو نمودن
کلاسها در کتابخانه
استخراج کلاسها در
صورت موفق بودن جستجو
مهندسی کلاسها در
صورت موفق نبودن جستجو
تحلیل OO،طراحی OO
پیاده سازی OO،آزمون OO
ساخت N امین
تکرار سیستم
وارد کردن کلاسهای
جدید در کتابخانه
12
کلاس
موجودیتی است غیر قابل استفاده مستقیم، شامل مجموعه ای از متغیرها به عنوان صفات کلاس و خطوط برنامه ای از جنس تابع و رویه ها به عنوان بخشی از عملکرد آن
13
Object
در ساده ترین حالت، یک شیء، نمونه ای است که از روی یک کلاس ایجاد شده است. چون کلاس نمی تواند عملیاتی باشد ، ولی نمونه های تولید شده از آن قابلیت اجرایی خواهند داشت. در کاملترین حالت یک شیء موجودیتی است کاملاً مستقل با مسوولیتهای شخصی خویش که در لحظه تولید از کلاس مرجع خود بوجود آمده یا متولد شده و در پایان مسوولیتهای خود می باید از بین برود.
14
Class Responsibilty
یک کلاس و یا یک نمونه از آن در طول عمر خود دارای یک سری از مسوولیتها است. مانند ارتباط با اشیاء دیگر، اجرای یک سری از عملیات و دریافت یکسری از مقادیر برای رسیدن به یک هدف خاص.
Attribute/ Property صفات
Operation/Method عملکردها
Connection/ Relation) ارتباط
15
Attribute/ Property صفات
خصوصیات، مو اردی هستند از جنس متغیرها که بنا به تعریف، آگاهی های هر شیء از خودش را نشان می دهند، مانند ابعاد یک فرم. وضعیت یک Connectionنام یک فرد یا رنگ یک متن.
Public
Private
Protected
16
Operation/Method عملکردها
عمل، عکس العمل یا مجموعه ای از عملیات (متد) که یک شیء در طول دوره زندگی خود با آن خواهد بود و به عنوان یک متد تعریف می شود.
17
Connection/ Relation) ارتباط
آگاهی داشتن یک شیء از سطوح مسوولیت دیگر اشیاء (بعضی از صفات، عملکردها یا ارتباطات اشیاء دیگر ) را رابطه می نامند. ارتباطات در محیط، الزاماً دو طرفه نبوده و عموماً یک شیء با اشیاء دیگر بطور یکطرفه ارتباط برقرار می کند.
18
هفت گام اساسی مدل شیء گرا
– تجرید: بطور کلی به مفهوم مجرد سازی یا خلاصه سازی می باشد. این موضوع از دو دیدگاه مورد بررسی قرار می گیرد. در سطح کلاس منظور از انتزاع صرفاً در نظر گرفتن خصوصیات یا متدهایی از یک کلاس می باشد که در حوزه مساله دارای ارزش خواهند بود و در سطح یک شیء در نظر گرفتن خاصیت یا ویژگی است که در طراحی یک کلاس که اشیاء یا نمونه های حاصل از آن کلاس بطور منحصر به فرد در اختیار قرار گرفته و مشخص باشند.
19
هفت گام اساسی مدل شیء گرا
– :Encapsulationمنظور از پنهان سازی یا مخفی سازی عناصر درونی یک کلاس و به تبع آن یک Object است.
– :Inheritanceارث بری به طور کلی روشی است برای بیان شباهت ها. این حالت در طراحی به عنوان یک رابطه Generalization تعریف می گردد
Polymorphismمنظور از چند شکلی، یک شیء خاص بودن و چند حالت مختلف داشتن می باشد
20
هفت گام اساسی مدل شیء گرا
– :Message Communicationارتباط پیامی، تنها راه ارتباط مابین اشیاء است. مانند ارسال یک مقدار یا یک پارامتر از یک شیء به شیء دیگر. در حقیقت زمانی که شیءA پیامی را برای شی ءB ارسال میکند. به شی Bفرمان می دهد تا با اجراء یک یا بیش از یک متد، در وضعیت خود، تغییری را حاصل کند.
21
هفت گام اساسی مدل شیء گرا
:Reusabilityاستفاده مجدد از اشیاء که یک ویژگی الزامی نمی باشد. منظور استفاده مجدد از یک شیء در پایان مسوولیت های قبلی خود با همان نام و ساختار اولیه است
:Concurrencyاجرای همزمان دو یا چند فعالیت در سطح یک شیء یا یک سیستم، ساختار همروندی را ایجاد می کند، این ویژگی در داخل اشیاء و برای متدهای درونی خو د آنها اجباری نیست.
22
شئ گرائی
محصورسازی
تجرید
سلسله مراتب
واحدبندی
اصول شئ گرائی
ارتباطات + وراثت + طبقه بندی+ اشیاء= شیء گرایی
23
تجرید (Abstraction)
”تجرید عبارتست از فرایند متمرکز شدن روی ویژگیها و رفتارهای اصلی یک پدیده و نادیده گرفتن ویژگیهای موقت و غیر مهم آن پدیده، از یک زاویه دید مشخص.“
24
تجرید (ادامه)
مثالهایی از تجرید
1
25
بیان روابط میان اجزاء یک سیستم مکانیکی توسط یک معادله ریاضی
استفاده از نماد برای نمایش حضور موجودیت انسان در یک صحنه
نمایش گرافیکی رفتار یکی سیستم
2
3
نقش تجرید در کنترل پیچیدگی:
یکی از ابزارهای اصلی کنترل و تسلط بر پیچیدگی
تجرید (ادامه)
26
تجرید موجودیت(Entity Abstraction)
Real Object: Student
Abstraction: Student
تجرید (ادامه)
27
ویژگیهای تجرید:
برای یک شئ تجریدهای گوناگونی وجود دارد
تجرید با نمود خارجی یک شئ سروکار دارد
تجرید سطوحی دارد(میزان پرداختن به جزئیات)
تجرید (ادامه)
28
محصور سازی (Encapsulation)
”محصور سازی عبارت از عدم پذیرش تاثیرات ناخواسته (Side Effects) و یا کنترل نشده و محدود کردن طرق دسترسی یا استفاده از یک شئ.“
با توجه به این اصل هر شئ از دو مولفه زیر تشکیل می گردد:
1- واسط(Interface): توصیفی از سرویسهایی که این شئ در اختیار مشتریها قرار می دهد.
2- ساختار داخلی: داده ها + اعمال روی داده ها
29
محصور سازی (ادامه)
شئ
واسط
30
محصور سازی (ادامه)
برخی از مزایای محصور سازی عبارتند از :
جلوگیری از دسترسی های عیر مجاز
امکان تغییر در محتویات کلاس بدون آنکه خللی به استفاده کنندگان وارد نماید (به شرط آنکه واسطهای کلاس تغییر ننماید)
افزایش قابلیت استفاده مجدد
31
محصور سازی (ادامه)
ویژگیهای محصورسازی:
ارتباط بین اشیاء تنها از راه واسطها می باشد.
تجرید مکانیزم تعیین جزئیاتی است که باید پنهان شود اما محصورسازی فرایند پنهان سازی جزئیات و کنترل دسترسی به آن می باشد.
محصورسازی یک مفهوم نسبی است.
32
واحد بندی (Modularity)
”سیستمی را واحد بندی شده می گویند که به مجموعه ای از ماژولهای(واحدها) منسجم و معنی دار که وابستگی بین آنها حداقل است تجزیه شده باشد.“
ماژولها : واحد تشکیل دهنده ساختار فیزیکی سیستم نرم افزاری
33
واحد بندی (ادامه)
انسجام (Cohesion): انسجام عبارتست از درجه ارتباط عملکردهای عناصر داخلی یک ماژول
وابستگی(Coupling): وابستگی عبارتست از درجه ارتباط ماژولهای گوناگون با یکدیگر
34
مثال :
واحد بندی (ادامه)
35
نقش واحد بندی در کنترل پیچیدگی:
شکستن مساله به اجزائی کوچکتر یکی از راههای کارا برای مقابله با پیچیدگی است
واحد بندی (ادامه)
36
ویژگیهای واحدبندی:
اگر شرایط بیان شده در تعریف واحد بندی رعایت گردد آنگاه ماژولهای بدست آمده قابلیت استفاده مجدد بالایی خواهند داشت.
تعداد زیر مساله ها نباید زیاد یا کم باشند.
تعیین معیار شکستن یک مساله؛ مهمترین عامل برای موفقیت استفاده از این ویژگی است.
واحد بندی (ادامه)
37
سلسله مراتب
سلسله مراتب عبارت از مرتب ساختن تجریدها در سطوح مختلف است.
سلسله مراتب باعث افزایش فهم مساله می گردد.
انواع سلسله مراتب :
سلسله مراتب ساختار کلاس (IS-A)
سلسله مراتب ساختار شی (PART-OF)
38
سلسله مراتب (Hierarchy)
”سلسله مراتب عبارت است از مرتب ساختن تجریدها در سطوح مختلف.“
انواع سلسله مراتب:
ساختار کلاس(IS-A)
مثال: Orange IS-A Fruit
1
39
سلسله مراتب ساختار کلاس (IS-A)
نام دیگر این نوع سلسله مراتب تخصیص / تعمیم
(Generalization/Specialization)
می باشد.
وراثت مهمترین شکل سلسله مراتب IS-A می باشد.
کلاس فرزند یک تخصیص از کلاس عمومی تر(کلاس پدر) را نمایش می دهد.
وراثت با اصل پنهان سازی اطلاعات در تضاد است.
40
”وراثت(Inheritance) یکی از معروفترین انواع رابطهIS-A است.“
سلسله مراتب (ادامه)
41
سلسله مراتب (ادامه)
روابط وراثتی کلاس پدر، کلاس و کلاس فرزند
42
”سطوح تجرید متفاوت در سطوح مختلف سلسله مراتب نمایان می گردد“
سلسله مراتب (ادامه)
43
سلسله مراتب PART-OF
نوع دیگری از سلسله مراتب می باشد که در آن یک کلاس از
یک یا چند کلاس دیگر تشکیل می گردد.
نام دیگر این نوع سلسله مراتب رابطه کل/جزء ( Whole/Part Relationship )یا رابطه تجمعی (Aggregation Relationship)
می باشد.
44
ساختار شئ(PART-OF)
The Vehicle HAS-An Engine
The Engine is PART-OF Vehicle
2
سلسله مراتب (ادامه)
45
نقش سلسله مراتب در کنترل پیچیدگی:
با سازماندهی تجریدها در سلسله مراتب PART-OF و IS-A درک ما نسبت به سیستم افزایش می یابد.
اهمیت سلسله مراتب PART-OF: روابط موجود بین اشیاء و فعل و انفعالاتی که رخ می دهد را نمایان می سازد.
اهمیت سلسله مراتب IS-A: افزونگی موجود در سیستم را مدیریت می نماید.
سلسله مراتب (ادامه)
46
ویژگیهای سلسله مراتب:
استفاده از وراثت با محصورسازی تعارض دارد زیرا مستلزم دسترسی مستقیم کلاس فرزند به بعضی از اعمال و داده های اختصاصی کلاس پدر است
سلسله مراتب (ادامه)
47
هدف نهائی تکنولوژی OO انجام فرایند تولید نرم افزار به صورت مشابه فرایند تولید سخت افزار(فرایند استاندارد و سیستماتیک) است.
قابلیت پشتیبانی از سیستمهای توزیع شده(اشیاء یا مولفه ها روی سایتهای گوناگون توزیع می شوند) را داراست.
ارائه مدل قویتری که پتانسیل مدیریت پیچیدگی کاربردهای امروزی را دارا باشد.
مزایای مدل شئ
1
2
3
48
کاهش هزینه تولید و نگهداشت نرم افزار بوسیله در نظر گرفتن اشیاء به عنوان واحد مجتمع پذیر تفکیک نشدنی
افزایش مقیاس پذیری و قابلیت توسعه سیستمها به وسیله محصورسازی
استفاده مجدد بوسیله تکنولوژی مولفه ها(+COM، .NET، Java Beans) که بر مفاهیم مدل شئ مبتنی است
4
5
6
مزایای مدل شئ (ادامه)