مدیریت قاعده در کدباز
نويسنده:
James Owen
InfoWorld
مترجم: امين
ايزدپناه
برای شروع در نظر داشته باشید که یک high-end BRMS (سیستم مدیریت قاعده تجاری) حدود 50 هزار دلار قیمت دارد، و هزینههای نگهداری سالانه، زمان اجرا، و خدمات حرفهای میتواند مجموع این هزینهها را تا مرز نیم میلیون دلار یا بیشتر افزایش دهد؛ پس عجیب نیست که سازمانهای دارای بودجه کم به دنبال جایگزینهایی برای آن باشند. خوشبختانه، گزینههای خوبی موجود است. دو تا از بهترین ابزارهایی که هزینه پایین دارند یا حتی مجانی هستند عبارتند از Jess از Sandia National Laboratories و JBoss Rules از Jboss، جزئی از Red Hat.
چنان که سیستمهای سازمانی از قبیل Blaze Advisor محصول Fair Isaac و Jrules محصول ILOG عمل مینمایند، Jess و JBoss Rules منطق تجاری برنامههای کاربردی پیچیده جاوا را به صورت مجموعههایی از قواعد که میتوانند به سرعت و به سادگی بدون تغییر در جاوای زیرین تغییر داده شوند ارائه میکنند. اما بر خلاف سیستمهای سازمانی، نه Jess و نه JBoss رابطهای کاربری کاربرپسندی (ویرایشگر ویژوال، نمودارهای جریان، GUI صفحه گسترده) را که امکان وارد نمودن، تغییر دادن و حذف کردن قواعد را به کاربران تجاری معمولی علاوه بر برنامهنویسان بدهند فراهم نمیکنند.
بر خلاف Blaze Advisor و JRules، Jess و JBoss Rules فاقد یک مخزن قاعده کامل میباشند. Jess و JBoss Rules میتوانند با یک CVS برای کنترل نسخه یکپارچه شوند، اما این با مدیریت چرخه عمر، کنترلهای دسترسی granular، و گزارشگیری جامع که از سوی مخازن موجود در محصولات سازمانی ارائه میشود قابل مقایسه نیست. یک مخزن با ویژگیهای کامل میتواند محور یک تلاش دسته جمعی بین توسعه دهندگان و تحلیلگران تجاری باشد، و قابلیتهای گزارشگیری غنی میتوانند کمکهای اساسی برای اشکالزدایی و بهینهسازی محسوب گردند.
البته، رویکرد کدبازی که Jess و JBoss دارند دارای مزایایی میباشد. هم Jess و هم JBoss Rules توسعه دهندههایی در اقصی نقاط دنیا دارند که همواره در حال یافتن و اصلاح باگها، پیشنهاد دادن ویژگیهای جدید، نوشتن کد جدید، و در واقع خدمترسانی به عنوان گروه مهندسی بدون دستمزد برای این محصولات هستند. کارکنان IT شما میتوانند، با راهنمایی انجمن کاربری Jess یا JBoss Rules یا مشاوران دیگر، یک GUI صفحه گسترده کاربرپسند، یک ویرایشگر جریان ویژوال، و سایر ویژگیهایی که ممکن است شما خواهان آنها باشید را توسعه دهند، اما چنین اعمالی نیازمند کارکنان زیاد، آموزش و سرمایهگذاری در طی چندین ماه یا سال است.
خلاصه این که Jess و JBoss Rules برای پروژههای کوچکتر مناسب هستند، جایی که یک مخزن قاعده و قابلیتهای اشکالزدایی و گزارشگیری جامع نیاز اساسی محسوب نشوند، و جایی که توسعه و نگهداری قاعده بتواند به یک یا چند برنامهنویس معین واگذار شود.
Jess 7.0 محصول Sandia Labs
Jess، محصول Sandia Labs و دکتر Ernest Friedman-Hill، تا جایی که من میدانم نخستین پیادهسازی یک سیستم مبتنی بر قاعده در جاوا بود. Jess بیشتر یک پورت مستقیم از بخشهای محبوبتر CLIPS (C-Language Interface to Production Systems)، یکی از پروژههای NASA، بود. پس از آن، تعدادی از سیستمهای high-end، از قبیل JRules محصول ILOG و Blaze Advisor محصول Fair Isaac، پا به عرصه گذاشتند. در سالهای بعد، Friedman-Hill همواره این رویکرد را حفظ نمود که Jess یک ابزار برای برنامهنویسان باشد، نه چیزی برای تحلیلگران تجاری معمولی. این توصیف همچنان صدق میکند.
Jess در پنج شش سال گذشته با یک سری ویژگیها به روز رسانی شده است: قابلیت منطق فازی برای مسائل منطقی واقعا دشوار، backward-chaining برای مسائل مدیریت منابع و پیکربندی، یک Eclipse IDE که یک قابلیت اشکالزدایی و توسعه GUI مناسب را فراهم میسازد، و توانایی برقراری ارتباط مستقیمتر با Java Beans، با استفاده از یک روش ایستا یا پویا را دارد. در روش ایستا، Java Beans به عنوان اشیائی برای مورد استفاده قرار گرفتن در قواعد و به روز رسانی شدن در واکنش به تغییرات درونی (درون موتور Jess) در نظر گرفته میشوند. روش پویا Java Beans خارجی را در واکنش به تغییرات خارجی به روز رسانی مینماید، بنابراین برنامههای کاربردی real-time را پشتیبانی مینماید.
Jess از ابتدا به صورت یک سیستم باز برای استفاده شخصی (100 دلار با سورس کد) باقی مانده است و به سادگی برای اغلب سازمانها قابل تهیه است، اما برای یک مجوز تجاری کامل شامل سورس کد بدون هزینههای زمان اجرا تا 15 هزار دلار قیمت دارد.
رابط جدید Eclipse عالی است. این GUI حتی شامل مشخصهای است که اغلب ابزارهای high-end BRMS آن را ارائه نمیکنند: یک ارائه گرافیکی از شبکه Rete، چیزی که فقط یک حرفهای واقعی قدر آن را میداند. برای اشکالزدایی، آن امکان استفاده از break point را درون قواعد و نه فقط در فراخوانیهای متد سمت راست فراهم میسازد. این بدان معنی است که شما نمیتوانید هر جایی درون یک قاعده break کنید. برای مثال، شما نمیتوانید اجرای قواعد را در نقاط معینی در سمت چپ متوقف کنید و Agenda Table را بررسی نمایید، یا مقدار هر کدام از صفات شیء را، و مواردی از این قبیل – اطلاعاتی که در اشکالزدایی به میزان قابل توجهی کمک کننده هستند. و، برای افراد مبتدی، خروجی غیر قابل درک است: فرد مبتدی برای درک نتایج باید به مستندات مراجعه نماید.
به علاوه، اشکالزدا ویژگیهای اساسی را در اختیارتان قرار میدهد – عمدتا، یک توصیف از استثناءهایی که Jess تولید میکند. آن میتوانست با گزارشگیری بر روی قاعدهای که بیشترین دفعه فراخوانده شده است، قاعدهای که بیشترین زمان اجرا را به خود اختصاص داده است، تداخلهای بالقوه قاعده، subsumption بالقوه قاعده و مواردی از این قبیل به میزان چشمگیری بهبود یابد. اما در این صورت، Jess 50 هزار دلار قیمت خواهد داشت. برای پیادهسازی Jess، شما باید از شخصی که چگونگی اشکالزدایی جاوا را میداند و شخصی که از نحوه اشکالزدایی قواعد اعلانی (declarative) آگاه است کمک بگیرید.
درک نحو کد برای اغلب برنامهنویسان C/C++ یا جاوا یا C# دشوار است. نحو قاعده باید از حالت فعلی CLIPS پیروی نماید. هر چند که Eclipse در تمام موارد مفید واقع شده، اما آن ظاهر زیبایی را برای نحو CLIPS فراهم نساخته است. از دیدگاه مثبت، کد Jess بسیار خلاصهتر از کد معادل در JBoss Rules یا برخی موتورهای BRMS دیگر است. بعضی از کاربران (شامل E-Loan) یک رابط نوشتهاند که ظاهر مناسبتری را برای کد Jess زیرین فراهم میکند.
علاوه بر افزودن ویژگیها، Jess همواره به طور منظم کارآیی را در تستهای استاندارد بهبود بخشیده است. آن معمولا در ردهای بین سریعترین محصولات تجاری و محصولات مجانی جاری اجرا میشود. برای بررسی صورت گرفته در این مقاله، من Jess را به دو روش تست کردم، یک بار با استفاده از اشیاء درونی و بار دیگر با استفاده از Java Beans خارجی، که اندکی کندتر اجرا میشود. در تست Manners 128 (بر روی ویندوز XP) Jess اجرا را در 27 و 38 ثانیه کامل نمود؛ JBoss Rules 21 ثانیه وقت صرف نمود. در Waltz 50 (بر روی Mac OS X)، Jess تست را در 22 و 32 ثانیه اجرا کرد؛ JBoss Rules 25 ثانیه زمان صرف کرد. در مقایسه با پیشگامان بازار، Jess سریعتر اجرا شد یا حتی با JRules استاندارد و مراحل متعدد در OPSJ، Blaze Advisor، و JRules بهینه شده. زمانهای آنها برای Manners 128 و Waltz 50 تک رقمی بود، و برای OPSJ بر روی Waltz حتی کمتر از یک ثانیه.
مستندات یک محصول کدباز یا shareware معمولا مفصل نیست، اما در مورد Jess این گونه نیست. در سال 2003، Friedman-Hill کتابی به نام Jess In Action: Java Rule-Based Systems منتشر کرد که هر چند مبتنی بر یک نسخه قدیمی از Jess است، اما هنوز برای محصول کنونی بسیار کاربرد دارد. Friedman-Hill همچنین یک راهنمای آنلاین به روز را اداره مینماید، و Java Docs بسیار خوب است. تنها چیزی که من فقدان آن را احساس کردم یک ایندکس برای محتویات آنلاین بود.
در نهایت، Jess User Group شاید یکی از بهترینها در دنیا باشد. Friedman-Hill، Jason Morris، و Bob Orchard پیوسته بر این گروه نظارت دارند و حداکثر ظرف 24 ساعت به سوالات شما پاسخ میدهند. هر چند که پاسخ سریع یک تضمین محسوب نمیشود (چون در هر حال این یک گروه پشتیبانی است)، من دریافتم که این سه معمولا زمانهای پاسخ گروههای پشتیبانی فنی ILOG و Fair Isaac را مغلوب مینمایند.
JBoss Rules 3.2
آن تا اواخر سال گذشته وجود نداشت، هنگامی که JBoss اقدام به خرید Drools (Dynamic Rule Object-Oriented Language System) نمود و Mark Proctor مدیر پروژه Drools را به خدمت گرفت، Jess یک رقیب واقعی در حوزه کدباز پیدا کرد. اکنون JBoss Rules جایگزین Drools شده است و نسخه فعلی آن 3.2 میباشد. من باید بر روی شماره دقیق نسخه برای JBoss Rules تاکید کنم زیرا آن آن به سرعت در حال تغییر است و به صورت ماه به ماه پیشرفتهای بسیار زیادی را تجربه میکند. برای کاربران این بسیار خوب است.
قبل از پیوستن JBoss، نحو Drools در فرمت قبلی XML خود تقریبا غیر قابل خواندن بود، و بسیاری از اصول rulebase وجود نداشت: ویژگیهایی از قبیل پشتیبانی پرس و جو، قواعد پویا، یک سیستم نگهداری درستی (truth)، و حتی عملگرهایی از قبیل "and"، "or"، "not"، "not های تو در تو"، "exists"، "exist تو در تو"، "for all"، "accumulate"، "from" و غیره. برای JBoss Rules 3.0، مدیر ارشد Mark Proctor، XML ناخوانا را به یک IDE ساده (دقیقا همان رابط Eclipse 3.2 که Jess مورد استفاده قرار میدهد) تبدیل کرد. JBoss حتی نسخه گرافیکی شبکه Rete را پیادهسازی نموده است – درست همانند Jess. در مقایسه با کد Jess، کد JBoss به سادگی قابل خواندن و درک شدن است. اغلب تحلیلگران تجاری میتوانند آن را یک روزه با کمک برنامهنویس جاوا فرا بگیرند.
البته XML هنوز در آنجا وجود دارد، و شما میتوانید از ANTLR (ANother Tool For Language Recognition) برای نوشتن زبان پارسینگ خودتان استفاده کنید، شبیه (اما نه به سادگی) چیزی که ILOG و Blaze با GUI هایشان انجام میدهند. از سوی دیگر، رویکرد JBoss بسیار قدرتمندتر است چرا که شما میتوانید یک زبان Haley BRMS، Jess، JRules یا Blaze Advisor ایجاد نمایید، با هر نحوی (syntax) که ممکن است نیاز داشته باشید، و آن کد را به انجمن JBoss Rules اعطا کنید.
همانند Jess، بر روی JBoss Rules در اقصی نقاط کار میشود، و مستندات آن نیز همین وضعیت را دارد. گروه جهانی JBoss Rules بیشتر شامل برنامهنویسانی است که به نوشتن آخرین نسخه کمک میکنند. گروه جهانی Jess شامل برنامهنویسان، مبتدیان، دانشجویان، استادان، پژوهشگران و تقریبا هر شخصی است که ممکن است نیازمند کمک باشد. Jess در لیست خود بحث فنی پیشرفته را حمایت نمیکند، در حالی که شما میتوانید اندکی از آن را در JBoss Rules wiki بیابید.
تنها چیزهایی که JBoss Rules ندارد اما Jess دارای آنهاست عبارتند از منطق فازی، backward chaining، اشیاء درونی، اشیاء shadow، و دکتر Ernest Friedman-Hill – اما آنها یک Friedman-Hill خوب همچون Mark Proctor دارند. JBoss Rules همچنین از لحاظ کارآیی بسیار به Jess نزدیک است. قیمت/کارآیی آن هم همینطور زیرا JBoss Rules مجانی است.
JBoss Rules چه چیزی دارد که Jess ندارد؟ آن چیزی مانند جدولهای تصمیم در Blaze و Jrules دارد. اما به جای این که شما ابتدا یک GUI با ظاهر صفحه گسترده ایجاد نمایید و سپس قواعد را در پس زمینه ایجاد کنید، یک قالب قواعد ایجاد مینمایید که GUI مشابه صفحه گسترده را تولید میکند، و سپس مقادیر را در خانهها میریزید. این چندان جالب به نظر نمیرسد، اما به کاربر تجاری این امکان را میدهد که پا به پا با برنامهنویس کار کند.
JBoss Rules 3.2 یک موتور استنتاج صادق مبتنی بر Rete با یک اشکالزدا و GUI توسعهدهندهی Eclipse 3.2 است. اشکالزدا دقیقا در لحظه عمل نمیکند، اما Mark Proctor به سختی مشغول کار بر روی آن است و به زودی آن را تغییر خواهد داد. Proctor و شرکت همچنین مشغول توسعه یک Rule Server میباشند.
قواعد کدباز
JBoss Rules و Jess هم از لحاظ طراحی و هم از لحاظ کارکرد شبیه هم هستند. هیچ کدام یک انتخاب خوب برای یک پروژه سازمانی سریع یا برای یک برنامه کاربردی بزرگ نیازمند ورودی از تعداد زیادی تحلیلگر یا کاربر تجاری محسوب نمیشوند. اما هر دو برای برنامههای کاربردی تجاری که از کمتر از 1000 قاعده و 100 شیء استفاده میکنند (که اغلب برنامههای کاربردی را در بر میگیرد) مناسب هستند.
کدام یک از آنها را انتخاب کنیم؟ اگر شما به خصوص در مورد قیمت حساس هستید، در این صورت JBoss Rules گزینه مورد نظر شماست؛ آن مجانی است. در صورتی که شما به دنبال یک شبکه رسمی از شرکای خدماتی هستید، یا اگر خواهان رویکرد کدباز مناسبی هستید که به جای پشتیبانی کاربر بر توسعه تمرکز داشته باشد، باز هم JBoss گزینه برگزیده شما خواهد بود.
از سوی دیگر، اگر شما خواهان ثبات بیشتر هستید، بر مبنای یک تاریخچه طولانیتر برای محصول و یک انجمن کاربر با قدمت بیشتر، با انتخاب Jess راه را اشتباه نرفتهاید. همچنین، اگر پروژه شما نیازمند منطق فازی یا backward chaining ساده است، Jess این قابلیتها را ارائه مینماید، اما JBoss خیر.
| نتیجه نهایی | Jess 7.0 |
| شرکت | Jess |
| امتیاز شفاهی | خوب |
| امتیاز عددی | 7.3 |
| محک | امتیاز | ارزش |
| ابزارهای توسعهدهنده | 6.0 | 30.0 |
| کارآیی | 7.0 | 20.0 |
| مستندات | 8.0 | 20.0 |
| Setup | 9.0 | 10.0 |
|
پشتیبانی |
8.0 | 10.0 |
| هزینه | 8.0 | 10.0 |
محصول: Jess 7.0
قیمت: نسخه کامپایل شده برای استفاده شخصی مجانی است؛ نسخه سورس کد کامل تحت یک مجوز مجانی به موسسات دولتی و دانشگاهی عرضه میشود؛ 5 هزار دلار در ازای هر سرور برای نسخه سورس کد به منظور استفاده داخلی برای شرکتهای تجاری؛ 15 هزار دلار به ازای هر برنامه کاربردی یا محصول برای سورس کد برای توزیع تجاری؛ هیچ هزینهای برای زمان اجرا وجود ندارد.
پلاتفرمها: نیازمند JDK 1.4 یا بعد از آن است.
نتیجه نهایی: Jess یک BRMS جاوا است که آزمایش خود را پس داده و توسط یک انجمن عالی و مستندات خوب پشتیبانی میشود. قیمت آن مناسب است و کارآییاش خوب است، اما اشکالزدایی آن محدود میباشد، جای گزارشگیری در آن خالی است، و نحو آن همچنان از نوع پیچیده OPS CLIPS است که از دوران LISP حفظ شده است. Jess معمولا در برنامههای هوش مصنوعی دانشگاهها مورد استفاده قرار میگیرد، بنابراین مشابه بسیاری در صنعت دارد.
| نتیجه نهایی | JBoss Rules 3.2 |
| شرکت | JBoss (Red Hat) |
| امتیاز شفاهی | خوب |
| امتیاز عددی | 7.4 |
| محک | امتیاز | ارزش |
| ابزارهای توسعهدهنده | 7.0 | 30.0 |
| کارآیی | 7.0 | 20.0 |
| مستندات | 7.0 | 20.0 |
| Setup | 9.0 | 10.0 |
| پشتیبانی | 7.0 | 10.0 |
| هزینه | 9.0 | 10.0 |
محصول: JBoss Rules 3.2
قیمت: مجانی کدباز
پلاتفرمها: نیازمند JDK 1.4 یا بعد از آن است (JDK 1.4.2 توصیه میشود)
نتیجه نهایی: JBoss Rules بسیار به Jess نزدیک است و از بسیاری جهات با آن مطابقت دارد، با توجه به نرخ رشد سریع توسعه آن، باید تا انتهای سال 2007 به کیفیت تجاری حقیقی دست یابد. در حالی که سرعت آن خوب است و با Jess همتراز میباشد، اشکالزدایی آن دشوار است و گزارشگیری بر روی تحلیل قاعده محدود شده است. از دیدگاه مثبت، محصول مزبور مجانی است و پشتیبانی (در ازای پرداخت هزینه) از سوی JBoss و شرکای خدماتی آن ارائه میگردد.
Copyright 1998-2006 PC World Iran All
rights reserved.
Copyright 1977-2006 Electronics and Computer
Magazine (GSRP). All rights reserved.
Copyright 2000-2006.
International Data Corp. Inc.. All right Reserved.