소프트웨어 엔트로피
Software entropy소프트웨어 엔트로피는 제품 설계 및 확립된 설계 원칙과의 일관성을 유지하기 위해 충분한 주의를 기울이지 않으면 소프트웨어가 변경됨에 따라 결국 썩는다는 개념입니다.일반적인 용도는 고전 열역학 및 통계 물리학에서 정의된 엔트로피와 접선적으로만 관련이 있습니다.
또 다른 측면은 운영체제 및 기타 컴포넌트의 업그레이드 또는 폐기 시 발생하는 환경의 필연적인 변경으로 인해 정적인 소프트웨어의 품질 저하로 인식되는 측면에서도 찾을 수 있습니다.
역사
1992년 Ivar Jacobson 등의 소프트웨어 엔지니어링에 관한 연구는 다음과 같이 소프트웨어 엔트로피를 설명한다.
- 열역학 제2법칙은 원칙적으로 닫힌 시스템의 무질서는 줄어들 수 없으며, 변하지 않거나 증가할 수 있다고 말합니다.이 장애의 척도는 엔트로피입니다.이 법칙은 소프트웨어 시스템에도 타당해 보입니다.시스템이 변경됨에 따라 무질서 또는 엔트로피가 증가하는 경향이 있습니다.이를 소프트웨어 엔트로피라고 합니다.
1999년 Andrew Hunt와 David Thomas는 소프트웨어 [3]개발에서 소프트웨어 엔트로피를 피하기 위한 은유로서 깨진 창문을 고치는 것을 사용합니다.
정보 이론과의 관계
소프트웨어 소스 코드는 정보입니다.
소프트웨어를 쓰는 목적은 도메인 및 설계 지식을 소스 형식으로 인코딩하고 실행 가능한 대상 형식으로 변환하는 것입니다.이와 같이, 소스가 관련 지식 세트의 일관성 있고 노이즈가 없는 부호화라면, 그 엔트로피는 낮은 것으로 간주될 수 있다.초기 개발 및 승인 후 코드는 소프트웨어 라이프사이클의 유지관리 단계로 진입합니다.이 단계에서는 이러한 지식 집합(도메인 및 소프트웨어 설계 원칙)과의 차이로 나타나는 결함(노이즈)을 누적하여 소프트웨어의 엔트로피를 증가시킬 수 있습니다.
복잡성과의 관계
이미 알려진 상관관계가 있지만(소프트웨어 복잡성 참조), 소프트웨어의 복잡성과 소프트웨어의 엔트로피 사이에는 직접적인 관계가 없습니다.복잡도 수준이 동일한 두 개의 소프트웨어는 서로 다른 엔트로피 또는 부패 수준에서 존재할 수 있습니다.매우 간단한 프로그램이라도 여러 개발자의 손을 거치면서 높은 수준의 엔트로피가 발생할 수 있습니다.
회피.
코드 리팩터링 프로세스는 소프트웨어 엔트로피를 단계적으로 감소시킬 수 있습니다.
「 」를 참조해 주세요.
- 피쳐 크리프
- 소프트웨어 블러트
- 소프트웨어의 취약성
- 소프트웨어의 부패
- 소프트웨어 엔트로피를 줄이는 Fail-Fast 프로그래밍 패턴
- 알고리즘 정보 이론[4]
레퍼런스
- ^ Jacobson, Ivar; Christerson, Magnus; Jonsson, Patrik; Övergaard, Gunnar (1992), Object-Oriented Software Engineering: A Use Case Driven Approach, ACM Press. Addison–Wesley, pp. 69–70, ISBN 0-201-54435-0
- ^ Lehman, M. M.; Belady, L.A. (1985), Program evolution: processes of software change, Academic Press, ISBN 9780124424401
- ^ Hunt, Andrew; Thomas, David (1999), The Pragmatic Programmer, Addison Wesley, ISBN 0-201-61622-X – 항목 4(22개의 힌트 중)는 "깨진 창문으로 살지 마세요"입니다.
- ^ Wojnowicz, Michael; Chisholm, Glenn; Wolff, Matt; Zhao, Xuan (2016). "Wavelet decomposition of software entropy reveals symptoms of malicious code". Journal of Innovation in Digital Ecosystems. 3 (2): 130–140. doi:10.1016/j.jides.2016.10.009.