نویسندهتعریفبوشیک انتزاع از چیزی در حوزه مساله که قابلیتهایی از سیستم را که اطلاعات ان را نگه میدارد نشان میدهد که دارای رفتار ،هویت و حالت است.
کود و یاردان شیء یک چیز مشهود وملموس در شکلی پایدار است ، که میتواند به شکلی عقلایی بیان شود، چیزی که فکر میشود یا عملی که هدایت شود نیز میتواند باشد. به شکل یک واحد از یک ساختار و رفتار که شامل خصوصیاتی است میتوتند بیان گردد.کولبرتشیء یک شخص ، مکان یا چیزیست که میتواند ذهنی و یا فیزیکی باشد. ایده اینست که شیء میتواند یک نهاد یا نشان باشد که یک هویت اختصاصی دارد. شیء میتواند از اشیاء دیگر ساخته شده باشد.
ساختار اصلی تعریفهای بالا شیء است . هر شیء متشکل از یکسری صفات است که به آنها خصلت2 گفته میشود که توصیف کننده ساختار شیئ میباشند همچنین دارای یکسری تابع است که به آنها متد گفته میشود که در واقع توصیف کننده رفتار آن شیئ می باشند . در این ساختار دیگر مشکل پیچیدگی گذرها را نداریم . همچنین به راحتی می توانیم اشیاء را استفاده مجدد کنیم و با انتقال یک شیئ به یک سیستم دیگر تمامی ساختار و رفتارهای آن نیز انتقال یابد .با توجه به توضیحات فوق یک شیء میتواند خصوصیات زیر را داشته باشد:
* یک انتزاع از سیستم
* قابلیت نگه داری اطلاعات دارد
* یک عمل هدایت شده
* یک واحد از یک ساختار
* دارای خصوصیات است
* رفتار دارد
* هویت اختصاصی دارد
* میتواند از اشیاء دیگر ساخته شده باشد
1-2. برنامه نویسی عاملگرا
هوش مصنوعی در بسیاری از دانشهای امروزی کاربردهای وسیعی دارد ،هوش مصنوعی به هوشی یک ماشین و یا به دانشی کامپیوتر که سعی در ایجاد آن دارد گفته می‌شود. در هوش مصنوعی توزیع شده3 که واژهای است که در سال 1980 در دانشگاه ام آی تی معرفی شد ، به مطالعه و ساخت و به کارگیری سیستمهای که در آنها چندین عامل در حال تعامل با یکدیگر است و مجموعهای از اهداف را دنبال میکنند میپردازند. (شیرازی 1384)
1-2-1. عامل
در سال 1990 آقای “یاو شوهام” به معرفی مفهومی جدیدی در برنامهنویسی به عنوان عامل پرداخت. البته این عامل به در ابتدا به عنوان موجودیتی ساده در نظر گرفته شد، در سال 1993 تعریف آن دچار تغییراتی شد و خصوصیات بیشتری به آن افزوده شدند. تعاریف مرتبط با عاما را میتوانید در جدول زیر مشاهده نمایید:
نویسندهتعریفوولدریجعامل یک سیستم کامپیوتری کپسوله شده, که در محیطی قرار دارد و قادر است کارهای خودمختار برای رسیدن به اهدافش انجام دهد.عاملها قادرند با یکدیگر تعامل داشته ونسبت کارهای دیگر عاملها واکنش نشان دهند.راسلعامل یک واحد محاسباتی مانند برنامه نرم افزاری یا یک روبات است که قابل مشاهده است و با محیط خود در ارتباط بوده و نسبت به تجارب به دست امده رفتارش را تنظیم میکند و نسبت به محیط واکنش نشان داده وخودمختار است.عاملها اهدافی دارند که اعمالشان در جهت رسیدن به آنهاست.سوفرعامل موجودیت نرم افزاری مانایی است که برای رسیدن به هدف4 خاصی طراحی شده است.
بنابر تعریف دیکشنری آکسفورد یک عامل شخصی است که برای انجام کاری در یک محل از طرف شخص دیگری دارای صلاحیت باشد. اما در نهایت میتوان گفت عامل هر چیزی است که محیط خود را باحسگرها درک می کند و در محیط با کنشگرها تاثیر می گذارد. این تعریف بسیار وابسته به محیط است. همچنین عامل میتواند سیستمی محاسباتی باشد،که در محیطی پویا و پیچیده قرار دارد. بصورت خودگردان محیط را حس کرده و با توجه به اهداف خود کنش یا کنشهایی را صورت می دهد .i در شکل زیر یک دید انتزاعی از عامل را میبینید.

