리먼의 소프트웨어 진화 법칙

Lehman's laws of software evolution

소프트웨어 공학에서 소프트웨어 진화의 법칙리먼벨라디가 1974년부터 소프트웨어 진화와 관련하여 제정한 일련의 법칙을 말한다.[1][2]그 법은 새로운 발전을 이끄는 힘과 다른 한편으로는 진보를 늦추는 힘 사이의 균형을 묘사하고 있다.지난 수십 년 동안 그 법률은 여러 차례 개정되고 연장되었다.[3]

컨텍스트

대부분의 소프트웨어는 그 존재 과정에서 변경될 수 있다는 것을 관찰하면서, 저자들은 이러한 변화들이 일반적으로 소프트웨어가 생존하기 위해 복종하거나 또는 반드시 따라야 하는 법을 결정하기 시작했다.[citation needed]

1980년 논문에서 리먼은 다음과 같은 세 가지 범주의 소프트웨어를 구분하여 그러한 법률의 적용조건을 충족시켰다.[1]

  • S-프로그램은 그 프로그램이 할 수 있는 일의 정확한 사양에 따라 작성된다.
  • P-프로그램은 프로그램이 할 수 있는 일을 완전히 결정하는 특정 절차를 구현하기 위해 작성된다(상술된 예는 체스를 두는 프로그램이다).
  • E-프로그램은 실제 활동을 수행하기 위해 작성된다. E-프로그램이 어떻게 동작해야 하는지는 그것이 실행되는 환경과 강하게 연결되어 있으며, 그러한 프로그램은 그 환경에서 다양한 요구사항과 상황에 적응해야 한다.

이 법은 마지막 범주의 시스템에만 적용된다고 한다.

모두 합치면 다음과 같은 8가지 법이 제정된 법률은 다음과 같다.

  1. (1974) "계속적인 변화" — E형 시스템을 지속적으로 개조하거나 점차적으로 만족도가 낮아져야 한다.[4]
  2. (1974) "복잡성 증가" — E형 시스템이 진화함에 따라, 이를 유지하거나 감소시키기 위한 작업이 수행되지 않는 한 복잡성은 증가한다.[4]
  3. (1974) "자체규제" — E형 시스템 진화과정은 제품 및 공정조치의 분포와 함께 정상과 가까운 수준으로 자율규제하고 있다.[4]
  4. (1978) "조직적 안정성의 보존(불변속 작업률)" — 진화하는 E형 시스템에서 평균 유효 전역 활동률은 제품 수명 동안 변하지 않는다.[4]
  5. (1978) "친숙함의 보존" — E형 시스템이 진화함에 따라, 그것과 관련된 모든 것, 예를 들어 개발자, 판매 직원 및 사용자는 만족스러운 진화를 달성하기 위해 내용과 행동에 대한 숙달성을 유지해야 한다.과도한 성장은 그 숙달성을 감소시킨다.따라서 시스템이 진화함에 따라 평균 증분 성장은 변하지 않는다.[4]
  6. (1991) "계속 성장" — E형 시스템의 기능 콘텐츠를 지속적으로 증가시켜 수명 동안 사용자 만족도를 유지해야 한다.
  7. (1996) "품질 저하" — E형 시스템의 품질은 엄격하게 유지되고 운영 환경 변화에 적응하지 않는 한 저하되는 것으로 보일 것이다.[5]
  8. (1996) "피드백 시스템(Feedback System)"(1974년 최초 명시, 1996년 법률로 공식화) — E형 진화 프로세스는 다단계, 다중 루프, 다중 에이전트 피드백 시스템을 구성하며, 합리적인 기반에 걸쳐 상당한 개선을 달성할 수 있도록 취급되어야 한다.

참조

  1. ^ a b Lehman, Meir M. (1980). "Programs, Life Cycles, and Laws of Software Evolution". Proc. IEEE. 68 (9): 1060–1076. doi:10.1109/proc.1980.11805.
  2. ^ Lehman, M. M.; J. F. Ramil; P. D. Wernick; D. E. Perry; W. M. Turski (1997). "Metrics and laws of software evolution—the nineties view" (PDF). Proc. 4th International Software Metrics Symposium (METRICS '97). pp. 20–32. doi:10.1109/METRIC.1997.637156.
  3. ^ Herraiz, Israel; Rodriguez, Daniel; Robles, Gregorio; Gonzalez-Barahona, Jesus M. (2013). "The evolution of the laws of software evolution". ACM Computing Surveys. 46 (2): 1–28. doi:10.1145/2543581.2543595. ISSN 0360-0300.
  4. ^ a b c d e Lehman, M. M. (1980). "On Understanding Laws, Evolution, and Conservation in the Large-Program Life Cycle". Journal of Systems and Software. 1: 213–221. doi:10.1016/0164-1212(79)90022-0.
  5. ^ Liguo Yu와 Alok Misshra (2013) 국제 소프트웨어 및 정보 저널의 소프트웨어 품질 진화에 관한 리먼의 법률에 대한 실증 연구, 2013/11/2013; 7:469-481.