صاحبان کسبوکار هنگام تهیه فهرست نیازهای یک پروژه ERP، باید فهرستی از تکنولوژیهای مورد نیاز برای توسعه سیستم ERP خود داشته باشند.
وقتی کسبوکار خود را آغاز کردید، کوچک و ساده بود؛ اما با گذشت زمان، سازمان شما بزرگتر و پیچیدهتر شد و در نتیجه احساس کردید نیاز به ورود تکنولوژیهای جدید به سازمانتان دارید. در این هنگام لازم بود که سیستمی برای انجام امور مالی، حسابداری، بودجه، کنترل موجودی، مدیریت پروژه، مدیریت فروش، مدیریت ارتباط با مشتریان CRM، مدیریت پرسنلی و ... تهیه کنید.
بدیهی است که برای هریک از این عملیات نرمافزارهای مجزا (جزیرهای) وجود دارد که ارتباطی با یکدیگر ندارند و هریک نیازمند رمز عبور، سطح دسترسی، مهارت کاربری، گزارشگیری و ... متفاوت میباشند.
به علاوه، ممکن است توسعهدهنده این سیستمها شرکتهای نرمافزاری مختلف باشند که از تکنولوژیهای متفاوتی استفاده میکنند؛ در نتیجه نمیتوانید برای این سیستمها مدیریت یکپارچهای داشته باشید.
نتیجه، کاهش بهرهوری تیم شما است؛ انجام فرایندهای ساده کسبوکار زمان زیادی میبرد و هر روز با مشکلات مختلفی روبرو میشوید.
سیستم برنامهریزی منابع سازمان (ERP) یک نرمافزار مدیریت کسبوکار است که کلیه فرایندهای سازمانی شامل تولید (تدارکات، توسعه محصول، داراییها، موجودی)، مالی و لجستیک (برنامهریزی، زنجیره تامین)، پرسنلی/حقوق و دستمزد (پروژهها، استعدادیابی، تجربه مشتری)، بازاریابی و فروش را بهصورت یکپارچه مدیریت میکند.
اگرچه ممکن است در شرایط فعلی همه این فرایندها را در سازمان خود نداشته باشید، اما احتمالا در آینده با گسترش سازمان، نیاز به سفارشیشدن نرمافزار ERP برای شما به وجود خواهد آمد. به همین دلیل، سیستمهای ERP بر اساس نیازهای هر سازمان از ماژولهای متعددی تشکیل شدهاند. مثلا، در حال حاضر نیازی به ماژول برنامهریزی محصول ندارید و در نتیجه نیازی به اضافه کردن آن به سیستم ERP شما نخواهد بود.
اغلب صاحبان کسبوکار و مدیران سطح C دانش IT ندارند و در نتیجه با تکنولوژیهای وابسته به ERP آشنا نیستند. در حقیقت، اگر اطلاعی درباره تکنولوژیهای سیستمهای ERP ندارید، متن حاضر به شما در تصمیمگیری بهتر کمک میکند.
اصطلاحاتی که در توسعه سیستم ERP از توسعهدهندگان آن میشنوید عبارتند از: بستر (platform)، یعنی سختافزار (مثلا کامپیوتر) و نرمافزاری (سیستم عامل) که برنامههای کاربردی (مانند سیستم ERP) بر روی آن اجرا میشوند؛ زبان برنامهنویسی، ترکیبی از libraries، frameworks و server stack است که در روند توسعه راهکارهای نرمافزاری مورد استفاده قرار میگیرند (server stack نرمافزاری است که اجازه انجام عملیات را صادر میکند)؛ فریمورک (framework)، چند کلاس و فرایند از پیش تعریف شده که توسعهدهنده برای افزایش سرعت کار از آنها استفاده میکند. اساسا، اینها ابزاری هستند که به توسعهدهنده در کدنویسی کمک میکنند.
در مهندسی نرمافزار، برای کاهش پیچیدگی و تسهیل در امر نگهداری و اعمال تغییرات در سیستمهای نرمافزاری، به چند زیر سیستم تقسیم شده و قسمتهای مستقل سیستم را بهصورت لایههای جداگانه و مستقل از هم طراحی میکنند. هریک از این لایهها ضمن اینکه وظیفه خاص خود را دارند، با هم در ارتباط میباشند؛ بهطوریکه هر لایه به لایههای بالایی و پایینی خود سرویس داده و از آنها سرویس میگیرد. انتقال دادهها در بین این لایهها از طریق Objectهایی که اصطلاحا DTO نامیده میشوند، انجام میگیرد و کاربر نهایی فقط با لایه بیرونی در ارتباط است و کاری با لایههای دیگر ندارد. به این روش طراحی سیستمهای نرمافزاری، معماری چندلایه یا N-Tier گفته میشود.
معماری ۳ لایه حالت خاصی از معماری چند لایه میباشد و سیستمها بر اساس این معماری به ۳ لایه جداگانه تقسیم میشوند. این لایهها عبارتند از:
Presentation Layer (لایه نمایش): این لایه که به آن Interface یا UI نیز گفته میشود، شامل تمام عناصر قابل رویت مربوط به رابط گرافیکی کاربر میباشد و در واقع هر آنچه را که کاربر نهایی (استفادهکننده) از سیستم مشاهده میکند از قبیل فرمها، کنترلهای روی فرمها، تصاویر، منوهای برنامه و... در این لایه قرار میگیرند. کاربر سیستم فقط با این لایه در ارتباط بوده و ارتباطی با دیگر لایهها ندارد و در واقع درخواست خود را از طریق لایه نمایش به لایههای زیرین انتقال میدهد. وظیفه لایه نمایش این است که اطلاعات لازم را از کاربر گرفته و در صورت لزوم برخی Validation یا اعتبارسنجیهایی که باید در این لایه انجام گیرد مثل: کنترل طول فیلدها، کنترل اجباری بودن بعضی فیلدها و... را انجام میدهد و این اطلاعات را برای هرگونه پردازش لازم دیگری به لایه بعدی ارسال مینماید و در واقع هیچ اثری از منطق اصلی برنامه و اتصال به بانک اطلاعاتی در این لایه دید نمیشود.
نرمافزار ERP تیمیار UI اختصاصی (UI framework) خود را دارد که با زبانهای برنامهنویسی Html5، CSS، java Script / jQuery و Bootstarp نوشته شده است.
از جمله ویژگیهای آن میتوان به واکنشگرا (ریسپانسیو) بودن، کاربری آسان، سرعت بالا، کاربرپسند بودن آن اشاره کرد.
Business Logic Layer (لایه منطق تجاری): این لایه که به آن لایه میانی (Middle Tier) نیز گفته میشود، حاوی منطق اصلی برنامه بوده و وظیفه ارتباط بین لایه نمایش (UI) و لایه داده را برعهده دارد. در واقع کلیه درخواستهایی که در اثر تعامل کاربر با لایه نمایش ایجاد شده است، به این لایه منتقل شده و پردازشهای لازم براساس منطق اصلی برنامه در این لایه انجام شده و نتیجه این پردازش مجدداً به لایه نمایش منتقل و برای کاربر به نمایش درمیآید. میتوان گفت که وظیفه اصلی لایه منطق برنامه اعمال منطق اصلی برنامه برروی درخواست کاربران و برقراری ارتباط بین لایه نمایش و لایه داده است.
معمولا، این لایه با زبانهای برنامهنویسی همچون Java ،.Net ،Python ،C++ ،C و ... نوشته میشود. زبانهای برنامهنویسی به 4 دسته شئگرا، رویهای، کاربردی و منطقی دستهبندی میشوند که در ادامه به شرح مزایا و معایب هریک از آنها میپردازیم:
Java
جاوا (Java) یک زبان برنامهنویسی شئگراست که برای اولین بار توسط جیمز گوسلینگ در شرکت سان مایکروسیستمز ایجاد شد و در سال ۱۹۹۵ بهعنوان بخشی از سکوی جاوا منتشر شد. زبان جاوا شبیه به C++ است، اما مدل شیءگرایی آسانتری دارد و از قابلیتهای سطح پایین کمتری پشتیبانی میکند. یکی از قابلیتهای اصلی جاوا این است که مدیریت حافظه را بهطور خودکار انجام میدهد، ضریب اطمینان عملکرد برنامههای نوشتهشده به این زبان بالا است و وابسته به سیستمعامل خاصی نیست؛ به عبارت دیگر میتوان آن را روی هر رایانه با هر نوع سیستمعاملی اجرا کرد. جاوا بیشتر بهعنوان یک زبان پیادهسازی سطح پایین شناخته میشود؛ سرعت بالایی ندارد؛ افزونه مرورگر جاوا مشکلات امنیتی خاص خود را دارد و محیط میزبان زبان اجرا یا (Runtime) نیز در رایانه بهطور مرتباً نیاز به بروزرسانی دارد.
Net.
این زبان برنامهنویسی در اصل توسط شرکت مایکروسافت برای توسعه برنامههای ویندوز طراحی شده بود، اما امروزه با محیطهای غیر از ویندوز نیز قابلیت برقراری ارتباط را دارد. حتی میتوانید از آن برای توسعه اپلیکیشنهای موبایل استفاده نمایید. مزیت (و در عین حال عیب) NET. ابزارها و راهنماهای بیشماری است که شرکت مایکروسافت به توسعهدهندگان ارائه میکند و در همین حال، محدودیتهایی درخصوص میزان پیشروی پروژه برای شما وضع میکند.
در نتیجه، اگر هدف شما کاربری تحت ویندوز میباشد، NET. بهترین انتخاب خواهد بود؛ اما اگر بهدنبال محصول قابل اطمینان، سبکتر و چند پلتفرمی هستید، باید زبان برنامهنویسی دیگری را انتخاب کنید.
پایتون (Python)
پایتون اغلب برای توسعه سیستمهای تحت وب مورد استفاده قرار میگیرد و مانند Java برنامهنویسی شیءگرا و دستوری را با یکدیگر ترکیب میکند. البته، با وجود سرعت نه چندان بالای Java، این زبان برنامهنویسی تقریبا 25 برابر سریعتر از پایتون اجرا میشود؛ زیرا پایتون فقط میتواند از CPU یک هستهای استفاده کند.
تیمیار فریمورک اختصاصی خود را دارد که با زبان برنامهنویسی C و ++C نوشته شده است. این زبان برنامهنویسی قابلیتهای بسیار بالایی دارد که توناییهای منحصربهفردی به آن بخشیده است. C و ++C از زبانهای بسیار قدرتمند و انعطافپذیر میباشند و بسیاری از نرمافزارهای کاربردی و سریع دنیا، از جمله ویندوز، توسط این زبانها توسعه یافتهاند.
++C یک زبان سطح میانی، بهصورت همزمان شامل سطح بالا و سطح پایین میباشد؛ از منابع سیستمی کمتری استفاده میکند؛ امکان انتخاب به برنامهنویس میدهد، حتی اگر این انتخاب اشتباه باشد؛ امکان کنترل کامل سختافزار توسط زبان C وجود دارد؛ از اکثر سختافزارهای رایج پشتیبانی میکند؛ به دلیل امکان کد زنی در سطح پایین، سرعت فوقالعاده بالایی دارد؛ دارای کتابخانههای فراوان و کامل در هر زمینهای میباشد؛ از اکثر پایگاههای داده از قبیل SQL Server ،Oracle DB2 ،Firebird و ... پشتیبانی میکند؛ امکان توسعه نرمافزار برای هر نوع سیستم عامل و پلتفرمی را دارد؛ از امنیت بالایی برخوردار است؛ برنامهنویسی آن به زبان ماشین و ریزپردازندهها و میکروکنترلرها انجام میشود؛ انعطافپذیری بالایی دارد و ...
این مزایا موجب شده اند که بهرغم هزینه تولید بالا و یادگیری دشوار (تعداد افرادی که به این زبانهای برنامهنویسی مسلط هستند، انگشتشمار است)، تیمیار این دو زبان برنامهنویسی را برای توسعه سیستم خود انتخاب کند.
Date Access Layer (لایه دسترسی به داده): این لایه که به آن لایه بانک اطلاعاتی نیز گفته میشود، وظیفه مدیریت اطلاعات موجود در بانک اطلاعاتی یا همان Database را برعهده دارد و بر اساس درخواستهایی که از لایه بالایی خود دریافت میکند، عملیاتی از قبیل: حذف، اضافه، اصلاح، خواندن اطلاعات و... را بر روی بانک اطلاعاتی انجام داده و نتیجه عمل را به لایه بالایی خود ارسال میکند. باید توجه داشت که ارتباط با بانک اطلاعاتی فقط از طریق لایه داده انجام میگیرد. ساختار منظم، دسترسی سریع و آسان به دادهها، قابلیت جستجو، مدیریت و بروزرسانی آنها از جمله عوامل مطرح شدن پایگاههای داده میباشند. پایگاههای داده بر اساس نوع ساختار به دو دسته رابطهای (RDBMS) و غیررابطهای (NOSQL) طبقهبندی میشوند که در سیستمهای ERP معمولا از دسته رابطهای استفاده میشود. از جمله پایگاههای داده رابطهای میتوان به MSSQL ،MYSQL ، Oracle،Firebird و ... اشاره کرد. پایگاه داده را میتوان بهعنوان یک سیستم بایگانی الکترونیکی در نظر گرفت.
تیمیار پایگاه داده اختصاصی خود را دارد. تیم توسعه ساختاری تیمیار پس از بررسی پایگاههای داده موجود، Firebird را به دلیل قابلیتهای رقابتی در مقایسه با دیگر پایگاههای داده، برگزید.
فایربرد که به اختصار به آن FB میگویند، یک موتور دیتابیس قدرتمند است که از تمامی ویژگیهای زبان SQL پشتیبانی میکند. فایربرد یک سیستم مدیریت پایگاه داده رابطهای (RDBMS) پایدار، سریع، سبک و متن باز است که میتوان از آن برای مقاصد تجاری استفاده کرد. ویژگیهای ممتاز آن باعث دریافت جایزه بهترین پروژه برای شرکتهای تجاری در سال ۲۰۰۷ و ۲۰۰۹ از SourceForge شده است. فایربرد برروی سیستم عاملهای مایکروسافت ویندوز، لینوکس و برخی از گونههای یونیکس اجرا میشود.
از دلایل انتخاب این پایگاه داده برای تیمیارمیتوان به موارد زیر اشاره کرد:
سردرگم بودن درمورد تکنولوژیهای مورد استفاده در ساختار ERP امری طبیعی است. نکته امیدوارکننده این است که اکنون دید بهتری درباره نقش هریک از تکنولوژیها در توسعه سیستمهای ERP دارید.
شما بهعنوان صاحب یک کسبوکار نباید خودتان اقدام به توسعه راهکار ERP کنید، بلکه باید با توجه به اینکه سیستم ERP شما در حال حاضر و آینده چه کاری برای سازمانتان انجام خواهد داد، با یک تیم توسعهدهنده این سیستمها مشورت کنید.
ERP دانشبنیان تیمیار به عنوان یک نرمافزار منطبق با استانداردهای امنیتی، فناوری و بینالمللی، به دلیل بومی و ایرانی بودن، میتواند راهکار مناسبی برای کسبوکارهای ایرانی و بینالمللی باشد.
مترجم: رزیتا مرعشی
منبع: تیم توسعه ساختاری تیم یار