클린 소프트웨어: 애자일 원칙과 클린 코드
애자일 매니페스토, 클린 코드 원칙, 리팩토링 기법, 기술 부채의 식별과 관리 전략
2025년 1월 17일·4 min read·
architecture
clean-code
agile
refactoring
technical-debt
Robert C. Martin (Uncle Bob)의 클린 소프트웨어 핵심 내용 정리. 애자일 원칙과 실천방법을 중심으로 소프트웨어 개발의 본질적 가치를 다룬다.
애자일 소프트웨어 개발 선언문
핵심 가치
| 우선 가치 | 보조 가치 |
|---|---|
| 개인과 상호작용 | 프로세스와 툴 |
| 동작하는 소프트웨어 | 포괄적인 문서 |
| 고객 협력 | 계약 협상 |
| 변화에 대한 반응 | 계획을 따르는 것 |
1. 개인과 상호작용 > 프로세스와 툴
엉터리 프로세스는 뛰어난 팀원도 비효율적으로 만들 수 있다. 함께 일하고 대화하고 상호작용하는 능력이 핵심.
2. 동작하는 소프트웨어 > 포괄적인 문서
- 문서는 짧고 요약적이어야 함 (12~24페이지)
- 마틴의 문서화 제1법칙: 필요가 급박하고 중요하지 않으면 아무 문서도 만들지 마라
- 새로운 팀원과 친밀하게 일하는 것으로 대체 가능
3. 고객 협력 > 계약 협상
- 규칙적인 고객 피드백이 핵심
- 예: 매주 금요일 소프트웨어 공개 → 화요일까지 변경사항 마련 → 우선 일정에 반영
4. 변화에 대한 반응 > 계획을 따르는 것
- 소프트웨어 프로젝트는 먼 미래 계획이 불가능
- 2주간의 세부적인 계획 + 3개월간의 개략적인 계획
애자일 원칙
- 유용한 소프트웨어의 빠르고 지속적인 공개를 통해 고객 만족
- 첫 공개본에서 기능이 적을수록, 자주 공개할수록 최종 품질이 높아짐
- 개발 후반부라도 요구사항 변경을 환영
- 2주~2달 사이, 혹은 더 짧은 간격으로 자주 공개
- 업무 담당자와 개발자는 프로젝트 내내 함께 일해야 한다
- 의욕적인 개인들을 중심으로 프로젝트 구성, 믿고 맡기기
- 가장 효율적인 정보 전달 방법은 직접 일대일 대화
- 개발 중인 소프트웨어가 진척 상황의 일차적 척도
- 지속 가능한 개발 속도(pace) 유지
- 우수 기술과 좋은 설계에 대한 지속적 관심이 속도를 향상
- 가능한 깨끗하고 튼튼한 상태 유지
- "나중에 시간이 있을 때 해결할 것"이라고 합리화하지 않기
- 단순성은 필수적 — 아직 끝내지 않은 일의 양을 최대화하는 예술
- 최고의 아키텍처, 요구사항, 설계는 자기 조직적인 팀에서 나온다
- 규칙적으로 팀의 효과성을 반영하고 행위를 조율
애자일 프로세스
스크럼, 크리스털, 기능 개발 중심(FDD), 어댑티브 소프트웨어 개발, 익스트림 프로그래밍(XP) 등이 있다.
태그
#Agile #CleanCode #SoftwareEngineering #XP