در علم کامپیوتر عامل نرمافزاری5 یک قطعه از نرمافزار است که مانند یک آژانس در ارتباط با یک برنامه ، کاربر یا عامل دیگر عمل مینماید. همچنین یک توافق در مورد اینکه چه کاری بایستی انجام گیرد بین آن دو صورت میپذیرد. ایده این است که عاملها به صورت محدود برای کاری بیدار نمیشوند بلکه خودکار فعال میشوند. واژه عامل یک تجرید نرمافزاری ، یک ایده یا یک قاعده مانند توابع ، متدها و اشیا در OOP را بیان میکند. مفهوم یک عامل راهی قدرتمند و راحت را برای تشریح نهادهای نرمافزارهای پیچیده فراهم میکند که قادر است درجهای از خودمختاری را به منظور کامل نمودن کارها در تعامل با کاربر مهیا کند.ii هدف از این برنامه ها، سهولت کشف اطلاعات در اینترنت و جایگزینی انسان در این فرآیند طولانی به وجود آوردن دانش است.عاملهای نرمافزاری برای اولین بار با هدف ایجاد شیوه‌ای راحت و مطمئن برای انجام خودکار کارهایی به نیابت از کاربر بوجود آمد. عاملها از رده های مختلف و قابلیتهای متفاوتی میتوانند باشند از جمله یک برنامه رومیری ساده تاوعاملهایی که برای جستجوی خودکار اطلاعات و بازیابی انها به کار میروند.
مفاهیم و مفروضات عاملها در مهندسی نرم افزار شامل مفهومهای اشاره شده در حوزه مساله مانند عاملهای هوشمند ، عاملهای توزیع شده ، سیستمهای چند عاملی6 ، عاملهای همراه ،افزایش محلی سازی و بسته بندی مانند به کار بردن کنترل بر روی وضعیت و رفتار خود و در نهایت حمایت از طراحی بر پایه قابلیت استفاده مجدد با ارایه عاملها و ارتباطات انعطاف پذیر است. چندین عامل درکنار یکدیگرکه به صورت طبیعی غیر متمرکز، دارای چندین مکان کنترلی، چندین دیدگاه و علایق متفاوتی هستند ،برای رسیدن به اهداف خود بایستی با هم تعامل داشته باشند. این عاملها در کنار یکدیگر تشکیل یک سیستم چندعامله را میدهند.مفهومی کردن سطح دانش به این معنا که چه اهدافی، در چه زمانی ، توسط چه کسی و به چه علت انجام میپذیرد ، در سیستمهای چند عامله مطرح میشود.
بیشتر تعاریف ، عامل ها را به دو دسته پیشکارهای قوی و ضعیف دسته بندی می کنند؛ پیشکار ضعیف خصوصیاتی همچون واقع در محیط،خودمختاری ، واکنشی ، کنشگرایی و قابلیت اجتماعی دارد داردiii. پیشکار قوی تمامی خصوصیات یک پیشکار ضعیف را دارد اما نشانه های آن گسترده ترند مانند دیدن یک عامل به شکلی که وضعیت ذهنی و نشانه های اراده مانند اعتقاد،میل،هدف،خواستن و تمکین را داشته باشد .ivخصوصیات دیگر مانند قابلیت تحرک و قابلیت اعتماد ،فرمانپذیری نیز بعضی مواقع جزء خاصیت های یک پیشکار قوی هستند.از تعاریف ارایه گردیده در مقالات و کتابها میتوان مفاهیم زیر را استنتاج نمودv :
* واقع در محیط: عامل ها در محیط ها قرار دارند و برای درک محیط از حسگرهایشان استفاده می کنند. مانند یک ربات که از حسگرهای متفاوتی مانند دوربین برای دیدن اطراف استفاده می نماید.
* مانایی7 : که به صورت پیوسته عامل اجرا گردد و تصمیمگیری نماید که بعضی از کارها را انجام دهد. به عبارت دیگرانجام مستمر وظایف8 محول شده و گرفتن تصمیمات مربوط به این که چه زمانی باید عکس العمل نشان دهد.
* خودمختاری9 : عامل بدون دخالت مستقیم انسانها یا دیگران قابلیت انتخاب کارها ، اولویت دهی ، رفتار هدفدهی شده ، تخصیص میزان اهمیت10، و تصمیمسازی را دارد، انجام وظیفه می نماید و بر کنشها و وضعیت داخلی خود نوعی کنترل دارد.
* قابلیت اجتماعی : عاملها قادرند دیگر مولفهها را درگیر نموده و بعضی از انواع ارتباطات را به کار گیرند یا اینکه در انجام کاری مشارکت کنند. عامل با سایر عاملها و یا انسانها از طریق نوعی زبان ارتباط برقرار می کند.
* فعالیت مجدد 11: عاملها ممکن است نسبت به متن کاری خویش واکنش نشان داده و کار جدیدی انجام دهند. عامل محیط اطراف خود را درک کرده که این محیط ممکن است: دنیای فیزیکی، کاربر با واسط کاربر ، مجموعه ای از سایر عوامل ، اینترنت یا احتمالا مجموعه ای از همه اینها و درزمان مناسب به تغییرات رخ داده در آن پاسخ می دهد. در کل داشتن توانایی درک نسبی مفاهیمی که برای آن‌ها کار می‌کنند و واکنش می‌دهند.
* کنش گرا 12: قابلیت پیش بینی اهداف آینده را داشته باشد. همچنین میتوان به بیان دیگر گفت که بایستی قابلیت واکنش به تغییرات محیط را داشته باشند. عامل ها در صورتی که اهدافشان را در طول زمان تعقیب کنند کنشگرا هستند،هدف نهایی یک ربات فوتبالیست برنده شدن تیمش است.پس به همین علت تصمیمات مانند ضربه زدن به توپ و پاس دادن و گل زدن را در یک هدف کلی انجام می دهد.
* از جمله خصوصیات دیگر عاملها میتوان به انعطافپذیری، عقلانیت، یادگیری، هدف گرایی و قابلیت استدلال اشاره نمود. البته خصوصیات زیادی برای عاملها ذکر گردیده که با توجه به سیستمهای مختلف امکان دارد به کار گرفته شوند یا خیر، که در اینجا اشاره نمیگردد.
خصوصیات ذکر شده به عامل ها آن ها را به نهاد هایی محکم با قابلیت انعطاف تبدیل می کند. انعطاف پذیری از توانایی عامل ها در پاسخ به تغییرات محیطی ناشی می شود. تعقیب کردن اهداف و بهبود کارها منجر به استحکام عامل ها می شود این کیفیت ها در سیستم های پیچیده،پویا، باز و محیط های خطا خیز مفید هستند.
عاملهای نرمافزاری یک تکامل مستقیم از سیستم چند عامله هستند. خود MAS شامل و نشات گرفته ازهوش مصنوعی توزیع شده و موازی ، و همچنین حل مساله توزیع شده است که خصوصیات بد و خوب همه آنها را با هم دارد. یکی دیگر از مفاهیم عاملها ، عاملهای هوشمند13 است که در علم کامپیوتر به عامل نرمافزاری که هوشمندی به خرج دهد عموما عامل هوشمند میگویند. در این قسمت چند مثال از عاملها را ذکر می کنیم تا در حین آن نحوه کمک رسانی آن‌ها به کاربران را توضیح دهیم.عاملهای هوشمند نرمافزاری را میتوان به چهار دسته تقسیم نمود :
1. عاملهای خریدار : این عاملها در طول شبکه حرکت میکنند. اطلاعات و سرویسها را استخراج میکنند.برای محصولاتی مانند کتاب ، قطعات الکترونیکی و غیره مناسب هستند. این نرم‌افزارها به کاربران اینترنتی در پیدا کردن محصولات و خدمات مورد نیازشان کمک می‌کنند. به طور مثال زمانی که فردی برای خرید محصولی به سایت eBay می‌رود، در پایین صفحه لیستی از محصولات است که دیگر خریدارانی که به دنبال آن محصول بودند، به آن‌ها نیز توجه داشته اند. دلیل انجام این عمل این است که سلیقه? کاربران به صورت نسبی به هم شبیه است و آنها به دنبال محصولات مشابهی هستند. به این تکنولوژی که با کمک عاملها امکان پذیر است، فیلتر مشترک 14می‌گویند.
2. عاملهای شخصی : عاملهای هوشمندی هستند که در ارتباط با انسان کارهای زیر را انجام میدهند : با ما بازی کامپیوتری انجام میدهند ، بنابر نیاز ما اطلاعات را پیدا میکنند ، صفحات وب را به صورت خودکار برای ما پر میکنند. همچنین این عاملها به منظور انجام کارهای کاربر به طور اتوماتیک به وجود آمده اند. مثلا بعضی از این عاملها ایمیل‌های کاربران را با توجه به نوع درخواستشان طبقه بندی و مرتب می‌کنند.
3. عاملهای نظارهگر : برای مشاهده یک گزارش بر روی یک تجهیزات خاص(معمولا رایانهای) استفاده میشوند. عاملها ممکن است که مراحل تولید را در یک کارخانه یا در یک شرکت از نقطه تولید تا پشتیبانی را پیگیری نمایند، یا اینکه اتفاقات بازار سرمایه را نظارهگر باشند.
4. عاملهای دادهکاوی : این عاملها از فنآوری اطلاعات برای پیدا کردن الگوها از چند منبع مختلف استفاده میکنند. کاربر میتواند از اطلاعات طبقهبندی شده این عاملها استفاده نماید تا اطلاعات مورد نیاز خود را بدست آورد. مثالی از این نوع عامل ها، عامل هایی هستند که شرایط بازار را دائما بررسی می‌کنند و آن شرایط را به کاربر یا کارخانه گزارش می‌دهند تا کاربر یا کارخانه بتواند با توجه به آن‌ها تصمیمات صحیح بگیرد.
با توجه به توضیحات بالا عامل هوشمند نرمافزاری یک نهاد خودکار است که محیط اطراف خود را نظاره میکند ، به آن واکنش نشان میدهد و فعالیتهایش را برای دسترسی به اهدافش مسیردهی میکندvi. عاملهای هوشمند همچنین ممکن است عمل یادگیری را انجام دهند و از دانش خود برای رسیدن به اهداف استفاده نمایند. آنها میتوانند ساده یا بسیار پیچیده باشند مانند یک ترموستات ماشین یا انسانها در جامعه بشری، مثالهای دیگر از عاملهای هوشمند شامل فیلتر کنندگان هرزنامهها و یا عاملهای موتورهای جستجوگر نام برد.
عاملهای هوشمند به شیوههای متفاوتی تعریف شدهاندvii، در کل میتوان گفت یک عامل هوشمند بایستی خصوصیات زیر را داشته باشد viii:
* تطبیق راهحلهای جدید با قواعد افزایشی
* تطبیق به صورت آنلاین و در زمان
* قادر بودن به تحلیل رفتار ، خطا و موفقیتهای خود
* یادگیری و بهبود خود در تعامل با محیط 15

