مقایسه سیستم ساز و برنامه نویسی

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

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

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

توجه به زیرساختهای آماده در تولید نرم افزارهای سازمانی

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

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

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

  • توجه به معماری کلان سیستم و نظام مند بودن روال تولید نرم افزار

  • مدیریت سایت و تیم تولید

  • ساختارهای ذخیره و بازیابی اطلاعات

  • مدیریت قوانین کسب و کار

  • مدیریت گردش کارهای سازمانی

  • مدیریت کارتابل و ساختار گردش اطلاعات

  • قابلیت گزارش سازی پویا و ساخت انواع خروجی

  • مدیریت اطلاعات پایه سازمانی شامل کاربران، ساختار سازمانی و …

  • مدیریت امنیت اطلاعات و سیستم

  • رویدادنگاری و مدیریت خطا و رخداد

  • توزیع شدگی ساختار و اطلاعات

  • ملاحظات بروزرسانی نرم افزار

  • مدیریت انتقال اطلاعات

  • راهبری توزیع شده و چندسطحی

  • واسط کاربری و دلخواه سازی طراحی

  • مدیریت تنظیمات اجرایی سامانه

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

  • پشتیبانی از تعداد کاربر همزمان بالا

  • پشتیبانی از روشهای نگهداری توزیع شده داده های حجیم

  • و غیره

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

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

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

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

حجم کارهای اضافه و تکراری در فرآیند تولید نرم افزار

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

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

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

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

سرعت تولید و چابکی در اعمال تغییرات و بروزرسانی نرم افزار

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • انعطاف، تغییر و توسعه کامل محصول مبتنی بر نیاز مشتری

  • تداوم حفظ کارکرد سامانه در تغییر فناوری

  • امکان ارائه امکانات مختلف به مشتری

  • یکپارچگی 100% سامانه ها و فرآیندهای اجرایی

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

بسیاری موارد دیگر، همگی از مزایای توسعه بسته های نرم افزاری مبتنی بر سیستم ساز میباشد.

تصور محدودیت درپیاده سازی قوانین و محاسبات پیچیده

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

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

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

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

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

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

برای ملاحظه و مشاهده برخی پروژه های انجام شده میتوانید به بخش تجارب مشتریان و پروژه ها مراجعه فرمائید.

پشتیبانی پذیری سامانه های تولید شده

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

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

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

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

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

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

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

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

قابلیت انتقال بین پلتفرم های مختلف

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

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

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

به عنوان مثال موارد زیر هم اکنون در زیرساخت سیستم ساز برسا بطور
کامل پیاده سازی شده است:

  • امکان استفاده از دیتابیس SQL Server و اوراکل به انتخاب مشتری (قابلیت اضافه کردن دیتابیسهای دیگر نیز در صورت نیاز وجود دارد.)

  • امکان اجرا در قالب کلایت ویندوز

  • امکان اجرا در قالب وب با استفاده از فریمورک ExtJs

  • امکان اجرا در قالب وب با استفاده از فریمورک Angular

  • امکان اجرا در قالب وب با استفاده از فریمورک react

  • امکان اجرا در قالب PWA

  • امکان اجرا در قالب اپلیکیشن موبایل اندروید

  • امکان اجرا در قالب اپلیکیشن موبایل IOS

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

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

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

اوپن سورس واقعی

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

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

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

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

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

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

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

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