ای درک یکدیگرهستند. همچنیین قراردادهایی جهت هماهنگی و جلوگیری از هرج و مرج هستند ,هرچند که در یک اجتماع گاهی تا حد خاصی هرج و مرج قابل تحمل است. هماهنگی علاوه بر جلوگیری از هرج و مرج میتواند جهت افزایش کارایی استفاده شود.برای ایجاد هماهنگی میان عاملها در سیستمهای چندعامله از قالب تعریف شده سازمان یا قراردادهای مشخص استفاده میگردد. در یک اجتماع عاملهای سازماندهی شده ,هماهنگی را در قالب همکاری و یا رقابت تعریف مینمایند.
عاملها برای رسیدن به هدف تحت ارتباطات سازماندهی شده تعامل دارند .این بستر سازماندهی رفتارعاملها را تحت تاثیر قرار میدهد ودر این حالت است که نیاز به جفتها،. تیمها، یکپارچگی و صلاحیت در ارتباط ضرورت پیدا میکند. روش ایجاد ساختار سازمانی برای عاملها میتواند به دو شکل سنتی مشتری/ خدمت گذار و یا تخته سیاه باشد , البته روشهای دیگری همچون ایجاد قراردادها در سیستمهای توزیع شده مبتنی برعامل نیز به کار میرود.جهت ایجاد همکاری میان عاملها در سیستمهای متنوع امروزی زبانهای استانداردی به وجود آمده اند.گفتگوی میان عاملها در قالب مذاکره25 معنا میابد.گفتگوی میان عاملها در محیط و ارتباط آنها مستلزم درک معنا از گفتگوی انجام شده است. حال این ارتباط تعریف شده میتواند مختص به یک برنامه و یا سراسری باشد. در ارتباط میان عاملها , فهم یکسان از یک پدیده امری مهم است به همین جهت از هستان شناسی26 در ارتباطات عاملها استفاده میگردد.
شرکتها و موسسات بسیاری برای ایجاد زبان گفتگوی میان عاملها و ایجاد استاندارد فعالیت نموده اند. از آن جمله میتوان به ACL توسط موسسه FIPA و یا KQML , WSDL اشاره نمود. در ادامه به مقایسه عامل و شیء میپردازیم.
1-3. مقایسه عامل و شیء
تفاوتی که میان عامل وشیء وجود دارد، این است که یک عامل علاوه بر مفاهیمی همچون خصلت و متد شامل حالات ذهنی مانند مفاهیم نقشه و هدف است ,مورد تفاوت دیگر نحوه ارتباطات در شیء و عامل است ، عاملها از یک روش با معنی و با ساختار پیغام مبادله میکنند و از پروتکل و همکاری استفاده میکنند در حالی که در شیء فقط بیدار کردن یک متد یا انتقال ساده یک داده است.که براساس خصوصیات آن دو در نمایشهای مختلف استوار است. در ابتدا از روی تعریف آن دو میتوان در جدول زیر خصوصیات آن دو را بیان نمود:
عامل شیء خصوصیت هست هست یک انتزاع از سیستم دارد دارد قابلیت نگه داری اطلاعات خودمختار هست یک عمل هدایت شده دارد دارد رفتار دارد دارد هویت اختصاصی هست نیست اجتماعی هست نیست هدف گرا قانونمند بر اساس تعریف کاربر ارتباطات دارد ندارد تداوم زمانی دارد ندارد حالت
بر اساس جدول پیشین میشود گفت که تفاوت عامل و شیء در تعریف اینست که یک عامل تمامی خصوصیات یک شیء را دارد ، اما علاوه بر آن خصوصیات عامل دارای ارتباطات اجتماعی قانونمند است و خودمختاری آن بر اساس یک هدف است و در موقعیتهای زمانی خاص بر اساس حالات خود واکنش نشان میدهد. یک عامل تداوم زمانی دارد که یک شیء از آن بی بهره است. هردوی شیء و عامل در محیط هستند، هردو میتوانند واکنشی باشند، عاملها خودمختار هستند، عاملها میتوانند چند هدف داشته باشند، عاملها اجتماعی هستند و قواعد گفتگو دارند. به این ترتیب میتوان گفت که یک عامل به شکلی فعالتر میتواند موجودیتهایی را که در محیط اطراف ما وجود دارند را مدلسازی نماید. در بررسی برنامهنویسی شیءگرا در مقابل عاملگرا میتوان به جدول زیر اشاره نمود:
OOPAOPواحد اولیه شیءعاملتعریف حالت واحدنامحدوداعتقادات، قابلیتها، تاییدات ، انتخابها و ….فرایند محاسبات روش عبور پیغام و پاسخروش عبور پیغام و پاسخنوع پیغامنامحدوداطلاعرسانی، درخواست، قبول ، رد کردن و …محدودیت بر روی روشهامحدودیتی نداردامانتداری ، سازگاری …
در برنامهنویس عاملگرا 27و شیءگرا تفاوتهای نوع پیغام و واحدهای مورد استفاده قابل ذکر است ، که در بعضی موارد موجب پیچیدگیهایی در استفاده از روش عاملگرا میگردد. اما سادگی آن در ارایه ساختارهای مشخص است که در بعضی از خصوصیات موجب برتری برنامه نویسی عاملگرا است.همانگونه که در جدول فوق میبینید ،در برنامهنویسی عاملگرا تفاوتهایی در مقایسه با برنامهنویسی شیءگرا وجود دارد، که باعث ایجاد تفاوتهایی در روش برنامهنویسی آن دو میگردد.
برنامهنویسی یکپارچهبرنامهنویسی پیمانهایبرنامهنویسی شیءگرابرنامهنویسی عاملگرارفتار هر واحدغیرپیمانهایپیمانهایپیمانهایپیمانهایوضعیت هر واحدخارجیخارجیداخلیداخلیبیدار نمودن واحد28خارجیخارجی (فراخوانی)خارجی (پیغام)داخلی (قاعده ، هدف)
در جدول بالاxvi میتوان تکامل روشهای برنامه نویسی را که به AOP ختم میشود مشاهد نمود.در این جدول خصوصیات و وجه تمایز روشهای برنامهنویسی در قالب واحدهایی که برایشان کدی نوشته میشود به شکلی ساده مشاهده نمود.در جدول فوق اگر هر واحد را به عنوان یک موجودیت در نظر بگیریم درخواستها میتوانند از نهادهای خارجی یا داخلی باشند. در بعد مقایسه معماری میتوان به این امر اشاره نمود که در طراحی عاملها با توجه به تفکیکی که انجام میگردد، در مقایسه با اشیاء، پیچیدگی کمتری را در روابط و ساختار میتوان مشاهده نمود.چرا که در بزرگ شدن سیستمها و افزایش پیچدگی ، در طراحی شیءگرا تعداد روابط افزایش میابد و به طبع پیچیدگی و تداخلات زیاد میشود. در شکل زیر معماری یک سیستم چند عامله با تقسیم بندی وظایف را میتوان دید.
1-4. رابطه برنامه نویسی سرویس گرا و عاملگرا
پس از تکامل الگوریتمهای محاسباتی امروزه به سمت تعامل میان محاسبات میرویم، این امر مستلزم خودمختاری عاملهای محاسباتی و توانایی عاملهای واسط برای تعامل با محیطشان است.سرویسها بایستی کنشگرا باشند و این امر نیاز به عامل دارد و خود عاملها نیاز به درک بر اساس هستان شناسی دارند. پیچیدگیهی موجود در ارایه برنامه نویسی سرویس گرا که مواردی همچون ساختار ، پیغام رسانی، امنیت و … را در برمیگیرد ما را به سوی استفاده از هستان شناسی و عاملها میبرد. تکنولوژیهایی که به این سمت حرکت کرده اند عبارتند از : OAG, OASIS,BizTalk,RostteNet . داشتن یک هستانشناسی سراسری جهت کار کردن با عاملها باعث میشود که یک وب سرویس به چند روش ارایه شود .در جدول زیر میتوان ساختار واحدهای مختلف برنامه نویسی سرویسگرای مبتنی بر عامل را در مقایسه با روشهای پیشین دید.
مفهومزبان رویه ایزبان شیءزبان سرویس مبتنی بر عاملانتزاعنوعکلاسسرویس/ تعاملواحد سازندهنمونه ، دادهشیءعاملمدل محاسباتیرویه/فراخوانیمتد/پیغامدرک/دلیل /عملموارد طراحیدرخت رویه هاالگوهای تعاملتعاملات همکارمعماریتجزیه کاربردیوراثت و چند ریختیمدیران، وردستها ، جفتهاحالات رفتاریکدنویسیطراحی و استفادهفعال و تصویب کردنواژگان پیادهسازیمهندسیفعالسازی
در برنامهنویسی سرویسگرا دو مزیت ساختن برنامه های انعطاف پذیر و بازدهی برنامه نویسی و مدیریت برنامه کاربردی در سیستمهای باز وجود دارد. مزیتهای دیگری در ترکیب با سیستم چندعامله از جمله موارد زیر دارد :
* ارایه ابزار برای مدلسازی اطلاعات که امکان همکاری درون یک سازمان را فراهم میکند
* اجازه خودمختاری درون سازمان را به هر فرایند میدهد
* اجازه خصوصی سازی برنامه های جدید را از طریق واسطشان با سرویس میدهد
* اجازه انتخاب بر اساس کیفیت سرویس را میدهد
* اجازه استقاده موثر از منابع توزیعی را میدهد
* در عاملها درباره خود میدانند و میتوانند از عاملهای دیگر اگاه شوند و این مزیتی برای ارایه سرویس است
* عاملها برخلاف سرویسها میتوانند از یک هستانشناسی برای ارتباط استفاده کنند
* عاملها برای ارتباط ساخته شده اند در حالی که سرویسها تا فراخوانده نشوند غیرفعالند
* وب سرویس به صورت اولیه خودمختار نیستند و همانطوری که نوشته میشود استفاده میگردد
* عاملها با یکدیگر همکاری میکنند تا هدف بزرگتری دست یابند
با توجه به موارد گفته شده ، برای اینکه29 SOA مزیتهای فوق را داشته باشد نیازمند موارد زیر است : جفتگیری ضعیف، پیاده سازی بی طرف، تنظیمات انعطاف پذیر، دوره حیات طولانی، دانه دانه بودن، محاسبات تیمی. در واقع یک همکاری دوطرفه میان برنامهنویسی سرویسگرا و چندعامله اتفاق میافتد.انچه برنامه نویسی سرویسگرا به چند عامله میدهد ، ارایه تکنولوژی اطلاعات سنتی و رفتارهای استاندارد برای تسهیل ابزارهای توسعه است.که معماری سیستمها را میتوان در قالب مدل علی، مدل فرایند، جریان کاری و گراف هدف-زیرهدف یا مدلهای رسمی بیان نمود. مساله مورد توجه در طراحی چنین سیستمهایی برآورد ارتباط سراسری اجزا است بدون اینکه با کنترل سراسری درگیر شویم
فصل 2
مهندسی نرمافزار مبتنی بر عامل
مهندسی نرم افزار30 ، عملیاتی است مربوط به طراحی ، پیاده سازی و تغییردادن نرم افزار ، به گونهای که از کیفیت بالاتر، با بهرهوری بیشتر ،قابلیت نگهداری و سرعت ساخت برخوردار باشد. از این رو رویکرد سیستماتیک به تجزیه و تحلیل ، طراحی ، ارزیابی ، اجرا ، تست ، نگهداری و مهندسی مجدد به عنوان کاربردهایی در مهندسی نرم افزار مورد توجه میباشند. (Phillip Laplante 2007)
2-1. مهندسی نرمافزار مبتنی بر عامل
با گسترش تکنولوژی اطلاعات در دهه 80 تعداد زیادی برنامه های نرم افزاری برای نیازمندی های پیچیده بوجود آمد و تکنیک های تحلیل ساختیافته آنچنان مؤثر نبودند، و به همین جهت روش های شی گرا معرفی شدند. این روش ها جنبه هایی مانند مخفی سازی اطلاعات،انتزاع داده ای، تلفیق داده ها و همزمانی را در خود دارند. همچنین شی گرایی تلاش نمود تا فاصله جهان حقیقی و بازنمایی آن را پر کند این امر در برنامه های کاربردی بوسیله مدل های نهاد های واقعی توسط اشیا انجام میگیرد.به همین جهت قابلیت ها