PERSiX-QL (سه شنبه 87/2/10 ساعت 10:0 عصر)
در جلسه روز چهارشنبه مورخ 28/6/1386 کمیته حق اختراع نرم افزار دبیرخانه شورای عالی انفورماتیک کشور، موضوع ادعای آقایان کسری نوایی مطلق، سارو تصدیقی، بابک عباس صیرفی و پیام کریسانی مطابق با معیارهای اختراع شناختند. ادعای مذکور شامل دو بخش مجزا میباشد. خلاصهای از موضوع مورد ادعا به شرح زیر میباشد:
استفاده از یک زبان واسط برای ساختیافته کردن و وارد نمودن مفاهیم Oriented به ساختار کلان Queryها
مقدمه
قبل از هر چیز توجه به این واقعیت ضروری است که صنعت امروزی نرم افزار، با مشکلی مواجه است که میتوان آن را با چنین گزارهای تشریح کرد: «ساخت یافته نبودن زبانهای Query مبتنی بر ، مورد استفاده در DBها». البته در ادامه این مطلب، مشکل مزبور را با عبارت مختصر «ساخت یافته نبودن» مورد اشاره قرار میدهیم. اغلب نرمافزارهای مبتنی بر Database و یا حتی نرمافزارهایی که در بعضی بخشهای خود از پایگاههای دادهای استفاده میکنند، برای دریافت اطلاعات مورد نیاز خود، معمولا از زبانهای Base، همچون SQL استفاده میکنند.
اما مقصود از «ساخت یافته نبودن» چیست؟ به طور معمول در برنامههای مبتنی بر Database چندین Query مختلف وجود دارد که هر یک در قسمتی از برنامه مورد استفاده قرار میگیرد. مدیران شرکتهای نرمافزاری و برنامهنویسان، بخصوص دستهای از آنها که در زمینه برنامههای مبتنی بر Database تخصص و تجربه زیادی دارند، میدانند که بخش مهمی از زمان و هزینه کل پروژههای نرمافزاری، صرف فکر کردن روی Queryها (یا همان پیدا کردن راه حل)، پیادهسازی و آزمایش (یا همان Debug (Queryها میشود. اما آیا زیاد بودن این زمان، زاییده مشکلی خاص است و یا اینکه ماهیت امر، به طور طبیعی موجب ازدیاد زمان میشود؟ مشکل این است که برنامهنویس برای هر یک از Queryهای موجود در برنامه، باید به عنوان یک مسئله مجرد (بیارتباط به سایر Queryها) فکر کرده، Query مزبور را پیادهسازی نموده و عملیات تست را روی آن انجام دهد. در واقع طراحی و پیادهسازی یک Query بجز این که باعث افزایش تجربه برنامهنویس (به طور عام، در ساخت Queryها و به طور خاص، در درک بهتر روابط میان اجزای اطلاعاتی پروژه در دست اجرا) میشود، هیچ کمک دیگری برای تسریع در حل کردن، پیادهسازی و یا تست کردن سایر Queryهای برنامه نمیکند.
از سوی دیگر بخش اعظم مدلهای نرمافزاری امروز، به شکل قابل قبولی به سمت پیروی از مدل Oriented گام برداشتهاند و پیشرفتهای قابل توجهی را در این راستا به دست آوردهاند. اما در این میان، رابطه برنامه (در واقع برنامهنویس) با پایگاههای داده، در سطح کلان خود، از موهبت شیگرایی برخوردار نیست. زبانهای جدید ارتباط با پایگاههای داده، همچون SQL-2003 و Middlewareهای پیشرفتهای نظیر EJB-QL، با هدف دستیابی به امکانات بلافصل Oriented توانستهاند مفاهیم پایه آن را وارد جزئیات Queryها کنند. بدین معنی که ساختار کلان Queryها، همان ساختار رابطهای (Relational) است، اما اطلاعات موجود در Tableها را بجای اینکه دادههای ساده و یا به عبارت دیگر Recordها تشکیل دهند، هایی تشکیل میدهند که میتوانند از مفاهیم Oriented پشتیبانی کنند. در چنین سیستمی قلمروی فرمانروایی شیگرایی، تنها در محدوده یک یک های موجود در سیستم خواهد بود و روابط میان ها و نیز روابط خارجی هر (مفاهیم تعریف شده روی یک که به سایر های موجود در سیستم مرتبط هستند)، هنوز تحت پوشش منطق رابطهای قرار دارند.
PERSiX-QL چیست؟
PERSiX-QL که از لحاظ منطقی به دو بخش PERSiX-S و PERSiX-O (که به عنوان دو اختراع جداگانه ثبت شدهاند) تقسیم میشود، یک Middleware است که از طریق یک زبان واسط، رابطه میان برنامه و پایگاه داده را برقرار میکند. این زبان دارای ویژگیهایی است که استفاده از آن مشکلات مطرح شده در مقدمه این چکیده را رفع میکند.
PERSiX-QL (در بخش PERSiX-S)، این ویژگی را در اختیار برنامه نویس میگذارد که بتواند Queryها را به صورت ساختیافته طراحی و پیادهسازی کند. این بدان معنی است که در هنگام طراحی Queryهای یک پروژه بزرگ، میتوان مسایل را به مسایل کوچکتری تقلیل داد و در واقع هر بخش پیچیده از مسئله را از ترکیب بخشهای سادهتری به دست آورد. از سوی دیگر امکان ساخت Queryهایی فراهم میشود که بتوان از آنها در ساخت چندین Query پیچیدهتر استفاده نمود. به همین شکل، استفاده از این زبان باعث میشود که سایر مزایای ذاتی ساختیافتگی، همچون خوانایی کد، سهولت اشکالیابی و اشکالزدایی و ... نیز به منصه ظهور برسند. در PERSiX-S هر Query (مانند مفاهیم تابع در برنامهنویسی ساختیافته)، دارای پارامترهای ورودی و مقادیر خروجی است که میتوانند بهترتیب از طریق خروجی سایر Queryها مقداردهی شوند و نیز در مقادیر ورودی سایر Queryها مورد استفاده قرار گیرند.
از سوی دیگر PERSiX-QL (در بخش PERSiX-O)، امکان پشتیبانی ساختار کلان Queryها را از مفاهیم Oriented فراهم میکند. بدین معنی که در PERSiX-QL، یک پروژه به Classها، Methodها و ها تقسیم میشود و نکته مهم این است که Queryها در این سیستم، چیزی بجز همان Methodهای تعریف شده روی Classها نخواهند بود. در PERSiX-QL لازم است برای ساخت یک Query (در واقع یک Method)، برخی از Queryهای (Methodهای) مربوط به یا های ورودی فراخوانی شوند، یا خروجی برخی از آنها به عنوان ورودی به سایر Methodها ارسال گردند و یا ...
به هر حال این مدل، همان مدل آشنای ساخت یک Method در یک محیطهای شیگرا میباشد. در PERSiX-QL امکان ارثبری چندگانه بین Classها وجود دارد. همچنین در Methodهای (Queryهای) PERSiX-QL ، عواملی همچون Polymorphism و Virtual Overriding)Abstraction) پشتیبانی میشوند که در نتیجه، امکان طراحی لایههای Abstract مرتبط با اطلاعات موجود در پایگاه داده فراهم شده و بحث Virtual Query، نه فقط در محدوده یک بلکه با استفاده از اطلاعات موجود در کل محیط پایگاه داده و تعاریف خارجی یک ، امکانپذیر خواهد بود.
پدید آورندگان
روند تولید PERSiX-QL توسط تیمی متشکل از آقایان کسری نوایی مطلق، سارو تصدیقی، بابک عباس صیرفی و پیام کریسانی انجام شده است و دو اختراع PERSiX-S و PERSiX-O (مطابق مرزبندی منطقی مورد استفاده در PERSiX-QL) به نام همین افراد و در تملک معنوی آنها به ثبت رسیده است. همچنین PERSiX-QL یکی از محصولات شرکت نرمافزاری کیان (فراگامان کیان شهر - 267470) به شمار میرود و از لحاظ مالکیت مادی، متعلق به این شرکت است.