سازمان نرمافزاری یادگیر، سازمانی است که در حوزه ساخت و نگهداری سیستمهای نرمافزاری قابلیت یادگیری دارد. ایـن یـادگیری برپایه دانش و تجارب مرتبط با فرآیندها، محصولات، ابزارها، تکنیکهـا و روشـهای متفـاوت بـه کارگرفتـه شـده در فرآینـد سـاخت نرمافزار میباشد. استفاده از تجربیات و درسهای آموخته شده در تولید نرمافزار، به خصوص نرمافزارهای پیچیـده، نقشـی کلیـدی در افزایش موفقیت در تولید بهینه نرمافزارهای مشابه دارد. یکی از مشکلات بزرگ صنعت نرمافزار کشور این است که سازمانهای فعال در صنعت نرمافزار کشور به ندرت قابلیت یادگیری دارند و دارای مکانیزمهای لازم برای بهرهگیری سیسـتماتیک از تجـارب حاصـل در پروﮊههای نرمافزاری نمیباشند. ایدهای که در این مقاله مطرح میشود بیان ضرورت و نیاز ایجاد سازمانهای نرمافزاری یـادگیر در صنعت نرمافزار کشور میباشد. در این مقاله، فعالیت یک گروه تخصصی در ایجاد سیستم مدیریت تجارب١ گزارش میشـود. بـدین منظور یکی از پروﮊههای بزرگ و پیچیده این گروه که در زمینه ساخت نرمافزارهای مخابراتی فعالیت میکند، به نام پروﮊه مـدیریت شبکه سوییچ ایران به عنوان مطالعه موردی انتخاب شدهاست. تمرکز اصلی این مقاله برروی بازنمایی و ثبـت تجربـه اسـت و بـه ایـن منظور قالبی به نام “طرح تجربه” پیشنهاد و چند تجربه مرتبط با فرآیند و ابزار توسط آن بازنمایی میگردد.

کلمات کلیدی: سازمان نرمافزاری یادگیر ، مدیریت تجربه نرمافزاری، کارخانه تجربه٢، استفاده مجدد تجربه٣، چرخه عمر تجربه

۱. مقدمه

