새로운 프로젝트 실행시

1. 요구사항 소화
- 복잡하고 까다로운 요구사항이 End User에게 미치는 영향은?
- 시스템 설계 전반에 미치는 영향은 무엇?
- 구현 가능한가?
- 요구사항에 담긴 내용은 최종목적에 부합하는가?
- 빠진 내용 없나?
- 서로 모순되는 요구사항은 없나?
- 그것으로 인한 보안, 성능, 확장가능성 등에 미치는 부정적 영향은 없나?

2. 약간의 코딩
- 필요시 새로운 코드의 얼개를 바로 코딩하는 것도 좋다.
얼개 [명사] 어떤 사물이나 조직의 전체를 이루는 짜임새나 구조. - 다음사전

3. 종이와 연필로 그림 그리기
- 전체적인 시스템 모습 스케치
- 객체를 동그란 원으로
- 관계 나타내는 선
- 기억해야 할 것은 작은 글씨로 표시

4. 인터뷰
- 새로운 기능이 다른 기존의 객체나 검포넌트를 다루고 있는 프로그래머에게 인터뷰함.
- 모르는것은 질문으로 확인, 아이디어는 동의를 구함, 더 나은 제안은 경청 및 메모
- 인터뷰를 토대로 이미 작성한 코드 개요 있으면 수정

5. 그림을 비트의 세계로 옮기기. UML을 사용하면 추가 점수.
- 객체 관련성을 도표로 표현하는데 사용하는 UML은 보조도구을 뿐임을 명심. 너무 많은 시간을 할애하지 말자.

6. 그림과 약간의 설명을 담은 문서를 작성하기
- 스케치한 걸 저장이 필요할때, 복잡하고 작업 범위가 넓은 기능 구현시에는 UML로 정리하도록 한다. 
- 마지막으로 발표(publish) 위한 자료 수집.
- 새로운 기능 구현이 갖는 개략적 방향, 방법론
- 시스템내에 영향을 받는 부분, 문제점과 해결책, 인터뷰통해 수집한 질문과 제안을 문서화
- 문서화에 또 너무 많은 시간을 투자하지 말자.

7. 공동의 검토
- 설계검토(design review) 
- 참석자들은 논의 내용을 충분히 숙지한 사람만 참여시키도록, 괜히 설명하느라 시간낭비가 될 수 있다. 


디버깅시
1. 요구사항 혹은 버거의 내용파악
2. 코딩시작

저자는 '코딩'과 '설계'를 굳이 구분할 필요가 없는 자연스러운 행위가 되어야 한다고 보고있다.


refer to 프로그래밍은 상상이다. -임백준 지음
Posted by 빈솔B
,