Skip to content

Latest commit

 

History

History
42 lines (35 loc) · 3.06 KB

Chapter1_소프트웨어변경.md

File metadata and controls

42 lines (35 loc) · 3.06 KB

Chapter1.소프트웨어변경

소프트웨어 코드를 변경하는 네 가지 이유

  1. 새로운 기능의 추가
  2. 버그 수정
  3. 설계 개선
  4. 자원 이용의 최적화

기능 추가와 버그 수정

  • 새로운 동작을 추가하는 것과 기존의 동작을 변경하는 것에는 커다란 차이가 있다.
  • 기존 코드를 변경해야 한다면 동작 변경으로 간주하고, 새로운 코드를 추가하고 이를 호출할 뿐이라면 동작 추가로 간주한다.

설계 개선

  • 소프트웨어의 구조를 좀 더 유지보수하기에 쉬운 구조로 변경하고 싶을 때, 일반적으로 동작은 건드리지 않는다.
  • 이 과정에서 어떤 동작이 제거되면 '버그'라고 부를 때가 많다.
  • 자주 시도하지 않는 주요 이유 중 하나는 특정 동작이 누락되거나 원치 않는 동작이 만들어지기 쉽기 때문이다.
  • 동작 변경 없이 설계를 개선하는 행위를 리팩토링이라고 한다.
  • 리팩토링은 소프트웨어의 기존 동작이 변경되지 않음을 확인하는 테스트 루틴을 작성하고, 이를 검증하면서 단계별로 작업을 진행함으로써 유지 보수성을 개선할 수 있다.
  • 핵심은 코드 변경을 쉽게 하기 위한 테스트 루틴의 뒷받침을 받는 것이다.
  • 변경 관점에서 리팩토링의 중요한 것은 기능상의 변경이 없어야 한다는 것이다.

최적화

  • 리팩토링과 최적화는 소프트웨어를 변경하면서 기존의 기능은 모두 동일하게 유지하며 '다른 무언가'를 변경한다는 공통점을 가진다.
  • 리팩토링에서는 '프로그램 구조', 최적화에서는 '시간이나 메모리 등의 자원'을 가리킨다.
기능 추가 버그 수정 리팩토링 최적화
구조 변경 변경 변경 -
새로운 기능 변경 - - -
기능 - 변경 - -
자원 사용량 - - - 변경
  • 소프트웨어에 새로운 기능을 추가할 때는 일반적으로 기존 기능을 건드리지 않는 것이 보통이다.
  • 기능 추가, 리팩토링, 최적화는 모두 기존 기능을 그대로 유지한다.
  • 핵심은 어떻게 기존의 동작에 영향을 미치지 않고 유지할 수 있을지 고민해야 하는 것이다.
  • 어떤 동작을 변경할 때 다른 동작은 변경되지 않음을 확인할 수 있어야 하는데, 이것이 매우 어려운 일이다.

위험한 변경

  1. 어떤 변경을 해야 하는가?
  2. 변경이 정확하게 이뤄졌는지 어떻게 확인할 수 있는가?
  3. 무언가를 손상시키지 않았는지 어떻게 확인할 수 있는가?
  • 위험이 따르는 변경이라면, 얼마나 위험을 감수할 수 있을까?