خانه > مهندسی نرم افزار > مهندسی نرم افزار مبتنی بر مولفه :

مهندسی نرم افزار مبتنی بر مولفه :

مهندسی نرم افزار مبتنی بر مولفه :

در نوشته های قبلی در مورد اهمیت برنامه نویسی مبتنی بر مولفه وتعاریف مربوط به مولفه آشنا شدیم در این قسمت هم می خواهیم در مورد تفاوتهای بین انواع برنامه نویسی ها و مهندسی نرم افزار مبتنی بر مولفه اشنایی مختصری داشته باشیم  :

تفاوتهای COP با OOP :

  • COP مبتنی بر واسط می باشد ، در حالیکه OOP مبتنی بر اشیاست.
  • COP تکنولوژی بسته بندی و توزیع می باشد ؛ در حالیکه OOP   یک تکنولوژی پیاده سازی محسوب می گردد.
  • COP از قابلیت استفاده مجدد در سطح بالا پشتیبانی می کند ، در حالیکه OOP از قابلیت استفاده مجدد در سطح پایین پشتیبانی می کند.
  • COP ، در اصل می تواند در هر زبانی نوشته شود ، در حالیکه OOP محدود به زبانهای شی گرا می باشد.
  • در COP مولفه ها ارتباطات ضعیفی (Loosely Coupled) دارند در حالیکه در  OOP  اشیاء وابسته به همـدیگر از طریق پیاده سازی وراثت (ارث بری ) ، دارای ارتباطات محکم ( Loosely Coupled) می باشند.
  • COP ، از واسطهای چند گانه و طراحی مبتنی بر واسط پشتیبانی می کند ، در حالیکه OOP ارتباطات واضحی از واسطها ی میان ابرکلاس و زیر کلاسها را فراهم نمی کند.
  • COP از اتصـالات و اکتشافات پویا ( اتـصال در زمان اجرا ) پشتیبانی می کند، در حالیکه    OOPپشتیبانی محدودی از مـکانیزمهای ترکیب زمان اجرا و بازیـابی اشیا را فـراهم می آورد .
  • COP مکانیزمهای بهتری برای ترکیب فراهم می کند ، در حالیکه OOP شکلهای محدودی از اتصالات را از طریق فراخوانی فراهم می آورد .
  • COP  از خدمات امنیتی ، تراکنشها و غیره در سطح بالایی پشتیبانی می کند ، در حالیکه  OOP مجموعه  محدودی از خدمات امنیتی ، تراکنشها و غیره را   پشتیبانی می کند.
  • در COP ، مولفه ها با در نظر گرفتن  قوانین اساسی Framework (چهارچوب ) مولفه ها ، طراحی می شوند  در حالیکه  OOP با در نظر گرفتن   اهداف شیء گرایی  طراحی می شوند  .

جدول زیر بحث مختصری از شباهتها و تفاوتهای ما بین برنامه نویسی ساختیافته ، شیء گرا و   مولفه ای را ارائه کرده است.

قابلیت ترکیب در برنامه نویسی ساختیافته خیلی پایین است در شیء گرا بالاست و در مولفه ای خیلی بالاست . دو واحد پیاده سازی مختلف در  برنامه نویسی ساختیافته هرگز با همدیگر قابل تعویض نیستند ، در برنامه نویسی شیء گرا دو شی متفاوت پیاده سازی شده که ویژگیهای مشابه داشته باشند با همدیگر قابل تعویض هستند در حالیکه در برنامه نویسی  مولفه ای  ،  مولفه های متفاوت با  ویژگیهای مختلف با همدیگر قابل تعویض هستند .

قابلیتها

COP

OOP

SP

تقسیم و غلبه

·                                 مدیریت پیچیدگی

·                                 تقسیم کردن یک مسئله بزرگ به بخشهای کوچکتر

یکپارچگی داده و تابع

