몇 년 전에 저를 포함한 많은 IT 직원들에게 이상적인 소프트웨어 개발 프로세스에는 코드 줄을 작성하기 전에 많은 UML 다이어그램이 포함 된 상세 설계 문서를 작성하는 것이 포함됩니다. (이것은 폭포 모델에 대한 설명처럼 보이지만 반복이 더 작다는 점을 제외하면 민첩성과 동일합니다.)
지난 2 ~ 3 년간 나는 마음을 완전히 바꿨습니다. 관련 테스트 사례와 함께 자세한 요구 사항 사양이 반드시 필요하다고 생각합니다. 대규모 프로젝트의 경우 코딩을 시작하기 전에 전체 아키텍처에 대한 개요가 필요합니다. 그러나 나머지는 가능한 한 코드로 수행해야합니다. 이상적인 경우에는 코드 자체를 제외하고 소프트웨어 디자인에 대한 설명이 없어야합니다.
이 결론을 어떻게 얻었습니까? 다음은 몇 가지 주장입니다.
피드백
문서 작성 또는 다이어그램 작성 도구는 거의 피드백을 제공하지 않습니다. 예, UML 다이어그램에 대한 일관성 검사를 수행하는 모델링 도구가 있지만 제한적이고 많은 오버 헤드가 있습니다.
피드백이 없으면 오류를 인식하고 수정하기가 어렵습니다.
코드를 작성하자마자 다음과 같은 많은 피드백을받습니다.
- 컴파일러의 오류 및 경고
- 정적 코드 분석 결과
- 단위 테스트
오류를 신속하게 인식하고 수정할 수 있습니다.
일관성
코드가 문서와 일치하는지 확인하려면 다시 확인해야합니다. 자주 변경하면 코드와 문서를 동기화하기가 어렵습니다.
리팩토링
텍스트 설명이나 다이어그램을 리팩토링하는 것은 일반적으로 어렵고 오류가 발생하기 쉬운 코드 리팩토링을위한 강력한 도구와 기술이 있습니다.
이 작업을 수행하려면 하나의 전제 조건이 있습니다. 코드는 읽고 이해하기에 충분히 쉬워야합니다. 아마도 어셈블러, 기본 또는 포트란으로는 달성 할 수 없지만 현대 언어 (및 라이브러리)는 훨씬 표현력이 좋습니다.
따라서 제 주장이 유효하다면, 소프트웨어 설계 사양과 문서가 다소 가벼운 경향이 있습니다. 이 추세에 대한 경험적 증거가 있습니까?