در این سایت فقط تکه هایی از این مطلب با شماره بندی انتهای صفحه درج می شود که ممکن است هنگام انتقال از فایل ورد به داخل سایت کلمات به هم بریزد یا شکل ها درج نشود

شما می توانید تکه های دیگری از این مطلب را با جستجو در همین سایت بخوانید

ولی برای دانلود فایل اصلی با فرمت ورد حاوی تمامی قسمت ها با منابع کامل

اینجا کلیک کنید

* به سرعت از حجم عظیمی از داده یادگیری انجام میدهند
* داشتن یک نمایشگر حافطه و مخزن بازیابی اطلاعات
* داشتن پارامترهایی جهت نمایش حافظه کوتاهمدت و بلندمدت و فراموش کردن
به صورت ریاضی یک عامل ساده به عنوان یک تابع عامل تعریف میگردد که هر رشته مفاهیم را به عمل ممکنی که عامل قادر به انجام آن است نگاشت میکند : f : P* ? A
بنابر تعریف راسل عاملها بر اساس درجه هوش و قابلیتهایشان به پنج طبقه از کلاسها تقسیم میشوند:
1. عاملهای بازتابی ساده 16
2. عاملهای بازتابی بر اساس مدل17
3. عاملهای پایه هدف18
4. عاملهای پایه ابزار19
5. عاملهای یادگیری20
عاملهای بازتابی ساده بر اساس شرط عمل کار خود را انجام میدهند به این معنا که اگر شرطی اتفاق افتاد آنگاه عمل مرتبط انجام گردد.در این حالت تمام محیط مشاهده میگردد و واکنش نشان داده میشود. در عاملهای بازتابی بر اساس مدل محیط به صورت جزئی مشاهده میگردد و حالت کنونی درون عامل ذخیره میشود تا تصمیمگیری نماید. عاملهای پایه هدف مانند براساس مدل است درحالی که ذخیره حالتی صورت میپذیرد که مورد رضایت و مد نظر عامل باشد. عاملهای یادگیری در محیطهای ناشناخته به کار میرود تا آگاهی عامل در آن محیط افزایش یابد.
عاملهای هوشمند اغلب به صورت شماتیک به عنوان یک سیستم کاربردی انتزاعی مانند یک برنامه کامپیوتری در نظر گرفته میشوند به همین دلیل بعضی اوقات AIA21 نامیده میشوند. اما هنوز خیلیها ترجیح میدهند که جوهره اصلی عاملها را رفتار هدفدهی شده آنها در نظر بگیرند از این رو با واژه به عاریت گرفته شده از اقتصاد آنها را عاملهای منطقی22 مینامند.
1 -2 -2 . محیط عامل
از دیگر مفاهیمی که در برخورد با عاملها میتوان مشاهده نمود،واژه محیط است. بر اساس گفته “مولر” عاملها را نمیتوان به صورت مستقل ، بدون توجه به محیطی که در آن فعالیت میکنند در نظر گرفتix . محیطی که عامل در آن به تعامل با دیگر عاملها میپردازد در انتخاب مدل معماری و همچنین متدولوژی مهندسی نرمافزار تاثیر گذار است. خصوصیات محیط بنابر دسته بندی کلاسیک هوش مصنوعی شامل موارد زیر استx:
* قابل دسترس/غیرقابل دسترس : عامل قادر به درک کامل حالات جهان پیرامون خود هست ؟
* قطعی / غیرقطعی : آیا تغییر حالت محیط در وضعیت کنونی کاملا در نظر گرفته شده است؟
* ایستا/پویا : تغییر حالت محیط در کنکاشهای عامل در نظر گرفته شده؟
* مقطعی/ غیرمقطعی : رشته تعاملات عامل با محیط مستقل هستند؟
* گسسته/پیوسته : تعامل عامل با محیط محدود است؟
بر اساس تحقیقات جدید انجام شده محیط به عنوان یک انتزاع کلاس مرتبه اول در نظر گرفته میشود ،که عاملها را احاطه کرده است ، و شرایط گفتگو بین عاملها و دسترسی به منابع را محیا مینماید. همچنیین محیط بایستی قابلیتهای زیر را داشته باشدxi :
* ارایه نمودن یک ساختار برای سیستم چند عامله
* داشتن خدمات و منابع
* پویا بودن
* به صورت محلی قابل مشاهده باشد
* به صورت محلی قابل دسترس باشد
* تعریف و نظارت بر قواعد محیطی
علاوه بر دسته بندیهای گفته شده که دسته بندی کلاسیک هوش مصنوعی برای محیطهای بسته است , عامل میتواند در محیطی باز فعالیت نماید و تمامی یا بخشی از خصوصیات و قابلیتهای گفته شده را دارا باشد .درمحیطهای باز دقیقا مشخص نیست که با چه مواردی در آینده برخورد میکنیم و همین امر موجب انتخاب معماری های خاص عامل یا متدولوژیهای طراحی سیستم چند عامله متفاوتی میگردد.از آنجا که در این بخش بیشتر سعی بر آن بود که به معرفی محیط بپردازم ، برای اطلاعات بیشتر به xii مراجعه نمایید.
1-2-3 . معماری عامل
معماری نرم افزاریک تجرید سطح بالا یا یک چهارچوب از ساختمان یک یا چند سیستم نرمافزاری که شامل اجزای سخت افزاری و نرمافزاری است که سیستم ،واسطها ، روابط بین اجزا و رفتاری از اجزا را که قابل مشاهده توسط دیگر اجزا است را نشان میدهدxiii. همچنین شامل تصمیمات مهم طراحی است که مجموعهای از کیفیتهای منجر به موفقیت سیستم را پشتیبانی میکند. اختصاص قسمتی از نیازهای سطح بالا به اجزای نرمافزاری در معماری سیستم تعریف میشود.
نیازهای یک محصول ، کیفیت خصوصیات آن و مشخصات کاربر معماری آن را میسازد.xiv مطالعه معماری مفروض دیدگاههای مختلفی را مهیا میکند که مانند نمونه سازی به صحت نیازمندیها وتنظیم دقت آنها کمک مینماید. معماری برای سیستمی که شامل سختافزار و نرمافزار یا بسیار پیچیده است امری حیاتی به شمار میآید چرا که خاصیت ردیابی اطلاعات به تیم توسعه کمک میکند نیازهایی را که در طراحی آن مشخص گردیده پیگیری نمایند.xv دیگر دلایل اهمیت معماری در مواردی همچون : ارتباط بین سهامداران سیستم ، تصمیمات طراحی اولیه ، تجرید قابل انتقال سیستم است. بنا بر گفته ” مایز” معماری عامل یک متدولوژی ویژه برای ساخت عاملها است که مشخص می سازد، چگونه عاملها می توانند به مجموعه ای از ماژولها شکسته شوند و چگونه این ماژولها با هم ارتباط داشته باشند. مجموعه ماژولها و روابط بین آنها پاسخی به این سؤال هستند؛ که چگونه داده حسگرهاو وضعیت فعلی، کنش ها و حالت بعدی را مشخص میکنند. معماری شامل تکنیکها و الگوریتمهایی است که این متدولوژی را حمایت می کند.
از این رو میتوان فهمید که معماری عامل نقشی تعیین کننده درخصوصیات و رفتار عامل دارد.معماری عامل به عنوان یک برنامه کاری برای طراحی عامل نرم افزاری و سیستم هوشمند عمل مینماید. این تعریف از معماری در عاملهای هوشمند به نام معماری ادراکی23 شناخته میشود.در نهایت اینگونه میتوان گفت که انواع معماری عامل میتوانند در یکی از دسته های زیر قرار گیرند:
1. مدل منطقی : سمبولیک است و از مکانیزم Reasoning استفاده میکند.
2. مدل واکنشی : بر اساس انجام یک عمل پاسخ میدهد.
3. مدل لایه ای : این مدل تر کیبی از مدلهای دیگر است.
4. BDI : دارای ساختار ذهنی و یکی از معروفترین مدلهایش PRS است.
معروفترین مدلهای استفاده در معماری که در متدولوژیهای مختلف مد نظر قرار میگیرد. مدل معماری لایه ای و BDI است. در مدل لایه ای پیشنهاد , تشکیل یک سیستم چند لایه است که هر لایه یکی از وظایف را بر عهده دارد. نحوه قرار گرفتن لایه ها میتواند به صورت افقی یا سلسله مراتب عمودی ویا ترکیبی از این دو باشد.در معماری مبتنی بر باورها , تمایلات و قصدها24 رسیدن به هدف مشخصی بر اساس یک استدلال عملی است.در این معماری جریان کاری از دریافت از حسگرها تا پاسخ وجود دارد که نحوه ادامه کار را مشخص مینماید.
1-2-4 . ارتباطات و هماهنگی در عاملها
از آنجا که عاملها در محیط مشترکی برای رسیدن به یک هدف فعالیت میکنند, نیازمند زبان مشترک برای درک یکدیگرهستند. همچنیین قراردادهایی جهت هماهنگی و جلوگیری از هرج و مرج هستند ,هرچند که در یک اجتماع گاهی تا حد خاصی هرج و مرج قابل تحمل است. هماهنگی علاوه بر جلوگیری از هرج و مرج میتواند جهت افزایش کارایی استفاده شود.برای ایجاد هماهنگی میان عاملها در سیستمهای چندعامله از قالب تعریف شده سازمان یا قراردادهای مشخص استفاده میگردد. در یک اجتماع عاملهای سازماندهی شده ,هماهنگی را در قالب همکاری و یا رقابت تعریف مینمایند.
عاملها برای رسیدن به هدف تحت ارتباطات سازماندهی شده تعامل دارند .این بستر سازماندهی رفتارعاملها را تحت تاثیر قرار میدهد ودر این حالت است که نیاز به جفتها،. تیمها، یکپارچگی و صلاحیت در ارتباط ضرورت پیدا میکند. روش ایجاد ساختار سازمانی برای عاملها میتواند به دو شکل سنتی مشتری/ خدمت گذار و یا تخته سیاه باشد , البته روشهای دیگری همچون ایجاد قراردادها در سیستمهای توزیع شده مبتنی برعامل نیز به کار میرود.جهت ایجاد همکاری میان عاملها در سیستمهای متنوع امروزی زبانهای استانداردی به وجود آمده اند.گفتگوی میان عاملها در قالب مذاکره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 تعداد زیادی برنامه های نرم افزاری برای نیازمندی های پیچیده بوجود آمد و تکنیک های تحلیل ساختیافته آنچنان مؤثر نبودند، و به همین جهت روش های شی گرا معرفی شدند. این روش ها جنبه هایی مانند مخفی سازی اطلاعات،انتزاع داده ای، تلفیق داده ها و همزمانی را در خود دارند. همچنین شی گرایی تلاش نمود تا فاصله جهان حقیقی و بازنمایی آن را پر کند این امر در برنامه های کاربردی بوسیله مدل های نهاد های واقعی توسط اشیا انجام میگیرد.به همین جهت قابلیت های بسیاری مانند افزایش کاربر،بهبود تغییرپذیری و نگهداری از این روش نتیجه شده است. مهندسی نرم افزار شیء گرا31 که یک متدولوژی و زبان مدلسازی شیء است، توسط ایوار یاکوبسون در سال ???? وقتی که در شرکت” آبجکتری ای بی “کار می‌کرد طراحی شد. این اولین متدولوژی طراحی شیءگراست که از”مورد کاربرد”32 برای طراحی نرم افزار استفاده مینماید. همچنین عناصر طراحی دیگری نیز شبیه به عناصر مورد کاربرد درمدلسازی اشیاء دارد.درروند تکمیل این روش مفاهیم و نمادهای OOSE در UML33 استفاده شدند و درشکل متدولوژی یا یک محصول دیگر به نام 34RUP به بلوغ رسید. با توجه به اثبات قدرت شی گرایی باز سیستم های نرم افزاری پیچیده تر شده اند و این مفهوم قادر به پاسخ به نیازهای جدید نبود.
یکی از آن ها تغییرات سریع محیط سیستم های اطلاعاتی است. سیستم های نرم افزاری هم اکنون به یکدیگر بیشتر متصل هستند و غیر متمرکز شده اند این تغییرات با توجه به افزایش محبوبیت اینترنت پیچیدگی های پیشرو را افزایش داده است.
با افزایش پیچیدگی سیستمها و پیشرفت روزافزون اینترنت و سیستمهای همراه, نیاز به ارایه روشی مهندسی برای برخورد با آنها لازم به نظر میرسید .در سیستمهای پیچیده مفاهیمی همچون ارتباطات میان زیر سیستمها و درون سیستمها بر پیچیدگی میافزاید.با توجه به توضیحات داده شده و همچنین دو دلیل زیر برای برخورد با سیستمهای پیچیده از روشهای سنتی مهندسی نرم افزار استفاده نمیشودxvii :
1.چون طراحی سطح بالا برای هر روش برنامه نویسی ،انتزاعهای متفاوتی دارد مانند در برنامه نویسی رویه ای میگوییم چه کاری انجام میدهد؟شیء گرا میگوید چه اشیایی انجا هستند ،داده و عملیات کدام است؟عامل میگوید چه اهدافی وجود دارند؟ چه رابطه ای بین عاملها است؟
2.در طراحی سطح پایین با اعمال غیرقطعی و شکستها روبرو هستیم که نیازمند نقشه های جایگزین، و بیش از یک راه حل مورد نیاز است.
با توجه به خصوصیات سیستم های پیچیده استفاده از مجموعه ای از اشیا غیر فعال منطقی به نظر نمی رسد به همین علت علاقه به عامل ها و مفهوم مهندسی نرم افزار آن افزایش پیدا کرده است.دو مفهوم قابلیت های پیشرفته عامل ها و سیستم های چند عامله و قابلیت بازنمایی قوی آن ها راه حلهای خوبی را برای سیستم های پیچیده فراهم می کند.
سه ابزاری که عاملگرایی برای توسعه و مدیریت پیچیدگی در اختیار استفاده کنندگان قرار می دهد عبارتند از: شکستن،انتزاع و سازمان؛ با شکستن فضای مسئله سیستم پیچیده به بخش های عامل و ارتباطات شکسته می شود ، با انتزاع عامل ها، برای طراحی و ساخت سیستم ها مناسب به نظر می رسند و مورد سوم بیانگر کارایی آن ها برای مدل سازی و مدیریت روابط سازمانی برای رسیدن به وابستگی ها و روابط درون سیستم پیچیده است.در جدول زیر تفکیک مفاهیم در مقایسه سیستم برپایه عامل با سیستم پیچیده را میبینید.
سیستم پیچیدهسیستم بر پایه عاملزیر سیستمهاسازمان عاملهامولفههای زیر سیستمیعاملهاتعامل میان زیرسیستمها و مولفههای زیرسیستمیهمکاری برای رسیدن به یک هدف،هماهنگی اعمال،گفتگو برای رفع تداخلهاتعاملات میان زیرسیستمها و مولفههای زیرسیستمی در طول زمان تغییر میکند و آنها به عنوان یک مجموعه واحد عمل مینمایند.یک روش مجزا برای مدیریت و بازنمایی روابط سازمانی ، و همچنین ساختاری برای مدلسازی مجموعهها وجود دارد.
با توجه به دلایل فوق و همچنین مزایای دیگر استفاده از سیستمهای چندعامله در حل مسایل مهندسی مانند افزایش قابلیت اطمینان، توسعهپذیری، استفاده مجدد، امکان اجرای موازی ، تعامل سیستمهای متفاوت، امکان پیادهسازی نظریههای علمی رشتههای دیگر , سیستمهای پیچیده مهندسی نرمافزار مبتنی بر عامل 35، به عنوان راهکاری جدید در مهندسی نرمافزار مطرح شده اند.
در سال ???? آقای “وولدریج” متدولوژی MADE را معرفی نمودند و در سال???? تحت مقالهای به نام مهندسی نرمافزار مبتنی بر عامل برای اولین بار به بیان مفهوم جدید مهندسی نرمافزار مبتنی برعامل پرداختxviii.در AOSE اجزای مطرح و پایهای عاملها هستند، و این روش مهندسی بر روی بعضی از سیستمهایی که مبتنی بر عامل نیستند نیز قابل اعمال است . در متدولوژیهای مهندسی نرمافزار مبتنی بر عامل تمامی یا قسمتی از زیربخشهایی که در علم مهندسی نرمافزار مطرح هستند ، پوشش داده میشوند. برای روشن شدن معانی واژگان و ارتباط میان آنها در مطالب ارایه شده در این سمینار توضیحاتی در زیر میآید:
2-1-1. فرایند توسعه:36 مجموعهای از گامهایی است که شامل فعالیتها ، محدودیتها و منابعی برای رسیدن به یک خروجی مطلوب میباشد که یک سری از نیازهای ورودی را پاسخگو است. فرایند معمولا شامل چند فاز یا قدم است که هر کدام یک فعالیت را نشان میدهند.
2-1-2. فرایند توسعهی نرم افزار37: مجموعهای همسان از سیاستها، ساختارهای سازمانی، فنآوریها،روشها و محصولاتی که برای توسعه ، نگهداری، تجهیز و درک سیستم نرم افزاری مورد نیاز هستند.(fuggeta 2000)فرایند توسعهی نرمافزار شامل مراحلی برای رسیدن به محصول نهایی است، که گامهای تعریف شده در آن ، با فرایند توسعه، سه تفاوت اساسی دارد :
* بایستی نیازمندیها درک شوند
* باید در محیط عملیاتی کارگذاشته شود
* بنا بر درخواستهای کاربران و نیاز به تغییرنرمافزار، نگهداری از ان انجام میشود.
فرآیند توسعهی نرم افزار که با عنوان چرخهی حیات38 تولید نرم افزار نیز شناخته می‌شود، ساختاری است که روی توسعه و تولید محصولات نرم افزاری اعمال می‌شود. عبارتهای همانندی چون چرخهی حیات نرم افزارو فرآیند نرم افزار در این رابطه استفاده می‌شود. مدلهای گوناگونی همچون فرآیندهای خاص وجود دارند که هر کدام خط مشی مختص آن فرآیندها را برای انجام کارها و فعالیت‌های متنوع در طول فرآیندها مشخص می‌کنند.


پاسخ دهید