یک سیستم شبیه سازی کامل(۲)

مطالعات حافظه

 

حافظة شبیه سازی شده در Simics : یک یا چند فضای حافظه ای که معمولاً در مقایسه با فضاهای آدرس دهی شده در سیستمهای واقعی یافت می شود، است . مثال های مشخصِ این حالت، شامل حافظة مخزنی فیزیکی ، فضاهای ( پی سی آی باس)pci-bus و فضاهای آدرس دهی شدة I/O است. استفاده کننده ها نه تنها می توانند فضاهای حافظه ای را در ارتباط با یک مدل زمانی با آن گسترش دهند. بلکه؛ مخصوصاً در اثر چگونگی راههای ورود به یک حافظة طولانی ،‌می توانند ورود به مخزن و شبیه سازهای حافظه با ایجاد یک ردیابی تصحیح شوند.

 

 

توسعة دستگاه ها

 

Simics دارای یک رابطة متقابل  برای ارتباط با برنامه های خروجی است. این برنامه ها می توانند یک روش منفرد یا یک باسِ ( bus ) حافظه ایجاد کنند. استفاده کننده ها می توانند یک روش جدید را توسط ارتباط با simics آزمایش کرده و ترافیک simics I/O مشتق شده از این روش در طول این آزمایش داشته باشد.

 

 

شبیه سازی سیستم عامل

 

 

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

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

برای اهداف آموزشی ، یک افزایش بنیادیِ هسته ای در زبان نوشتاری ، ورودیهای os را شرح داده و اصلاح کامپیوتر را برای آزمایشات عملی و مطالعات ، آسان می‌سازد. برای مثال در گسترش حمایت از فرآیندهای جدید ، کار روی نیازمند شمارِ زیادی از سیکل های شبیه سازی شده در پروژه است. شبیه سازی سادةos  به طراحان مؤلف اجازه می دهد ، آزمایشات مؤلف را در سطح استفاده کننده مستقل از فرآیند ،‌ روی سیستم عامل واقعی انجام دهند.

 

 

توسعة سیستم عامل «OS »

 

 

ارئة میان افزار و سیستمهای عامل برای دسترسی به سخت افزار یک استفادة کلاسیک از شبیه سازی سیستم کامل است. برای مثال Linux suse  زا به طراح معماری AMD x86-64 با استفاده از مدل Hammer از simics وارد می‌‌‌کند و سیستم های wasabi در همان بخش بهNetBSD   وارد می‌شود. با استفاده از روشهای قدیمی با یک طراحِ معماری پردازشگر جدید ، کار ورودی مرکزی را می توان در اغلب عوامل مشتق شده از آن نادیده گرفت، حتی زمانی که سخت افزار در دسترسی است.  یک شبیه ساز، فواید کلاسیکی دارد. برای توسعة میان افزار ، توانایی افزایش نقاط وقفة ویژه بسیار سودمند است، مثل توقف اجرا بر اساس خواندن ثبت نامهای کنترلی مخصوص .

 

اشکال زدایی

 

یک شبیه ساز یک سری از روشهای نیرومند برای قراردادن اشکالها در مقایسه با اشکال زداهای متداول  است. simics امور رایج اشکال زدایی را مثل ؛ عملیات اطلاعات سمبولیک ، ردیف کردن نقاط توقف«وقفه» و مرحله بندی کردن را انجام می دهد، که برای دستیابی به سیستم بدون عیب است. با این وجود ، توسعه دهنده ها مجاز به بازرسی موقعیت این روشها و اجرای سیستم است. توانایی تکرار به طور منحصر . یکی از اَشکالِ سودمند برای اشکال زدایی است.

ورودی متقابل موس و صفحه کلید همانند ترافیک شبکه است که می تواند برگشت داشته باشد، که این باعث درستی روند اجرایی می شود. که یک اِشکال را برای تکرار فعال می کند.

توسعه دهنده ها پشتیبانی بازرسی شده را برای افزایش نقاط و وقفة پیشرفته استفاده می کند. برای مثال، نقاط وقفة نوشته شده می تواند معانی قفل شده را در ساختارهای داده‌ای چِک کرده و نقاطِ وقفة زمان بندی شده می تواند هنگامی که دو نقطه از برنامه جدا از همدیگر اجرا شود، علامت گذاری شود.

توسعه دهنده ها همچنین می توانند به اِشکال زداهای خروجی متصل شوند. Simics  مدل جزئی gdb پروتکل اشکال زدایی جزئی TCP/IP را از GNU Debugger « gdb » افزایش می دهد. زمانیکه gdb  جزئی با خطِ رایج simics  کار می‌کند. استفاده کننده ها می‌توانند یک اشکال زدای کاملاً شناخته شده که با اَشکال دیگر simics روبرو است به کار برند.

 

آزمایش با قابلیت دسترسی بالا

 

 

Simics   آزمایشات مشخص سیستم را مثل اعتبار ، اجرا و تحمل نقص حمایت می کند، که نمی تواند در هر مسیر آزمایشی بدون شبیه سازی ، امتحان شود. یک شبیه ساز می تواند شرایط را اغلب برای ایجاد عملکردهای ناقص اصلاح کند. این عامل دارای فواید مشخصی در مقایسه با آزمایش سخت افزارِ فیزیکی است.

این موضوع سطح بالایی از اطلاعات در مورد روشهای خطا تهیه می کند و می تواند خطاهای کشف شده را تکرار کند. به عبارتی ، این آزمایش می تواند با استفاده از نقاط کنترلی و بازرسی ها ، به صورت خودکار «اتوماتیک» انجام شود و این هزینه بسیار پایین رود.

 

 

 

 

افزایش Simics

 

شکل (4 )یک بررسی از طراحی معماری simics را نشان می‌دهد که بیشتر از یک دهه به طول انجامیده است. نسخة اخیر ، بیشتر از 50 سال پیشرفت را طی کرده و با یک میلیون مسیر کُد شده در ارتباط است.

 

 

مرکزیت Simics

 

مرکزیت Simics ؛ زمان واقعی بین شبیه سازیهای simics را هم زمان کرده و ترافیک شبیه سازی شده را بینِ منحنی ها تعمیم می‌دهد و در واقع بدین ترتیب ترافیک را کاهش می‌دهد. این موضوع حداقل یک عکس العمل روی هر پیغام عبوری نشان می‌دهد که باعث شبیه سازیِ بدون عیبی، جهت تعیین قطعیتِ آن می شود. برای اشتراک عکس العمل شبکة میزبان با شبیه سازی ، مرکزیت simics یک برنامة زمانی دومرحله‌ای ، برای هم زمانی پیامهای عبوری استفاده می‌کند.

مرکزیت simics  اخیراً شبکة «Ethernet» را حمایت می‌کند ، اما انواع دیگر شبکه ها می توانند با استفاده از یک ساختار زیرین مقایسه‌ای اضافه شوند. اندازه گیریهای سازگار شبکه « مثل یک AM79C960 » با طرح مرکزی Ethernet در مرکزیت simics مرتبط است.

Simics شبیه سازیهایی با بیشترین سرعت ممکن ایجاد می کند ، اما مرکزیت simics شبیه -سازی را متوقف می کند. اگر یک فرآیند، سیکلهای مصرفی را آهسته تر از مرحلة استراحت انجام دهد ، به عبارت دیگر؛ سرعت شبیه سازی شبکه با سرعت آهسته ترین فرآیند simics متناسب است.

 

پیکربندی « ترتیب»

 

 

Simics یک زبان پیکر بندی ساده، برای توضیح سیستم هدف ، استفاده می‌کند. این عامل در مقایسه با پردازنده یا روش ماشین هدف و یا یک عامل مجازی مثلِ  طرح حافظة فیزیکی مجازی و اَشکال دیسک است.  این عوامل ، از طریق کلاسهایی که به وسیلة مدلهای بارشدة زمانِ اجـرا تعریف شده‌اند ، معرفی می‌شوند . بـرای اضافه کردن یک روش ،توسعه دهنده ها  یک مقیاس قابل استفاده با استفاده از اجرای برنامة simics با افزایش یک کلاس- می نویسند. بنابراین ، آنها عاملی از آن کلاس در پیکر بندی فایل هستند. لیست زیر قسمتهایی از پیکر بندی یک فایل را برای desktop  کامپیوترهای شخصی آینده با حافظة 256 مگابایت را نشان می‌دهد.«شکل 5 »

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

 

 

مسیر رایج متقابل«CLI » و بازرسی

 

Simics  در ابتدا مسیر رایج متقابلی « CLI »را کنترل کرد که مشابه با پایانة یک اشکال زدا بود. Simics همچنین دارای یک ساختار در محیط اجرای زمانی Python است که مسئول بازرسی‌های Python بوده و آنها را در CLI اجرا می‌کند.

در حقیقت CLI در Python ، بااستفاده از Simics API نوشته می‌شود. این بازرسیها می‌تواند با رویدادهای حقیقی در ارتباط باشد، مثلِ انتقال کمبودهای بافر کناری ترجمه«TLB» و اجراهای I/O . این کُد در شکل( 5 ) یک مثال Python از یک نقطه توقف شرطی است. این عامل ، نصب یک عامل برگشتی را به عهده دارد ، این زمانی است که نقطة توقف راه اندازی می‌شود. « در این مورد، زمانی است که دستورالعمل روی آدرس 0x000f 2501 اجرا می‌شود.» اگر رجیستر«ثبت» EAX وسیعتر از رجیستر ECX باشد، سیگنالهای کناررفته یک توقف داشته و شبیه سازی متوقف می‌شود. از طرف دیگر شبیه سازی ادامه می‌یابد. به چگونگی همة عوامل موجود در مقیاس CONF توجه کنید و موضوعات  Python  را طرح ریزی کنید.

 

 

دستگاهها

 

برای هر هدف، Simics یک سری روشها که میان افزار و سیستمهای عامل را قادر به راه‌اندازی و اجرا می‌کند ، پشتیبانی می‌کند. برای x86 «PC » ، به عنوان مثال simics  ، روشهای حاصل از ISA را مثل یک تایمر «8254 »، یک کنترل کنندة فلاپی  «82077 » ، یک کنتـرل کنندة صفحه کلیـد / موس «8042 »  ، مدیـریت( دستیابی ) حافظة تصادفی( اجرایی) « 8237 » ، یک کنترل کنندة وقفه « 8259 » ، و یک کلاک پالس تایمر واقعی RAM «DS12887 » . دستگاههای دیگر Simics x86  شامل یک کنترل کنندة وقفه « APIC  , I/O APIC » ، یک میزبان برای پُل PCI « 82443BX » ، یک کنترل کنندة IDE  ، یک آداپتور VGA «کارت گرافیک» ، یککارت گرافیک 3 بعدی سریع و آداپتورهای Ethernet را پشتیبانی می‌کند.

پردازشگرهای مورد نظر معمولاً دال بر خانواده ای از پردازشگر مرکزی است. برای مثال x86 حاوی 486sx پنتیوم 2 است. Simics . مقیاسهای سیستم پردازشگر چندتایی را برای همة اهداف ، حفاظت می‌کند.

 

 

رویارویی با شبیه سازهای دیگر

 

همانطور که bus حافظه در شکل 4 نشان می‌دهد، simics می تواند با یک مدل درستِ سیکل زمانیِ نوشته شده، در یک زبان توصیفیِ سخت افزاری « HDL » مثل verilog ، روبرو شود.

Verilog این رویارویی ها را تعریف می‌کند ، که به عملکردهای مسیر c اجازه می‌دهد که جزئی از اجزاء HDL باشد. بنابراین  verilog می‌تواند به بخش ارتباطی در HDL  متصل شده و برنامة HDL می‌تواند با فراخواندن آن به شبیه سازی پیشرفتة یک واحد زمانی فیکس شده و مخصوصاً یک سیکل زمانی در یک زمانمشخص اجرا شود. زمانیکه سیگنالهای بین simics  و شبیه ساز HDL عبور می‌کند ، سطوح ظاهری مربوطه باید انتقال یابد. برای مثال، مدلهای حافظه ای simics به صورت اتوماتیک خوانده می‌شود.بنابراین اگر شبیه ساز HDL یک گذرگاه حافظة اجراییِ انشعابی را تشکیل دهد ، باید خواندن را در یک پیامِ درخواست خواندن ، متوقف کرده و یک اجرای گذرگاه داده‌ای انجام دهد. همچنین simics چندین اجرای حافظه ای برجسته را برای ایجاد نمونه‌های ترافیک واقعی با حفظِ لیستی از دستورالعملها که اخیراً اجرا می‌شوند ، پشتیبانی می کند.

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

 

 

رابطة برنامة اجرایی Simics

 

یک شکل عمدة استفاده از simics ، توانایی گسترش آن است که باعث می‌شود، استفاده‌کننده ها ارتباط جدیدی در اختراع مدلها ، اضافه کردن تقاضاهای جدید ، یا نوشتن کنترل و تحلیل موارد معمول ، بوجود آید. Simics API  دارای بیشتر از 200 عملکرد خروجی ، چندین داده و بیشتر از50 رابطة قبلاً تعریف شده« پیش فرض» دارد. این روابط ، کلکسیونی از اشاره گرهای عملکردیِ مشابه با روش جدولها هستند که simics برای ارتباط موضوعات داخلی، استفاده می‌کند. API در زبان c نوشته شده است، اما به طور مکانیکی به Python صادر می‌شود.

 

 

 

