PDA

View Full Version : نقش شی گرایی در مهندسی نرم افزار(بررسی متدولوژی OOA/OOD)



tayebeh
سه شنبه 13 اردیبهشت 1384, 08:29 صبح
با سلام به همه دوستان عزیز اگر خدا بخواهد می خواهم در این مقاله به بررسی شی گرایی در مهندسی نرم افزار بپردازیم و پس از آن به تشریح مهندسی نرم افزار توسط شی گرایی ادامه بدهیم .

قسمت اول

مهندسی به معنی :
انجام عملیاتی به منظور تولید محصولی با تبعیت از مجموعه قواعد مشخصی .به عبارت دیگر انجام سیستماتیک یک عملیات .
مهندسی نرم افزار :
طراحی و تولید نرم افزارباتبعیت از یک قواعد و ضوابط مشخصی .
چرا مهندسی نرم افزار متولد شد ؟
وقتی محصولی تولید می شود دو نکته مهم باید مورد توجه قرار بگیرد:
1-زمان
2-هزینه(پول)
قبلا فقط بصورت تجربی هزینه و زمان تخمین زده می شد و گاهی این تخمین درست از آب در نمی آمد و خیلی شرکتهای بزرگ آمریکایی دچار ضررهای عظیمی شدند .
پس از آن بود که تصمیم گرفتند ، طبق یک ضوابط خاص, زمان و هزینه را تخمین بزنند و بهمین خاطر از مهندسی نرم افزار استفاده کردند .
چرا مهندسی نرم افزار بسرعت رشد کرد ؟1-رشد سریع تکنولوژی سخت افزار
2-مطرح شدن نیازهای جدید:
مثلا در15گذشته اینترنت نبود اما حالا هست و اینترنت نیازهای خود را به همراه آورد . مثلا نرم افزارهایی برای دانلود کردن .
3-ظهور سیستمهای بزرگ و پیچیده .
برای مدیریت سیستمهای بزرگ باید مهندسی نرم افزار رشد می کرد .
مراحل تولید نرم افزار :
1-مطالعه امکان سنجی (Feasebility Study)
2-تحلیل سیستم (System Analysis)
3-طراحی سیستم (System Design)
4-پیاده سازی سیستم (System Implementation)
5-آزمون و اصلاح (System Test & Integration)
6-اعتبارسنجی سیستم(System Validation)
7-پشتیبانی فنی(System Maintance)
سیستم چیست ؟
مجموعه ای از اجزا که با هم هدف خاصی داشته باشند .
در مهندسی نرم افزار با سیستمهای اطلاعاتی روبرو هستیم . سیستمهای اطلاعاتی دارای 5مولفه دارند :

1-مجموعه ای از ورودیها
2-مجموعه ای از خروجیها
3-مجموعه ای از فایلهای اطلاعاتی که اطلاعات سیستم در آنجا ذخیره می شود .
4-مجموعه ای از پروسسها که بیانگر عملیات سیستم می باشد .
5-هدف
تحلیل سیستم اطلاعاتی یعنی شناسایی 5 مولفه بالا .
متدولوژی چیست ؟
متدولوژی یعنی روش . هر متدولوژی باید 2 هدف مهم را تحقق ببخشد :
1-راه کارهای عملی برای انجام تحلیل به ما بدهد .
2-برای نمایش نتایج تحلیل یک روش ارائه دهد .( یعنی نتایج تحلیل را چطور نشان بدهیم )
UML به تنهایی یک متدولوژی نیست بلکه RUP مکمل آن است .

