تارا فایل

پاورپوینت معرفی اصول شئ گرائی برای مقابله با پیچیدگی نرم افزار



درس مهندسی نرم افزار پیشرفته
فصل دوم
بسمه تعالی
معرفی اصول شئ گرائی برای مقابله با پیچیدگی نرم افزار

این اسلایدها برگرفته از اسلایدهای درس مهندسی نرم افزار پیشرفته استاد گرامی جناب آقای دکتر شمس است

اهداف جلسه
آشنائی با اصول شئ گرائی
درک نقش اصول شئ گرائی در کنترل پیچیدگی
سیستمهای نرم افزاری
درک مزایای مدل شئ و کاربردهای آن

فهرست
مقدمه
روشهای طراحی
تجرید Abstraction
دربرگیری Encapsulation
واحدبندی Modularity
سلسه مراتب Hierarchy
مزایای مدل شئ و کاربردهای آن

نقش نرم افزار در روزهای اولیه عصر کامپیوتر

نقش ثانویه تلقی می شد(Afterthought)

هزینه اساسی طراحی یک سیستم کامپیوتری از آن سخت افزار بود

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

مقدمه

نقش نرم افزار در روزهای اولیه عصر کامپیوتر (ادامه)
فرایند طراحی به صورت ضمنی در ذهن برنامه نویس انجام می شد
زبان رایج: زبان ماشین سپس اسمبلی ابداع شد
قابلیت سخت افزار بسیار محدود بود برنامها کوچک و ساده بودند
ظاهرا نیازی به مستند سازی نبود

مقدمه (ادامه)

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

مقدمه (ادامه)

نقش نرم افزار در روزهای کنونی (ادامه)
سخت افزار سریعتر، ارزانتر، و قابل اطمینان تر اقتصادی شدن فرایند خودکار سازی بسیاری از کاربردهای صنعتی و تجاری تقاضا بر نرم افزارهای پیچیده تر

زبانهای رایج: زبانهای سطح بالا، ساخت یافته، و شئ گرا
درک اهمیت مستندسازی سیستمها
احساس نیاز به روشهای تحلیل و طراحی

مقدمه (ادامه)

مقدمه (ادامه)
درصد هزینه های نرم افزار در مقابل هزینه های سخت افزار از سالهای 1955 تا 1985

طراحی ساخت یافتهStructured Design
طراحی مبتنی بر داده ها Data-Driven Design
طراحی شئ گرائی Object-Oriented Design
روشهای طراحی

شئ گرائی
محصورسازی
تجرید
سلسله مراتب
واحد بندی
اصول شئ گرائی

تجرید (Abstraction)
”تجرید عبارتست از فرایند متمرکز شدن روی ویژگیها و رفتارهای اصلی یک پدیده، و نادیده گرفتن ویژگیهای موقت و غیر مهم آن پدیده، از یک زاویه دید مشخص“

تجرید (ادامه)
مثالهایی از تجرید
1

نقش تجرید در کنترل پیچیدگی:
یکی از ابزارهای اصلی کنترل و تسلط بر پیچیدگی
تجرید (ادامه)

انواع تجرید:
تجرید موجودیت(Entity Abstraction)
Real Object: Student
Abstraction: Student
تجرید (ادامه)

تجرید رفتار:

تجرید ماشین مجازی:
اضافه به لیست
آرایه
لیست پیوندی

پیاده سازی
پروتکل TCP/IP
تجرید (ادامه)

ویژگیهای تجرید:
برای یک شئ تجریدهای گوناگونی وجود دارد
تجرید با نمود خارجی یک شئ سر وکار دارد
تجرید سطوحی دارد(میزان پرداختن به جزئیات)
همه تجریدها دارای ویژگیهای ساکن و پویا هستند
در شئ گرائی مفهوم تجرید خود را در قالب نوع داده مجرد (Abstract Data Type) نشان می دهد
تجرید (ادامه)

محصور سازی (Encapsulation)
”محصور سازی عبارت از عدم پذیرش تاثیرات ناخواسته (Side Effects) و یا کنترل نشده و محدود کردن طرق دسترسی به یا استفاده از یک شئ“
با توجه به این اصل هر شئ از دو مولفه زیر تشکیل می گردد:
1- واسط(Interface): توصیفی از سرویسهایی که این شئ در اختیار Clientها قرار می دهد.
2- ساختار داخلی: داده ها + اعمال روی داده ها

محصور سازی (ادامه)
شئ
واسط

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

محصور سازی (ادامه)
قاعده باز و بسته:
”هر ماژولی برای تعریف کننده آن باز و برای استفاده کننده بسته است“
”ما به ماژولهایی نیاز داریم که همزمان باز و بسته باشند“
ماژول باز: ماژولی که برای اعمال تغییرات آماده باشد
ماژول بسته: ماژولی که امکان تغییرات در آن وجود ندارد

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