حافظه

 

اجرای حافظه ، بزرگترین اجرای رقابتی یک برای شبیه سازی  سیستم کامل است. Simics یک علامت انتقال شبیه ساز «STC » ، برای سرعت دادن به کارها و ذخیره ها و اجرای دستورالعملها «Fetch » است. این علامتها ، اشاره گرها را برای حافظة شبیه سازی شده ذخیره کرده و با ادرس های مجازی ، جمعآوری می‌کند. یک عامل در تضمینِ STC  این است که ؛ هیچ تأثیر جانبی ، مثل یک استثناءِ همترازی ، فقدان TLB « بافر ترجمة کناری» ، فقدان مخزن یا وقفة شبیه ساز وجود ندارد.

برای اجرای دستورالعملها ، STC بعضی از آدرسها را ذخیره می‌کند، که منحنی های منشعبی ایجاد می‌کند که می توانند به طور ایمن عبورکنند. 

ضرورتاً ، کارهای stc به عنوان یک علامتی، برای ترجمة نمونة متداول است« که این یک STC Hit است. » ، که برای سهولتِ ترجمة قسمت مرکزی مناسب است. این نیاز برای ایجاد یک پیچیدگی ، مشخص است: برای مثال ، simics نیازمند به کاربردن ترکیبات مختلفِ هدف نهایی میزبان و اندازة فضای آدرس دهی می‌باشد. طرح STC ممکن است پیچیده ترین ساختار ، برای شبیه ساز باشد.

 

 

 

ترجمة کدهای ردیف شده

 

 

در مرکز هر سیستم شبیه ساز کامل ، یک مرکز ترجمه -«انتقال»- است. روشهای پردازشگر مرکزیِ شبیه سازی شده ، شامل مدلهای وقفة داخلی «استثنایی» ، طیف قابل مشاهده «نرم افزاری» ، کنترل عوامل ثبت شده و غیره است. بعضی پردازشگرها شامل اَشکالی شبیه ریزکدها هستند ، بنابراین simics/Alpha ، کد PAL « توابع کتابخانه‌ای معماری‌های ویژه » را پشتیبانی می‌کند .

راههای مناسب بسیاری برای نوشتن ترجمه ها وجود دارد مثل ، ترجمة کدهای ردیفی و انواع مختلفی از کدهای اجرای زمانی .

استفاده از یک شبیه ساز مؤثر و حتی خوبِ سازندة دست ، یک کار متمرکز و مستعد خطا است. ما یک زبان مخصوص SimGen با کد کردن معیارهای مختلفی از دستورالعملهای مورد نظر برای طراحان ایجاد کرده ایم. Simgen شامل ترکیب و کدکردن دستورالعملها همانند کد C برای مفاهیم و خواص و نشانه های سطح بالای استفاده شده با مدلهای زمانی است. سازگار کردن شامل سکانسی از ارزیابی های ناقص بوده که پیشنهاداتی در مورد تخصصی کردن و اتوماتیک کردن ارائه می‌دهد. شکل «6 » نشان می‌دهد spec  برای یک IA32 / x86-64 به دستورالعملهای سمت چپ اضافه می‌شود. این مثال همة تعریفهای ماکرویی را که بیشتر از 100 مسیر دارد، حذف می‌کند. SinGen  ماکروهای مخصوصی برای بیان ماهیت مفهومی ، ترکیبی و تکراری دستورالعمل های طراحان استفاده می‌کند و دستورالعمل فرکانس آماری را برای هدایت سرویسهای مخصوصِ متداول استفاده می کنند. خروجی ، یک ترجمه ای درC  است. ضرورتاً ، مرکز simics از یک خصوصیت سطح بالا بارور می شود.

 

 

استعمال رویدادها

 

Simics  یک ماشین استعمال رویدادهای ایجاد شده است. هر پردازنده دارای دو ردیف رویداد است : یکی «ردیف مراحل» و دیگری «ردیف زمانی» .

در ردیف مراحل ، رویدادها بعد از تعدادی از مراحل ، محاسبه کنندة برنامه ظاهر می‌شود. محاسبة مراحل ، خلاصه ای از دستورالعملهای تکمیل شده به طور موفقیت آمیز است که باعث دستورالعملهایی می شود که استثنائاتی را به وجود می‌آورد و اجراهای داخلی در سطح سیستم استفاده می‌شود. «ردیف زمانی» دارای راه حلی  برای یک سیکل زمانی پردازشگر است که واحد زمانی ثابتی در پیکر بندی است « همانند آنچه که در موضوع cpuo بالا وجود داشت. » Simics می‌تواند چندین رویداد را در همان سیکل، مرحله ای فهرست می‌کند و این ردیف را در درخواستِ FIFO  به کار می‌برد. زمانیکه فرستادن یک رویداد به ردیف زمانی انجام شود ، simics می‌تواند ردیفهای زمانی همة پردازشگرهای رویدادها را که حالت کلی را تحت تأثیر قرار می‌دهد ، همزمان کند. طرح این ردیفِ دوتایی به simics  اجازه می دهد که اجزاء رویدادهای مشتق شده و اجزاء مشتق شدة زمانی را ترکیب کند.

 

 

اجرا

 

جدول (1 ) اجرای simics  را خلاصه کرده است. برای سهولت ، ما انواع مختلفی از امور کاری راه اندازی سیستم عامل را انتخاب کرده ایم که هفت طرح پردازشگر مختلف را شکل دهی کرده است : Alpha EV5  ، ultra sparc 2 ، Ultra sparc 3 ، پنتیوم 2 ( Intel ) ،      AMD x86-64 « Hammer » ، Intel ipf(( Itanium))  و Power Pc 750 .   برای ایجاد رقابت ،‌ ما همة اندازه ها را روی یک پنتیوم 3 933 mhz Intel -  با 512 مگابایت RAM  اجرایی LINUX ، اجرا کرده ایم.

برای شرح میزان توزین ، جدول 2 زمانهای راه اندازی کردن Solaris 8  را روی سیستمهای سرویس دهی ultra 2 enterprise برای موقعیت سریعِ چند کاربری در اندازه های مختلفی از پیکربندی نشان می دهد. این میزان یک سیستم ultra sparc 3 «750 Mhz » است. این زمان یک راه اندازی Solaris  در ارتباط با نسخة سیستم عامل است. روشهای موجود برای مقدار حافظه ، فرکانس زمانی ، سرویسهای سیستم و غیره است.

میلیونها دستورالعمل به ازاء هر ثانیه روی مدلهای چند پردازنده ای وسیعتر هستند. برای اینکه ما قادر باشیم cpu های زائد را در طول اولین فاز راه اندازی ، ازکار بیندازیم. نسخه های خروجی خواسته شده در اجرای Ultra sparc  بسیار پایین تر است. در مثال راه اندازی solaris 8  ، نسخة خروجی یک داده 16 کیلو بایتیِ اجرا شده در 0.3MIPs در مقایسه با 6.62MIPs در جدول 2 شبیه سازی می‌کند.

 

 

سیستم مرتبط با کار شبیه‌سازی

 

IBM اولین شبیه ساز مدرن را گسترش داد که باعث ایجاد برنامه‌های نوشته شده برای Ibm7070 جهت اجرای یکی از سیستمهای وسیع / کامپیوترهای 360  می‌شود « برای خلاصه‌ای از کار روی شبیه سازی و شبیه سازی در صنعت، مقالة 1979 توسط مایکل کنون و همکاران » .

کارهای مقدماتی در آکادمیِ شامل شبیه ساز PDP11  توسط «جان دویل» و « تون ماندل برگ » تشکیل شده و افزایش   g88 توسط « رابرت بدیچ » انجام شد . افزایش g88 به طور متوالی در محدودة عمومی قرار گرفته و جزییات طرح را منتشر می‌کند. این افزایش، یک پردازشگر واحدِ سیستم پایه ریزی شده به M88100 با ترکیبی از روشهای کاذب و حقیقی تشکیل می‌دهد و می‌تواند یک سیستم عامل را راه‌اندازی کند. یک پردازشگر از simics در سال 1991 شروع شد که روی g88 پایه ریزی شده و برای حمایت چند فرآیند با حافظة فیزیکی تقسیم شده است.

در سال 1994 ، شبیه ساز gsim دوباره به عنوان یک پردازشگر چندتایی مدل sparc  v8 در نتیجة اولین نسخة simics دوباره نوشته شده است. اخیراً ، SimOS (( شبیه ساز سیستم عامل)) قسمتهای وسیعی از یک MIPS پایه ریزی شده بر اساس چند پردازشگر تشکیل شده ، راه اندازی شده و یک منحنی Irix اصلاح شده را اجرا می‌کند. SimOS و Simics اهداف مشابهی داشته و به راه حلهای مشابهی برای این عوامل می‌رسند. به عبارتی ؛ آنها به طور موازی پیشرفت کرده اند.

برای مثال، بازرسی اخیر کامپیوتر«شبیه سازی شده » در simics از تفسیر کارِ SimOS ناشی می‌شود.

Simics از کار شبیه سازی اولیه با انجام بهترین عملیاتها تشخیص داده می‌شود. بسیاری از احتمالات سیستم شبیه سازیِ کامل برای اجراکننده ها در دو بخش صنعت و آکادمی ، برای تکمیل همان زمان شاید دوره ده ساله بوده است. اما Simics این احتمالات را با یک محدودة کاری منحصر بفرد ، بیشتر از ابزار دیگر ، حمایت می‌کند.

برای مثال ، اجرای یک کد واقعی احتمالاً دارای اهمیت هستند. برای ابزار مشابه، ما اطلاع داریم که Simics  می تواند میان افزار حقیقی را اجرا کند و کاملاً منحنی اصلاح نشدة کدهای مشتق شده را به اجرا درآورد.

 

نتیجه گیری

 

در حقیقت ، محققان Simics را برای توسعه و آزمایش میان افزار ، برای چندین desktop آینده و چندین سیستم سرویس دهنده استفاده می‌کند.

Simics  قادر به اجرای یک شبکة ناهمگن از سیستم ها ، از بخشهای مختلف با همان شبکة کاری می‌باشد.

Simics یک ابزار سریع با یک سطحِ تجرد است که اضافه کردن اجزاء جدید و نفوذ به قسمتهای قدیمی را تسهیل می‌کند.

Simics یک کامپیوتر(شبیه سازی شده) عملی برای استفاده در یک رِنجِ وسیع از اجراهاست. ما اعتقاد داریم Simics نقطة شروعی برای یک مسیر مختلف از طرح ریزیِ آزمایش و افزایش سیستم های دیجیتالی بالا را نشان می‌دهد.

 

 

یک سیستم شبیه سازی کامل(۱)

یک سیستم کامل شبیه سازی ، تعادلی بینِ مرحلة درستی و صحت با مرحلة اجرا ، از طریق تشکیلِ اجرایِ نهایی کامل و تهیة یک محدودة کاری مشخص  برای  سخت افزار و طرحِ نرم افزار  در این زمینه ایجاد می‌کند.

همة کامپیوترها می‌‌‌توانند یکدیگر را شبیه‌سازی کنند که این یک نتیجة بلاواسطه از کارِ تئوری (( آلِن تورینگ و آلونزو چِرچ ))  است. طراحان کامپیوتر مسیری در استفاده از این خاصیت در پروژة ((EDSAC )) در سال 1950 ایجاد کردند. شبیه سازی در اَشکال و صورتهای مختلفی بوده و برای حمایت طرحِ کامپیوترها در هر زمان است. شبیه‌سازی دلیلی بر فواید متداولِ ساختار نرم‌‌‌‌افزاری است، که می‌‌تواند به طور قراردادی فرآیند پارامتری کردن ، کنترل و بازرسیِ سیستمی که تشکیل شده است را در سیستم هدفْ  انجام دهد. این اندازه گیریها ، غیرنفوذی و تعیین کننده هستند؛ با این وجود پایه ای برای اتوماتیک شدن می‌ باشند. جلسات شبیه سازی مضاعف (چند شبیه سازی ) می توانند به طور موازی ( همزمان ) صورت گیرند و نیز این جلسات این امکان را دارند که به صورت سند درآیند .

به طور طبیعی ، ما می خواهیم یک سیستم بی عیب  شبیه سازی کرده و با دقت کامل آن را  به اجرا در آوریم. در یک مدل کامل مشکلات قابل مشاهده‌ای در مورد تکمیل این جستجو وجود دارد ، مثلِ هزینه ، زمان تکمیل ، نقایص و کاهش خطاها. اما مهمترین آنها ، مسألة رئالیسمِ(واقعی) فشارهای کاری است. در اغلب موارد، ما چگونگیِ کاهشِ فشارهای یک مدلِ بدون عیبْ با اجرای مناسب ، جهت اجرای فشارهای کاری (واقعی) رئالیستیک را نمی دانیم . بنابراین به طور عملی ، مدلهایی که دارای دقت بالایی می باشند((مدلهایی که سعی می‌‌کنند دارای دقت بالایی باشند)) ، در نهایت برای اجرای فشارهای کاری بسیار محدود ((سرگرمیها)) مجاز شناخته شده اند .این نتیجة پاسخ دادن دقیق به سئوالهای نامربوط است.

