شی و شی گرایی

شی گرایی نوعی نگرش به دنیاست.ویژگی اصلی این نگرش آن است که کل جهان مورد نظر را به صورت مجموعه ای از اشیاء نگاه می کنیم. هر یک از این اشیاء ویژگی ها و رفتار خاص خود را دارند ، این شی ها با یکدیگر در تعامل هستند و  در مقابل اشیاء دیگر تاثیر می گیرند و یا اثر می گذارند

] صدیقی مشکنانی [

هوش مصنوعی

 شاخه ای از علوم و مهندسی رایانه است که سعی دارد سیستم هایی تولید کند که به گونه ای عملکرد انسانی را شبیه سازی یا تقلید کنند.

تعریف عامل :

واژه عامل یک سطح انتزاع از نرم افزار را بیان می کند مثل همان مفاهیم شی و توابع. به صورت غیر رسمی می توان گفت عامل علاوه بر داشتن ویژگی های یک شی توانایی انجام کار هایی را با درجه ای از خود مختاری به منظور به انجام رساندن آن کار به جای کاربرش را دارد. یک شی ، که با یک سری method ها و attribute ها تعریف می شود اما یک عامل با رفتارش !! [Wikipedia]

یک تعریف دیگر از عامل : عامل چیزی است که می تواند برای یا به جای کسی عمل کند

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

با این تعاریف می توان گفت یک عامل یک ربات نرم افزاری است که در دنیای کامپیوتر زندگی و فعالیت می کند.

 

 

مثال هایی از عامل نرم افزاری

1-     آیتم انیمیشنی موجود در مایکروسافت office

2-     ویروس های کامپیوتری ( عاملهای مخرب )

3-     بازیکن های مصنوعی در بازی های کامپیوتری

4-     عنکبوت های وب ( مثل google.com )

مقدمه

در بخش مربوط به کیس (computer aided software engineering)  دانستیم یکی از ابزار های کمک کننده در فرآیند تولید نرم افزار هوش مصنوعی است زیرا با توجه به اینکه در مهندسی نرم افزار به کمک رایانه ، می خواهیم توسط یک نرم افزار ، کار مهندس نرم افزار را تقلید کنیم عملا ایجاد این نرم افزار ها در حوزه هوش مصنوعی قرار می گیرد

حال می خواهیم بگوییم حتی می توانیم دیدگاه عامل گرا داشته باشیم. در حقیقت مهندسی نرم افزار عامل گرا  توسعه یافته  و بست مهندسی نرم افزار شی گرا است

مهندسی نرم افزار عامل گرا:

هدف اصلی مهندسی نرم افزار عامل گرا ساختن متدلوژی ها و ابزار هایی است تا توسعه و نگهداری  نرم افزار های عامل به صورت ارزان ممکن شود.. به اضافه ی اینکه نرم افزار حاصل انعطاف پذیر بوده و کار کردن با آن ساده و آسان باشد و در ضمن از کیفیت و کارایی بالایی هم برخوردار با شد .

وجه تمایز عامل و شی

1-     یک شی یک ترکیب منطقی از ساختمان داده ها و متد های مربوطه هست و عامل ها می توانند یک جانشین ممکن برای شی باشند.عامل ها با اشیاء شبیه هستند اما عامل ها از ساختار هایی برای پشتیبانی از مؤلفه های ذهنی مثل باور ها و تعهد ها پشتیبانی می کنند.

2-     تفاوت مهم دیگر بین عامل و شی این است که اشیاء از بیرون کنترل می شوند.در مقابل عامل ها می توانند درجه ای از خودمختاری را داشته باشند. به طوریکه ممکن است به طور مستقیم از بیرون نتوانیم آن را کنترل کنیم. به عبارت دیگر عامل این حق را دارد که بگوید نه !!

OBJECT

AGENT

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

خودمختار است و خود کنترل خودش را به عهده دارد

قدرت «نه» گفتن ندارد

اجازه ی «نه» گفتن دارد

رفتارهای قابل پیش بینی _کارکرد هایش ایستا است

غیر قابل پیش بینی است _ در سناریوهای مختلف رفتارهای مختلفی دارد

 

متدلوژی های سطح بالا

در این قسمت متدلوژی هایی را توضیح می دهیم که از روش بالا به پایین و تکراری برای مدل کردن و گسترش سیستم های عامل گرا استفاده می کند

Wooldridage و Jennings و Kinny[1]  اشخاصی بودند که متدلوژی حاضر را در مورد تجزیه و تحلیل سیستم های عامل گرا بیان داشتند.

در این متدولوژی ها سعی شده که ویژگی های مربوط به عامل ها و روش های مرتبط با آن در متدولوژی های موجود اضافه گردد.

به دو دسته تقسیم میشوند :

متدولوژی هایی که توسعه روش های شیء گرا هستند.

متدولوژی هایی که توسعه روش های مهندسی دانش هستند.

متدولوژی هایی که توسعه روش های مهندسی دانش

مزايا:

1-    توانايي مدل سازي وضعيت ذهني عامل‌ها از طريق مدل سازي دانش

2-    امكان استفاده مجدد از ابزار‌ها و كتاب‌خانه‌هاي مربوط به Ontology

مواردي كه بايد مد نظر قرار گيرد :

1-    روش‌ها براي سيستم مبتني بر دانش مركزي هستند.

2-    در اين روش‌ها به ويژگي‌هاي خودمختاري و پاسخ گويي به تغييرات محيط توجهي نشده است.

نمونه‌ها :

CommonKADS، MASCommonKADS، CoMoMAS

 

 

 

متدولوژی هایی که توسعه روش های شیء گرا

مزایا :

1-    شباهت میان شی و عامل وجود دارد.

2-    روش های شی گرا بسیار متداول است.

3-    یادگیری و هزینه کمتری نسبت به سایر روش ها دارد.

مواردی که باید مد نظر قرار گیرد :

1-    تجرد بالاتر عامل نسبت به شیء

2-    تفاوت در نوع ارتباط بین اشیاء و عامل ها

3-    عدم توانایی روش های شیء گرا در مدل سازی ویژگی های خاص عامل

نمونه‌ها : Gaia     ، MESSAGE، ROADMap، Ex-MaSE, MaSE

متدلوژی مهندسی نرم افزار چند عامله

 

Wood[2]  و[3] deloach اولین کسانی بودند که متدلوژی سیستمهای چند عاملی را پیشنهاد کردند.

متدلوژی مهندسی نرم افزار چند عامله شبیه gaia هست اما این متدلوژی توجه بیشتر به پشتیبانی برای تولید کد اتوماتیک به وسیله ابزار هایی MaSE دارد. هدف  MaSE این بود که طراح را از مراحل اولیه تعریف سیستم تا پیاده سازی سیستم عامل گرا هدایت کند.

متدلوژی MaSE به هفت فاز در یک خط لوله منطقی تقسیم شده.

مرحله ی اول ) جمع آوری اهداف .

 برای این منظور باید مشخصات لازم برای ایجاد سیستم اولیه تعیین شده و در طی یک ساختار سلسله مراتبی به سیستم نهایی تبدیل شود. این کار به وسیله تعریف اهداف بر مبنای نیازمندی های مشخص سیستم اولیه و سپس مرتب سازی اهداف بر اساس اهمیت شان صورت می گیرد.

