발표준비

대부분의 소프트웨어는 개발이 완료되어도 계속해서 요구사항이 추가되어 유지보수되고 리팩토링이 진행된다.

하지만 소프트웨어가 제대로 설계돼 있지 않다면 개발자들은 복잡한 코드를 보는 것조차 두려워하며, 예상치 못한 오류가 발생할까바 코드 변경을 덜 하게 될 것이다.

개발이 진행될 수록 현재의 레거시 코드로 인한 중압감에 시달리지 않고 프로젝트 진행을 촉진하려면 변경을 수용하고 즐겁게 작업할 수 있는 설계가 필요하다.

바로 유연한 설계(supple design) 가 그것이다.

그렇다면 유연한 설계가 무엇일까? 또한 우리가 도달하고자 하는 설계는 어떤 모습이며, 유연한 설계를 얻으려면 무엇을 시도해야 할까?

본 장에서는 이와 같은 내용을 다룬다.

정교한 시스템을 만들 목적으로 조립 가능하고 그럼에도 이해하기가 어렵지 않은 요소를 만들어내려면 Model Driven Design을 적당한 수준의 엄밀한 설계 형식과 접목하고자 노력해야 한다.

개발자는 두 가지 역할을 수행하며, 각 역할은 설계에 의해 뒷받침되어야 한다.

그 중 한 가지는 클라이언트 개발자 역할로서 설계 특징을 활용해 도메인 객체를 애플리케이션 코드나 다른 도메인 계츠으이 코드와 통합한다. 이로써 도메인 내의 일련의 시나리오를 표현할 수 있다.

그 다음은 유연한 지점에서 설계를 알맞게 수정해서 대부분의 변경을 처리할 수 있도록 하는 역할도 필요하다. 이로써 코드에서 발생하는 부수효과가 명확하므로 변경에 따른 파급 효과를 예측하기가 쉬워진다.

본 장에서 소개하는 패턴과 예제를 토대로 유연한 설계가 무엇이고 유연한 설계를 만들려면 어떤 식으로 사고해야 하는지 살펴보자.

Untitled