![]() مقاله29-ارائه روشی برای طراحی مبتنی بر سرویس80صفهرست مطالب عنوان شماره صفحه
عنوان شماره صفحه
فهرست جداول عنوان شماره صفحه
چکیده معماری سرویس گرا به سرعت به عنوان نخستین ائتلاف و راه حل معماری محیطهای محاسباتی ناهمگون و پیچیده معاصر پدیدار گشته است . [1]SOA نیازمند این است که سازمانها مدلهای کسب و کار خود را ارزیابی کنند, به ایجاد تکنیکهای تحلیل و طراحی مبتنی بر سرویس بیاندیشند و طرحهای گسترش و پشتیبانی روابط مابین فروشنده , مشتری و شریک تجاری را ارزیابی کنند . طراحان نمی توانند انتظار مدیریت توسعه یک پروژه سرویس گرا را داشته باشند بدون اینکه به شیوه طراحی دقیق و متدولوژی توسعه تکیه داشته باشند . از آنجایی که متدولوژی توسعه مبتنی بر سرویس اهمیت حیاتی در توصیف ,ساخت, پالایش و تطبیق فرایندهای کسب وکاری دارد که تغییرپذیری بالایی دارند و تا به حال روش مناسب و منسجمی برای توسعه برنامه های کاربردی تجاری قدرتمند وجود ندارد , هدف این تحقیق ارائه روشی برای طراحی مبتنی بر سرویس می باشد . در این تحقیق از تکنیکها و مباحث مطرح درSOA استفاده شده و برای طراحی سرویس گرا روشی پیشنهاد می شود . تمرکز تحقیق بر روی فرایند طراحی می باشدکه اصول و تکنیکهای کافی برای مشخص کردن , ساخت و پالایش فرایندهای کسب وکاری که به سرعت دچار تغییر می شوند فراهم می کند . روش پیشنهای برای ایجاد کنترل متمرکز از تجرید لایه های سرویس و طبقه بندی انواع سرویس استفاده نموده و در کنار استفاده از سیستمهای موروثی در حمایت از استراتژیهای کوتاه مدت سازمانها ,بر اساس اصول طراحی و اصول سرویس گرائی در راستای استراتژیهای بلند مدت عمل می کند تا در تامین اهداف تجاری و حمایت از فرایندهایی که به سرعت دچار تغییر می شوند مفید واقع شود . همچنین زمینه تعامل عاملهای مختلف فرایند که در سطح چندین سازمان گسترده شده اند فراهم می شود و با تحلیل تغییرپذیری, انعطاف پذیری سیستم در حمایت از نقاط متغیر فرایندها و تغییر در سیاستهای کسب و کار افزایش می یابد . بدین منظور در ادامه بحث ابتدا سبکهای مختلف توسعه نرم افزار به همراه سبک مبتنی بر سرویس و اصول سرویس گرائی به تفصیل بررسی می گردد , سپس چرخه حیات معماری سرویس گرا و فاز تجزیه و تحلیل که مقدمه ای برای طراحی می باشد مورد بررسی قرار می گیرد و در ادامه با بیان اصول و الگوهای طراحی موجود , راهکار پیشنهادی با نمونه پیاده سازی شده به صورت مشروح بیان می گردد .
کلمات کلیدی :SOA , Layer, Service Type , Process ,Variation , Granularity .Composition مقدمه در طول چهار دهه اخیر، میزان پیچیدگی نرم افزارها بصورت صعودی افزایش یافته و تقاضا برای نرم افزارهای قدرتمندتر بیشتر شده است. در این میان، به نظر می رسد که روشهای قدیمی جوابگوی نیازهای در حال رشد کنونی نیستند و نیاز به ایجاد و بکارگیری روشهائی است که بوسیله آنها بتوان بر این پیچیدگیها بصورت کاراتر و در زمانی کوتاهتر غلبه کرد. از سوی دیگر امکان کنار گذاشتن یکباره سیستمهای نرم افزاری موجود که تا به حال مشغول سرویس دهی به مشتریان بوده اند، وجود ندارد و می بایست سیستمهای جدید را بصورت یکپارچه و در کنار همین سیستمهای فعلی بوجود آورد. معماری سرویس گرا، با تکیه بر اصول سرویس گرائی و محاسبات و سرویس های توزیع شده و بر پایه پروتکلهای شبکه و لایه های منطقی سرویس و همچنین زبانهایی که تولید نرم افزارهای توزیع شده را فراهم می کنند، به عنوان راه حلی مناسب جهت از میان برداشتن مشکلات و مسائل مذکور مطرح گردیده است[20,21]. SOA مجموعه ای از اصول , نظریه ها و تکنیکهایی را فراهم می کند که فرایندهای کسب و کار , اطلاعات و دارایی های تشکیلات بتوانند به شیوه مؤ ثری سازماندهی شوند و این فرایندها می توانند برای پشتیبانی از طرحهای استراتژیک و سطوح بهره وری که در محیطهای رقابتی کسب و کار مورد نیاز هستند, گسترش داده شوند . بسیاری از تشکیلات اقتصادی در استفاده اولیه شان از SOA چنین پنداشتند که از مولفه های موجود به عنوان سرویس وب می توانند استفاده کنند و عنوان کردند تنها با ایجاد سرویسهای پوشاننده[2] و رها کردن مولفه های زیرین غیر قابل دسترس, این کار عملی خواهد بود . در نتیجه پیاده سازی لایه نازکی از SOAP/WSDL/UDDI بالای برنامه کاربردی موجود یا مولفه هایی که سرویسهای وب را تحقق می بخشند , تا حد گسترده ای در صنعت نرم افزار تجربه شد . اما تا به حال روش مناسبی برای ایجاد برنامه های کاربردی تجاری قدرتمند وجود ندارد . اگرچه طبیعت مولفه ها مناسب استفاده از آنها به عنوان سرویس وب می باشد , در بیشتر موارد اینطور نیست و برای طراحی مجدد و ارائه کارکرد مولفه ها به شیوه صحیح و از طریق سرویس وب نیازمند تلاش مضاعفی می باشیم[9]. پیاده سازی موفق SOA مستلزم این است که به مفاهیم و استراتژیهای پیاده سازی که خصوصیات و ویژگیهای اساسی SOA را فرموله می کنند , توجه شود . به مجرد پیاد ه سازی موفق SOA, مزایایی در جهت کاهش زمان توسعه و ایجاد محصول , بهره برداری از کاربردهای انعطاف پذیر با پاسخ دهی سریع و امکان اتصال پویای استدلالهای کاربردی شرکای تجاری , حاصل می شود . یک پیاده سازی کامل SOA نه تنها در ارتباط با گسترش و صف آرایی سرویسها می باشد بلکه امکان استفاده از سرویسها درجهت اجتماع برنامه های کاربردی متمایز و ایجاد کاربرد مرکب را منعکس می سازد.
فصل اول: کلیات معماری سرویس گرا
1-1 تعاریف اولیه 1-1-1 معماری سرویس گرا (SOA) SOA مجموعه قوانین ، سیاستها و چارچوبهایی است که نرم افزارها را قادر می سازد تا عملکرد خود را از طریق مجموعه سرویسهای مجزا و مستقل و در عین حال مرتبط با هم در اختیار سایر درخواست کنندگان قرار دهند تا بتوانند بدون اطلاع از نحوه پیاده سازی سرویس و تنها از طریق رابطهای استاندارد و تعریف شده، این سرویسها را یافته و فراخوانی نمایند و یا در تعریف دیگر می توان گفت معماری سرویس گرا روشی برای ساخت سیستمهای توزیع شده ای است که در آنها عملکرد سیستم بصورت سرویس در اختیار کاربران و یا سایر سرویسها قرار می گیرد. از دیگرتعاریف ارائه شده مرتبط با معماری های سرویس گرا می توان به واحدهای نرم افزاری آماده در شبکه[3] یا سرویسهای سطح حرفه ای[4] اشاره کرد.در حال حاضر، تکنولوژی سرویسهای وب و پیاده سازی نمونه های موفق از آن، نشان داده است که SOA می تواند به عنوان راه حلی عملی و دست یافتنی در طراحی سیستمهای توزیع شده جدید و یکپارچه سازی سیستمهای بزرگ موجود مطرح گردد[3]. در این معماری، همه توابع به عنوان سرویس تعریف می گردند. این توابع شامل توابع تجاری و تراکنشهای تجاری می باشند که تراکنشهای تجاری خود شامل توابع سطح پایین و توابع سیستمی سرویسها هستند. سرویسها بصورت مستقل طراحی و پیاده سازی شده و به عنوان جعبه سیاه عمل می نمایند. قطعات دیگر در خارج از این قطعه, نیازی به دانستن نحوه انجام کار در این سرویس را ندارند و تنها به نتیجه آن نیازمندند. قطعات، سرویسهای خود را از طریق رابطهای تعریف شده در اختیار قطعات دیگر قرار میدهند که این رابطها قابل دستیابی و فراخوانی هستند، بدون اینکه محل قرار گیری آنها اهمیت داشته باشد (رابطهای محلی یا دور ). در ضمن، این رابطها می توانند به همان نرم افزار کاربردی یا به آدرسی در محل دیگری از شبکه مرتبط باشند. رابطها به عنوان کلیدی در برقراری این ارتباطها هستند و از طریق آنها نوع پارامترهای ورودی و نتایج (خروجی) مشخص می گردد[1,34,26]. نیاز به معماری سرویس گرا و امکانات آن ازجنبه های مختلف به نحوه بارزی در برنامه های کاربردی توزیع شده جدید خصوصا برنامه های مرتبط باE-Commerce مشهود و ملموس است. به عنوان نمونه اگرمثلا سرویسمربوط به پرداخت با کارت اعتباری غیر فعالباشد، قرار نیست که فرایند فروش متوقف شود. بلکه سفارش ها بایستی پذیرفته شوندوعملیات پرداخت به وقت دیگری موکول شود. همانند سایر معماری های توزیع شده، SOA ساخت برنامه های کاربردی با استفاده از اجزایی که در حوزه های جدا از هم قراردارند را ممکن می سازد و غالبا از سرویسهای وب به عنوان نقاط ورود برنامه کاربردیاستفاده می کند که از لحاظ مفهومی معادل همان اجزای proxy و stub در سیستمهایتوزیع شده سنتی مبتنی بر اجزاء هستند. با این تفاوت که در این جا ارتباط بین سرویسوب و استفاده کننده خیلی آزادانه تر و مستقل تراست. به علاوه SOA به خاطر در بر داشتن فاکتورهایی که اهمیت حیاتی در تجارت دارند، نیز منحصر به فرداست ( فاکتورهایی نظیر قابلیت اطمینان سرویس، جامعیت پیام ، یکسانی تراکنش وامنیت پیام ). اگر سیستمی توانایی های خود را در قالب سرویسیروی وب ارائه کند، در آن صورت نحوه فراخوانی آن سرویس باید به طور واضح مستند سازیو اعلام شود. بسیاری از مسائل دسترس پذیری و مقیاس پذیری برنامه های کاربردیامروزی در SOA به نحو مطلوبی حل شده است. البته در SOA فرض بر این است که احتمال خطا همیشه وجود دارد و می تواند اتفاق بیفتد، بنابرایناستراتژی هایی برای پاسخگوئی به خطاها در آن تعبیه شده است . برای مثال اگر یک سرویس نتواند یک پیغام را در مرحله اول بپذیرد،این معماری طوری طراحی شده است که مجددا پیام را بفرستد و اگر یک سرویس به طورکامل قابل دسترس نباشد، (که هرگز نباید در یک سیستم SOA پایدار اتفاق بیفتد ) آنگاه معماری طوری طراحی شده است که روی دادن خطاهایی که منجر به قطع کامل در خواستسرویس می شود، امکان پذیر نباشد. استفاده از معماری سرویس گرا همچنین قابلیت اطمینان را افزایش می دهد، زیرا خطاهایموقت در بخشی از جریان کار نمی توانند کل فرایند تجاری را از کار بیاندازند.به بیان کلی، SOA فرایندی تکامل یافته را ارائه می نماید و از این نظر می توانآن را بلوغ سریسهای وب و تکنولوژی های یکپارچه سازی به حساب آورد. در SOA به اینامر توجه شده است که سیستمهای با اهمیت حیاتی که بر مبنای تکنولوژی های توزیع شدهساخته می شوند، باید تضمین های خاصی را تامین نمایند. در این گونه سیستمها بایداین اطمینان وجود داشته باشد که در خواستهای سرویسهای موردنیاز, به طور صحیح مسیر دهی و هدایت شوند، در زمان مناسب به آنها پاسخ داده شود و این سرویسها به طور واضح ودقیق, سیاستهای ارتباطی و رابطهای خود را اعلام کنند.[1-34-35-36]
2-1 اهداف تحقیق راهکارهای نوین توسعه سیستم های نرم افزاری که هم اکنون بطور گسترده استفاده می گردند علیرغم نکات برجسته و نقاط کارامد غالبا سیستم هائی ایجاد می کنند که از کمبودهائی رنج می برند. مهمترین نقاط ضعف این سیستم های نرم افزاری شامل موارد زیر است: ¨ کمبود انعطاف پذیری محیط کسب و کار سازمان ¨ کند بودن در پشتیبانی از تغییرات نیازمندیهای کسب و کار و پشتیبانی اهداف و سیاستهای جدید ¨ سربارها و پیچیدگیهای عملیاتی و قابلیت استفاده مجدد کم سرمایه های فعلی سازمان ¨ کمبود تعامل پذیری مناسب و دشواری گسترش سریع استانداردهای صنعتی نوین ¨ عدم پشتیبانی اصول پایه مهندسی نرم افزار و استانداردهای شفاف و صریح SOA ، با تکیه بر محاسبات توزیع شده و بر پایه پروتکلهای شبکه و لایه های میانی سرویس و همچنین زبانهایی که تولید نرم افزارهای توزیع شده را فراهم می کنند، بعنوان راه حلی مناسب جهت از میان برداشتن مشکلات و مسائل مذکور مطرح گردیده است. بمنظور توسعه سیستم های نرم افزاری با رویکرد SOA و طراحی فرایند سرویس گرا و شناسائی سرویس های مختلف تکنیکهای مختلفی وجود دارد که غالب این روشها علیرغم مزایائی که دارند دارای معایبی نیز می باشند . از آنجایی که متدولوژی توسعه مبتنی بر سرویس اهمیت حیاتی در توصیف ,ساخت, پالایش و تطبیق فرایندهای کسب وکاری دارد که به سرعت دچار تغییر[5] می شوند و تا به حال روش مناسب و منسجمی برای توسعه برنامه های کاربردی تجاری قدرتمند وجود ندارد هدف ما ارائه روشی برای طراحی مبتنی بر سرویس می باشد . طراحی سرویسها شامل چندین موضوع اساسی می باشد که به منظور غلبه بر پیچیدگی در ساخت کاربردهای مبتنی بر سرویس ضرورت دارد روشن شود .در این تحقیق ما از تکنیکها و مباحث مطرح درSOA به شکل منسجم استفاده نموده و برای طراحی سرویس گرا روشی پیشنهاد خواهیم کرد . تمرکز ما بر روی فرایند طراحی می باشدکه اصول و تکنیکهای کافی برای مشخص کردن , ساخت و پالایش فرایندهای کسب وکاری که به سرعت دچار تغییر می شوند , فراهم می کند . در طی فاز طراحی یک سیستم مبتنی بر سرویس , سرویسها بر اساس ملاحظات خاصی - از قبیل پیمانه ای بودن , در نظر گرفتن نقاط تغییرپذیر برای ارائه قابلیت تصمیم گیری در راستای استفاده های مختلف از سرویسها , دارا بودن قابلیت استفاده مجدد , خود مختاری و غیره , طراحی وساختاردهی می شوند . به دلیل اینکه اساس وپایه SOA قابلیت استفاده مجدد می باشد , هدف ما رعایت اصول طراحی سیستم شامل اعمال ملاحظات پیاده سازی در صورت وجود یک پیکربندی اولیه SOA برای سازمان و همچنین اعمال نیازمندیهای غیر کارکردی , اصول طراحی سرویسها و بازبینی پیکربندی لایه های شناسائی شده می باشد .
3-1 پیشینه تحقیق از گذشته های دور برنامه نویسان تلاش می کردند تا کدهای نرم افزاری را بصورت پیمانه ایبنویسند تا بتوان ازآن کدها در تولید نرم افزارهای دیگر استفاده کرد . تفاوت نوشتن کد بصورتپیمانه ای و براساس معماری سرویس گرا در حجم مخاطبان آن است. در جهانامروز طیف مخاطبانی که می توانند بصورت بالقوه از یک سرویس استفاده کنند، کل کاربران رویشبکه اینترنت است. بنابراین باید مکانیزمی بوجود می آمدکه می توانست پاسخگوی اینمحیط جدید (اینترنت) و کاربران آن باشد، بنابراین تفکر ایجاد معماری سرویس گرا بوجود آمد . ایده SOA اولین بار توسط دو شرکت IBM ,Microsoft در اواخر دهه 1980 پیشنهاد گردید، که هر دو شرکت طی سالهای اخیر ازحامیان اصلی سرویس های وب و عامل بسیاری از ابداعات جدید در حیطه پشتیبانی SOA و سرویس های وب، مانند UDDI ,WSE بوده اند. [3-22] در زمینه طراحی مبتنی بر سرویس متدولوژی RUP توسعه ای داشته است که چارچوب کاری ذیل را ارائه کرده است :
در سال 2005Tomas Erl تکنیکی ارائه نمود که قراردادها و اصول سرویس گرایی را در درون فرایند طراحی سرویس قرار می دهد و تصمیمات کلیدی اتخاذ می گردد[1] . در سال 2004 Dijkman and Dumas مدلی در زمینه طراحی مبتنی بر سرویس با لحاظ چندین دیدگاه ارائه نمودند . دیدگاههای مطرح در مدل ارائه شده , رفتار واسط[6] , رفتار سرویس دهنده[7] , ترتیب و نظم[8] و همنوائی[9] می باشد [7] . در مدل ارائه شده محدودیتهای موجود بررسی و ارتباط مابین این 4 دیدگاه اخذ می شود در نهایت مدل ارائه شده زمینه ارزیابی سازگاری مابین سرویسهای ترکیب شده را فراهم می کند . Christian Emig از یک process language از قبیل [10]BPMN برای نگاشت اتوماتیک مدل به یک زبان قابل اجرا استفاده کرده است[5] . Soo Ho Chang برای مدلسازی تغییرپذیری متدی ارائه کرده است [6] . Thomas Oliver نشان داده است که چگونه مدل فرایند برای طراحی و تحقق معماریهای سرویس گرا استفاده می شود[10] . روشهای موجود به شکل کامل به فاز طراحی نپرداخته اند و می توان گفت تنها در بخشی از مباحث مطرح SOA تکنیکهایی ارائه کرده اند . تعدادی از سوالاتی که در زمینه طراحی مطرح می شود از این قرار است که چه استانداردهای طراحی وجود دارد ؟ چه ترکیبات سرویسی ممکن است ؟ برای حمایت فرایندهای تجاری باید چه تصمیماتی برای پیکربندی لایه های سرویس اتخاذ گردد؟ ...
4-1 روش کار و تحقیق در این پایان نامه در زمینه مدلها و سبکهای مختلف توسعه نرم افزار بحث شده و با توسعه مبتنی بر سرویس مقایسه خواهند شد . سپس SOA با توجه به مولفه هایش شرح داده خواهد شد و معماری لایه و ویژگیهای آن بیان خواهد شد . بخش بعدی در ارتباط با روشن نمودن اصول مبتنی بر سرویس در طراحی و توسعه نرم افزاری خواهد بود و ویژگیهای طراحی مبتنی بر سرویس بیان خواهد شد . سپس فاز تحلیل سرویس گرا از دیدگاه استراتژیهای مختلف و ایجاد خروجی قابل استفاده برای فاز طراحی بیان می شود . بخش بعدی به اصول طراحی سرویس گرا و رهنمودهای عمومی طراحی می پردازد و الگوهای طراحی موجود معرفی می شود . درنهایت روشی برای طراحی مبتنی بر سرویس ارائه خواهد شد . گامهای طراحی دربردارنده تکنیک و اصول مربوطه از جهت حمایت سرویس گرائی می باشند . هر یک از گامهای طراحی حاوی مثالی به منظور نمایش فرایند تعریف شده خواهند بود و در پایان نمونه کاربردی پیاده سازی شده و نتیجه گیری را خواهیم داشت . روش ارائه شده با بازبینی لایه بندی مرحله تحلیل آغاز می شود و با اضافه نمودن لایه های تخصصی تر به فرایند همکاری سرویسها کمک می کند . سپس تحلیل بر روی نیازمندهای تغییر پذیر صورت می گیرد و نقاط تغییر پذیر[11] شناسایی می شوند . ممکن است مجموعه این نقاط بعدا دچار تغییر شود ویا اینکه نقاط جدیدی تعریف شود . سپس بر اساس انواع سرویسهایی که در فرایند طراحی با آنها رو به رو هستیم نگاشت سرویسها به لایه های مجزای تعریف شده انجام می پذیرد . حوزه عملکرد سرویسها , نیازمندیهای پردازشی سرویسها ,سرویسهای ترکیبی و ترتیب هماهنگی از سرویسها برای دست یافتن به اهداف فرایندکسب وکار مشخص می شود . با شناسایی قوانین تجاری , استثناها و شروط , لایه سرویس فرایند که یک لایه کنترلی است تعریف می شود . سپس با استفاده از مبحث دانه بندی[12] ,بر روی سرویسهای مرحله قبل بازبینی خواهیم داشت و متدهای هر کدام از سرویسها از جهت حوزه عملکرد و خروجی تولید شده مورد بررسی قرار خواهند گرفت . در صورت نیاز ممکن است برای تامین امنیت ضرورت متدهای چند دانه[13] تعریف شود . در این مرحله مدلسازی سرویسهای ترکیبی انجام می شود و خروجی این مرحله Sequence Diagam , Collaboration Diagram, Generic model خواهد بود . در مرحله نهایی با استفاده از BPMN - بر خلاف UML که مبتنی بر object است , BPMNقابلیتهایی در مدلسازی فرایند دارد - می توان به مدلسازی فرایند پرداخت و با امکانات این ابزار کد قابل اجرای فرایند ایجاد می شود .
5-1 مقایسه ای بر مدلهای توسعه وابسته به معماری در این بخش درزمینه مدلهای مختلف توسعه نرم افزار و سبکهای معماری, بحث شده و با توسعه مبتنی بر سرویس مقایسه می شوند . سپس سبک معماری سرویس گرا با بیان جزئیات و با توجه به مولفه ها , ویژگیها و معماری لایه لایه شرح داده می شود .
1-5-1 توسعه مبتنی بر object توسعه مبتنی بر object با کپسوله سازی داده و رفتار در یک نوع داده مجازی به نام کلاس از توسعه نرم افزار حمایت می کند . اشیاء از طریق ارسال پیغام با همدیگر ارتباط برقرار می کنند . توسعه مبتنی بر شی با حمایت کافی از پنهان سازی رفتار و داده در اشیاء و کلاسها ,پیشرفت طراحی نرم افزار را موجب می شود . طراحی مبتنی بر object فاز اساسی در تولید نرم افزار است که موفقیت تجاری در بازار نرم افزار داشته است . طراحی مبتنی بر شی شامل طرح ریزی ساختار نرم افزار , بهبود کیفیت نرم افزار از طریق یافتن کمبودهای ساختار و نمونه سازی سریع از سیستم نرم افزاری می باشد . مزیت مبتنی بر شئ بودن این است که ساختارهای نرم افزار به سادگی به نمونه های واقعی نگاشت می یابند . امروزه تکنولوژی مبتنی بر شیء به طور گسترده ای به کار گرفته می شود و الگوی برجسته ای برای توسعه نرم افزارهای کاربردی می باشد . این تکنولوژی زمانی که با زیرسازی های مولفه ای ترکیب می شود , قابلیت همکاری محیطهای مختلف نرم افزاری را فراهم می کند[24] .
2-5-1 توسعه مبتنی بر مؤلفه مؤلفه ها , ماژولهای نرم افزاری پیچیده ای نسبت به اشیاء هستند و نیازمند برقراری تغییراتی در تفکر سیستمها , فرایندهای نرم افزاری و به کارگیری تکنولوژی می باشند . توسعه مبتنی بر مؤلفه به توسعه دهندگان اجازه می دهد تا سیستمهای با کیفیت تر و پیچیده تر ایجاد کنند به دلیل اینکه متدهای بهتری برای مدیریت پیچیدگیها و وابستگیهای داخل یک کاربرد فراهم می کند . یک مؤلفه نرم افزار به مثابه یک واحد ترکیبی , با وابستگیهای مفهومی صریح و واسطهایی که مبتنی بر قرارداد هستند تعریف می شود . یک مؤلفه نرم افزاری می تواند به شکل مستقلی گسترش داده شود و این مبحثی است که بوسیله third parties برای ترکیب استفاده می شود . ممکن است که مؤلفه ها برای ایجاد واحدهای بزرگتر مجتمع شوند که این واحد می تواند یک مؤلفه جدید , یک چارچوب مؤلفه ای و یا یک سیستم کامل . مؤلفه ترکیب شده خصوصیات به اشتراک گذاشته شده را از مؤلفه های سازنده کسب می کند که اغلب اجتماع plug-and-play نامیده می شود . مؤلفه های با قابلیت استفاده مجدد بازتاب صحیحی از طراحی نرم افزارهای موثر می باشند . در این معماری یک زمینه طراحی فراهم می شود که در آن مولفه ها ساخته شده و مجددا استفاده می شوند . جنبه مهم دیگر مؤلفه ها این است که توسعه معماری نرم افزار مبتنی بر توصیفات مؤلفه از ساخت مستقل و همزمان اجزاء سیستم حمایت می کند . این ویژگی موجب می شود که بخشهای مستقل سیستم , زیر سیستمهای قابل تست باشند و بتوان سیستم را مابین یک یا چندین تیم توزیع یافته تقسیم کرد .
3-5-1 محاسبات توزیع یافته اگرچه معماری سرویس گرا دلالت مستقیمی به محاسبات توزیع یافته[14] ندارد , اما ناگزیر است که تکنولوژیهای میان افزار موجود و مفاهیم محاسبات توزیع یافته را بهم پیوند دهد . یک معماری سرویس گرای موفق باید به مشکلات رویارویی با تکنولوژیهای میان افزار موجود از طریق حمایت یک راه حل موثر در توسعه برنامه های کاربردی و تکنولوژیهای آتی غلبه کند و این کار از طریق توجه به مفاهیم و تکنولوژیهای قابل حصول انجام می شود . راه حلهای اخیر در محاسبات توزیع یافته به برپایی یک ارتباط مستقیم مابین دو برنامه توزیع یافته بر روی پروتکل فیزیکی شبکه مربوط می شود . پروتکلهای سطح بالاتر از قبیل SNA ,TCP/IP,IPX واسطهایی فراهم می کنند که تلاش برای پیاده سازی و وابستگی تکنولوژی را کاهش می دهد . نظر به اینکه تکنولوژی محاسبات توزیع یافته تکامل پیدا می کند , ضرورت فراهم نمودن چندین پیاده سازی شبکه ای برای تامین نیازمندیهای کیفیتی سرویس نیز افزایش پیدا می کند . ممکن است این نیازمندیها شامل وقت شناسی در تحویل پیغام , کارایی , توان عملیاتی , قابلیت اطمینان , امنیت |