설계는 불명확한 문제

호스트 리텔과 멜빈 웨버는 "불명확한"문제란 전체 혹은 일부를 해결해야만 정의할 수 있는 문제라고 정의했다.
본질적으로 이 역설적인 말은 문제를 명확하게 정의하려면 문제를 한 번 "해결"해야 하며, 작동하는 솔루션을 만들기 위해서 다시 문제를 해결해야 한다는 의미를 담고 있다. 이러한 프로세스는 소프트웨어 개발에서 수십 년 동안 내려온 오랜 관습이다.

설계는 엉성한 프로세스
설계는 절충과 우선순위의 문제
설계에는 제약이 따름
설계는 비결정적
설계는 발견적 학습 과정
설계는 창발적

바람직한 설계

다익스트라는 현대 컴퓨터 프로그램을 보관할 수 있을 정도의 큰 두뇌를 가진 사람은 아무도 없다고 했다.
즉 한 번에 한 부분을 제대로 집중할 수 있게 프로그램을 구성하도록 노력해야한다는 뜻이다.
- 객체를 신중하게 정의함으로써 한 번에 하나의 기능에만 집중할 수 있도록 작업

복잡성 최소화, 유지보수의 편리함, 느슨한 결합
확장성, 재사용성
높은 팬인(fan-in) - 특정 클래스를 사용하는 클래스의 수가 많다는 것
낮은 팬아웃(fan-out) - 특정 클래스가 다른 클래스를 적게 사용하는 것
간결성, 계층화, 표준 기법

+ Recent posts