در این مطلب به بررسی مدیریت دانش پروژههای نرمافزاری برونسپاری شده میپردازیم.
شرکت مایکروسافت که از برترین شرکتهای حوزه نرمافزار در آمریکا و جهان به شمار میرود در خصوص مدیریت دانش در حوزهی توسعه و نگهداری نرمافزار اقداماتی را صورت داده که تحول این حوزه با بهروزرسانیهای جدید نرمافزار TFVC به نسخه AzureDevOps 2020 بوده است. در ادامه این مطلب به معرفی بیشتر این ابزار میپردازیم.
تاریخچه توسعه نرمافزار
فرآیند توسعه نرمافزار که از اواسط قرن 19 شروعشده، همواره با مشکلات عدیدهای از قبیل تغییر نیازمندیهای مشتری، مدیریت زمانبندی پروژه، هزینههای پروژه، نیروی انسانی و غیره مواجه بوده و این مشکلات آغازی بر ارائه راهحلهای متناسب با خود بودند که در حوزه ابزارهایی توسعه و پیادهسازی شدهاند. بهطور مثال در سالهای اخیر و در خصوص تغییر نیازمندیهای مشتری و مدیریت زمانبندی راهکارهای چابک ارائهشده است.
مدیریت دانش پروژههای نرمافزاری برونسپاری
برونسپاری به واگذاری انجام فرایندها یا فعالیتهای داخلی یک کسبوکار به یک تأمینکننده خارجی تحت قرارداد مشخص اطلاق میشود. به بیان دیگر هنگامیکه یک سازمان برخی از فعالیتها یا فرایندهای کسبوکار خود را به عرضهکنندهای در بیرون از شرکت یا سازمان خود بسپارد این عمل را برونسپاری مینامند. در بسیاری موارد در برونسپاری، حق تصمیمگیری و عوامل تولید هم به سازمان دیگر واگذار میشود. بهعنوانمثال خدمات مربوط به پروژههای نرمافزاری و فناوری اطلاعات، شبکه و ارتباطات از راه دور، امنیت و غیره را ازجمله مواردی هستندکه توسط بسیاری از سازمانها برونسپاری میشوند. دلایل برونسپاری غالباً عبارتاند از:
- صرفهجویی در هزینه
- تمرکز بر شایستگی اصلی سازمان
- ساختاربندی مجدد هزینه
- بهبود کیفیت
- انجام عملیات بهصورت تخصص
- افزایش ظرفیت برای نوآوری
فرایند برونسپاری علاوه بر مزایایی که دارد در برخی مواقع با چالشهایی نیز همراه است. بهعنوانمثال مشکلات مرتبط باکیفیت و امنیت خدمات برونسپاری شده و یا از دست دادن کنترل مدیریتی ازجمله این موارد است؛ اما در بیشتر موارد ذکرشده نامی از مشکلات ناشی از عدم مدیریت دستاوردهای دانشی قید نشده است. جالب است بدانید که در بیشتر پروژههایی که شرکتهای کوچک و بزرگ برونسپاری میکنند، خروجیها و نتایج پروژه بهصورت سی دی سورس در اختیار مشتری قرار میگیرد. شاید با نگاه سادهانگارانه بگوییم که این کار مشکلی ندارد، اما آیا واقعاً مشکلی در این خصوص وجود ندارد؟
مدیریت دانش پروژههای نرمافزاری و فرآیند توسعه نرمافزار
بهطورکلی توسعه نرمافزار شامل 5 مرحله نیازمندی، تحلیل، توسعه، تست و نگهداری است. مبحثی که شاید در شرکتهای نرمافزاری کشور ما در بیشتر مواقع وجود نداشته و یا نهایتاً ناقص پیادهسازی میشود. در این فرایند پنج مرحلهای، مستندسازی درسآموخته ها اهمیت بسیار زیادی دارد و اما در دو مرحله تست و نگهداری، مدیریت دانش نمود بیشتری پیدا میکند و کمک شایانی به تیم توسعه و مشتری نهایی میکند. بهطور مثال درصورتیکه شما از نحوه مطرحشدن نیازمندی و تحلیلهای قبلی سوابقی در دست نداشته باشید دیگر علت توسعه و یا فرایند تست را از دست میدهید و در مرحله نگهداری با مشکلات عدیدهای روبرو خواهید بود.
مدیریت تجربیاتی که در طول فرآیند توسعه نرم به دست میآید تا چند دهه اخیر چندان موردتوجه واقع نمیشد تا اینکه شرکتها به اهمیت این موضوع پی بردند و نرمافزارهایی جهت مدیریت سورس کد نظیر Git و TFVC تهیه و مورداستفاده قرار گرفت. در چند سال اخیر نیز نرمافزار AzureDevOps برای فرایند توسعه نرمافزار معرفیشده است که بیشتر در حوزههای مدیریتی به سازمان کمک میکند. همانطور که در قبل نیز ذکر شد دلیل اصلی استفاده از این ابزارها، مدیریت نیازمندیهای مشتری، زمانبندی پروژه، هزینههای پروژه، نیروی انسانی و غیره بود که کمک بسیار زیادی به سازمانها میکند.
دلایل استفاده از AzureDevOps در توسعه نرمافزار
شاید برای شما هم اتفاق افتاده است! نرمافزاری را که شرکت شما توسعه و به فروش میرساند را شرکت دیگر خریداری میکند؛ مثل خرید ۷.۵ میلیاردی گیتهاب توسط مایکروسافت. فرض کنید پروژه نرمافزاری با رویکرد برونسپاری به شرکت شما سپرده شده و در مدت مقرر آن را انجام دادهاید. احتمالاً تنها کاری که لازم است پس از طی شدن مراحل مالی وحقوقی انجام شود، رایت یک سی دی و تحویل سورس به مشتری باشد، اما این همان مشکل و ایراد اساسی است که تبعات آن در نظر گرفته نشده است. شاید بتوان گفت که شرکت خریدار نرمافزار تنها مبلغی بابت خرید سورس کد به شما پرداخت کرده است و هزینه توسعه و به دست آوردن دانش تیم شما را در آینده پرداخت خواهد کرد. به سناریوهای زیر توجه نمایید:
- ماژولX چقدر زمان برده که توسعه داده شود؟ شرکت قبل چقدر زمان صرف کرده است؟
- دلیل استفاده از کامپوننت صفحه X چه چیزی بوده است؟
- ترتیب ماژولها و تحلیلهای انجامشده به چه صورتی است؟
به لیست بالا دهها سؤال دیگر نیز میتوان افزود و اینها تنها مشکلات کوچکی هستند که با رایت یک سی دی به وجود آمدهاند.
AzureDevOps
بهطورکلی شرکتها، مخصوصاً شرکتهای نرمافزار تمرکز بسیار زیادی بر مدیریت منابع انسانی و کاهش هزینههای پروژهها و مدیریت دستاوردهای آن دارند. بر این اساس تمایل دارند تا ابزارهایی که به تحقق این اهداف کمک میکنند را به کار بگیرند. یکی از این ابزار AzureDevOps است که بر پایهی ساختارهای مدیریت پروژههای نرمافزار بهصورت چابک بنیان نهاده شده است. این ابزار مشکلاتی که مشتریان با آن دستوپنجه نرم میکنند را تا حدود بسیار زیادی برطرف کرده است. مواردی از قبیل صرفهجویی در هزینهها، بهبود کیفیت، مدیریت دانش فرآیند توسعه نرمافزار ازجمله ویژگیهای این نرم افزار است.
شرکتهای بسیاری با استفاده از این ساختار و یا نرمافزارهای مشابه، خروجیهای موردنیاز مشتریان را با سرعت بسیار زیاد ارائه میکنند. بهعنوانمثال میتوانید با جستجوی ساده در گوگل مدتزمان خروجیهای شرکتهایی نظر آمازون، فیس بوک، ماکروسافت در مواجهه با نیازهای مشتریان و پیشرفت در حوزههای جدید را بررسی نمایید. ابزارAzure DevOps در سال 2005 ارائه شد و جدیدترین نسخه آن در سال جاری ارائه شده است، شما میتوانید از این ابزار به دو صورت سرویس آنلاین و نسخه نصب شده بر روی سرور داخلی استفاده کنید. این ابزار امکان ارتباط با سایر ابزارهای این حوزه نظیر مثل گیت لب و اطلسیان را نیز تا حدودی داراست. شما در این نرمافزار از شروع فرآیند توسعه تا تحویل اتوماتیک در محیط مشتری، اطلاعات تاریخچهها (wiki) و زمانبندی و توسعه کارها (Board & Repository) و تحویل (Pipeline) را مدیریت میکنید.
حال به مثالی که مطرحشده بازگردیم. با فرض اینکه شرکت شما از ابزارهایی نظیر این نرمافزار استفادهکند، تنها کاری که لازم است قبل از تحویل پروژه به مشتری صورت پذیرد، گرفتن نسخه پشتیانی از سرورAzure و رایت همان سیدی است، با این تفاوت که کپی تمامی کارها، باگها و اطلاعات موردنیاز را نیز به مشتری تحویل میدهید.