نرم افزارهای Simics یک رایانه (‍Platform ) برای شبیه سازی کاملِ سیستم هستند که مجاز به ایجاد یک تعادل بین مرحلة دقت(صحت) با مرحله اجرا هستند و آن این است که این موضوع به طور کارا برای بدست آوردنِ سطوح اجرایی نسبتاً خوب درهمین زمان ، مورد بررسی قرار گرفته است. ((دقت عملی)) ، مناسب برای اجرای فشارهای کاری تجاری و همچنین ((دقت زمانی)) ، مناسب برای رویارویی با مدلهای سخت افزاری دقیق است. پروژة(طرح) Simic  یکی از اولین پروژه های (طرح های )علمی و دانشگاهی (آکادمیک) در این زمینه هستند. این موضوع اولین سیستم کامل تجاری شبیه سازی بوده و فقط جهت اثبات احتمالات پیشرفت سیستم است.

ما در این قسمت به توضیح برخی از اصطلاحات و کلمات اختصاری موجود در متن می‌پردازیم:‌

 بافر کناری ترجمه : «TLB »

سطح مجرد سازی یا تجرد : Abstraction

مسیر(های) رایج متقابل : CLI

زبان توصیفی سخت افزاری : HDL

 

 

 

شبیه سازی یک سیستم کامل

 

 

به طورافزایشی ، ما باید یک سخت افزار کامپیوتری یا یک نرم افزار در زمینة کاربرد نهایی طرح نماییم. یکی از معیارهای ترکیب کننده در ارتباط با همکاری آن با بخش اجرایی است.برای مثال ، هیچ سیگنال منحصر یا دستورالعملِ اجرایی ، معیاری در وب سایت   Amazon.com ندارد. درعوض ، این معیار در ارتباط با ممانعت یک مشتری ، به طور گسترده در اجرایِ یک تحقیق بوده و تصمیم به خریداری آن می گیرد. سرویسِ کاربرنهاییِ شبیه این ، معمولاً از ترکیبی شامل: سازنده های مختلف ، تجهیزات ،‌ در شروع اجرای یک ترکیبِ استاندارد نرم افزاری و اجزاء مقدماتی ، تشکیل می شود. این تواناییِ دسترسی ، اجرا و اعتبار یک سرویسِ کابر نهایی ، معیار دیجیتالی بدون عیبی در آن نقطه به وجود می آورد.

پروژه های وسیع ، به منظور توسعة سیستمهای نهاییِ دیجیتالی بالا  هستند که در محدودة متغیری از ابزار جهت یابی شبیه سازی و روشها  و طرحها (متدولوژیها) به کار می روند.  ما می توانیم این عوامل را در طول دو بعد کلاس بندی کنیم : الف) میدان دید ( هدف ) :(( منظور موضوعی می‌باشد که مدل سازی شده است .))  ؛     ب) سطح تَجُرْد : ((منظور سطح تجردی می‌‌باشد که برای آن موضوع، مدل سازی شده است. ))

 

سطح تجرد(Abstraction )

در شروع ، بهترین مشاهده از دوچشم انداز است: رفتار ساختاری (( که چه چیزی باشد))‌و رفتار زمانی (( که چه زمانی باشد)) .

اگر این هدف برای مدل سازی فشارهای کاریِ واقعی (رئالیستیک) باشد ، بنابراین ما اصلاًقادر به ایجاد طرح های (سناریوهای) مدرن نخواهیم بود یا میدانِ دید باید سیستم کاملی باشد. این سطح تجرد (Abstraction ) باید به طور عملی به اندازة کافی برای راه اندازی کردن(Boot ) پایین باشد و سیستمهای اجراییِ(عاملهای) تجاریِ اصلاح نشده و محکهای صنعتی  را اجرا کند و نیز به میزان لازم برای حمایت مهندسی سخت افزاری به طور موقتی پایین (محدود) باشد. با این وجود، نزول سطوحِ جزئی تر مجردسازی نباید در یک شبیه سازی کلی اجرا شود که نمونة فشارِ کاریِ واقعی (رئالیستیک) را مسدود کند ؛ به عبارتی سری داده ها سایز بندی (اندازه بندی) شده و از لحاظ طولی اجرا شده است . امروزه طرحِ (سناریوی) فشارِکاریِ نهایی بالا دارای یک کُد پایه ای کلی از مسیر0^5 1 تا   10^8  است ، با اجرای طولی دستورالعملهای  10^9  تا 10^12  روی یک حافظة فیزیکی از بایتهای10^8  تا 10^11  با ذخیرة قبلی بایتهای 10^10  تا 10^13  اجرا می شود.

شبیه سازی یک سیستمِ کامل ، طرح و توسعه آن و آزمایش سخت افزارِ کامپیوتری را، پشتیبانی کرده و نرم افزاری با یک محدودة کاری شبیه سازی شده را که تقریباً در زمینة اجرای نهایی است ، حمایت می کند. در این مورد (( سیستم )) به معنی ((بعضی از زیرمجموعه های اختیاری در اجزاء دیجیتالیِ اجراکنندة کد آزمایشی ساده نیست.))  در مورد مثال  Amazon.com این موضوع شاملِ دو مشتری (Linux Desktop و Windows ) در ارتباط با یک شبکة کاری برای یک دسته از ایستگاههای کاری بوده و در اجرای نرم افزار وب و پایگاههای داده ای و چندین اجرا(کاربرد) در محدودة وظایف مخصوص کاری ، در ارتباط با ارزیابی موضوع نقش دارد.

 

بررسی Simics

 

Simics  یک رایانة شبیه سازی است . ما آن را در زمینة کاراییِ دقیق برای اجرای سیستم عاملهای اصلاح نشده طرح ریزی کردیم. ( شامل دو سیستم مثل VxWorks  و سیستم های خدماتی / Desktop  مثل  Solaris ، Linux ، Tru64 و windows Xp  ). این موضوع به اندازة کافی برای اجرای فشارهای کاری واقعی مثلِ  SPEC CPU2000 ، محکهای پایگاههای داده ای مثل کاربردهای متقابل Desktop ، TPC-C و بازیها ، سریع است. Simics  هم به اندازة کافی برای مدل سیستمهای جاسازی ، Desktop یا سری باکسهای بالا ، سوییچهای ارتباط از دور ، سیستمهای چند فرآیندی ، گروهها و شبکه هایِ همة این آیتمها ((اقلام))عمومی شده است. در همین زمان Simics انعطافِ کافی برای پشتیبانیِ مسئولیتها و کارها در ایجادِ سیکل توسعه ، داشته است؛ که شامل فعالیتهای ناجورِ ظاهرشده مثلِ طرحِ میکروپردازشگر، توسعة سیستم عامل ، مطالعاتِ الحاقیِ ناقص و متنوع کردن طرح سخت افزاری است.

پردازشگرهای شبیه سازی Simics در سطح سری دستورالعملها  ، شاملِ حالت سرپرستی کامل است. اخیراً ، Simics مدلهایی مانند :ARM ,MIPS ,Power Pc.IPF, (Hammer) 8-86-64, X86  Alpha ,Ultra Sparc  را حمایت می کند. Simics  یک نرم افزارِ خالص بوده و بخشهای اخیر شاملِ Linux(Alpha,Power Pc,X86)  ، Solaris / Ultra Sparc ، Tru 64/Alpha,and windows 2000/X86  است.

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

 

یک ماشین X86 ( پنتیوم 2 ) اجرا کنندة Red hat 6.2  و یک KDE desktop  ( ویندوز وسیع در مرکز ) ((که)) نشان دهندة دو دلیلِ  Netscape در ارتباط با خدماتِ حقیقی وب است.

 -دومین ماشینِ X86 ( بالا سمت راست ) که نمایانگرِ صفحة Login ویندوز NT است.

 -یک ماشینِ Ultra Sparc 2 اجراکنندة Solaris 8 و MySQL  (چپ،قسمت وسط شکل) .

-یک Simics خط رایجی برای یک مدلِ Ultra Sparc 3 قبل از نیرومند شدن (Powering On ) (( پایین ،سمت چپ )) است. یک مدلِ ) Itanium ) ایتانیوم IPF  اجراکنندة RedHat7.2  است. ((بالا،سمت چپ))

یک ماشین Power Pc  اجراکنندة VxWorks ( قسمت مرکز،بالا) و یک ماشین (Hammer)X86-64  اجراکنندة ویندوز XP ( پردازشگر شبیه سازی شده که اجراکنندة روش Legacy ((32 بیتی)) است ) ؛(( پایین، سمت راست ویندوز است )). این ویندوز در گوشة سمت چپ، پایین شکل 1 ، خط رایجِ Simics  را نشان می دهد. همة Simics های ویندوزهای رایجِ دیگر مخفی هستند. عکس این صفحه از یک سیستمِ پردازشگر دوگانه پنتیوم 3  Mhz 933  با 512 مگابایت حافظه گرفته شده است که اجراکنندة RedHat Linux 7.2 است. همة فرآیندهای Simics  در همین سیستم اجرا شده است. به عبارتی برای مدلهای پردازشگر ، Simics شاملِ دستگاههایی بوده که برایِ اجرای میان افزارِ واقعی و مشتقات دستگاه به اندازه کافی دقیق است. برای مثال ، Simics/Ultra Sparc 3  راه انداز PROM واقعی را اجرا خواهد کرد و Simics / x86 به طور دقیق نصب شده و windows xp را از دیسکهای نصب شده ، اجرا می کند.

 

Simics هر ماشین هدف را به صورت یک گره ، ایجادِ یک منبع مثل خدماتِ وب ، یک سرویس دهندة وب ، طرح یک پایگاه داده ای ، یک راه پیما (router ) و یا یک کاربر ((ارباب رجوع)) نشان می دهد. یک simics  منفرد ، به عنوان مثال می تواند تعداد یک یا بیشتر از گره- های همان طراح های اولیه را شبیه سازی کند. حال ببینیم simics  مرکزی چیست؟ ؛ گره ها یا منحنی های هیتروژنوس می تواند با شبکه ای مرتبط شود که توسط ابزاری کنترل می شود ، به این ابزار simics  مرکزی گفته می شود. در شکل 1 simics  مرکزی برای ارتباط با دو عامل Netscape   در desktop مرکزی برای سرویس دهنده های وبِ حقیقی استفاده شده است.

Simics  مرکزی یکی از اجزاء کلیدی بوده و باعث ایجاد سیستمهای توزیع شدة کاملی می شود. شکل 2 یک نمونه از ایجاد شبکه ، توصیف یک وبِ پایه ریزی شده بر اساسِ مسیر مورد بحث را با استفاده از سه راه حلِ پایگاه داده ای نشان می دهد. شبیه سازی برای استفاده به طور متقابل ،‌سریع است. با استفاده از موس یا صفحه کلید ،‌استفاده کننده ها می توانند یک ورودی برای کاربرهای((ارباب رجوعهای )) A و B  ارائه دهند که با ویندوز ، روی سیستم های ویندوزِ میزبان اجرا می شود. مرکزِ Simics به عنوان یک راه پیما(router ) عمل می کند که به استفاده کننده ها اجازه می دهد، در شبکة شبیه سازی شده از محیط میزبان ، ردیابی کنند.

با این مقدمه چینی ( Setup ) ، ما می توانیم به طورمتقابل گروههای مورد بحث مختلفی روی سرویس دهندة وب را جستجو کرده «بررسی کرده» و پیامهای جدیدی با پاسخ قابل قبول بنویسیم. گروههای بازیافتی تقریباً 30 ثانیه دقت می گیرند.

چیزی که باید در اینجا مورد توجه قرار گیرد ، این است که این حالت یک مقدمه چینی «setup » شبیه سازی شدة کامل است. برای مثال ، هر عامل simics  می تواند با یک مرحلة منفرد، مرحلة بازرسی و غیره متوقف شود که در این نمونه ، فرآیندهای simics  به طور اتوماتیک فرآیند زمانی کلیِ شبیه سازی شدة نگارش شده را متوقف می کند. این شبیه سازی می تواند در هر مکانی به ترافیک حافظه کمک کند، در هر مکانی نقاط را بشکند و هر کدام از سیستمها را اصلاح کند،« مثل اضافه کردن دستورالعملهای جدید یا مخازن » این عامل می‌تواند ضبط شود و زمانِ همة استفاده کننده های وارد شده راثبت کند.

- برای مثال ؛ صفحه کلید و موس  در محـدودة درستی اجرایشـان ،این شبیـه سازی می تواند مقدمه چینی درستی برای یک نقطة کنترلی ضبط کرده و آن را دوباره به صورت تکرار عوامل درآورد.

 

 

 

کاربرد هایی برای شبیه سازی یک سیستم کامل

 

شکل 3 یک ارتباطات کاری عمده ای در توسعة یک سیستم دیجیتالی نهاییِ کامل ، نشان می دهد. توجه کنید که شبیه سازی سیستمِ کامل بسیاری از ارتباطات را توسطِ ایجاد یک کامپوتر منفرد در یک سیکل پیشرفته کم می کند.

هر کدام از این کارها می تواند از یک مدل سیستم موجود به طرفِ مدل موجود دیگری در فضای خودش حرکت کند. به عبارت دیگر هر کار می تواند با یک خلاصه ای شروع شده و توسط طرح - مفاهیم نادرست ، که حاکی از سیستم واقعی آینده است ، انجام شود. این زمان، برای منافعِ تجاری و کاهش ریسکِ اجرای صنعتِ الکترونیک است. Simics  اخیراً به طور تجاری در همة زمینه ها که در شکل 3 لیست شده است ، استفاده می شود.

 

 

