در عصر جدید ، فناوری و به تبع آن ، سیستم های نرم افزاری طراحی شده برای سازمان ها به عنوان دارایی استراتژیک مطرح هستند . این نرم افزارها و در دیدگاه جامعتر ، سامانه های طراحی شده برای هر سازمان نتیجه بررسی، بهبود روال های موجود و نکات کلیدی تجارت سازمان می باشد.
اهمیت این اطلاعات باعث شده تا تولید کنندگان نرم افزار ساختارهایی را برای نگهداری و مدیریت این اطلاعات ایجاد کنند ، این ساختارها تضمین می کنند که تولید و نگهداری نرم افزار به شکلی صورت خواهد گرفت که داده ها از دست نرفته و در اختیار افراد غیر مجاز قرار نگیرند.
نظر به اهمیت چنین وقایعی ، شرکت ها و سازمان های بزرگی همانند مایکروسافت، اطلسیان، آمازون و غیره از مدتهای مدید به بررسی و ایجاد راهکارهای نظارتی و مدیریتی بر تولیدات نرم افزاری بپردازند. این شرکت ها ابزارهای متعددی در این حوزه تولید و ارائه نموده اند که به جهت خبرگی و تجربه در تولید نرم افزار و همچنین اشراف کامل به معضلات این حوزه ، از جمله راهکارهای کارامد و شـناخته شده این حوزه بدل شده اند که در حال حاضر با عنوان ابزارهای مدیریت چرخه حیات نرم افزار یا Application Lifecycle Management نامیده می شوند.
در حال حاضر این ابزارهای آنچنان با روالهای تولیدی نرم افزارها و سامانه های بزرگ و متداول دنیا عجین شده اند که عملا به زعم شرکت هایی مانند مایکروسافت ، تولید نرم افزاری و کلا مدیریت چرخه تولید نرم افزاری همانند Visual Studio بدون این ساختارهای کنترلی امکان پذیر نخواهد بود.
مشکلات موجود در شرکت های فناوری اطلاعات
عدم وجود زیرساخت جهت مدیریت چرخه تولید نرم افزار باعث از دست رفتن داده های زیادی خواهد شد. تصور کنید کدهای نوشته شده نرم افزار شما بر روی رایانه برنامه نویس هستند و شما هیچگونه روشی برای نگهداری کدها بر روی سرورها در نظر نگرفته اید .
سوالات زیر مطرح می شود:
- اگر بخشی از کد که در نسخه های قبلی وجود دارد مورد نیاز باشد، به چه شکلی کد مربوطه را پیدا خواهد کرد؟
- اگر سیستم برنامه نویس دچار مشکلی شود چه اتفاقی برای کدهای نرم افزار شما خواهد افتاد؟
- به چه شکلی تغییرات ایجاد شده بر روی یک فایل توسط برنامه نویسان مختلف را مدیریت خواهید کرد؟
- یک ویژگی جدید طراحی شده را چگونه در تمام نسخه های برنامه خود اضافه خواهید نمود؟
- آیا با بررسی یک نیازمندی می توان متوجه شد چه تغییراتی در کدهای برنامه به واسطه آن ایجاد شده؟
- چند نیروی جدید به عنوان تست کننده نرم افزار به پروژه اضافه خواهند شد، فقط به علت اینکه ابعاد پروژه شما هر روز بزرگتر می شود و هیچ ساختاری برای انجام تست ها به شکل خودکار وجود ندارد؟
- هر ماه چه مقدار از زمان برنامه نویسان شما جهت انتشار نرم افزارها و به روز رسانی سرورها صرف می شود؟
- همزمان با تغییر در سورس کدهای برنامه، دیتابیس نیز تغییر خواهد کرد، آقا روشی برای کنترل و دسته بندی این تغییرات و ثبت ارتباطات این تغییرات با نیازمندی های اعلام شده دارید؟
- اگر در نرم افزار شما از rest-api ها استفاده شده، آیا تست های خودکار امنیتی و بیزینسی برای آنها ایجاد شده؟
- آیا در زمان توسعه Rest-Api های سازمان مدیریت کلان آنها در نظر گرفته شده (API Landscape)؟
خصوصا در خصوص پروژه های برون سپاری شده ، سوالات زیر نیز مطرح می شوند :
- آیا شما به عنوان کارفرما فقط آخرین نسخه از کدهای پروژه برون سپاری شده را دریافت می کنید؟
- اگر در مرحله بعدی پروژه نیاز به تغییر پیمانکار بود، آیا مستنداتی که هیچگونه ارتباط مستقیمی با کدها ندارند، به پیکانکار جدید کمک خواهند کرد یا پیمانکار جدید باید زمان زیادی را صرف تشخیص روابط موجود بین نیازمندی ها و کدهای برنامه نماید؟
برون سپاری راهکارهای نرم افزاری نیازمند رعایت برخی استانداردها و اصول است تا در زمان توسعه محصول، اطلاعات فنی توسعه محصول از طرف تیم توسعه دهنده ثبت شود، این اطلاعات در فرآیند نگهداری و توسعه های بعدی محصول کمک شایانی به سازمان می نماید.
تیم ما مفتخر است با ارائه راهکارها و فرآیندهای برون سپاری محصولات نرم افزاری به بهبود فرآیند توسعه محصول برای تیم فنی و رضایت خاطر کارفرما کمک نماید.