راهکار نرم افزاری به صورت Out-of-the-Box و یا Custom-Develop؟
چگونه یک تصمیم درست و بهینه جهت انتخاب یک سیستم نرم افزاری بگیرم؟
به عنوان یک کاربر چه نوع محصولاتی را ترجیح میدهید؟ محصولاتی که پس از خریداری بلافاصله با قابلیتهای مشخص و استاندارد نیازی به انجام تنظیمات خاصی نداشته و به راحتی قابل استفاده باشد و یا محصولاتی را دوست دارید که هرچند زمان راهاندازی آن طولانیتر باشد اما کاملاً بر اساس نیازها و سلیقه شما سفارشیسازی شده است. برای درک بهتر موضوع به این مثال توجه کنید. فرض کنید یک لپتاپ جدید خریداری نمودهاید. دوست دارید به محض روشن نمودن، در یک سیستم عامل مانند Windows 10 لاگین نموده و تمامی نرم افزارهای کاربردی بر روی آن نصب شدهاند، ممکن است برخی از نرم افزارها نیاز شما نبوده اما در هنگام خرید هزینه آن را پرداخت نمودهاید. شاید ویندوز نصب شده نسخه حرفهای و یا استاندارد نباشد و از نسخ با لایسنسهای ارزانتر استفاده شده باشد. شاید ترجیح دهید لپتاپ کاملاً خالی بوده و خود بر اساس نیازمندیهای خود سیستم عامل و نرم افزارها را نصب نموده و تنظیمات مد نظر خود را انجام دهید.
بدیهی است هرچه به محصولات پر استفاده توسط کاربران مختلف بیشتر نزدیک شویم مانند خودرو، گوشی تلفن همراه، یک ماشین لباسشویی و یا یک نرم افزار کاربردی شخصی مثل Office کاربران ترجیح میدهند به محض خریداری و راهاندازی بتوانند از آن استفاده نمایند. شاید آنقدر نیازمندیها استاندارد و مشخص میباشد که نیازی به سفارشیسازی و انجام تنظیمات اضافی نیست. در واقع محصولی میخواهیم که پس از خارج شدن از جعبه (Out-of-the-Box) قابل استفاده باشد.
فکر کنم منظور از این اصطلاح را متوجه شدید. در واقع تعریف اصلی این واژه قابلیتهایی در یک محصول نرم افزاری میباشند که بلافاصله پس از خرید و راهاندازی قابل استفاده باشند. در بسیاری از منابع دیگر به این قابلیتها off-the-shelf و یا خارج از قفسه نیز گفته میشود. حال فرض کنید میخواهید یک سیستم مالی یا سیستم نرم افزاری ارتباط با مشتریان CRM خریداری نمایید. آیا مطمئن هستید که تحلیل و طراحیهای انجام شده و توسعههای صورت گرفته در این محصول نرم افزاری نیازمندیهای شرکت و یا کسب و کار شما را برآورده مینماید. مسلماً خیر، زمانی که به راهکارهای سازمانی (Enterprise Solutions) اشاره میکنیم نیازسنجی یا استخراج الزامات (Requirement Gathering/Elicitation)، تحلیل، مدلسازی، و سفارشیسازی (Customization) جزو مراحل اصلی پیادهسازی بوده و انتظار داریم محصول منطبق بر خواستههای مشتری سفارشیسازی شود.
برخی از سازمانهای دیگر اعتقاد دارند که فرآیندهای آنها تافته جدا بافته از سایر بوده و نیازمند یک سیستم کاملاً اختصاصی میباشند که میبایست از صفر نیازسنجی، طراحی و توسعه یابد. به این نوع از سیستمها توسعه سفارشی و یا Custom-Develop گفته میشود.
قطعاً تا اینجا به این موضوع پی بردهاید که انتخاب یک سیستم نرم افزاری چالشی جهت توازن بین انتخاب نیازمندیهای استاندارد و همگانی و همچنین نیازمندیهای اختصاصی سازمان میباشد. معمولاً از نظر برخی از کاربران نیازمندیها خاص بوده و لازم است برای آن یک سیستم سفارشی Custom-Develop توسعه یابد اما برخی از کاربران و ذی نفعان، سیستمی را ترجیح میدهند که نیازمندیهای اصلی که عمدتاً استاندارد و همگانی بوده را پوشش داده و در زمان کوتاهتر و با هزینه پایینتری پیادهسازی شود. در اصطلاح رایج اعتقادی به اختراع نمودن چرخ از ابتدا ندارند.
معمولاً هزینه و زمان پیادهسازی یک سیستم نرم افزاری کاملاً سفارشی Custom-Solution چند برابر یک سیستم استاندارد میباشد.
برخی از مزایای انتخاب سیستمهای out-of-the-box عبارتند از:
- هزینه پایینتر: این دسته از راهکارها با توجه به اینکه تولید کننده آن را به چندین مشتری میفروشد هزینه پایینتری دارند.
- دسترسی بهتر: معمولاً این سیستمها توسط توسعه دهندههای مختلف با تنوع بالا از نظر قابلیتها و واسطهای کاربری مختلف و تکنولوژیهای متفاوت و همچنین با قیمتهای مختلف ارائه میشوند که پروسه انتخاب میتواند هوشمندانهتر و کاراتر انجام شود.
- کیفیت و پشتیبانی بهتر: اکثر این سیستمها در محیطهای عملیاتی مختلف پیادهسازی و تست شدهاند، معمولاً مشکلات آنها تا حدود زیادی رفع و قابلیتهای مختلفی جهت ارتقاء کاربرپسند بودن دارند.
- سرعت استقرار: معمولاً این سیستمها ظرف مدت چند روز یا در سیستمهای خیلی پیچیدهتر چند ماه قابل پیادهسازی میباشند حال آنکه راهکارهای توسعه یافته سفارشی حداقل چند ماه فقط پروسه نیازسنجی، تحلیل و توسعه آن به طول میانجامد.
- عدم نیاز به نیروی متخصص: سازمانها نیاز نیست نیروی متخصص توسعه نرم افزار، تحلیل گر، متخصص دیتابیس و … را استخدام نمایند و کاری خلاف ماموریتها و کارهای رایج در شرکت انجام دهند. حتی در صورتی که توسعه برونسپاری شود به هر حال نیازمند همکاری تیمهای داخلی و تخصیص نیروی انسانی و آموزش آنها دارد.
معایب سیستمهای Out-of-the-Box:
- گپهای عملکردی (Functionality Gaps): ممکن است فرآیندهای کسب و کار مختلفی در سازمان وجود داشته باشد که اختصاصی در آن سازمان جاری شده و یا طراحی شده است. این Business Process ها در سیستم پیادهسازی شده وجود نداشته و بخشی از سیستم دچار ایراد میگردد.
درمقابل رفتن به سمت Custom Develop مزایایی داد که برخی از آنها عبارتند از:
- اثربخشی هزینه در دراز مدت: اگرچه هزینه و زمان و منابع زیادی جهت توسعه محصول نرم افزاری صرف میگردد اما کاملاً منطبق بر کسب و کار آن سازمان بوده و با توجه به اینکه نیازی به تمدید لایسنس و هزینههای پشتیبانی در آینده نیست میتواند در دراز مدت اثربخش باشد.
- مقیاس پذیری (Scalability): با توجه به مالکیت کد توسط شرکت محدودیتی در تعداد کاربران وجود نداشته و میتوان با بهبود کارایی و تخصیص سخت افزار مناسب امکان پشتیبانی از کاربران بیشتر را ایجاد نمود.
- سیر تکاملی نرم افزار: به مرور زمان میتوان توسعههای بیشتر و بهتری در خصوص کاربر پسند بودن و اضافه نمودن قابلیتهای جدید به نرم افزار انجام داد.
- سهولت پیادهسازی و آموزش: از آنجا که سیستم کاملاً منطبق بر نیازمندیها و جریانهای کاری جاری در سازمان توسعه پیدا نموده کاربران در پذیرش آن مقاومت کمتری داشته و آموزش آن راحتتر انجام میشود.
معایب سیستمهای Custom Develop:
- هزینه بالای توسعه: بدیهی است تأمین نیروی انسانی متخصص و معمولاً گران قیمت هزینه توسعه را بسیار بالا برده و تا زمانی که سیستم کاملاً راهاندازی شود منابع زیادی از سازمان مصرف میشود.
- هزینه بالای پشتیبانی فنی: جهت پشتیبانی فنی لازم است معمولاً متخصص دیتابیس و برنامهنویسانی به صورت همیشگی جهت پشتیبانی در استخدام باشند که این خود در بعضی از موارد هزینههای بیشتری نسبت به هزینههای استاندارد و متداول سیستمهای خریداری شده به شرکت تحمیل مینماید.
- عدم استفاده از تکنولوژی مناسب: به دلیل عدم تخصص کافی تیم توسعه و محدودیت در منابع بعضاً تکنولوژی مناسبی انتخاب نشده و سازمان بعداً در توسعه بیشتر با مشکلات جدی مواجه میشود. برای مثال توسعه بر اساس قابلیتهای Open Source که ممکن است در آینده توسعه پیدا نکنند و یا انتخاب یک دیتابیس سرور بدون دور نگری از پشتیبانی از حجم اطلاعات. در واقع تیم توسعه بر اساس توانمندیها و دانش خود تکنولوژی را انتخاب مینمایند نه نیازمندیهای اصلی.
- طراحی و توسعه با ایرادهای اساسی: در برخی از موارد نیازسنجی به درستی انجام نشده و تحلیل و طراحی و توسعه با خطاهای بزرگ انجام میشود. برای مثال یک تحلیلگر خبره در بعضی از موارد میتواند با اصلاح فرآیندها و تحلیل درست روش کار سازمان را تغییر داده که این خود عملکرد نرم افزار را بهبود میبخشد. این مورد یکی از چالشهای اساسی توسعه سفارشی میباشد. یا مثال دیگر در سیستمهای سفارشی در ایران دیده میشود که رویههای تکراری در یک فرآیند یا فرآیندهای مختلف به صورت جداگانه توسعه یافته که در نتیجه حجم کدها به شدت افزایش پیدا نموده و هزینههای نگهداری و اصلاح و رفع باگ آن در آینده بسیار بالا میباشد.
استفاده از بهترین شیوهها (Best Practices):
نکته دیگر در انتخاب راهکارهای Out-of-the-Box استفاده از بهترین شیوهها و یا Best Practice هایی میباشد که شرکت ارائه دهنده نرم افزار بر اساس تجارب مختلف در سازمانها و صنایع متفاوت به دست آورده و سیستم نرم افزاری خود را بهینهسازی نموده است. برای مثال شرکت SAP معتبرترین ارائه کننده ERP یکی از مزیتهای رقابتی خود را در ارائه Best Practice ها میداند. برای روشن شدن موضوع فرض کنید شما یک شرکت متخصص در انبارش و توزیع مویرگی کالاها میباشید. در زمان انتخاب سیستم نرم افزاری آیا حاضرید فرآیندهای خود را تغییراتی دهید تا شبیه به بزرگترین شرکتهای ارائه کننده آن خدمات در دنیا شوید. در واقع خرید این سیستم نرم افزاری فرآیندهای استاندارد و بهینه تست شده در سازمانهای معتبر بینالمللی را به شما پیشنهاد میدهد و شما میتوانید سازمان خود و Business Process های خود را مطابق با آن اصلاح نمایید. اما انتخاب یک سیستم و اعتماد به Best Practice های آن همیشه نتایج خوبی به همراه نداشته و در بسیاری از تجارب باعث شکست میشوند. به هر حال هر سازمانی با توجه به نوع کار، کشور و یا موقعیت جفرافیایی که ارائه خدمات انجام میشود، قوانین کسب و کار آن موقعیت و تنوع مشتریان خود نیازمندیهای یکتا و خاصی به همراه دارد که لزوماً در بهترین شیوهها پیشبینی نشده است.
با تمامی توضحات فوق چه کنیم؟ بهترین راه حل چیست؟ شاید درخت تصمیم زیر بتواند به عنوان یک مسیر جهت تصمیم گیری درست در نظر گرفته شود.
نظر شما در خصوص یک راهکار نرم افزاری چیست که همه مشکلات مطرح شده فوقالذکر را یکجا برطرف کنید. یک سیستم نرم افزاری که آماده نصب باشد. با ارائه Best Practice ها در سریعترین زمان ممکن قابل پیادهسازی باشد و در خیلی از فرآیندها مانند یک سیستم Out-of-the-Box عمل کند. از طرفی فرآیندهای ارائه شده در قالب بهترین شیوهها کاملاً قابل سفارشیسازی باشد. هم فرمها، هم جریانهای کاری و تمامی ریزه کاریهای فرآیندی قابل اصلاح باشد. همچنین این زیرساخت اجازه دهد بدون کد نویسی سایر فرآیندهای مورد نیاز و اختصاصی سازمان را در آن پیادهسازی کنیم.
راهکار پریماورا یونیفایر (Primavera Unifier) یک سیستم کامل و جامع که میتواند تمامی نیازها و چالشهای فوقالذکر را یکجا برآورده نماید.
در سیستم نرم افزاری یونیفایر زیرساخت این اجازه را میدهد که سازمانها فرآیندهای ارائه شده را در تمامی جزئیات بدون نیاز به کد نویسی سفارشیسازی نموده و در صورت نیاز فرآیندهای اختصاصی خود را پیادهسازی نمایند. به عبارتی دیگر میتوان گفت Unifier یک راهکار جامع اطلاعاتی مدیریت پروژه (PMIS) میباشد که خود مانند سیستمهای مدیریت فرآیندهای کسب و کار BPMS مجهز به موتور گردش کار بوده و سفارشیسازی در تمامی اجزای آن امکانپذیر میباشد. برخی از قابلیتهای کلیدی یونیفایر در جهت این موضوع عبارتند از:
- سفارشیسازی جریانهای کاری (Work flow Engine).
- اضافه نمودن و یا تغییر فیلدها و مشخصههای اختصاصی فرآیند با عناوین و ترمهای (Terminology) جاری در سازمان.
- طراحی ارتباطات بین فرآیندی از نظر مرجعگیری و یا ایجاد رکوردهای جدید در سایر فرآیندها. برای مثال ایجاد یک قرارداد جدید پس از اعلام برنده مناقصه در سیستم و یا صدور یک ویرایش جدید از مدرک مهندسی به محض نیاز به ارسال بر اساس وضعیت نسخه قبلی.
- ترجمه عناوین، عبارات و ترمهای مختلف استفاده شده به زبانهای مختلف جهت پشتیبانی از قابلیتهای Multi Language.
- پیکربندی روش توزیع هزینه در مراکز و همچنین سطح مدنظر جهت کنترل هزینهها.
- ساخت الگوها (Templates) و سفارشیسازی آنها مبتنی بر نیازمندیهای شرکت.
- طراحی روشهای ارجاع کار در جریان کاری Workflow به صورت ایستا و یا پویا بر اساس Master Data ها.
- ارائه انواع Webservice ها به صورت استاندارد و جامع جهت یکپارچهسازی و توسعه در تمامی محیطهای توسعه نرم افزار.
جهت مطالعه بیشتر در خصوص این راهکار می توانید به مطالب نرم افزار Oracle Primavera Unifier و چرا Unifier مراجعه نمایید.
بر اساس توضیحات ارائه شده شما کدام روش را ترجیح میدهید؟ راهکار نرم افزاری به صورت Out-of-the-Box و یا Custom-Develop؟
بدون دیدگاه