نويسندهتعريفبوشيك انتزاع از چيزي در حوزه مساله كه قابليتهايي از سيستم را كه اطلاعات ان را نگه ميدارد نشان ميدهد كه داراي رفتار ،هويت و حالت است.
کود و ياردان شيء يك چيز مشهود وملموس در شكلي پايدار است ، كه ميتواند به شكلي عقلايي بيان شود، چيزي كه فكر ميشود يا عملي كه هدايت شود نيز ميتواند باشد. به شكل يك واحد از يك ساختار و رفتار كه شامل خصوصياتي است ميتوتند بيان گردد.کولبرتشيء يك شخص ، مكان يا چيزيست كه ميتواند ذهني و يا فيزيكي باشد. ايده اينست كه شيء ميتواند يك نهاد يا نشان باشد كه يك هويت اختصاصي دارد. شيء ميتواند از اشياء ديگر ساخته شده باشد.
ساختار اصلي تعريفهاي بالا شيء است . هر شيء متشکل از يکسري صفات است که به آنها خصلت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 توليد نرم افزار نيز شناخته مي‌شود، ساختاري است که روي توسعه و توليد محصولات نرم افزاري اعمال مي‌شود. عبارتهاي همانندي چون چرخهي حيات نرم افزارو فرآيند نرم افزار در اين رابطه استفاده مي‌شود. مدلهاي گوناگوني همچون فرآيندهاي خاص وجود دارند که هر کدام خط مشي مختص آن فرآيندها را براي انجام کارها و فعاليت‌هاي متنوع در طول فرآيندها مشخص مي‌کنند.


پاسخ دهید