애자일 설계란 무엇인가?

hansol_kim·2021년 8월 28일
0

클린 소프트웨어

목록 보기
1/1
post-thumbnail

애자일 설계가 탄생하는 배경에는 잘못된 설계가 있다

설계의 악취

  • 경직성 : 시스템 변경의 어려움. 변경을 하려면 기존에 있는 것들이 변경해야하는 상황
  • 취약성 : 변경을 할 때 시스템에서 변경하려는 개념과 상관 없는 부부도 망가지는 상황
  • 부동성 : 시스템을 다른 시스템에서 재사용할 수 있는 컴포넌트(모듈)로 사용하기 어려움
  • 점착성 : 옳은 동작을 하는 것이 잘못된 동작을 하는 것보다 더 어려운 상황
  • 불필요한 복잡성 : 직접적인 효용이 전혀 없는 기반 구조가 설계에 포함되어 있는 상황
  • 불필요한 반복 : 단일 추상 개념으로 통합할 수 있는 반복적인 구조가 설계에 포함되어 있는 상황
  • 불투명성 : 읽고 이해하기 어려움. 의도를 분명히 하지 않는 코드들이 있는 상황
    → 사람들이 읽기 쉽도록 리팩토링 필수!!
    위의 상황들이 보이기 시작하면 악취가 나고 부패하기 시작한 시스템이다

무엇이 부패를 촉진하는가?

설계 -> 요구사항 변경 -> 설계의 퇴화
요구사항 변경으로 처음에 설계하여 진행한 소프트웨어가 점점 부패되기 시작했을 때 요구사항 변경을 탓하는 경우가 있다(개발자 책임이 아니지 않느냐)

아니다.

우리는 변하는 요구사항의 세계에 살고 있고, 우리가 만든 소프트웨어가 이런 변화 속에서 살아남을 수 있게 만드는 것이 우리가 해야하는 일이다. -> 애자일 방식을 해야하는 주 원인이다.

특히, 기업은 이익을 목표로 하는 집단이기에 다양한 프로젝트를 시도하고 다양한 요구사항이 추가 및 변경은 불가피하다.(어떠한 서비스가 이익이 되지 않을 때 요구사항 변경을 통해 이익을 불러올 수 있는 가능성이 있다면 마다할 기업이 어디있는가)

애자일 방식으로 부패를 방지하는 방법

요구사항 변화에 대응하여 변경에 대해 탄력적으로 설계를 수정할 수 있다.

  • 설계 원칙을 적용하여 문제를 진단
  • 적절한 디자인 패턴을 적용하여 문제를 해결

위와 같은 방식으로 좋은 상태의 설계를 유지할 수 있다. 애자일 개발자는 몇 주에 한 번씩 설계를 진단하고 청소하지 않는다. 매일, 매시간, 심지어 몇분마다 간단하고 명료하게 유지한다.
절대로 부패가 시작되도록 놔두지 않는다.

결론

애자일 설계는 과정이지 결과가 아니다. 원칙과 패턴을 적용하여 설계를 좋은 상태로 두기 위한 연속적인 방식이다.
단, 앞으로 설명하는 원칙과 패턴을 큰 설계에서 적용하지 않고 매 순간마다 리팩토링하여 설계를 명료하게 유지하려는 시도의 일환임을 알아두자

추후에 기업에서 진행하는 애자일 사례를 들어 글을 추가할 예정이다

profile
1주 1글 실천하자

0개의 댓글