تحلیلگر سیستم باید توانمندیهای زیر را داشته باشد :
1-آشنایی با روشهای تحلیل .
2-دانش فنی کامپیوتری داشته باشد .
3-اطلاعات دامنه ای داشته باشد .
4-روابط عمومی قوی داشته باشد .
تکنولوژی چیست ؟
هرتکنولوژی یک ایده اصلی دارد و یک زمینه کاربردی .
بطور مثال تکنولوژی هسته ای :
1-ایده : در هسته اتم , انرژی هست .
2-کاربرد : در زمینه پزشکی یا کشاورزی و.....
تکنولوژی ساخت یافته :
1-ایده : اگر مسئله بزرگی داشته باشیم و بخواهیم راه حلی برای آن پیدا کنیم . این مسئله را به زیرمسائل کوچکتر بشکنیم تا به زیرمسائل حل شده برسیم بعد این زیرمسائل حل شده را بهم بچسبانیم تا جواب نهایی را پیدا کنیم .
2-کاربرد : استفاده از این تکنولوژی در زبانهای ساخت یافته . مانند : پاسکال و...
تکنولوژی شی گرائی :
1-ایده : همه چیز را در قالب اشیا و روابط بین آنها دیدن .
2-کاربرد : زبانهای برنامه نویس شی گرا و پایگاه داده شی گرا و مهندسی نرم افزار شی گرا .
تحلیل و طراحی سیستمها از دیدگاه تکنولوژی دو گونه اند :
1-دیدگاه مبتنی بر ساخت یافتگی
2-دیدگاه مبتنی بر شی گرایی
تاریخچه شی گرایی :اول بار در سال 1966 در قالب زبانی به نام simula که به منظور پیاده سازی شبیه سازی کامپیوتری تهیه شده بود , ارائه شد.در سال 1970 ، مفهومی تحت عنوان Abstract Data Type(ADT) بوجود آمد .
در دهه 70 زبان small talk بوجود آمد . ویژگی آن , این بود که اینترفیسش بصورت منویی طراحی شد و این ویژگی بدون شی گرایی ممکن نیست .
در دهه 80 زمینه های کاربردی آن در هوش مصنوعی هم توسعه پیدا کرد . از دهه90 تا حالا بشدت در حوزه زبانهای برنامه نویسی رشد کرد . (بطور مثال corba روشی شی گرا برای مدیریت شبکه و ...)
مزایایی شی گرایی :
1-مدل سازی دنیای واقعی را تسهیل می کند .
2-شی گرایی امکان Reuse کردن برنامه های کامپیوتری را فراهم می کند .(Reuseability:قابلیت استفاده مجدد)
یعنی یک قطعه برنامه ای را یکبار نوشتن و به دفعات متعدد در برنامه های مختلف از آن استفاده کردن .
مزایای Reuseability:
الف- صرفه جویی در زمان
ب – صرفه جویی د رهزینه
3-شی گرایی امکانات مناسبی برای ساخت سریع GUI دقیق فراهم می کند .
4- امکان اجرای موازی (Parallel) نرم افزار را روی چندین CPU فراهم می کند .
5- امکان Proto typing سریع فراهم می کند .
6- امکان توسعه کم هزینه تر و سریع تر و راحت تر نرم افزار را فراهم می کند .
تئوری شی گرایی چیست ؟
این تئوری سه رکن دارد :
1-Object
2-Class
3-Inheritance
Object:
1-تعریف عمومی :
هر مفهوم مادی یا معنایی در دنیای واقعی را شی می گوییم .
2-تعریف در حوزه شی گرایی :
الف - یک شی یک نمونه از یک کلاس است .
ب - یک شی متشکل از سه مولفه است :
1) یک Attribute یکتا که آن شی را از سایر اشیا متمایز می کند . مثل : کد کتاب , شماره دانشجویی .
2) State : مجموعه مقادیری که آن شی را مشخص می کند .مثال:
I : Real
I:=3.5
3) Behavioure : مجموعه عملهای قابل اعمال روی شی را رفتار شی می گویند .

یک شی یک مفهومی است که با یک شناسه منحصر به فرد و مجموعه ای از مقادیر و کلاسی که به آن تعلق دارد مشخص می شود .
بین اشیا سه گونه رابطه هست :
1-یک به یک : خیلی کم هستند .
2-یک به چند : خیلی مهم هستند . مطرح ترین نوع رابطه به شمار می آیند .
3-چند به چند : حضورشان در سیستم کامپیوتری ممنوع است .

Class :
رکن دوم شی گرایی می باشد .
1- تعریف بصورت عام :
یک مجموعه همگون از اشیا به لحاظ ساختار و رفتار .
2- تعریف بصورت خاص :
مشتمل بر 3 مولفه است :
الف – Instantiation :
هر کلاسی لازم است که مکانیزمی برای نمونه سازی داشته باشد .(معنی ندارد که کلاسی داشته باشیم که نمونه ساز نداشته باشد .)
ب - Instance variable = Attribute
فیلدهای اطلاعاتی (بخش داده) کلاس را تشکیل می دهد .
ج - Operations(Method)
یعنی مجموعه عملگرهای مجاز یا قابل اعمال روی اشیا کلاس .

یک کلاس یک Abstract Data Type (داده انتزاعی) است که توسط یک مکانیزم نمونه سازی و مجموعه ای از Propertyها مشخص می شود .Operationهای کلاس رفتار اشیا کلاس را بیان می کند .
تعریف انتزاع :
هرچقدر دید ما به آنچه که واقعا هست , نزدیکتر باشد , دید ما غیرانتزاعی تر است .
هر چقدر دید ما به آنچه که واقعا هست , فاصله بیشتری داشته باشد , دید ما انتزاعی تر است .
سه جنبه انتزاع د رمورد کلاس :
1-فاصله زیادی بین آنچه می بینیم با آنچه ذخیره می شود .
2-پنهان سازی اطلاعات می کند .
بطور مثال : نحوه پیاده سازی عملگرها را پنهان می کنیم و کاربر فقط نحوه استفاده از کلاس را می داند .
مزایا پنهان سازی اطلاعات ( Information Hidding) :
از دید طراح :
1-امنیت در مورد الگوریتمهای کلاس
2-هر وقت خواست می تواند الگوریتم پیاده سازی را عوض کند , بدون اینکه کسی اطلاع داشته باشد .(انعطاف در اعمال تغییرات مورد نظر)
از دید کاربر :
1- استفاده آسان از کلاس
شناسایی روابط بین کلاس ها :
چهار نوع رابطه بین کلاس ها وجود دارد :
1-رابطه کلی – اختصاصی (Is-a) : Generalization - Specialization
مهمترین رابطه فنی بین کلاس ها می باشد .
2-رابطه Aggregation (Whole-part / Part of) :
3-رابطه Relation ship
مهمترین رابطه به لحاظ فراوانی . اکثر روابط از این نوع رابطه هستند .
4-رابطه Instantiation (Instance of)

