نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: نقش شی گرایی در مهندسی نرم افزار(بررسی متدولوژی ooa/ood)

  1. #1
    کاربر سایت
    تاریخ عضویت
    2009/07/05
    محل سکونت
    شیراز
    نوشته ها
    1,774
    سپاس ها
    119
    سپاس شده 297 در 134 پست
    نوشته های وبلاگ
    2

    New 2 نقش شی گرایی در مهندسی نرم افزار(بررسی متدولوژی ooa/ood)



    مهندسی به معنی :
    انجام عملیاتی به منظور تولید محصولی با تبعیت از مجموعه قواعد مشخصی .به عبارت دیگر انجام سیستماتیک یک عملیات .
    مهندسی نرم افزار :
    طراحی و تولید نرم افزارباتبعیت از یک قواعد و ضوابط مشخصی .
    چرا مهندسی نرم افزار متولد شد ؟
    وقتی محصولی تولید می شود دو نکته مهم باید مورد توجه قرار بگیرد:

    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)


  2. کاربر روبرو از پست مفید sali_k26 سپاس کرده است .


کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •