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