tayebeh
دوشنبه 19 اردیبهشت 1384, 00:00 صبح
سلام به همه دوستان
:) بخش اول رو برای دانلود کردن گذاشتم .

tayebeh
شنبه 24 اردیبهشت 1384, 05:54 صبح
بخش دوم

White_eagle
چهارشنبه 02 شهریور 1384, 23:27 عصر
tayebe جان مرسی خسته نباشی منتظر بقیه اش هم هستیم از اولش سفت ومحکم برو جلو

ly.comeng
سه شنبه 16 مرداد 1386, 14:35 عصر
سلام به همه دوستان
:) بخش اول رو برای دانلود کردن گذاشتم .


سلام

خسته نباشین
ادامه داره؟؟

من چیزی برای دانلود ندیدم!!!

vcldeveloper
چهارشنبه 17 مرداد 1386, 09:36 صبح
به تاریخ پست ها دقت کنید. اگر بخش دوم بصورت کتاب هم می خواست چاپ بشه، بعد از دو سال و نیم باید وقت تجدید چاپش می رسید.

Microsoft.net
چهارشنبه 17 مرداد 1386, 18:28 عصر
بابا اینو که صفحه اول هر کتاب مهندسی نرم افزار و زبانهای برنامه نویسی رو باز کنی نوشته اگه مقاله میخواهین پست کنین لا اقل یه چیز جدید یه چیز کاربردی یه چیز به روز پست کنین
به هر حال بازم ممنون از زحمتی که کشیدین

mehdi-213
پنج شنبه 25 مرداد 1386, 02:02 صبح
بابا اینو که صفحه اول هر کتاب مهندسی نرم افزار و زبانهای برنامه نویسی رو باز کنی نوشته


کتابهایی که من دیدم بخصوص 2 تا کتاب معروف بازار بسیار افتضاح ترجمه شده انگار یارو اصلا سواد نداشته اینقدر بد که ادم رو از مهندسی نرم افزار سیر میکنه --- همیشه کتاب زبان اصلی رو با ترجمش میخونند ولی برای این کتاب ها باید ترجمه رو با زبان اصلی خوند یعنی اول ترجمه رو که میخونی اگه نفهمیدی زبان اصلی رو میخونی.

بازم به این مقاله ها --- دستشون درد نکنه

Seiyed
سه شنبه 10 اسفند 1389, 13:43 عصر
سلام
میخواستم متدولوژی و مدلسازی شی گرایی مثل rup را برام توضیح بدین البته به جز rup. لطفا
خیلی عجله دارم لطفا هر چه زودتر برام توضیح بدین .
با تشکر

m.soleimani
سه شنبه 10 اسفند 1389, 15:20 عصر
سلام
میخواستم متدولوژی و مدلسازی شی گرایی مثل rup را برام توضیح بدین البته به جز rup. لطفا
خیلی عجله دارم لطفا هر چه زودتر برام توضیح بدین .
با تشکر

دوست عزیز کلیه پست‌ها را بخون تا متوجه بشی که الان پنج سال هست که این تاپیک فعالیت نداره و جای مناسبی برای پرسیدن نیست برای پیدا کردن پاسخ خودت یه جستجو توی تالار بکنی کلی مطلب بدرد بخور پیدا می‌کنی به هر حال به نظر من خیلی سخت این‌جا به نتیجه برسی اگر با جستجو به نتیجه نرسیدی توی یک تاپیک تازه بپرس تا به پاسخ برسی موفق باشی./

JBlack
چهارشنبه 07 دی 1390, 19:37 عصر
سلام
در مورد نقاط ضعف و قوت در مهندسی نرم افزار شیء گرا کسی می تواند بنده را راهنمایی کند؟

مثلا: تاثیر بر کار تیمی؟ تاثیر بر مديريت خطا؟ تاثیر بر سيستم های نرم افزاری کوچک و بزرگ؟ تاثیر بر بهره وری؟ تاثیر بر استفاده مجدد؟تاثير بر روند مديريت پروژه ها؟ تاثیر قابليت اطمينان؟ کيفيت تحليل و طراحی يک سيستم؟ و ...

هر منبع، مرجع، مقاله و یا هر کمک دیگری.