معرفی کدسازپارس

Cover

مقدمه

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

نزدیک سالهای 1380 در یک پروژه برای بیمه ایران فعالیت داشتم. در اون زمان با Oracle Developer 2000 و پایگاه داده های Oracle 8i کار می کردیم. خیلی جالب و هیجان انگیز بود. اما خیلی طول نکشید که متوجه شدم این کار دارای بخشهای تکراری و خسته کننده هست.

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

جریان کاری کدساز
جریان کاری کدساز

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

ساختاردرختی مدل لایه های کدساز
ساختاردرختی مدل لایه های کدساز

تاریخچه

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

نسخه بعدی بر پایه فن آوری وین فرم (Win Form) در محیط دات نت (.Net Framework)  تهیه شده بود با نام پریسا. این نسخه برنامه های کاربردی ویندوز و وب را در محیط دات نت با فن آوریهای وب فرم (Web Form)  و وین فرم تولید می کرد.

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

معماری سه لایه معروف شامل لایه های واسط کاربری (User Interface) , قوانین تجاری (Business Logic Layer)  و دسترسی به داده ها (Data Access Layer)  می باشد.

معماری سه لایه
معماری سه لایه

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

کدسازپریسا
کدسازپریسا
کدسازپریسا- صفحه ایجاد پروژه جدید
کدسازپریسا- صفحه ایجاد پروژه جدید

اگر دقت کنید سعی کردم یک مدل هسته (Code Model) به کدساز اضافه کنم, که وظیفه ساختن مدل داده های کدساز را بصورت پویا بر عهده داشته است.

 نسخه بعدی یک افزونه در محیط ویژوال استودیو بود با نام Pars که از فن آوری Domain Specific Language که مخصوص ویژوال استودیو می باشد, استفاده می کند. مدل داده های این نسخه ثابت می باشد و دلیل آن اینست که امکان ساختن پویای مدل در DSL ها وجود ندارد. کد تولید شده توسط این کدساز بیشتر در محیط وب فرم و اسبلی های مورد نیاز لایه های مختلف برنامه بود. پروژه های خوبی با این نسخه تولید شدند ولی اصولا وب فرم مشکلات فراوانی داشت, که کار کردن با آن را بسیار مشکل می کرد.

کدسازپارس 1
کدسازپارس 1

این نسخه در محیط ویژوال استودیو 2005 و 2008 کار می کرد. نسخه بعدی Pars 2 نام داشت که برای ویژوال استودیو 2010 و 2012 طراحی شده بود بعد ها برای ويژوال استودیو 2015 و 2017 هم بروزرسانی شد. این نسخه بهترین کارکرد را از خود نشان داد و پروژه های بازرسی و نظارت یانک ملت و چند پروژه بزرگ دیگر با این کدساز تولید شد. در کناربرنامه های کاربردی یک گزارش ساز(Report Generator) و یک سیستم مدیریت فرآیندهای کاری (Workflow Management System) هم توسط این کدساز تولید کردم. متاسفانه در ایران ارزشی برای مالکیت معنوی قایل نیستند و برخی افراد این محصولات را بدون اجازه اینجانب به نام خود زده اند. خبر دار شدم که گزارش ساز و سیستم مدیریت جریان کاری اینجانب را بدون اجازه اینجانب به چند بانک دیگر هم فروخته اند. کدسازها بر خلاف سایر محصولات دارای قفل نرم افزاری بودند. در برخی موارد شنیده شده که این محصول Decompile شده است.

لطفا در صورتی که این محصولات به شما فروخته شده است, به اینجانب اطلاع دهید. اطلاعات تماس من در وب سایت Parsware.com وجود دارد.

کدسازپارس 2
کدسازپارس 2

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

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

نسخه های بعدی شامل چند نسخه افزونه DSL برای ویژوال استودیو بودند, که دارای امکانات بسیار بالا وپیچیده بودند ولی از آنجایی که مدل داده های ثابتی داشتند تنها در مورد یکسری نرم افزارهای مشخص قابل استفاده بودند. بعد از این موارد یک نسخه دیگر با استفاده از وین فرم تولید کردم که در محیط ويژوال استودیو قابل استفاده بود و بصورت یک افزونه در این محیط نصب می شد. مهمترین ویژگی این نسخه این بود که می توانست مدل داده های متعددی داشته باشد و این امکان فراهم بود تا برای هرنوع برنامه کاربردی کدساز مخصوص آن برنامه را تولید کرد. این کدساز یک تحول بزرگ بود بطوریکه کدسازهای مدل Pars 2 توسط این کدساز ساخته می شدند. این امکان برای من ایجاد شد تا به هر مشتری کدساز پارس در حقیقت یک کدساز شخصی سازی شده ارائه دهم.

کدسازپارس پویا
کدسازپارس پویا

نسخه بعدی آخرین نسخه از نسل DSL ها بود که دارای پیچیدگیهای فراوانی بود, مانند Transition و  Storyboard که به این کدساز اضافه شدند. این کدساز برای محیطهای وردپرس هم تولید کد می کرد. همچنین برنامه های کاربردی وب با استفاده از فناوری Angular و برنامه های موبایل با استفاده از Ionic Framework امکان پذیر بود. تمام کدسازها از T4 برای ایجاد الگوهای کدسازی استفاده می کنند به غیر از نسخه های اولیه که دارای موتور تولید متفاوتی بودند. دلیل آنهم این بود که هنوز T4 وجود نداشت.

آخرین نسخه کدسازپارس در ویژوال استودیو
آخرین نسخه کدسازپارس در ویژوال استودیو

نسخه چند پلتفرمی

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

کدساز پارس
کدساز پارس

جمع بندی

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