·                                 یک نهاد نرم افزاری ، داده ها و عملیاتی که بر روی داده ها انجام می گیرد را ترکیب می کند.

·                                 بهبود دادن انسجام یا پیوستگی ( cohesion )

-

کپسوله سازی

·                                 کاربر یک نهاد نرم افزاری ، از چگونگی ذخیره داده ها و پیاده سازی توابع اطلاعی ندارد.

·                                 کاستن اتصالات ( پیوستگی)

-

مشخصه

·                                 هر نهاد نرم افزاری یک مشخصه (ویژگی ) منحصر به فرد دارد .

-

واسط

·                                 وابستگی بین مشخصات را نشان می دهد.

·                                 مشخصه (ویژگی) مولفه را به واسطها تقسیم می کند

·                                 کاستن وابستگیهای داخلی مولفه ای

-

-

پیکربندی

·                                 یک واحد انتزاعی که به طور مستقل می تواند توسعه یابد.

-

-

  • SP : Structured Programming
  • OOP : Object Oriented Programming
  • COP : Component Oriented Programming

مهندسی نرم افزار مبتنی بر مولفه :

برخی اوقات COP (Component Oriented Programming ) و CBSE (Component Based Software Engineering ) در نوشتار با همدیگر اشتباه گرفته می شوند . هر چند که CBSE یک مفهوم کلی است در صورتیکه  COP  فقط یه عنوان قسمتی از CBSE به کار برده می شود.

CBSE= COA+COD+COP+COM

  • COA : Component Oriented Analysis
  • COD : Component Oriented Design
  • COP : Component Oriented  Programming
  • COM : Component Oriented  Management

COA ، COD ، COM به ترتیب  نشان دهنده تحلیل مبتنی بر مولفه ، طراحی مبتنی بر مولفه و مدیریت مبتنی بر مولفه می باشند . CBSE ، به تسریع کردن توسعه نرم افزار و کاهش دادن هزینه سیستم با ترکیب نمودن مولفه های نرم افزاری از پیش ساخته شده تاکید دارد .  طراحی ، توسعه و نگهداری مولفه ها ، برای استفاده مجدد فرآیند پیچیده ای است . CBSE شیوه های مهندسی نرم افزار و تکنیکهای مختلف نرم افزار  را پوشش می دهد چه از نظر عملی و چه از دیدگاه تئوریک که هنوز هم به طور کامل تعریف و توسعه نیافته اند.

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

دو نوع اصلی از فعالیتها در CBSE وجود دارند :

  • DF ( Developing For reuse)  : توسعه برای استفاده مجدد.
  • DW ( Developing Withr reuse)  : توسعه با استفاده مجدد.

برای DF ، فعالیت توسعه می تواند با دنبال نمودن رویکردها یا دیدگاههای مهندسی نرم افزار سنتی تاکید بر استانداردهای مولفه ای سازماندهی گردد. برای نمونه هر مولفه ارائه کننده  در برگیرنده دو نوع واسط می باشد :

    1. واسط تامیین کننده : که خدمات ارائه شده توسط مولفه را تعریف می کند.
    2. واسط مورد نیاز (ضروری ): که مشخص می کند سیستم استفاده کننده از مولفه ، چه خدماتی را باید ارائه کند.

اگر این واسطها مهیا نشوند ،مولفه کار نخواهد کرد . برای DW  ، جستجو و بازیابی مولفه نرم افزار ، فعالیتهای تعیین کننده ای برای ساختن برنامه کاربردی دارند.

از دیدگاه فرآیند مهندسی نرم افزار ، مولفه ها می توانند به ۵ فرم مختلف طبقه بندی شوند ( یعنی مولفه در طی گذراندن ۵  مرحله  حاصل می شود ):

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

۲٫       واسط مولفه : فرم واسط تعریفی از مجموعه رفتارهای مولفه را ارائه می کند که می توانند توسط اشیا مولفه ای ارائه شوند.

