مولفه چیست ؟
مهندسی نرم افزار پیشرفت زیادی در طول 30 سال اخیر با اختراع نمودن تکنولوژیهای ابتکاری و نو ، بکارگیری برنامه نویسی ساختیافته ، تکنولوژی CASE ، تکنولوژی شی گرا داشته است . با اینحال روش اساسی توسعه نرم افزار ثابت باقی مانده است که برنامه نویسان کدها را خط به خط تا پایان یافتن آن می نویسند.
تغییرات اساسی در توسعه نرم افزار به صورت زیر معرفی شده است :
1. بایستی شیوه کد نویسی خط به خط با توسعه مبتنی بر مولفه جایگزین شود.
2. بایستی روش دستی توسعه نرم افزار توسط متدهای مهندسی جایگزین شود.
3. بایستی برنامه نویسی مبتنی برنحو یا گرامر (Syntax ) با اسمبل کردن یا ترکیب نمودن مولفه های مبتنی بر واسطها و معانی ( Semantic ) جایگزین گردد. بدیهی است تا زمانیکه ما نتوانیم روشهای رسمی و سیستماتیکی به سمت توسعه نرم افزار مبتنی بر مولفه را کشف کنیم این چنین تغییرات اساسی رخ نخواهد داد. مولفه های نرم افزاری در روشهای مختلف از نقطه نظر ساده تا مشکل تعریف شده است .
چهار تعریف از مولفه های نرم افزاری اولین بار در کارگاه بین المللی CBSE در آوریل 1998 به صورتهای زیر ارائه شده است :
o مولفه یک قطعه تقریبا مستقل و قابل تعویض یک سیستم است که وظیفه مشخصی را در زمینه ای که معماری آن به خوبی تعریف شده است را انجام می دهد ( Philippe Krutchen Rational Software ) .
o مولفه های نرم افزاری زمان اجرا بسته ای از یک یا چندین برنامه های مدیریت شده به عنوان یک واحـد می باشند که بـه طـور پویا می تواند به برنامـه مقید (متصل) شود. و از طـریق واسطـهای مـستند شده که در زمان اجـرا کشف می شود در دستـرس قـرار مـی گیرد.( Gartner Group ).
o مولفه های نرم افزاری واحدی از ترکیب واسطهای معین و وابستگیهای مفهومی صریح و روشن می باشند که به صورت قراردادی مشخص شده اند . مولفه نرم افزاری می تواند به طور مستقل توسعه یابد.(Clemens Szyperski) .
o مولفه تجاری ،پیاده سازی نرم افزاری یک فرآیند تجاری یا راه کار تجاری را ارائه می کند که شامل شرح ، پیاده سازی و توسعه نرم افزار می باشند که به عنوان یک قطعه قابل استفاده مجدد از یک سیستم بزرگتر می باشد . ( Wojtek Kozaczynski SSA ) .
در نهایت یک تعریف کلی از یک مولفه به شرح زیر می باشد :
” مولفه های نرم افزاری یک قطعه جامع و قابل توسعه می باشدکه عملکردش به خوبی تعریف شده است و از طریق واسطها با دیگر مولفه ها می تواند ترکیب شده و با همدیگر در تعامل باشند .”
مولفه های سخت افزاری و نرم افزاری :
در طول 50 سال گذشته تکنولوژی تولید سخت افزار کامپیوتری اساسا تغییر کرده است تراشه های مجتمع (IC) و مدارهای مجتمع با مقیاس زیاد (VLSI )، بلوکهای سازنده اساسی هستند که سریعترند و هزینه کمتری را در بر دارند .در مهندسی سخت افزار روش مبتنی بر مولفه به طور گسترده در ساخت قطعات جدید مورد استفاده قرار گرفته است ( یعنی استفاده از قطعات سخت افزاری از پیش ساخته شده ).
مهندسین سخت افزار نیاز دارند که بازدهی طراحی را با مونتاژ نمودن بلوکهای قابل استفاده مجدد از قبیل : Microprocessor ، DSP ، on chips encryption /decrepti و غیره بدست بیاید. روش مبتنی بر مولفه ، کیفیت و قابلیت اعتماد محصولاتی که هر کدام از مولفه هایش به خوبی تست شده است را افزایش می دهد . هر چند که ، تغییر چشمگیری در تولیدات نرم افزاری وجود نداشت . هر مـحصول نرم افزاری جـدید نیاز به طـراحی داشت و برنامه نویسان کد منبع را خط به خط می نوشتند تا اینکه برنامه تمام شود . پیشرفت بزرگ توسعه نرم افزار در طول 50 سال گذشته از برنامه نویسی خط به خط با استفاده از کد ماشین تا برنامه نویسی خط به خط با استفاده از زبانهای برنامه نویسی سطح بالا صورت گرفت . زبانهای برنامه نویسی سطح بالاچندین مزایای مهم را عرضه کرد که بازدهی برنامه نویسی را در نتیجه گرد آوری تکنیکها ( اصلاح کرد ) پیشرفت داد .
چه تفاوتهایی بین مولفه های سخت افزاری و نرم افزاری وجود دارد ؟
منطقا ، سخت افزار و نرم افزار کامپیوتر در قابلیت محاسبه شان مشابه هم هستند . بدین معنی که هر عملی که توسط نرم افزار انجام می شود می تواند به طور مستقیم با سخت افزار ساخته شود. از طرف دیگر هر دستوری که توسط سخت افزار اجرا می شود ، می تواند توسط نرم افزار شبیه سازی شود . به طور نمونه مولفه های سخت افزاری IC ها هستند که در برگیرنده مدارهای مجتمع با مقیاس متـوسط (MSI ) ، مدارهای مـجتمع با مـقیاس زیاد ( LSI) و مـدارهای مجتمع با مقیاس خیلی زیاد ( VLSI ) هستند. اینها مولفه های مفیدی هستند به خاطر اینکه مدارهای منطقی توابع ورودی و خروجی شان به خوبی تعریف شده و نیازی ندارند که به طور مستقیم با دنیای بیرون در تعامل باشند و ارتباط بین مولفه های سخت افزاری توسط گذرگاه سیستم فراهم شده است. در مورد مولفه های نرم افزاری برخی مشکلات وجود دارد ، یکی اینکه نمی توان این مولفه ها را به سادگی توابع ورودی و خروجی بیان کرد و دیگر اینکه برخی از مولفه های نرم افزاری بایستی با کاربران دیگر وسیله های فیزیکی که در محیط موجود هستند تعامل داشته باشد . به همین دلیل آنها را نمی توان به سادگی سخت افزار تلقی نمود. مهم است ذکر این نکته که مدلهای کامپیوتری که به خوبی تعریف شده اند وجود دارند مثل جبر بولی برای طراحی مدار در ساختن مولفه های سخت افزاری. جبر بولی روش مقرون به صرفه ای برای توصیف توابع مداربندی دیجیتالی فراهم می کند .یک تابع مطلوب داده می شود ، جبر بولی می تواند برای توسعه ، پیاده سازی ساده شده ای را که از طریق قوانین جبری عمل می کند ، بکاربندد.
مدل کامپیوتری برای مهندسی نرم افزار مبتنی بر مولفه چیست؟
بدیهی است که یک مدل کامپیوتری برای توسعه نرم افزار مبتنی بر مولفه مشابه جبر بولی که برای مهندسی سخت افزار مبتنی بر مولفه استفاده می شود مورد نیاز است . منطق (Hoar) هوار یک قاعده ای را برای بازبینی صحت برنامه ، مبتنی بر ساختار برنامه ، پیش شرطها و پس شرطها ارائه می کند .همانطور که ما از زبانهای برنامه نویسی خط به خط به سمت توسعه مبتنی بر مولفه حرکت می کنیم یک قاعده ای را برای بدست آوردن رفتار ( Behavior ) مولفه ها و اطمینان از صحت تعاملات مولفه ها نیاز داریم.
تفاوت مولفه های سخت افزاری و نرم افزاری به دو دلیل مقید و محدود شده اند :
ü اول اینکه برخلاف تراشه های حافظه که به طور فیزیکی در هر زمان تولید می شوند تولید مولفه های نرم افزاری با نسخه های متفاوت ، تکثیر (نسخه برداری ) دقیق در هر زمان است .
ü دوم اینکه محیط مولفه های نرم افزاری به طور محتمل برای هر استقرار ( نصب ) جدید تغییر می کند .
بالاخره جنبه موقتی شبیه فرسودگی یا زوال فیزیکی در مولفه های نرم افزاری ملاحظه نمی شود . این تفاوت خیلی مهم است مخصوصا زمانیکه ما مسئله تضمین کیفیت را برای توسعه مبتنی بر مولفه در نظر می گیریم .
برای نمونه ، قابلیت اعتماد مولفه های سخت افزاری تابع چهار عامل زیر می باشد :
1. خطا در طراحی
2. خطا در تولید
3. نقص فیزیکی
4. فرسودگی فیزیکی و شیمیایی
قابلیت اعتماد مولفه های نرم افزار فقط تابع یک عامل هست: آن هم خطا در طراحی (برای هر مولفه نرم افزاری پیاده سازی آن به عنوان قسمتی از طراحی در نظر گرفته می شود) به خاطر اینکه نرم افزار فرسوده نمی شود.