레거시

    레거시 코드, 빈약한 도메인 모델(Anemic Domain Model)

    이전 시간에 잘못된 소프트웨어를 언급했었다. 이번에는 잘못된 소프트웨어를 지칭하는 대표적인 용어 레거시 코드를 간단히 알아보고 그중 하나인 빈약한 도메인 모델을 알아보려 한다. 레거시 코드 레거시란 용어를 말하면 누구나 다음과 같이 비슷한 생각을 할 것이다. - 매우 악취가 풍기는 코드 - 파악하기 힘든 코드 - 의존성이 매우 강하게 결합된 코드 - 전혀 의미를 알 수 없는 변수명과 함수명 - 큰 진흙 덩어리 - 테스트코드 작성하기 두려운 존재 - 기타 등등 즉, 이해할 수 없고 수정하기도 힘든 코드를 뜻하는 경우가 많다. 이런 레거시 코드의 특징은 새로운 기능이 추가될수록 점점 감당하기 어려워진다. 하지만 레거시 코드를 기피할 수 없다. 언젠간 극복해야할 과제다. 빈약한 도메인 모델 (Anemic Do..

    [CHAPTER 6] 동작하는 소프트웨어

    소프트웨어 프로젝트가 실패하는 원인은 아주 다양하다. 잘못된 비즈니스 의사 결정, 우월한 경쟁자, 잘못된 프로젝트 관리 등 매우 많다. 소프트웨어 프로젝트에는 중요한 일들이 많아서 덜 중요해 보이는 것들이 있다. 어떤 조직에서는 유능한 관리자, 깊은 계층구조, 마이크로 매니지먼트, 엄격한 절차, 대량의 문서들이 프로젝트의 성공을 좌우한다고 생각한다. 많은 조직들이 소프트웨어 개발을 공장 라인으로 취급한다. 직접 경험한 SI 업계가 대다수 이런식으로 많이 진행한다. 이러한 조직에서 훌륭한 개발자를 끌어들이고 유지할 수 있는 경우는 거의 없다. 그저 그런 개발자들의 손에 전체 비즈니스를 맡기게 된다. 어떤 프로젝트에서는 개발자만 70~80명 있었는데, 대다수가 그저 그런 개발자였다. 함수선언도 못하던 10년..