موضوع مقاله: نگهداری نرم‌افزار | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # نگهداری نرم‌افزار | مقدمه: گرایشی از مهندسی نرم‌افزار است که شامل نگهداری و اصلاح یک محصول نرم‌افزاری پس از تحویل است به منظور تصحیح اشکالات پیش‌آمده و بهبود عملکرد یا ویژگی‌های دیگر آن نرم‌افزار. | ## بخش 1: نگهداری نرم‌افزار | یک دید متعارف نسبت به تعمیر و نگهداری نرم‌افزار این است که آن را صرفا شامل رفع نقصهای نرم‌افزاری بدانیم، اما یک مطالعه نشان داده‌است که بیش از ۸۰٪ از فعالیت‌های مربوط به تعمیر و نگهداری نرم‌افزار مرتبط با اقدامات اصلاحی نیست.Pigoski, Thomas M. این دید متعارف توسط کاربرانی که مشکلی در نرم‌افزار گزارش می‌دهند که در واقعیت بهبودهایی بر کارایی نرم‌افزار هستند تقویت می‌شود. مطالعات جدیدتر درصد فعالیت‌های مربوط به تعمیر و نگهداری نرم‌افزار که مرتبط با رفع اشکال هستند را نزدیک به ۲۱٪ گزارش کرده‌اند.Eick, S. طی یک دوره بیش از بیست ساله، تحقیقات او منجر به تدوین قوانین لیمن (لیمن ۱۹۹۷) شد. یافته‌های کلیدی تحقیقات وی شامل این است که تعمیر و نگهداری نرم‌افزار در واقع توسعه تکاملی آن است و نگهداری نرم‌افزار در واقع از درک آنچه برای سیستم (نرم‌افزار) در طول زمان اتفاق می‌افتد در تصمیم‌گیری کمک می‌گیرد. در اواخر دهه ۱۹۷۰ یک بررسی گسترده و معروف طی یک مطالعه توسط Lientz و Swanson انجام شد که در آن از سهم زیاد هزینه‌های تعمیر و نگهداری در هزینه‌های چرخه حیات یک نرم‌افزار پرده برداشته شد. مطالعات نشان می‌دهد که مشارکت کاربر نهایی بسیار مهم است و در جمع‌آوری داده‌ها و نیازمندی‌های جدید و تجزیه و تحلیل آن‌ها نقش مهمی ایفا می‌کند، و این علت اصلی هر گونه مشکل در تکامل و تعمیر و نگهداری نرم‌افزار است؛ بنابراین تعمیر و نگهداری نرم‌افزار مهم است چرا که بخش بزرگی از کل هزینه‌های چرخه حیات نرم‌افزار را به خود اختصاص می‌دهد و همچنین عدم توانایی در ایجاد تغییر در نرم‌افزار با سرعت و قابلیت اعتماد مناسب به این معنی است که فرصت‌های کسب و کار از دست می‌روند.Lientz B. اهمیت تعمیر و نگهداری نرم‌افزار کلید نگهداری نرم‌افزار توجه به مسائل مربوط به هر دو زمینه مدیریتی و فنی است. کلید مدیریت مسائل عبارتند از: هم‌ترازی و همراهی با مشتری، ایجاد اولویت‌هایی برای نیروی انسانی، برآورد صحیح هزینه‌ها. | ## بخش 2: نگهداری نرم‌افزار | کلید حل مسائل فنی عبارتند از: برطرف کردن محدود درک، تأثیر، تحلیل، تست، نگهداری و اندازه‌گیری. تعمیر و نگهداری نرم‌افزار فعالیت بسیار گسترده‌ای است که شامل تصحیح خطا و پیشرفت قابلیت‌های نرم‌افزار و بهینه‌سازی آن است. از آنجایی که تغییر اجتناب ناپذیر است، مکانیسم‌های مورد استفاده باید امکان ارزیابی و کنترل و ایجاد تغییرات را داشته باشند. بنابراین هر کاری که به منظور تغییر نرم‌افزار انجام می‌شود بخشی از عملیات تعمیر و نگهداری نرم‌افزار در نظر گرفته می‌شود و هدف آن حفظ ارزش نرم‌افزار در طول زمان می‌باشد. ارزش نرم‌افزار را می‌توان با گسترش پایه مشتری (Customer Base) آن افزایش داد و این امر نیازمند تبدیل شدن نرم‌افزار به حالتی است که برای استفاده کارآمدتر باشد و فناوری‌های جدید در آن به کار گرفته شوند. تعمیر و نگهداری ممکن است در طول ۲۰ سال رخ دهد در حالی که توسعه ممکن است مجموعاً ۱–۲ سال طول بکشد. برنامه‌ریزی تعمیر و نگهداری نرم‌افزار بخشی جدایی ناپذیر از نرم‌افزارها تعمیر و نگهداری آنهاست که نیازمند تهیه برنامه‌ای دقیق برای تعمیر و نگهداری آن در طول فرایند توسعه نرم‌افزار است. باید مشخص کنید که چگونه به درخواست‌های تغییر یا گزارش مشکلات کاربران پاسخ خواهید داد. تعمیر و نگهداری نرم‌افزار که می‌تواند برای ۵–۶ سال (یا حتی دهه‌ها پس از فرایند توسعه نرم‌افزار) ادامه داشته باشد نیازمند یک طرح مؤثر است که بتواند دامنه کاری نرم‌افزار را تعیین کند و زمینه را برای ارائه برآوردی از هزینه‌های چرخه زندگی نرم‌افزار فراهم کند. | ## بخش 3: نگهداری نرم‌افزار | انتخاب استانداردهای مناسب جهت به چالش کشیدن اقدامات بعدی روی نرم‌افزار از مرحله اولیه مهندسی نرم‌افزار است که از دید سهامداران نگران دارای اهمیت بسزایی است. فرایندهای تعمیر و نگهداری نرم‌افزار این بخش توصیف شش گام فرایند تعمیر و نگهداری نرم‌افزار را عنوان می‌کند: فرایند پیاده‌سازی شامل آماده‌سازی نرم‌افزارها و فعالیت‌های انتقال مفاهیم و ایجاد برنامه تعمیر و نگهداری است که خود شامل آماده‌سازی برای دست یاختن به مشکلات شناسایی شده در طول توسعه و پیگیری محصول در قالب پیکربندی مدیریتی است. تجزیه و تحلیل مشکل و اصلاح فرایندی که اجرا شده‌است باید توسط تیمی که مسئولیت تعمیر و نگهداری برنامه را بر عهده دارند انجام شود. در روند پذیرش تغییر به واسطه تأیید اصلاح کار توسط فردی که ارائه درخواست اصلاح کرده بود مطمئن شوید که اصلاح ارائه شده یک راه حل مناسب است. اگر این نرم‌افزار باید به پلت فرم دیگری منتقل شود باید بدون هرگونه تغییر در عملکرد آن این فرایند انجام شود و یک تیم تعمیر و نگهداری پروژه به این کار اختصاص داده شود. آخرین فرایند تعمیر و نگهداری نیز یک رویداد است که به صورت روزانه رخ نمی‌دهد و آن بازنشستگی یک قطعه از نرم‌افزار است. عوامل تعمیر و نگهداری تأثیر عوامل مؤثر کلیدی بر نگهداری (طبقه‌بندی شده به ترتیب حداکثر تأثیر مثبت به پایین) عوامل تعمیر و نگهداریمحدوده مثبتمتخصصان تعمیر و نگهداری۳۵٪کارکنان با تجربه بالا۳۴٪متغیرها و داده‌های بر پایه جدول۳۳٪پیچیدگی کم پایه کد۳۲٪Y2K و موتورهای جستجو ویژه۳۰٪ابزار تغییر ساختار کد۲۹٪Re-engineering tools۲۷٪زبان‌های برنامه‌نویسی سطح بالا۲۵٪ابزار مهندسی معکوس۲۳٪ابزار تجزیه و تحلیل پیچیدگی۲۰٪ابزار ردیابی نقایص۲۰٪Y2K متخصصان "به روز رسانی دسته جمعی"۲۰٪ابزار تغییر کنترل خودکار۱۸٪عدم پرداخت اضافه کاری۱۸٪کیفیت اندازه‌گیری۱۶٪بازرسی رسمی پایه کد۱۵٪آزمون رگرسیون کتابخانه‌ها۱۵٪زمان پاسخ دهی بسیار عالی۱۲٪آموزش سالانه> ۱۰ روز۱۲٪تجربه بالا مدیریت۱۲٪میز کمک اتوماسیون۱۲٪عدم وجود ماژول مستعد خطا۱۰٪گزارش نقص آنلاین۱۰٪اندازه‌گیری بهره‌وری۸٪سهولت استفاده عالی۷٪اندازه‌گیری رضایت کاربر۵٪روحیه بالای تیم۵٪مجموع۵۰۳٪ نه تنها ماژول‌های مستعد خطا آزاردهنده و مشکل‌ساز هستند بلکه بسیاری از دیگر عوامل نیز می‌توانند موجب تنزل عملکرد بیش از پیش سیستم نیز بشوند. برای مثال "اسپاگتی کد" یک تکه کد بسیار پیچیده‌است که نگهداری مطمئن و ایمن آن کاملاً دشوار است. | ## جمع‌بندی | یک پیش‌آمد بسیار معمول است که اغلب تنزل‌های عملکردی سیستم ناشی از عدم استفاده از ابزارهای نگهداری مناسب است همانند ابزارهای ردیابی نقص، ردیابی تغییر نرم‌افزار، نرم‌افزار مدیریت و تست نرم‌افزار.