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

تبلیغات

چطور هزینه های نگهداری و ویرایش کدها را کاهش بدهیم؟

چطور هزینه های نگهداری و ویرایش کدها را کاهش بدهیم؟


هزینه نگهداری و ویرایش کدها در نرم افزارها، به صورت چشمگیری افزایش پیدا کرده است و آمارها نشان میدهند که شرکت ها در طول چرخه حیات یک نرم افزار، در حدود ۹۰% هزینه تولید اولیه را صرف نگهداری و ویرایش کدها میکنند!!!! این در حالی است که این هزینه در دهه های پیش، در حدود ۵۰% از هزینه تولید بود! چند دلیل عمده در مورد این مشکل وجود دارد.

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

در یک جمله، ما با سیستمی روبرو هستیم که بیمار است و قابلیت های آن به درستی داکیومنت نشده. اما راه حل های بهبود این نوع سیستم های نرم افزاری چیست؟ ایتدا باید درکی از این موضوع داشته باشیم که هزینه های نگهداری و ویرایش کدها مربوط به کدام قسمت ها هستند و چطور باید با آنها مواجه شویم:

هزینه به دست آوردن شناخت کافی از سیستم

نگهداری و ارتقاء یک کد از چند مرحله تشکیل شده است. یکی از مهم ترین نکاتی که باید با آن مواجه شویم (و هزینه بر است) به دست آوردن شناخت کافی از سیستم است. (منظور از سیستم همان نرم افزاری است که قصد بهبود آنرا داریم)

به دست آوردن شناخت از سیستم به این معنی است که یک مهندس نرم افزار با چه سرعتی میتواند قسمتی از سیستم را تغییر بدهد یا آنرا فیکس کند. معمولا ۴۰ تا ۶۰ درصد از زمان مورد نیاز برای انجام یک تغییر، صرف این موضوع میشود.

هزینه “نبود” یا “نقص” داکیومنت ها

یک راه برای کاهش هزینه های به دست آوردن شناخت، ساخت داکیومنت ها و سایر توضیحات (مثلا مدل های UML) است. سوالاتی که مطرح میشود و بسیار هم مهم است، این است که چقدر داکیومنت کافی است؟ کدام قسمت ها باید داکیومنت شوند؟ نکته بسیار بسیار جالبی که در بیست و یکمین کنفرانس بین المللی طراحی ارتباطات در سال ۲۰۰۵ به دست آمد، این بود که سورس کد و کامنت های آن، مهمترین و کارآمد ترین قسمت برای به دست آوردن درک صحیح از یک نرم افزار هستند!!! مدل های اطلاعاتی، دیاگرام ها، توضیحات و در نهایت تعجب، مدل های معماری، بسیار کم اهمیت تر از سورس کد و کامنت ها و توضیحات آن هستند.

کاهش راندمان برنامه نویس ها

در تحقیقات انجام شده، ۲ مورد وجود دارد که عملکرد برنامه نویسان را به شدت کاهش میدهند. این دو مورد عبارتند از:

  • نوسان و تغییر خواسته ها، بر روی عملکرد برنامه نویسان، به شدت تاثیر منفی دارد.
  • پراکندگی سورس کد در حال ویرایش و پخش شدن آن در قسمت های متعدد و دارای وابستگی به یکدیگر.

سایر هزینه ها

سایر هزینه های نگهداری و ویرایش کدها مربوط به مواردی از قبیل: نبودن استاندارهای کد نویسی، نبودن شرایط تست و وابستگی با سیستم های دیگر است.

 

قطعا تغییر و بهبود در هر یک از این موارد هزینه ساز، منجر به افزایش سرعت تغییرات و کاهش هزینه ها خواهد شد.

چند راه حل مفید برای کاهش هزینه های نگهداری و ویرایش کدها

  • داکیومنت