یکی از مشکلات تولید سیستمهای نرمافزاری دستیابی به درکی روشن از طبیعت نرمافزار و فرآیند ساخت آن است. نرم افزار محصولی است که در فرآیندی خلاقانه و عقلانی تولید می شود و مانند بسیاری از محصولات دیگر با بهرهگیری از فناوری ماشینی ساخته نمیگردد. مشخصات ذاتی نرمافزار، باعث میشود که فرآیند ساخت، روشهای ساخت، روشهای تخمین، مدیریت پروﮊه، مدیریت تغییرات و سایر فعالیتهای مرتبط با ساخت و نگهداری نرمافزار تفاوتهایی با فعالیتهای مشابه خود در سایر حوزههای مهندسی پیدا کند]۱،۲،۳. [ در این میان، استفاده از تجربیات و درسهای آموخته شده در تولید نرمافزار به خصوص نرمافزارهای پیچیده، در

۱ Experience management 2 Experience factory 3 Experience reuse

افزایش موفقیت تولید، کاهش زمان و هزینههای تولید نرمافزارهای مشابه، بهبود کیفیت نرمافزارهای تولیدشده و افزایش دقت روشهای موجود تولید نرمافزار نقشی کلیدی یافته است]۲،۴،۵.[ این تجربه را مانند دانش واقعی نمیتوان در کتابها یافت. تجربه به محیطی وابسته است که در آن اتفاق میافتد و هنگامی میتواند بطور بهینه در جهت بهبود فرآیند تولید نرمافزار استفاده گردد که در همان محیط استفاده شود]۶.[ این محیط میتواند محدود به یک کشور، یک سازمان و حتی یک تیم نرمافزاری باشد. اهمیت استفاده از تجربیات به اندازهای است که پیشنهاد شده که در سطح هر سازمان نهاد مستقلی وجود داشته باشد که به عنوان کارخانه تجربه، با پروﮊههای مختلف در ارتباط باشد و طرحهای آنها را دریافت نماید و در طی انجام پروﮊه وضعیت آنها را ثبت نماید و تجربیات حاصله را در قالبهای مشخص، برای استفاده در پروﮊههای دیگر ثبت نماید] ۲،۷،۸،۹،۰۱.[ در ]۱۱[ برای کارخانه تجربه در سازمان، یک معماری پیشنهاد شده و نیز در]۲۱[ ۲۲ نیازمندی برای پایگاه داده تجربه بیان گردیده است.
به عبارت دیگر، مفهوم استفاده مجدد در صنعت نرم افزار، از سطح خطوط برنامه، پیمانه، شیﺀ، الگوهای مختلف فرآیند، تحلیل]۳۱[، طراحی]۴۱،۵۱[، و معماری]۶۱[ نرمافزار فراتر رفته و به سطح تجربه رسیدهاست. اگرچه انجام هر پروﮊه، جنبه یادگیری و کسب تجربه نیز برای افرادی که درگیر انجام پروﮊه هستند، دارد لکن در حد کلانتری مثل سازمان یا کشور، این تجربه باید به شکل ساختیافتهای ثبت شود و در پروﮊههای مشابه تا حد امکان مستقل از افرادی که در جریان پروﮊه بودهاند، مورد استفاده قرار گیرد. بدین ترتیب، سازمانها در فرآیندی سیستماتیک قابلیت یادگیری خواهند یافت.

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

مدیریت تجارب و پیادهسازی سازمانهای نرمافزاری یادگیر در سازمانهای بسیاری مانند ناسا٤ ]۸[ و دایملرکرایسلر٥ ]۶،۰۱[

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

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

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

۴ NASA : National Aeronautics and Space Administration 5 Daimler Crysler

۲. سازمان نرم افزاری یادگیر و مدیریت تجارب

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

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

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

تعریف ۲ (مدیریت تجربه). مدیریت تجربه نوع به خصوصی مدیریت دانش که به جمعآوری، مدل سازی، ذخیرهسازی، استفاده مجدد، ارزیابی و نگهداری تجربه میپردازد.

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

اصولاﹰ تجربه انجام پروﮊه، در اذهان افرادی که پروﮊه را انجام میدهند، شکل میگیرد. در این مقاله، تجربه را با سهتایی

E =<C,P,S> نمایش میدهیم که در آن C مجموعه شرایط یا زمینهای است که تجربه در آن رخ دادهاست. P مسئلهای است که تجربه در رابطه با آن انجام و S راهحلی است که برای آن مسئله ارائه شدهاست. در مرحله جمعآوری تجربه، سعی میشود تا با بهرهگیری از تکنیکهای حقیقتیابی مانند بررسی مستندات، تهیه پرسشنامه، مصاحبه ها و بازدید و مشاهده این سهتایی برای هر تجربه مشخص گردد.

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

۶ Learning software organization

Exp-Schm

ب) بازنمایی و مدل سازی تجربه

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

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

شبکه مخابراتی، به منظور بازنمایی تجربه، قالبی تحت عنوان طرح تجربه٧ یا تعریف گردید(شکل ۱).

نوع تجربه:  ابزار  محصول  فرآیند تولید  نیروی انسانی  مدیریت پروﮊه
میزان موفقیت : خیلی موفق  موفق معمولی  ناموفق خیلی ناموفق
تاریخ ثبت: بهترین استفاده برای:

محل تجربه: کدپروﮊه:
نام پروﮊه:
تیم گزارش کننده : نام گزارش کننده:
بازبینی
تایید/ رد نام بازبین پروﮊه/تیم سمت نقد

خلاصه:

کلمات کلیدی:

شرایط:

توضیح مشکل:

مشخصات راهحل

شاخصهای انتخاب راه حل:

راه حل انتخاب شده:

ارزیابی راه حل:

توصیه راه حل بهتر:

مراجع:

کد تجربه:

کد تجربه های مرتبط:

کد تجارب تقویت/ تضعیف شده با این تجربه:

کد تجارب تقویت/ تضعیف کننده این تجربه:

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

تاریخ

شکل ۱- طرح تجربه (Exp-Schm) پیشنهاد شده برای بازنمایی و مستندسازی تجارب