واحد بندی (Modularity)
”سیستمی را واحد بندی شده می گویند که به مجموعه ای از ماژولهای(واحدها) منسجم و معنی دار که وابستگی بین آنها حد اقل است تجزیه شده باشد“
ماژولها : واحد تشکیل دهنده ساختار فیزیکی سیستم نرم افزاری(شبیه مدارات مجتمع در سخت افزار)
مثالی از واحدها:
فایلها در C و C++
واحدها (Units) در Object Pascal
مولفه ها(Components) در استانداردهای COM ، Java Beans و .NET

واحد بندی (ادامه)
انسجام (Cohesion): انسجام عبارتست از درجه ارتباط عملکردهای عناصر داخلی یک ماژول

وابستگی(Coupling): وابستگی عبارتست از درجه ارتباط ماژولهای گوناگون با یکدیگر

مثال :
واحد بندی (ادامه)

نقش واحد بندی در کنترل پیچیدگی:
شکستن مساله به اجزائی کوچکتر یکی از راههای کارا برای مقابله با پیچیدگی
مثال: اگر مسئله P را به زیر مسئله های P1، P2 و P3 تقسیم نماییم آنگاه
C(P) > C(P1) + C(P2) + C(P3)
E(P) > E(P1) + E(P2) + E(P3)
C: Complexity
E: Solving Energy
توجیه معادلات فوق: هنگام شکستن P وابستگی بین P1، P2، و P3 نادیده گرفته می شود
واحد بندی (ادامه)

بنابر استدلال قبل می توان نوشت:
واحد بندی (ادامه)

در روابط قبل برای سادگی، تلاش لازم برای یکپارچگی(Integration) راه حلها با یکدیگر نادیده گرفته شده است. بنابراین باید نوشت:
واحد بندی (ادامه)
I : تلاش لازم برای یکپارچه سازی راه حلها
توجیه:
هنگام شکستن P، روابط موجود بین زیر مسئله ها نادیده گرفته می شود
دو مرحله شدن راه حل(شکستن سپس یکپارچگی)

ویژگیهای واحدبندی:
اگر شرایط بیان شده در تعریف واحد بندی رعایت گردد آنگاه ماژولهای بدست آمده قابلیت استفاده مجدد بالایی خواهد داشت
تعداد زیر مساله ها نباید زیاد یا کم باشد
تعیین معیار شکستن یک مساله مهمترین عامل برای موفقیت استفاده از این ویژگی

واحد بندی (ادامه)

واحدهاباید ویژگیهای Building Blocks را داشته باشند:
استقلال(Independent)
واسطهای خوش تعریف(Well-defined Interfaces)
واحد بندی (ادامه)

سلسله مراتب (Hierarchy)
”سلسله مراتب عبارت از مرتب ساختن تجریدها در سطوح مختلف“
انواع سلسله مراتب:
ساختار کلاس(IS-A)
مثال: Orange IS-A Fruit
1

”وراثت(Inheritance) یکی از معروفترین انواع رابطهIS-A “
سلسله مراتب (ادامه)

سلسله مراتب (ادامه)
روابط وراثتی کلاس پدر، کلاس، و کلاس فرزند

”سطوح تجرید متفاوت در سطوح مختلف سلسه مراتب نمایان می گردد“
سلسله مراتب (ادامه)

ساختار شئ(PART-OF)
The Vehicle HAS-An Engine
The Engine is PART-OF Vehicle
2
سلسله مراتب (ادامه)

نقش سلسله مراتب در کنترل پیچیدگی:
با سازماندهی تجریدها در سلسله مراتب PART-OF و IS-A درک ما نسبت به سیستم افزایش می یابد
اهمیت سلسله مراتب PART-OF: روابط موجود بین اشیاء و فعل و انفعالاتی که رخ می دهد را نمایان می سازد
اهمیت سلسله مراتب IS-A: افزونگی موجود در سیستم را مدیریت می نماید(Economy of Expression)
سلسله مراتب (ادامه)

ویژگیهای سلسله مراتب:
استفاده از وراثت با محصورسازی تام تعارض دارد زیرا مستلزم دسترسی مستقیم کلاس فرزند به بعضی از اعمال و داده های اختصاصی کلاس پدر است
سلسله مراتب (ادامه)

هدف نهائی تکنولوژی OO انجام فرایند تولید نرم افزار به صورت مشابه فرایند تولید سخت افزار(فرایند استاندارد و سیستماتیک)
قابلیت پشتیبانی از سیستم های توزیع شده(اشیاء یا مولفه ها روی سایت های گوناگون توزیع می شوند)
ارائه مدل قویتری که پتانسیل مدیریت پیچیدگی کاربردهای امروزی را دارا باشد

مزایای مدل شئ
1
2
3

کاهش هزینه تولید و نگهداشت نرم افزار بوسیله در نظر گرفتن اشیاء بعنوان واحد مجتمع پذیر تفکیک نشدنی
افزایش مقیاس پذیری و قابلیت توسعه سیستمها بوسیله محصورسازی
استفاده مجدد بوسیله تکنولوژی مولفه ها(COM، .NET، Java Beans) که بر مفاهیم مدل شئ مبتنی است
4
5
6
مزایای مدل شئ (ادامه)


تعداد صفحات : 39 | فرمت فایل : .ppt

بلافاصله بعد از پرداخت لینک دانلود فعال می شود