معمولا بیشتر سیستم های موجود، از نبود داکیومنت های کافی و کارآمد رنج میبرند. ما همیشه شنیده ایم که نوشتن داکیومنت ها مفید است اما سوال اینجاست که نوشتن داکیومنت، چه کمکی به سیستم خواهد کرد؟

آزمایش هایی که درباره داکیومنت ها انجام شده، نشان داد که برنامه نویسانی که داکیومتنی جهت آشنا شدن با کدهای سیستم نداشتند، ۲۱٫۵% زمان بیشتری برای درک کد صرف کردند. با توجه به اینکه ۴۰ تا ۶۰ درصد هزینه نگهداری، به کسب شناخت از سیستم اختصاص می یابد(یعنی به طور متوسط ۵۰%) در صورت وجود داکیومنت های کارآمد، یک مجموعه میتواند ۱۲% از هزینه های نگهداری و ویرایش کدها را کاهش بدهد! نکته بسیار بسیار جالب دیگری که از این آزمایش ها به دست آمد، این بود که بدون داکیومنت ها، تفاوت بین کدنویسان خوب و کد نویسان بد، از بین میرفت. در حالی که در شرایطی که داکیومنت وجود داشت، کد نویسان خوب، بهتر از کد نویسان بد کارآیی داشتند. بدون وجود داکیومنت ها، هر دو گروه، عملکرد مساوی و بدی داشتند. در نتیجه، صرف هزینه های بالا برای استخدام برنامه نویسان حرفه ای، بدون وجود داکیومنت ها، اتلاف بودجه و زمان است.

  • کشتن کدهای مرده!

گزارش ها نشان میدهد که حداکثر تا ۳۰% از کدهای سیستم های قدیمی، کدهای مرده هستند. با از بین بردن کدهای مرده سایز سیستم به طور چشمگیری کاهش پیدا میکند. اما کدهای مرده به چه کدهایی میگوییم:

کد مرده یعنی کدهای غیر ضروری و ناکارآمدی که در هیچ جایی از برنامه استفاده نمیشوند و اضافه هستند. مثلا کدهای از ثبل کامنت شده یا متغیرها و فانکشن هایی که هرگز صدا زده نشده اند. همچنین ماژول ها و قطعه کدهایی که زمانی قرار بوده استفاده شوند اما رها شده اند.

کدهای مرده، مشکل بسیار رایجی در سیستم های بزرگ هستند و به طور میانگین، هر پروژه ای ۱۵% از این کدها دارد! هر چه تعداد برنامه نویسان مختلفی که روی کدها کار کرده اند بیشتر باشد و سیستم قدیمی تر باشد، حجم این کدها بیشتر است.

قطعا کد مرده به معنی زمان بیشتر خواندن کدها و در نتیجه هزینه بیشتر است. بنابراین حذف کدهای مرده میتواند قدم بزرگی در کاهش هزینه ها و خواناتر کردن پروژه باشد.

حذف کدهای تکراری

اکثر برنامه نویس ها عادت دارند که در هنگام کد نویسی، کدها را کپی کنند و قسمت های مورد نیاز را تغییرات کوچکی بدهند. مشکلی که به وجود می آید این است که باگ ها هم کپی و تکثیر میشوند! در نتیجه وقتی باگی شناسایی میشود و از بین میرود، کپی های آن در سیستم باقی میماند تا دوباره پیدا شود. سیستم های بزرگ نرم افزاری،  در حدود ۱۰ تا ۱۵ درصد از این کدهای کپی شده را درون خودشان دارند. از بین بردن این کدهای تکراری و تبدیل آنها به فانکشن هایی با ورودی های متفاوت اما کد یکسان، میتواند هزینه های نگهداری کدها را کاهش بدهد.

جلوگیری از باگ ها و پیداکردن آنها

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

خلاصه مقاله: کاهش پیچیدگی، نگهداری و ویرایش کدها را ساده میکند

لینک مقاله اصلی




کلمات کلیدی :

نظر بدهید