طرح ریزپردازنده

 

طرحِ ایجاد پردازشگرِ بعدی یک محدودة اجرایی مقدماتی برای شبیه سازی است. ردیابی رایج بر اساس تکنیکهای شبیه سازی دارای محدودیتهای شناخته شده ایست ، که شبیه سازی یک سیستم کامل ، تصمیم به حل کردنِ آن دارد. مهمترین فشارهای کاری پردازشگر چندتایی((چندین پردازنده ای)) با حافظة سیستم فرعی در ارتباط است و مدیرِ اجرایی حافظة سیستم عامل بوده و برنامه‌ریزیِ اصلی است که برای کامپیوتر در ردیابی یک برپایی(setup)غیر مشابه ، دشوار است . قابلیتهای simics ، دربرگیرندة مخزن تقریبی و مدلهای زمانی Io  است که باعث ایجاد اولین تقریب در خواستی برای سیستم موجود بعدی می‌شود . این سرویس های تقریبی بعنوان یک کامپیوتر (شبیه‌سازی شده) برای مخزن‌های موجود ، جهت ورود به سیکل مدلهای ریزِ معماری ، دقیق هستند .

Simics  می‌تواند با سرویس د‌هی فشار‌های کاری کاملاً مشخص سنجش شود،مثل tpc-cاما در آزمایش فشار‌های کاری بطور متناوب نشان داده شده است .

بعضی از مدلهای اخیر پردازشگر simics ، شامل پشتیبانی از فرآیندِ خواسته شدة خروجی است. این مدلها واحدهای اجرایی نامحدودی داشته و دوبار با یک حائل قابل شکل دهیِ  خواسته شده و  با سرعتِ  دوباره ثبت نام می کند، اما نه به صورت خطوط لوله ای. داده های استعمال شده    بس   برای Simics  به هم مرتبط بوده و می تواند نقش برگشتی داشته باشد، زمانیکه آن استثنائات را محاسبه می‌کند. این حافظة ناقص برای موارد خروجی خواسته شده و اجرای حافظة برجستة چند بعدی بیشتر در مسیری است که در سیستمهای واقعی روی داده و این سیستمهایی است که در آینده باید ساخته شود.

ما این حمایت را برای تصحیح پیوست یک مدلِ ریز معماریِ عمومی (( Foul-blown )) است، این فلسفه ای است که Simics مدل کاربردی را تهیه کرده و یک محققی که مدل زمانی را ایجاد می‌کند.

 

 

فن آوری مدیریت ارتباط با مشتری

CRM چیست؟

واژه CRM مخفف Customer Relationship Management یا سیستم مدیریت ارتباط با مشتری است. در حقیقت این سیستمها راهبردی است برای جمع آوری نیازها و رفتارهای تجاری مشتریان تا به ایجاد روابطی قویتر با آنها منجر شود. در نهایت، رابطه قوی با مشتریان مهمترین رمز موفقیت هر کسب و کار است. تکنولوژیهای بسیاری در قالب مدیریت ارتباط با مشتری CRM ارائه شده اند اما داشتن تصویری از CRM به عنوان مجموعه ای از تکنولوژی نیز نادرست است. به عنوان روشی بهتر برای درک CRM ، می توان آنرا به مانند فرایندی دانست که به ما کمک می کند تا اطلاعات مختلفی از مشتریان، فروش، اثر بخشی فعالیتهای بازاریابی، سرعت عمل در پاسخگویی به مشتری و نیز تمایلات بازار را به شکل یکجا جمع آوری کنیم.

هدف از CRM چیست؟

ایده اصلی CRM کمک به بنگاهها برای استفاده از تکنولوژی و منابع انسانی در به دست آوردن دیدی بهتر نسبت به رفتارهای تجاری و ارزشی است که هر مشتری برای سازمان ایجاد می کند. در صورتی که یک سیستم CRM بتواند مطابق با ایده بالا عمل کند، سازمان قادر خواهد بود:

•  خدمات بهتری به مشتریان ارائه دهد

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

•  ارائه محصولات جنبی موثرتر خواهد بود

•  کارمندان فروش را در عقد سریعتر قراردادهای فروش یاری دهد

•  فرایندهای فروش و بازاریابی را تسهیل کند

•  مشتریان جدیدی برای خود پیدا کند

•  گردش مالی مشتریان خود را افزایش دهد

این رویداد چگونه اتفاق خواهد افتاد

مزایایی که برای CRM برشمردیم تنها با خرید و نصب یک نرم افزار CRM محقق نخواهد شد. برای آنکه یک سیستم CRM عملاً اثربخش باشد، سازمان باید پیشتر تصمیم گرفته باشد که به دنبال کدام یک از اطلاعات مشتری است و نیز از جمع آوری این اطلاعات چه چیزی را دنبال می کند. به عنوان مثال بسیاری از موسسات مالی شرایط زندگی مشتریان خود را به دقت پیگیری می کنند تا بتوانند خدمات بانکی مناسبی نظیر رهن یا اجاره را در مواقع مناسبی به آنها ارائه کنند تا نیازهای آنها را به بهترین شکل پاسخ دهند.
در گام بعدی، سازمان باید به منابع مختلفی که از طریق آنها اطلاعات مشتریان وارد سازمان می شود توجه داشته باشد و مشخص کند که در حال حاضر این داده ها در کجا و به چه شکل ذخیره شده و چگونه مورد استفاده قرار می گیرد. به عنوان مثال یک سازمان ممکن است از راههای بسیار متعددی با مشتریان خود تعامل داشته باشد مانند نامه نگاری، وب سایت، انبارهای فیزیکی، مراکز تلفنی ارتباط با مشتری، تیمهای سیار فروش و بازاریابی و نیز تبلیغات. سیستمهای CRM بسیار مطمئن قادراند این نقاط را به یکدیگر متصل کنند. اطلاعات جمع آوری شده بین سیستمهای عملیاتی (مانند فروش و انبار) و سیستمهای تحلیل کننده اطلاعات، رد و بدل شده و می توانند قالبهای موجود در آنها را استخراج و مرتب کنند. تحلیلگران سازمان سپس از طریق همین اطلاعات قادر خواهند بود تا تصویر جامعی از هر مشتری و حوزه هایی که به خدمات بهتری نیاز دارند، به دست آوردند. به عنوان مثال، در صورتی که فردی از خدمات رهن املاک، وام تجاری، حساب ذخیره بازنشستگی و یک حساب جاری یک بانک استفاده کند، برای بانک کاملاً مقرون به صرفه است که با چنین شخصی به محض تماس به بهترین وجه رفتار کند.

 

آیا شاخصهایی برای سنجش میزان نیاز به پروژه های CRM وجود دارد؟

عملاً نه! ولی در عمل یک راه برای ارزیابی میزان نیاز به پروژه های CRM ، شمارش کانالهایی است که یک مشتری از طریق آنها می تواند به سازمان دسترسی داشته باشد. هر چه میزان کانالهای ارتباطی سازمان بیشتر باشد، نیاز به داشتن یک سیستم CRM با تصویری با تمرکز بر یک مشتری خاص بیشتر می شود. 

نصب و راه اندازی یک CRM چقدر هزینه در بر خواهد داشت

اندکی بیش از آنچه که کارمندان فروش نرم افزار مدعی هستند!! . برخی از فروشندگان مدعی هستند که نرم افزار CRM آنها می تواند در زمانی کمتر از یک هفته نصب شده و کار کند. چنین بسته های نرم افزاری در طولانی مدت چندان مفید به فایده نخواهند بود زیرا نمی توانند تصویر جامعی را از بخشهای مستقل و در عین حال مرتبط با هم که مورد نیاز مشتری است ارائه دهند. زمان مورد نیاز برای پروژه های CRM ی که نیازهای آن به خوبی برداشت شده، به پیچیدگی پروژه و اجزای آن بستگی دارد.

 

CRM چقدر هزینه در بر خواهد داشت؟

مطالعه ای که در سال 2001 بر روی 1600 کارشناس فناوری اطلاعات و بازرگانی توسط Data Warehousing Institute انجام شده، نشان می دهد نزدیک به 50 درصد از پرسش شوندگان هزینه ای کمتر از 500 هزار دلار را به پروژه های CRM تخصیص می دهند. این امر بیانگر آن است که پروژه های CRM را نمی توان پروژه هایی سنگین و هزینه بر دانست. با این حال، همین تحقیق نشان می دهد که برخی از کارشناسان صحبت از پروژه هایی با بودجه ای بیش از 1 میلیون دلار کرده اند.

 

نمونه هایی از اطلاعاتی که پروژه های CRM جمع آوری می کنند

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

 