مرحله ی دوم ) تعیین موارد کاربرد

 .مورد کاربرد ها نشان دهنده  واکنش متقابل منطقی نقش های مختلف خود سیستم با یکدیگر است. برای حداقل  سازی تعداد پیام هایی که باید بین سیستم ها رد و بدل شود ،  دیاگرام ترتیب به کار برده می شود

فاز سوم )پالایش  نقش ها

 این مرحله نقشهایی را به وجود می آورد که پاسخگوی اهداف تعیین شده در فاز اول خواهند بود. معمولأ هر هدف توسط یک نقش نمایش داده می شود اما ممکن است یک مجموعه از اهداف مرتبط به  یک نقش داده شوند . نقشها با همدیگر مجموعه ایی از وظایف را به وجود می آورند. این وظایف  میتوانند چگونگی رسیدن به اهداف مربوط به هر نقش را بیان کنند. وظایف به وسیله نمودار وضعیت تعریف می شوند.

فاز چهارم )ایجاد کلاس های عامل

نقش ها را به کلاس های عامل تبدیل می کنیم.

این دیاگرام ها شبیه دیاگرام های کلاسهای شیء می باشند اما معنای روابط آنها در سطح های بالا مخالف دیاگرام های کلاسهای اشیاء و ساختار وراثتی که بین آنها وجود دارد می باشد .

فاز پنجم ) ایجاد یک گفتگو

 تعریف یک پروتکل هماهنگ به فرم نمودارهای حالت برای بیان وضعیت هر گفتگو در تأثیر متقابل عامل ها

فاز ششم ) اسمبل کردن کلاسهای عامل

یعنی توابع و وظایف داخل کلاسهای عامل در این مرحله ایجاد می شوند . توابع و کاربردهای تعریف شده برگرفته از 5 معماری متفاوت برای عاملها است .واکنش پذیری ، طرح ریزی ، مبنی بر دانش و معماری تعریف کاربر

فاز هفتم )طراحی سیستم

 ایجاد یک نمونه ی واقعی از عامل بر اساس کلاسهای عامل صورت می گیرد. نتیجه ی نهایی در یک نمودار گسترش نمایش داده می شود .

بینش های آینده برای MASE ایجاد کد کاملا اتوماتیک را براساس نمودار گسترش فراهم می آورد .