۳٫       پیاده سازی مولفه : پیاده سازی مـولفه شکـلی از مـشخصه (ویژگی ) مولفه می باشد. این بدین معنی است که می توانند به طور مستقل جایگزین دیگر مولفه ها شده و نصب گردد. آن بدین معنی نیست که مولفه مستقل از دیگر مولفه هاست .بلکه ممکن است وابستگیهای زیادی داشته باشد.

۴٫       مولفه نصب شده : فرم نصب شده که یک نسخه نصب شده یا توسعه یافته از پیاده سازی مولفه می باشد کـه با مستقر کـردن آن در مـحیط اجـرایی تـوسعـه می یابد.استقرار مولفه در محیط اجرائیش ، محیط اجرایی را قادر به شناسایی مولفه نصب شده برای استفاده از آن می کند .

۵٫       شی مولفه ای : نمونه ای از مولفه نصب شده می باشد . مشابه OOP یک شی مولفه در COP یک شی با داده ها و مـشخصات ( ویـژگیها ی) منحصر به فرد می باشد ، که رفتار پیاده سازی شده را اجرا می کند یک مولفه نصب شده ممکن است چند شی مولفـه ای داشته باشد کـه نیازمـند ویـژگیهای صـریح و روشن می باشد.

  1. پ
    ۲۱ شهریور ۱۳۸۷ در ۱۸:۳۱ | #1

    یه متن دارم که باید در رز موجودیتها و ارتباطات بینشون رو رسم کنم با کار مشکل دارم اگه میتونید کمک کنید یا کسی رو سراغ داری بهم ژی ام بدیدp_project2008@yahoo.comبا تشکر از وبلاگ خوبی که دارید

  2. ۲۴ شهریور ۱۳۸۷ در ۱۸:۴۷ | #2

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

  3. ۲۴ شهریور ۱۳۸۷ در ۱۸:۴۷ | #3

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

  4. ۵ مهر ۱۳۸۷ در ۰۲:۴۷ | #4

    سل آم.سایتی مناسب برای برنامه نویسان ایرانی. یا بهتر بگم فورومی مناسب که بزودی از بزرگترین سایت های برنامه نویسی خواهد شد. شما نیز در این سایت ما را یارِی کنید و به دیگران کمک کنید و از دیگران کمک بخواهید. خلاصه سری به ما بزنید و اگر خواستید عضو شوید.www.MSCode.ir

  5. ..
    ۱۹ مهر ۱۳۸۷ در ۰۰:۲۷ | #5

    فقط خواستم از مقاله تون تشکر کنم.به من که خیلی کمک کرد.ممنون!

  6. ۲۴ مهر ۱۳۸۷ در ۱۱:۳۸ | #6

    سلامازتون تشکر می کنم برای وبلاگ قدرتمندتون و لازم دو نستم چند نکته در مورد این نوشته بگم :من منظورتون در مورد COP را نفهمیدم اگه منظورتون Component oriented programming است که من تا به حال نشنیدم .نکته دیگر اینه به نظر من مقایسه OOP و مهندسی نرم افزار مبتنی بر مولفه درست نیست چون مقایسه یک روش برنامه نویسی با یک روش تولید نرم افزار درست نیست .با تشکر از مطالب مفیدتون با اجازه شما در بعضی از مطالب وبلاگم به مطالب شما ارجاع میدهم .به وبلاگ من سر بزنید http://saeedzarinfam.blogspot.com/ .شاد باشید .

  7. ۲۴ مهر ۱۳۸۷ در ۱۴:۳۰ | #7

    برای آشنایی با Component-Oriented Programming می توانید به کتابی به همان نام مراجعه کنید یا همین عبارت را از گوکل یا آمازون جستجو کنید.ثانیا فکر کنم که در متن ‍COP با OOP مقایسه شده است نه CBSE با oopاز حسن توجه شما خیلی متشکرم

  1. بدون بازتاب