عوامل کلیدی موفقیت در پیاده سازی یک سیستم CRM

  • پروژه CRM سازمان خود را از طریق ایجاد پروژه های نمونه و نیز اعمال مقاطع زمانی مشخص (milestones) به قطعات قابل مدیریت کردن تقسیم کنید. کار را با یک پروژه نمونه آغاز کنید بطوریکه تمام گروهها و زیربخشهای سازمان را دربر بگیرد .این پروژه نمونه باید به گونه ای باشد که هم بتواند کل پروژه را در بر داشته باشد و در عین حال نیز به اندازه کافی کوچک و منعطف باشد تا بتوان با استفاده از آن تصویری کلی از پروژه به دست آورد.

  • امطمئن شوید که برنامه های شما برای یک سیستم CRM دارای چارچوبی با معماری قابل قیاس(scalable) باشد

  • به هیچ وجه حجم داده ای که باید از سازمان جمع آوری کنید را کم تخمین نزنید (این حجم بسیار بالا خواهد بود). باید قادر باشید در صورت نیاز سیستم خود را توسعه دهید.

  • داده هایی که باید جمع آوری و ذخیره شود را به دقت ملاحظه کنید. در وهله نخست شاید تصمیم برآن باشد که هر چه بیشتر داده جمع آوری و ذخیره شود اما اغلب نیازی به ذخیره کردن چنین حجمی از داده ها نیست. ذخیره سازی داده های غیرضروری تنها اتلاف پول و وقت است.

  • شخصیت فردی هر یک از مشتریان را به دقت بشناسید و پاسخ مناسبی به نیاز آنها بدهید. یک سیستم CRM باید دارای قابلیت قیمت گذاری در داخل خود باشد.

    کدام یک از بخشهای سازمان باید پروژه CRM را اجرا کند؟

    بزرگترین منافع مالی در سازمان عبارت است از هم راستا کردن کسب و کارها و همچنین استراتژیهای CRM و IT بطوریکه این همسویی در همه سازمان اجرا شود و چنانچه اختصاص به یک بخش از سازمان داشته باشد، نتیجه مطلوب حاصل نخواهد شد.

    چه چیزی باعث شکست پروژه های CRM می شود

    در واقع بسیاری از عوامل! . نخست نبود ارتباط بین افراد در زنجیره ارتباط با مشتری که ممکن است به ایجاد تصویری ناقص از مشتری منجر شود. ارتباطات ضعیف در این قسمت منجر به پیاده سازی تکنولوژی در سازمان اما بدون پشتیبانیهای لازم از کاربر می شود. به عنوان مثال در صورتی که منافع پرسنل فروش به شکل کامل با سیستم همراستا نباشد، ممکن است اطلاعات جمعیت مشخصی که موفقیت سیستم را سبب می شود، به سیستم وارد نکنند. 500 شرکت برتر آمریکا به دلیل مقاومت پرسنل فروش در برابر تلاشهای پیشین برای به اشتراک گذاشتن اطلاعات مشتریان، تا چهار مرتبه مجبور به تلاش برای پیاده سازی سیستم CRM خود شده اند.

  • تکنیک ها وزبانهای برنامه نویسی هوش مصنوعی(۴)

    خلاصه ای دربارة LISP و PROLOG

    به وسیله برآورده کردن نیازهای گفته شده، LISP و PROLOG هر دو دارای زبانهای برنامه نویسی غنی و کاملی هستند وقتی که این زبانها را فرا می گیریم، دانشجو در ذهن و فکر دربارة روشهایی که آنها به وسیله ویژگیهای خاص هر زبان پشتیبانی می کنند، نیازها را نگه داری می کنند.

    PROLOG

    PROLOG یکی از بهترین نمونه و مثال یک زبان برنامه نویسی منطقی است. یک برنامه منطقی دارای یک سری ویژگیهای قانون و منطق است . PROLOG از محاسبة اولیه استفاده می کند. در حقیقت خود این نام از برنامه نویسی PRO در LOGIC می آید یک مفسر برنامه را بر اساس یک منطق می نویسد. ایده استفاده توصیفی محاسبه اولیه برای بیان خصوصیات حل مسئله یکی از محوریت های مشارکتPROLOG می باشد که برای علم کامپیوتر به طور کلی و به طور اخص برای زبان برنامه نویسی هوشمند مورد استفاده قرار می گیرند. نفع اسفتاده از محاسبه اولیه برای برنامه نویسی شامل یک ساختار ظریف و ساده و قابل معنی می شود.

    به دلیل همین خصوصیات است که PROLOG به عنوان یک محرک اصلی و مفید برای تحقیقاتی مثل موارد برنامه نویسی آزمایشی به عنوان یک کد، متغیر کردن برنامه و طراحی ویـــژگیهـای زبان سطح بالا، مطرح است. PROLOG و دیگر زبانهای منطقی یک سبک برنامه نویسی مشخصی را دنبال می کنند که در آنها برنامه ها به صورت دستورات پشت سرهم و متوالی برای ایجاد یک الگوریتم، نوشته می شوند. این نوع برنامه اصولاً به کامپیوتر می گوید که «چه چیزی درست است» و «چه چیزی باید صورت گیرد» و این به برنامه نویس اجازه می دهد که بر روی حل مسئله به صورت یک سری خصوصیات از یک محدوده تأکید کند تا اینکه بخواهد به جزئیات نوشتاری سطح پائین ساختارهای الگوریتمی برای بعد بپردازد.

    اولین برنامه PROLOG در مارسی فرانسه در اوایل 1970 به عنوان بخشی از زبان معمول یک پروژه نوشته شد. تئوری نهفته در پشت این زبان در کارهای کوالسکی،‌هیز و دیگران آورده شده است. عمدة  توسعة PROLOG بین سالهای 1975 تا 1979 در بخش هوش مصنوعی دانشگاه ادینبورگ صورت گرفت.

    در آنجا یک گروه مسئولیت کاربرد اولین PROLOG را به عهده داشتند که آقای David H.D مسئول آن بود. این گروه اولین  PROLOG را ساخت که می توانست محاسبات کلی را انجام دهد. این محصول بر اساس سیستم DEC-10 ساخته شده بود و می توانست در مدهای توصیفی و مقایسه ای کارآئی داشته باشد.

    مزیت این زبان به وسیله پروژه هایی که برای ارزیابی و گسترش قدرت بیان برنامه های منطقی نوشته شده اند،‌ اثبات شده است.

    بحث دربارة یک چنین کاربردهایی می تواند در سمینار و گردهمائی های مربوط به زبان برنامه نویسی هوش مصنوعی در سطح بین المللی مطرح شود.

    LISP

    LISP اولین بار به وسیله JACK MCCARTHY در اواخر دهه 1950 مطرح شد این زبان به عنوان یک مدل پیوسته محاسباتی بر اساس تئوری عملکرد مجدد،‌معرفی شد.

    در مقالات اولیة مک کارتی (1960) اهداف خود را مشخص می کند: ایجاد یک زبان سمبولیک تا یک زبان محاسباتی. ایجاد زبانی که بتوان از آ‌ن به عنوان یک مدل محاسباتی بر اساس تئوری عملکرد مجدد استفاده کرد و از آن بتوان برای تعریف دقیق یک ساختار و تعریف زبانی استفاده کرد.

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

    در حقیقت این مدل برنامه نویسی طوری مؤثر بوده است، که تعدادی از دیگر زبانها بر اساس عملکرد برنامه نویسی آن واقع شده اند مثل FP ، ML و SCHEME .

    این لیست اساس برنامه ها و ساختارهای اطلاعاتی در LISP است، LISP خلاصه شده نام پروسه LIS است. این برنامه یک سری لیست های عملکردی درون ساختاری دارد.

    LISP به برنامه نویس قدرت کامل برای اتصال به ساختارهای اطلاعاتی را می دهد.

    اصولاً LISP یک زبان کامل است که دارای عملکردها ولیست های لازمه برای توصیف عملکردهای جدید، تشخیص تناسب و ارزیابی معانی می باشد.

    تنها هدف کنترل برنامه بازگشت و شرایط منحصر به فرد است. عملکردهای کامل تر هنگامی که لا زم باشد در قالب این اصول تعریف می شوند. در طی زمان بهترین عملکردها به عنوان بخشی از زبان می شوند. پروسه توسعة زبان به وسیلة اضافه کردن عملکردهای جدید موجب توسعه محورهای زیادی از LISP می شوند که اغلب شامل صدها عملکرد بخصوص برای ایجاد اطلاعات کنترل برنامه، خروجی و ورودی، Edit کردن عملکردهای LISP می شوند.

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

    یکی ازمهم ترین برنامه های مرتبط با LISP برنامه SCHEME می باشد که یک تفکر دوباره دربارة زبان در آن وجود دارد که به وسیله توسعه AI وبرای آموزش اصول مفاهیم علم کامپیوتر مورد استفاده قرار می گیرند.

     

    7.   برنامه نویسی شیء گرا

    برخلاف برنامه LISP و PROLOG ،‌برنامه شیء گرا ریشه در مهندسی نرم افزار دارد. اولین بار در سال 1970 توسعه یافته که به وسیله  Alan Kay این تحقیقات صورت گرفته است.

    ساخت ایده ها از محرک، که زبان نروژی تظاهر می کند در سال 1960  و مقاله Symour در استفاده از LOGO برای آموزش کودکان، صورت پذیرفته است.

    استفاده از Dyna book برای اولین بار به عنوان یک کامپیوتر، که افرادی به غیر متخصصان علم کامپیوتر با آن سروکار داشتند.

    بـــه دلیل اینکه کاربر افراد معمولی بودند سیستم عملکرد و کاربرد نرم افزار نباید تکنیکی می بود و به سادگی قابل تشخیص بود. راه حل آنها برای این مسئله یک مداخلة گرافیکی است با استفاده از منوها و آیکون های گرافیکی و اشاره گرها، یک موس یا یک سری برنامه ها برای ادیت کردن، داده ها می باشد.

    دخالت کاربر در طراحی یک notebook متأثر از طراحی کاربرها برای یک سری کامپیوترهای تخصصی مثل سیستم های به کارگیری کامپیوتر شخصی مثل مکینتاش، ماکروسافت و محل های مربوط به ویندوز می باشد.

    در یک برنامه small talk ،‌همه چیز در قالب هدف و یک ساختار قابل محاسبه مرک و قراردادی مطرح می شود. اهداف نه فقط شامل انواع اطلاعات برای محاسبه بلکه شامل انواع روشهای لازم برای محاسبه حالت و وضعیت هدف نیز می شوند.

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

    وقتی مواردی از یک نوع اطلاعات به وسیله اهداف توصیف می شود این موارد ذاتاً دارای نوع توصیف و روشهای توصیفی از عملگرهایشان می باشند،‌برای شکل دادن یک عملیات بر روی یک هدف، یک پیام به سمت هدف فرستاده شده که حاصل روش مناسبی می باشد. به عنوان مثال، اضافه کردن 3 و 4 پیام 4+ به سمت شیء 3 فرستاده می شود و 3 پاسخ می دهد می شود 7  .

    به وسیله ایجاد انواع ترکیب اطلاعات و عمل بر روی آنها در یک عمل واحد مربوط به هدف، small talk از کد Modular (پیمانه ای) توسعه و نوع کاربرد برای عناصر اطلاعات و کد مربوط به تکثیر آنها، پشتیبانی می کند.

    به دلیل اینکه اهداف  small talk در قالب یک کلاس شبکه ای همراه با اهداف کاملاً ویژه که بخشی از تمامی روش هــای کاملاً کلی است ، بسیار ساده است که یک ساختار جدید برنامه ای توصیف کنیم که عملاً با اهداف موجود در برنامه همراه باشد. بنابراین یک برنامه اصولاً می تواند قدرت کامل یک سیستم باشد که شامل گرافیک،‌بازنگری و ارتباط است.

    علاوه بر این روش های توسعه نرم افزاری مثل ارائه اطلاعات و زبانهای نهفته، فشار بر اپراتور و استفاده از کدها از طریق یک گروه اصلی و زبانهای نهفته در قالب یک مدل رایج پشتیبانی می شوند.

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

    محیطهای هیبرید

    نیاز به برنامه نویسی اطلاعاتی موجب توسعة تعدادی برنامه نویسی و تکنیک های زبان، شامل سیستم های تولید،‌قوانین و کلاس شیء‌گرا می شود.

    یک سیستم هیبرید بیانگر نمونه های چند منظوره در قالب یک محیط برنامه نویسی خاص مــی باشد. گر چه محیطهای هیبرید متفاوت می باشد. ولی عموماً شامل خصوصیات ذیل می شوند.

     1-نمایش شیء گرا از محدوده اشیاء

    یک چنین سیستم هایی ذاتاً ویژگیهای کلاس را پشتیبانی می کنند و اغلب شامل یک مکانیسم انتقال پیام برای عکس العمل هدف می باشند.

    2-قوانین نمایش اطلاعات neuristic

    گر چه چهارچوب اهداف به معنی توصیف طبقه بندی اهداف، می باشند. قوانین به عنوان عمدة نظر توصیف مسائل اطلاعاتی می باشند.

    ساختار then …. if ….. مناسب شیوة تخصص انسانی است که بیانگر پروسة تصمیم گیر است. قوانین دریافت اطلاعاتی از اهداف را دارند که با استفاده از یک زبان که مستقیماً در چارچوب یک هدف می خواند و می نویسد و یا به وسیلة استفاده از پیام که مستقیماً وارد هدف می شود صورت می پذیرد.

    3-پشتیبانی از انواع روش های جستجو

    بیشتر سیستم های پشتیبانی از جستجوی اولیه و انتهایی حمایت می کنند عموماً بیان یک هدف در قالب جستجویی ،‌تغییر به سمت عقب می باشد . علاوه بر این یک واقعیت تازه دربارة حافظه کارکرد ممکن است ایجاد علت های اولیه از قوانین کند که به وسیله این واقعیت جدید پشتیبانی می شوند.

    4-توصیف دامنة کاربرد عملکرد متقابل و تأثیرات جانبی

    یک demon فـــرآیندی اســـت که به وسیله عملکردهای جانبی بعضی از اعمال مشخص می شود. یک نمونه از استفاده demon کنترل در یک سیستم زمانی است که بیانگر دوره ای در مانیتور یک چاپگر و یا دیگر وسایل می باشد.

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

    چنین demonهایی برای به زمان نگه داشتن یک نشانگر در پاسخ به تغییر مقدار مورد استفاده قرار می گیرند. Demon های مهم و مطرح اصولاً دارای مقادیری متغیر می باشد که هنگامی که ارزش متغیر تغییر کند demon خوانده شده و وقتی که این اتفاق افتاد demon ایجاد و خلق می شود که این وقتی اتفاق می افتد که یک مقدار خلق شده باشد و ارزش ها در قالب گرافیکی فعال می شوند که این فعالیت می تواند متغیر باشد.

    5-تداخلگرهای گرافیکی

    اینها شامل یک طیفی از امکاناتی می باشند که اجازه تداوم و دنبال کردن موارد را می دهند. به عنوان مثال نشانگرهای گرافیکی می توانند ساختار قوانین یک اصل اطلاعاتی را به صورت یک درخت توصیف دهند. یکی از مهمترین خصوصیات محیطهای هیبرید،‌توانائی اتصال با استفاده از demon می باشد که به صورت یک نشانگر گرافیکی متصل به شیء و هدف می باشد. که این موجب عملکرد گرافیکی برای بیان زمان واقعی نشانگر می باشد که در حقیقت بیشتر محیط ها دارای یک پشتیبانی سطح بالای از داده های گرافیکی می باشند.

    6-اجتناب از زبانهای زیرین

    روشهایی که در قالب یک زمان خاص یا پاسخگو می باشند به وسیله محیط و یا اغلب اوقات LISP و PROLOG یا حتی  و یا پاسکال توصیف شده اند که این موجب توصیف طیفی فرآیند اطلاات و هم چنین یک برنامه اطلاعاتی که طیف وسیعی از زبانهای که شکل دهنده هندسی، جهت ها و سنسورها و یا دیگر عملکردهایی که به صورت بهتری در قالب روشهای الگوریتمی به کار گرفته می شود را شامل می شود.

    7-توانائی ترجمه اطلاعات جهت اجرای سریعتر یا تحویل روی یک ماشین کوچکتر

    وقتی که برنامه شیء گرا کامل شد. یک محیط کامل و توسعه یافته اغلب ، بلندی است که به تدریج افول می کند و پائین می آید بیشتر محیط های مدرن AI اجازه کاربرد سریعتر و ساده تر را که اغلب کوچکتر و ارزانتر است را در یک ماشین ترجمه ایجاد می کنند.

    8.   یک نمونه هیبرید

    بسیاری از نمونه های مطلوب اصولاً از طریق اشیا، ارتباطات و کنش و واکنش متقابل بین آنها واقع یم شود در شکل زیر یک نمونه اتصال به وسیله باطری همراه با یک سوئیچ برای یک لامپ (شکل 364) در نظر گرفته شده است.

    لامپ، باطری و سوئیچ ممکن است هر کدام به وسیله کلاسها بیان شوند که بیانگر ویژگیهای باطری، سوئیچ و لامپ باشد . مشخصه های الکترونیکی شکل 2 ممکن است به عنـــوان موارد بخصوصی از این کلاس های کلی بیان می شوند. توجه داشته باشید که نمونه ها دارای مقادیر نمونه ای مربوط به کلاس خاص شیء مربوط به خود می شوند به عنوان مثال اگر سوئیچ 1 در حالت خاموش قرار گیرد. قسمت کنترل که مربوط می شود به لامپ 1 تحت تأثیر قرار خواهد گرفت که این موارد در شکل زیر نشان داده شده اند.


     

     

     

     

     


     

    یک قانون ممکن است در اینجا به وجود بیاید که :

    اگر نور وارد AND نشود، سوئیچ AND را بسته و باطری درست است بنابراین باید به قسمتی که ممکن است آسیب دیده باشد مراجعه کرد.

    در نمایش هیبرید قوانین دارای ویژگیهایی هستند که بیشتر بیانگر مقدار اهمیت کلاسها و اشیاء می باشند.که در شکل 3 به آن اشاره شده است. این قانون ممکن است به عنوان بخشی از قانون اولیه سیستم در تلاش برای به جریان انداختن این مدار باشد که در جای دیگر برای راه اندازی سوئیچ کنترل برای حالات متغیر است.

    9.   انتخاب زبان کاربردی

    همانگونه که هوش مصنوعی به مرحله رشد می رسد وقابلیت های خود را در طیف وسیعی از مسائل کاربردی به اثبات می رساند اعتماد به LISP و PROLOG نیز مدنظر می باشد، ‌موارد مربوط به توسعة نرم افزاری، همانند نیاز به تداخلگرها به صورت ساده وآ‌سان همراه با یک کد منطقی تا استفاده از AI در Moduleهای کوچکتر و یا بزرگتر در برنامه ها و نیاز به ایجاد توسعه استاندارد متأثر از مشتریان دولتی و یا گروهی موجب توسعة سیستم های AI در انواع زبانهای مثل C ،  , C++ Java و Smalltalk شده است.

    کــه زبــانهای LISP و PROLOG کار خود را در محدودة توسعه و Prototype سازی سیستم های  AI در صنعت و دانشگاهها دنبال می کنند.

    یـــک اطـــلاعات و دانش کاربردی مربوط به این زبانها به عنوان بخشی از مهارت هر برنامه نویس AI می باشد. علاوه بر این، این زبانها به عنوان زمینه ای برای بسیاری از این خصوصیات می باشند که در ادامه همکاری با زبانهای برنامه نویسی جدید می باشند.

    احتمالاً بهترین نمونه از این زبانها Java میباشد که متناسب با استفاده اولویت دینامیکی اش، دارای مدیریت حافظه اتوماتیک و دیگر خصوصیاتی است که در زبانهای که ترجمه شده وجود دارد به نظر می رسد که دیگر زبانهای برنامه نویسی برای رسیدن به حد مطلوب از استانداردهای این زبانها استفاده می کنند.

    هم چنانکه این تکامل صورت می پذیرد و ادامه می یابد دانش مربوط به LISP و PROLOG یا Small talk و روش های برنامه نویس قادرند تنها از نظر مقدار توسعه یابند.

    بنابراین، از اینکه از یکی از این زبانهای AI استفاده کنیم یا خود را در برنامه نویسی با زبانهای C++ و C و Java یا یکی از زبانهای رقیب پیدا کنیم راضی و قانع خواهیم بود.


    تکنیک ها وزبانهای برنامه نویسی هوش مصنوعی(۳)

    انعطاف پذیر بودن کنترل:

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

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

    در سیستم تولیدی برنامه شامل یک سری قوانین می شود. در منطق اطلاعات این قوانین به گونه ای تنظیم می شود که بوسیله الگوی اطلاعات در یک نوع مسئله داده شده قابل تشخیص باشد.

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

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

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

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

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

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

    یکی از مزایای این نظریه این است که الگوی تطبیق و کنترل ساختارهای همراه با آن ممکن است به سادگی برای تطبیق با نیازهای یک مسئله بخصوص خود را منطبق سازد.

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

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

    الگوریتم های ژنتیکی نیاز به ایجاد واحد های شمارش به عنوان جمعیت کاندید شده حل مسئله دارند. توانایی زبان های AI برای ایجاد مشخصه ترکیب ساده طبقه بندی اتوماتیک حافظه امکان اطلاع رسانی ساده ایجاد متغیرها و روش های پویا و شکل های قوی ایجاد برنامه مثل یک برنامه شیء گرا موجب خواهد شد که آنها را به سمت استفاده گسترده در کاربرد این ابزارهای جدیدتر AI سوق دهد.

     

    پشتیبانی از روش های برنامه نویسی جستجویی.

    مسائلی که AI به آن مرتبط می باشد همیشه پاسخگوی یک چنین نظریه های مهندسی نرم افزار استاندارد که شامل طراحی کامل و پردازش موفقیت آمیز و توسعه برنامه از خصوصیات و ویژگیهای دقیق است نمی تواند باشد. به دلیل طبیعت و ذات و نوع بخصوص AI  به ندرت این احتمال به وجود می آید که بتوان ویژگیهای درست و کاملی از شکل نهایی یک برنامه AI قبل از ساخت حداقل یک proto type بدست آورد. اغلب موارد شناخت مسئله برنامه مربوط می شود به حل موارد درگیر مسئله از طریق توسعه برنامه . دلایل آن عبارت است از :

    1 بیشتر مسائل AI اصولا مشخصه های ضعیفی دارند.

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

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

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

    به عنوان مثال برای طراحی یک مدار یا بهبود یک بیماری این به چه معنی است؟ چگونه یک انسان ماهر و متخصص این عملیات ها را شکل می دهد؟ سطح رضایت بخش ایجاد یک محدوده مسئله داده شده چه چیزی است؟ چه نوع دانش و اطلاعاتی لازم می باشد؟ چه مشکلاتی ممکن است به دلایل نبود و یا غیر واقعی بودن اطلاعات پیش بیاید؟ به دلیل جوابهای   به این قبیل سؤالات و دیگر سؤالات که در یک دوره کلی مطرح می شود و بسیار تخصصی می باشند و هر وقت این طور باشد ساختار آن نیز عمیق تر و پیچیده تر می شود به همین نسبت حل آن نیز به دقت بیشتری نیاز دارد.

    2 نظریاتی که برای حل مسائل به آن پراخته می شود در محدوده بخصوصی قرار می گیرند.

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

    بنابراین راه حل موفقیت آمیز مسئله به ندرت به طور کامل برای محدودیتهای جدید عمومیت و کاربرد دارد هر کاربرد تا حدودی یک نوع مسئله جدید می باشد .

    3- ساختارها و اشکال بیان AIبه طور پیوسته باید توسعه و تجدید شود

    توسعه AI یک پروسه تحقیقی مداوم است . توسعه سیستم های AI کاربردی در بسیاری از روشها بسط و توسعة این پروسه ها می باشند . گرچه تجربه عمدتاً به کاربرد زبان کمک می کند ولی عموماً هیچ جایگزینی برای کاربرد یک ایده و اینکه چگونه عمل می کند وجود ندارد .

    به همین دلیل AI   اصولاً به صورت جستجوی است . برنامه اغلب به صورت ماشینی است که از طریق آن ما می توانیم دامن مسئله را کشف کنیم و روش های حل مسئله را کشف کنیم در حقیقت ابزاری است که با آن به شناخت مسئله نائل می شویم .

    چالش در برنامه نویسی AI ، پشتیبانی برنامه ریزی کشفی است . در بین خصوصیاتی که یک زبان برنامه نویسی باید ایجاد کند موارد ذیل وجود دارد :

    1-   Modularity

    2-   قابلیت گسترش

    3- ساختارهای سطح بالای مفید

    4- پشتیبانی از Prototype سازی اولیه

     5- قابل خواندن بودن برنامه

    6- مترجم ها

    7- پشتیبانی نرم افزاری برای برنامه نویسی جستجویی

    ما این عناوین را در پاراگراف های زیر مورد بحث و بررسی قرار خواهیم داد :

         

    1-قابلیت Modularity کدها

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

    این شامل پرهیز از تأثیرات جانبی و متغیرهای جهانی (global) و اطمینان از رفتار هر Module واحد در شناخت برنامه باشد که بتواند به خوبی قابل تشخیص باشد.

    برنامه های LISP به صورت مجموعة انتخابی از عملکردهای واحد می باشند در یک برنامه LISP که به صورت مطلوب نوشته شده باشد هر عملکرد کوچک می باشد که یک کارکرد خوب و واحد را شکل می دهند.

    بنـــابراین اغلب  جایگزینی و اصلاح علت های هر کمبودی، ساده می باشد. روش های اندازه گیری متغیر LISP و پارامترهای مربوط به آن اغلب برای کاهش تأثیرات عملکردی به کار گرفته می شوند. متغیرهای جهانی،‌گر چه به وسیله زبان پشتیبانی می شوند ولی استفاده در کدهای متناسب LISP نهی شده اند.

    علاوه بر این LISP دسته بندی شی گرا را از طریق سیستم شیء LISP به صورت CLOS پشتیبانی می شود.

    در PROLOG واحد اصلی برنامه روش و قانون است، قوانین PROLOG همانند عملکردهای LISP کوچک و ویژه هستند.

    به دلیل اینکه محدوده و قیاس متغیرها در PROLOG اغلب محدود به یک شیوه و قانون شده اند، و زبان اجازه تغییرات جهانی را نمی دهد. توصیف کردن اصولاً ساده می باشد.

    LISP و PROLOG شامل مشخصه های سهل و آسانی می باشند که هنگامی که با یک ساختار برنامه مشخص ترکیب شوند، موجب آسان شدن پرداخت آن می گردند.

     

    2-قابلیت گسترش

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

    اغلب امکان توصیف شکل نهایی یک برنامه AI وجود ندارد،‌اما امکان تشخیص ساختارهای سطح بالا و مفید برای کشف و بررسی دامنه مسئله وجود دارد. این ساختارها می توا ند شامل الگوهای مناسب ، کنترل کننده های جستجو وعملکردهای توصیف یک زبان توصیفی باشد.

    اصـــولاً ایـــن نظـــریه که می گوید اگر شما ساختار نهایی یک برنامه را تشخیص ندهید می بایستی سعی کنید که ساختار زبان را توصیف کنید که به شما کمک خواهد کرد که آن ساختار را توسعه دهید.

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

    LISP و PROLOG و همچنین توسعة شیء گرا آنها همانند CLOS همگی موجب می شوند که توصیف سادة اهداف، پیش بینی ها و عملکردهای جدید ، صورت پذیرد.

    هنگامی که توصیف صورت پذیرفت، این ساختارهایی که کاربر ایجاد کرده دارای رفتاری شبیه به ساختارهای اساسی زبان می باشند.

    این زبانها به  وسیله توسعة توانایی های اصولی از ابتدا تا حل آن برنامه ریزی می شوند. دراین صورت،‌گفته می شود که برنامه های معمول، ساختاربندی می شوند ولی برنامه های AI رشد و توسعه می یابند.

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

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

    LISP و PROLOG همچنین موجب ساده شدن نوشتن توصیف متغیرهای ویژه یک زبان خاص می شوند. در LISP برنامه ها و اطلاعات به گونه ساختاری لیست می شوند. این باعــث ســادگی نوشتن برنامه ای می شود که از کد LISP به عنوان داده (Data) استفاده می کنند که در این صورت باعث ساده تر شدن توسعه، تصویفی می شوند.

    بسیاری از زبانهایی که از نظر سابقه و همچنین اقتصادی در نوع زبانهای AI حائز اهمیت می باشند، مثل PLANNER و ROSIE و KEE و OPS بر اساس توانائی های LISP ساخته می شوند.

    PROLOG این توانائی ها را در قالب تعدادی “meta – predicates” که قابل پیش بینی برای ترکیب با دیگر مشخصه های PROLOG باشند. ایجاد می کند که در این صورت باعث ساده شدن نوشتاری آن می گردد.

    همراه با LISP تعدادی زبانهای سطح بالا AI بر اساس PROLOG ساخته شده اند که از این روش استفاده می کنند.

     

    3-وجود ساختارهای مفید سطح بالا

    برنا مه نویسی جستجویی به کمک یک ساختار قوی سطح بالا در زبان به وجود می آید،‌این ساختارهای قوی و کلــــی به  برنامه نویس اجازه توسعه سریع ساختارهای ویژه برای بیان اطلاعات توصیفی و کنترل برنامه را می دهند.

    در LISP اینها شامل اصول اساسی نوع اطلاعاتت می شود که موجب ایجاد ساختارهای پیچیده اطلاعاتی و عملکردهای قوی برای توصیف عملیات بر روی آ‌نها می شود. به دلیل اینکه LISP قابل گسترش می باشد و برای چندین دهه است که مورد استفاده قرار می گیرد. مهمترین و قوی ترین عملکردهای توصیفی LISP همان خصوصیات استاندارد زبانی آنها می باشد. ویژگیهای معمول LISP شامل جیدها عملکرد برای ایجاد ساختارهای اطلاعاتی، ساخت تداخلگرها و قابلیت Edit کردن ساختارهای LISP می شوند.

    PROLOG به عنوان یک زبان مقایسه ای کوچک مطرح است که بخشی از آن به دلیل نو بودن و بخش دیـــــگر به دلیل عدم سادگی و کامل بودن آن است با این حال PROLOG به کاربرها اجازة ایجاد پیشگوئی های به خصوص را می دهد و مفیدترین اینها راه خود را برای استاندارد شدن باز کرده اند.

     

    4-پشتیبانی برای ساخت Prototype اولیه

    یکی از روش های برنامه نویسی جستجویی و مهم، Prototype سازی اولیه می باشد. در اینجا برنامه نویس یک راه حل سریع برای مسئله پیدا می کند و از آن برای جستجو فضای مسئله استفاده می کند. وقتی که مسئله مورد بررسی قرار گرفت و روش حل آن مشخص شد، Prototype کنار گذاشته می شود و یک برنامه نهایی که تأکید آن بر روی صحت و مؤثر بودن می باشد، ساخته می شود. گر چه مشکل است که چیزهایی را که زیاد مورد استفاده قرار می گیرند تا برای ساخت یک برنامه کامپیوتری به کار روند، کنار گذاشت، ولی انجام چنین کاری باعث صرفه جوئی در زمان و بهبود کیفیت نهائی کار می شود. ساخـــتارهای ایجاد شده به وسیله زبانهای AI عمدتاً باعث افزایش سرعت توسعة Prototypeها می شوند.

    5-قابلیت خواندن برنامه و مستندسازی آن

    به دلیل اینکه اغلب برنامه های AI به طور گسترده ای از طریق خودشان توصیف می شوند ولی این نکته حائز اهمیت است که کد بتواند قابل خواندن و قابل مستندسازی باشد. در عین حالیکه هیچ نوع جایگزینی برای محتوی زبانهای معمول در کد وجود ندارد، ولی با این حال زبـــان هـــای AI همـــراه بـا Moduleهای با ساختار سطح بالا باعث ساده شدن این عمل می شوند.

    6-مفسرها

    بیشتر زبانهای AI قبلاً ترجمه شده هستند نه اینکه در طول برنامه بخواهند ترجمه شوند. این بدان معنی است که برنامه نویس لازم نیست به مدت طولانی هر زمان که کد تغییر کرد برنامه را تعریف مجدد کند.

    با توجه به مسائل عملکردی در ترجمه کد، زبانهای AI مدرن به Module های ویژه اجازه تعریف مجدد برای یک موقعیت متوسط را می دهند که از این طریق برنامه های سطح بالاتر بهتر تعریف می شوند. علاوه بر این بسیاری از کاربردها به برنا مه ها اجازه تکمیل شدن نهایی برنامه ها را می دهند.

    7-محیطهای توسعه

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

    Dynamic Binding and constraint propagation

    زبانهای معمول نیاز به این دارند که بیشتر برنامه های مرتبط با آن در یک مدت زمان خاص تشخیص داده شوند.

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

    برنامه های Prolog و LISP پشتیبان قیدگذاری دینامیکی هستند. از یک نقطه نظر AI یکی از مهمترین منافع قیدگذاری دینامیکی پشتیبانی از برنامه نویسی ساختاری است. اغلب مسائل مربوط به یک برنامه AI نیـــاز به ایــــن دارد که ارزش های مشخصه های خاص ناشناخته باقی می ماند تا زمانی که اطلاعات لازم جمع آوری شوند.

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

    یک نمونه ساده از این نظریه ممکن است در یک سیستم تشخیص پزشکی دیده شود که اطلاعات دربارة نوع بیماری مریض جمع آوری می شود تا زمانی که اطلاعات مربوطه محدود به نوع خاصی از بیمار شوند زبان برنامه نویسی مقایسه ای این روش از نوع متغیر قیدگذاری اولیه یا توانایی حصول یک متغیر نامرکب می باشد در حالیکه آن را در کد برنامه جمع می کند.

    LISP و PROLOG به متغیرها اجازة ترجمه وافزایش غیرمرکب را می  دهند، در حالیکه توصـــیف ارتبـــاطات و وابستگی های بین این متغیرها و دیگر واحدهای برنامه را انجام می دهد. این موجب کاربرد آسان و طبیعی نوع قید می شود.

     

    6.   تعاریف مشخص و واضح

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

    متأسفانه زبانهای برنامه نویسی معمول مثل Fortran و پاسکال دارای تعاریف مشکل و پیچیده ای هستند این موارد می تواند ناشی از واقعیت خود زبان باشد که اصولاً دارای خصوصیات ساختاری سطح بالایی در کامپیوتر دارند و در خودشان سیستم های فیزیکی و پیچیده ای دارند. به دلیل اینکه زبانهای AI دارای اساس و پایه ریاضی هستند مثل PROLOG و LISP ،‌آنها می بایستی معانی ساده تری باشند که دارای قدرت و ظرافت نهفته در ریاضی باشند.

    این موجب می شود که این زبانها عمدتاً برای تحقیقات در محدودة به کارگیری دانش ابزارهای زبان، ایجاد برن امه درست،‌و اتوماتیک کردن تأثیر گذاری کد، مفید واقع شوند.

    همـــچنین بـــاید توجه داشت که گر چه عملکرد بسیاری از برنامه های AI کاملاً پیچیده می باشد ولی کدی که دارای این عملکرد است باید ساده و مشخص باشد.

    بلوک های بزرگ مرکب و پیچیده با کد مشخص دارای AI مناسب نمی باشند یک زبان خوب توصیف شده،‌یک ابزار مهم برای دریافت این اهداف می باشد.

     

    تکنیک ها وزبانهای برنامه نویسی هوش مصنوعی(۲)

    خصوصیات مطلوب یک زبان AI

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

    این مشاهده در عمل سنجیده می شود که همراه با سیستم های موفق دانش مدار می باشد که در زبانهای برنامه نویسی مختلفی مثل Pascal ,  C , Ctt , Java , PROLOG , LISP  و حتی Fortran به کار می رود .

    برنامه های مختلفی اصولاً در PROLOG   , LISP و سپس در C به کار گرفته می شوند تا بتواند تاثیرپذیری و انتقال پذیری بهتر ایجاد کنند. در هر دوی این موارد رفتار و عملکرد در سطح نشانه به طور قطع بی اثر می باشد.

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

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

    اهداف و پیش بینی های منطقی ابزارهای کاربردی طبیعی تر و انعطاف پذیرتر  خواهند بود.

    علاوه بر این به دلیل مشکلات موجود در بسیاری از مسائل مربوط به AI اغلب توسعه را قبل از اینکه یک شناخت کامل از نهایت فرم برنامه داشته باشیم شروع می کنیم.

    توسعه AI لزوما در طبیعت به صورت کشف و تجزیه و آزمایش است.

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

    در پنــج زیر گـــروه بعدی ما به صورت جزئی و کامل در مورد نیازهایی که ساختارهای سطح نشانه ای برنامه های AI  که بر روی کاربرد زبان دارند بحث می کنیم.

    این موارد عبارتند از :

    1.   پشتیبانی از محاسبه سمبولیک

    2.   انعطاف پذیری کنترل

    3.   پشتیبانی از متدولوژی و روش های برنامه نویسی جستجویی

    4.   پویایی

    5.   مستنند سازی خوب و  واضح

    `پشتیبانی از محاسبات سمبولیک

    گرچه روش های زیادی برای سازماندهی اطلاعات در یک سطح نشانه وجود دارد . ولی تمامی آنها نهایتاً به عنوان عملکردهایی بر روی نشانه ها به کار می روند .

    این روش در تئوری نشانه های آقای Simon , Newell آمده است . تئوری های سیستم فیزیکی نشانه نیاز اصلی برای زبان برنامه نویسی است که کاربردهای یک سری از عملیات سمبولیک را آسان می کند .

    حتی شبکه های عصبی و دیگر شکل های ضروری محاسبه می بایستی شامل اطلاعات سمبولیک در ورودیها و خروجی هایشان باشند . انواع کاربردها و اطلاعات دادهای عددی تاکید شان بر روی زبانهای برنامه نویسی معمول است که برای کاربردهای جستجوی الگوریتمی یا بیان زبان AI مناسب نمی باشند.

    علاوه بر این یک زبان AI می بایستی ساختار ایجاد نشانه های اولیه را ساده سازد و بر روی آنها کار کند. این یکی از مهمترین نیازهای یک زبان برنامه نویسی AI می باشد.

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

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

    PROLOG یک زبان برنامه نویسی کلی است که بر اساس پیش بینی محاسباتی است.

    به عنوان یک کاربرد رسمی منطق PROLOG بعضی اوقات مستقیما به عنوان یک زبان در سطح نشانه مورد استفاده قرار می گیرد.

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

    PROLOG ممکن است برای کاربرد در جستجوی الگوریتم ها یک سیستم محافظ و یک شبکه سمانتیکی مورد استفاده قرار گیرد.

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

    چند نمونه از لیست ها با استفاده از ساختار برنامه نویسی LISP عبارتند از :

    (این یک لیست است)

    (این هست) (یک لیست) (از لیست ها)

    (زمانها (بعلاوه 13)(بعلاوه 23) )

    ((123)(456)(789))

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

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

    لیست ها یک سری بلوک های مهم می باشند که PROLOG , LASP که موجب می شود که کاربر را با عناصر اطلاعاتی و عملیاتی برای دستیابی و تاکید بر آنها در درون یک سری ساختارهای پیچیده مهیا سازد. در حالیکه PROLOG مستقیما به محاسبات پیش بینی شده وابسته است و شامل یک سری لیست به عنوان ابزارهای بیان می شود.

    LISP لیست را به عنوان اصول انواع داده ها و برنامه ها مورد استفاده قرار می دهد. تمامی ساختارهای LISP از لیست ها ساخته می شوند و زبان فراهم کردن یک سری ابزارهای قوی برای ترکیب اینها (ساختارها) را به عهده دارد و توصیف کننده عملیات جدید برای ایجاد توسعه و تغییر آنها است. یک شکل کردن ساختار LISP   و توانائی توسعه آن توصیف هر نوع زبانی را برای ساختار آن ساده می سازد . بوسیله پرداختن به نظریه جمع آوری اطلاعات فشرده برنامه نویس LISP می تواند ساختارهای نشانه را توصیف کند و عملیات مورد نیاز هر نوع شکل گیری سطح بالا شامل کنترل کننده های جستجو حل کننده های تئوریهای منطقی و دیگر اظهارات سطح بالا می باشد.

     

    انعطاف پذیر بودن کنترل:

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

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

    در سیستم تولیدی برنامه شامل یک سری قوانین می شود. در منطق اطلاعات این قوانین به گونه ای تنظیم می شود که بوسیله الگوی اطلاعات در یک نوع مسئله داده شده قابل تشخیص باشد.

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

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

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

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

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

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

    یکی از مزایای این نظریه این است که الگوی تطبیق و کنترل ساختارهای همراه با آن ممکن است به سادگی برای تطبیق با نیازهای یک مسئله بخصوص خود را منطبق سازد.

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

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

    الگوریتم های ژنتیکی نیاز به ایجاد واحد های شمارش به عنوان جمعیت کاندید شده حل مسئله دارند. توانایی زبان های AI برای ایجاد مشخصه ترکیب ساده طبقه بندی اتوماتیک حافظه امکان اطلاع رسانی ساده ایجاد متغیرها و روش های پویا و شکل های قوی ایجاد برنامه مثل یک برنامه شیء گرا موجب خواهد شد که آنها را به سمت استفاده گسترده در کاربرد این ابزارهای جدیدتر AI سوق دهد.

     

    تکنیک ها وزبانهای برنامه نویسی هوش مصنوعی(۱)

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

    این انقلاب در اقتصاد امروز و نظم جامعه، به همان میزان  انقلاب صنعتی در قرن 19 تأثیر دارداین تحولات قادر است الگوی فکری و فرم زندگی هر فرد را تغییر دهد.

    انقلاب کامپیوتر توان ذهنی ما را گسترش می دهد.

    عملکرد اولیة برنامه نویسی هوش مصنوعی (AI) ایجاد ساختار کنترلی مورد لزوم برای محاسبه سمبولیک است خصوصیات این ساختارها به مقدار زیادی موجب تشخیص خصوصیاتی می شود که یک زبان کاربردی می بایستی فراهم کند.

    در این مقدمه به یک سری خصوصیات مورد نظر برای زبان برنامه نویسی سمبولیک می پردازیم و زبانهای برنامه نویسی LISP و PROLOG را معرفی خواهیم کرد.

    این دو زبان علاوه بر این که از مهمترین زبانهای مورد استفاده در هوش مصنوعی هستند، خصوصیات semantic و syntactic آنها نیز باعث شده که آنها شیوه ها و راه حل های قوی برای حل مسئله ارئه کنند.

    تأثیر قابل توجه این زبانها بر روی توسعه AI از جمله توانائی آنها به عنوان «ابزارهای فکر کردن» می باشد که از جمله نقاط قوت آنها در زبانهای برنامه نویسی می باشد.

    همان طور که هوش مصنوعی مراحل رشد خود را طی می کند زبانهای LISP و PROLOG بیشتر مطرح می شوند.

    این زبانها کار خود را در محدودة توسعه و prototype سازی سیستم های AI در صنعت و دانشگاهها دنبال می کنند.

    اطلاعات در مورد این زبانها به عنوان بخشی از مهارت هر برنامه نویس AI می باشد ما به بررسی این دو زبان در هوش مصنوعی می پردازیم.

    آنــــچه را کـــه نمی دانیم موجب دردسر و گرفتاری ما نخواهد شد، بلکه دردسرها از دانسته ها سرچشمه می گیرند.

    W.ROGERS


     

    زبان ، شناخت و خلاصه پردازی

    توانایی شکل گیری خلاصه برداری از تجربیات از توانمند ترین و اساسی ترین توانائی های ذهن انسان است خلاصه پردازی به ما این اجازه را می دهد که به فهم جزئیات از یک محدوده ی کلی اطلاعات مربوط به یک خصوصیت کلی سازمان و رفتار برسیم . این خلاصه ها به ما اجازه شناخت و درک کامل موارد دریافت شده در حوزه خاص را می دهند . اگر ما وارد یک خانه شویم که به خوبی ساخته شده باشد ، راههای خود را به اطراف پیدا خواهیم کرد . ساختار خصوصیات اطاق نشیمن ، اطاق خواب ،‌آشپزخانه و حمام عموماً از ویژگیهای یک مدل خانة استاندارد می باشد .

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

    وقتی که ما به تئوری برای توصیف کلاس های یک پدیده می پردازیم ، خصوصیات و ویژگیهای کمی و کیفی مربوط به کلاس از کل جزئیات خلاصه می شود .

    که اعضاء به خصوص خود را مشخص می کند . این کاهش جزئیات به وسیله قدرت توصیف و پیش بینی یک نظریه ارزشمند جبران می شود .

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

    خلاصه پردازی طبقه بندی شده (سلسله مراتبی ) :

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

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

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

    به عنوان مثال دو نوع کاربر متفاوت جستجوی باینری را در نظر بگیرید .

    یکی از آنها یعنی Fortran از محاسبات و طبقه بندی استفاده می کند و دیگری یعنی Ctt از Pointer استفاده می کند که بتواند در جستجوی درون شاخه های binary کاربرد داشته باشد .

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

    Allen   New ell بین سطح دانش و سطح نشانه ها برای توصیف یک سیستم هوشمند تفاوت قائل شده است.

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

    علاوه بر سطح نشانه سطح دانش است که توجه آن به مقدار و محتوی اطلاعات یک برنامه و شیوه استفاده از آن اطلاعات می باشد.

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

    به دلیل اینکه کاربرها برنامه ها را در قالب دانش و توانایی خودشان می شناسند بنابراین حائز اهمیت است که برنامه های AI دارای یک سطح خصوصیات اطلاعاتی باشند.

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

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

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

    کاربرد بیان سطح نشانه ای شامل یک سطح دوره پائین تر از ساختار برنامه می شود و بیانگر یک سری ملاحظات طراحی اضافی می شود.

    اهمیت نظریه چند مرحله ای نسبت به طراحی سیستم نمی تواند بیش از این مورد توجه قراار گیرد.

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

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


     

    سطح اطلاعات توصیف کننده توانائی های یک سیستم هوشمند است. محتوی دانش و اطلاعات مستقل از شکل پذیری مورد استفاده برای بیان آن است به همان اندازه که زبان بیان کاملا مؤثر می باشد .

    توجه به سطح دانش شامل سؤالاتی از این قبیل است:

    از این سیستم چه چیزی ساخته خواهد شد؟ چه اشیا و چه ارتباطی در آن محدوده مؤثر و مفید است ؟ چگونه یک اطلاعات جدید به سیستم اضافه می گردد؟

    آیا واقعیات در طی زمان تغییر می کنند؟ چگونه و چطور سیستم نیازمند است که دلائل اطلاعات خود را ثابت کند؟ آیا محدوده ارتباطی دارای یک طبقه بندی درست و شناخته شده است؟

    آیا این محدوده شامل یک سری اطلاعات نادرست و غیر ممکن است؟

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

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

    منطق یکی از چندین نوع اشکال است که اصولا در حال حاضر برای بیان دانش و اطلاعات در دسترس می باشد.

    زبان بیان نه تنها می بایستی توانایی بیان اطلاعات مورد لزوم برای کاربر را داشته باشد بلکه می بایستی خلاصه و قابل توصیف و دارای کاربرد مؤثر باشد و می بایستی به برنامه نویس برای دستیابی و سازماندهی اصل و اساس اطلاعات کمک کند.

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

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

    دیگر موارد در رابطه با AI بسیار تخصصی هستند و به گونه یک که مستعار بیان می شوند که از طریق متن و بخش های مربوط به LISP و PROLOG  بیان می شوند .

    در سطح پائین تر مربوط به الگوریتم و ساختمان داده ها ( سطح زبان ) واقع شده است در این جا ست که زبان کاربردی برای برنامه مشخص می شود .

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

    و محدودیت های فیزیکی کامپیوتر می بایستی بر روی منابعی همچون حافظه و سرعت پردازشگر تأ کید کند . روش های PROLOG  , LISP در جهت مستعاذل کردن نیازهای سطح نشانه  و نیازهای نهفته در ساختار هر دو منبع مورد استفاده می باشند و هم چنین یک هدف هوشمند و ذهنی با اهمیت می باشند . در دنباله ما از ساختارهای سطح اطلاعات در محیطهای برنامه نویسی بر روی یک زبان کاربردی صحبت خواهیم کرد و سپس به مصزفی زبانهای عمده AI یعنی PROLOG , LISP می پردازیم .

    مدیریت ارتباط با شهروند

    بسیاری از مفاهیمی که در مدیریت ارتباط با شهروند مطرح می شوند برگرفته از مفاهیم  مدیریت ارتباط با مشتری[1] می باشد با این تفاوت که در مدیریت ارتباط با شهروند، به جای  "مشتری " ، "شهروند " و  بر روی " سرویس دهی و خدمات " تاکید می شود تا بر "فروش و پشتیبانی " . مدیریت ارتباط با شهروند به گروهی از روش های مدیریتی ، راه حل های فناورانه ی "مدیریت ارتباط با مشتری " با تکیه بر عمومی بودن آنها می پردازد. هدف آن بهبود بخشیدن "شهروند محوری" ، خدمات رسانی به شهروندان ، افزایش پاسخ گویی به شهروندان می باشد.

    اصول پایه ی مدیریت ارتباط با مشتری عبارتند از "شخصی سازی "[2] ( محصولات ، اطلاعات، خدمات) ، یکپارچگی ( فرایندهای برنامه ریزی ، فرایندهای  مهندسی مجدد کسب و کار ، گسترش محصول ) ، تعامل (  کانال ها و خط مشی ، ارتباطات ، توسعه ، براورد)  و  گزینش /تقسیم بندی ( تحلیل داده ها ، شناختن 20% مشتریانی که که 80 % سودآوری کسب و کار را تشکیل می دهند،

    پایان دادن ارتباط با مشتریانی که سودآوری ندارند). به علاوه  سنجش  کیفیت/ کارایی ، مدیریت تغییر و استراتژی ترویج  فرهنگ مشتری گرایی از مفاهیم ضروری هر پروژه ی مدیریت ارتباط با مشتری است.

    با توجه به اینکه در مدیریت ارتباط با مشتری تاکید بر  بخش خصوصی[3] است ، در مدیریت ارتباط بر شهروند تاکید بر بخش عمومی است و خدمات عمومی در دسترس همه ی شهروندان ،با تئجه به نیاز آنها قرار گرفت.

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

    ·        دریافت مالیات

    ·        صدور پروانه ی ساخت ساختمان 

    ·        استخدام 

    ·        خدمات بهداشت و درمان

    ·        ثبت نام در مقاطع تحصیلی مختلف

    ·        صدور پلاک و یا تعویض پلاک خودرو 

    ·        گواهی تولد و ازدواج

    ·        خدمات کتابخانه های عمومی

    ·        خدمات پلیس

    مدیریت ارتباط با شهروند بر ارائه ی یکپارچه ی  این خدمات  از طریق کانال های ارتباطی جدید تمرکز دارد.

    مدیریت ارتباط با شهروند از سه قسمت اصلی زیر تشکیل شده است : 

     شهروندان،  روابط با انها،  مدیریت این روابط 

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

     این روش یک مسیر ایده ال را نشان می دهد که شهروندان تمایل دارند تعاملات خود را  با سازمان های دولتی انجام دهند. در دولت الکترونیک هدف  این روش فراهم کردن کیفیت بالا  در هر مرحله و سوق دادن شهروندان به سمت مدل خود خدمتی  [4]  برای استفاده بهینه از خدمات می باشد. در واقع تقسیم بندی شهروندان با توجه به نیازهای آنها برای درک اثر متقابل این مسیر ، کمک خواهد کرد تا کاراترین   و مؤثرترین خدمات به هر گروه داده شود.در تمام طول این مسیر یک  مدیریت موفق باید بتواند تغییراتی پیوسته و مداوم در فرهنگ و روش های سازمان ایجاد کند  تا یک سیستم مدیریت ارتباط با شهروند بتواند به بهترین شکل طراحی و پیاده سازی شود.

    ارائه راهکار مدیریت ارتباط با شهروند:

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

    راهکاری که ارائه خواهد شد از دیدگاه  فناورانه ی مدیریت ارتباط با شهروند است. با این فرض که تمام خدماتی که دولت به شهروندان می دهد به سمت الکترونیک شدن پیش می رود.

    با توجه به شکل شماره  1 ، این راهکار  چهار مؤلفه زیر را در نظر می گیرد:

    شکل شماره 1 

    - کانال هایی که شهروندان به انها دسترسی دارند : وجود فناوری های فراگیری چون پست الکترونیک ، اینترنت، تلویزیون های دیجیتالی تعاملی[5] ، اینترنت بی سیم [6]   که روز به روز نیز  بر تعداد استفاده کنندگان افزوده می شود. کیوسک های اینترنت موجود نیز در نمایشگاه ها و فرودگاه ها نیز به عنوان مکمل کانال های ارتباطی دولت با شهروندان می باشد.البته تلفن و پست نیز دارای نقش قابل توجه ای هستند. پیش بینی اینکه شهروندان از چه کانال ارتباطی بیشتر  استفاده می کنند ، تا حدودی مشکل به نظر می رسد و سازمان های دولتی باید این توانایی را داشته باشند که خدمات را از تمام کانال های ممکن در اختیار شهروندان قرار دهند.

     

    - مدیریت تعامل با شهروند و جریان کاری[7]  :فراهم کردن دسترسی وسیعی از خدمات بر اساس روشی هماهنگ و کارا ، بسیار حیاتی می باشد.  مؤلفه ی مدیریت تعامل با شهروند که با جریان های کاری یکپارچه شده است، به حل این مسئله کمک می کند.

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

    - در نظر گرفتن شهروند به عنوان یک جزء منفرد [8]   : درک کامل و فهم جزئیات چگونگی تعامل

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

    برای موفقیت در رسیدن به این مؤلفه ها ، راهکار پیشنهادی از هفت مرحله زیر تشکیل شده است :

    ·        تدوین سند استراتژی شهروند 

    ·        آماده سازی  وضعیت  کسب و کار [9] 

    ·        مشخص کردن برنامه کاری سازمانی و فناورانه 

    ·        توسعه دادن فازهای طرح روش کار 

    ·        تعمید دادن بر اساس روش تکرار شونده[10] 

    ·        اندازه گیری میزان پیشرفت 

    ·        رهبری کارامد در رده های بالا 

    چارچوب روش کار مدیریت ارتباط با شهروند در شکل شماره 2  نشان داده شده است :

    شکل شماره 2

    تدوین سند استراتژی شهروند :

     باید چشم انداز شفاف از  هدف های استراتژیک ایجاد گردد.هدف هایی که نشان دهنده ی نقطه نظرات سه گروه از ذی نفعان  می باشد. این سه گروه شامل : کارمندانی که مستقیماً با شهروندان در ارتباط هستند ، مدیریت و خود شهروندان  می باشد. ایجاد چنین سندی این اطمینان را به ما می دهد که فعالیت های طراحی و پیاده سازی که در مراحل بعدی صورت می گیرد ، کاملاً در راستای اهداف تعریف شده است و  ارزش های  قابل سنجش کسب و کار  را تضمین می نماید.

    آماده سازی  وضعیت  کسب و کار:

     در این مرحله به ارزیابی تأثیر مالی استراتژی های تدوین شده ی شهروندان می پردازیم.شامل پارامترهای زیر می باشد:

    ·        پیش بینی استفاده ی شهروندان

    ·        هزینه ی تقاضای خدماتی که در سطح جدیدی مطرح می شوند. 

    ·        تأثیر استفاده از مدل خود خدمتی

    ·        سرمایه گذاری در فناوری و تغییرات سازمانی مورد نیاز

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

    مشخص کردن برنامه کاری[11] سازمانی و فناورانه :

    حالت نهایی که  آینده ی سازمان را  نشان می دهد باید به صورت شفاف از دیدگاه فناورانه و تشکیلاتی مشخص گردد.این سند شامل اندازه و شکل معماری قسمت های مختلف و تغییرات سازمانی مورد نیاز می باشد. برنامه کاری باید تمام جنبه های مورد نیاز سازمان برای گذار از وضعیت کنونی به سمت "شهروند محوری " را فراهم نماید.

     توسعه دادن فازهای طرح روش کار :

    از سه گروه فعالیت زیر تشکیل شده است :

     -برد سریع[12] : فعالیت های کم هزینه که در مدت زمان کوتاه نتیجه بخش هستند.(استفاده از بهترین تجربیات مشابه )

    -  توسعه کوتاه مدت : بهره گیری از زیر ساخت های موجود با استفاده از کمینه ی سرمایه گذاری که بازگشت سرمایه ی آن کوتاه مدت است.( گسترش یک کانال ارتباطی  )

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

    تعمید دادن بر اساس روش تکرار شونده :

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

    اندازه گیری میزان پیشرفت :

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

    رهبری کارامد در رده های بالا :

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

    نتیجه گیری :

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

     

    [2] Personalization

    [3] Private Sector

    [4] Self-Service 

    [5] Interactive digital TV(iDTV)

    [6] Wireless internet

    [7] Workflow

    [8]  Single View of Citizen

    [9] Business Case

    [10] Iterative approach

    [11] Blueprint

    [12] Quick Wins

    نویسنده : مهدیه طاهر