본문 바로가기

프로그래밍/공부관련

설계 준비 - 바람직한 설계의 특징

바람직한 설계의 특징..


1. 복잡성 최소화 : 재치있는 설계는 피하며, 복잡성을 최소화. 간단하고 이해하기 쉬운 설계.

2. 유지관리의 편리함 : 유지 보수 프로그래머를 위한 설계를 의미. 유지보수 프로그래머가 코드에 대해 물어볼 질문들을 상상해볼것.

3. 느슨한 결합 : 프로그램의 서로 다른 부분들 간의 연결을 최소화하도록 설계하는것을 의미. 클래스간의 연결이 최대한 적도록 설계하여 추상화, 캡슐화, 정보은닉과 같은 방법을 사용. 연결이 최소화되면 통합/테스트/유지보수 시 작업을 줄일 수 있다.

4. 확장성 : 내부구조를 해치지않고, 시스템의 가능성을 높일 수 있도록한다. 다른 부분에 영향을 미치지않고 시스템 일부분을 변경하도록, 예측 가능한 변경사항일수록 시스템에 더 적은 충격을 준다.

5. 재사용성 : 현 시스템의 일부를 다른 시스템에서도 사용할 수 있도록 설계하는것을 의미.

6. 높은 팬인 : 주어진 클래스를 사용하는 클래스의 수가많다는것을 의미. 클래스를 잘 활용하도록 설계되었다는 것을 의미.

7. 낮은 팬아웃 : 주어진 클래스가 다른 클래스를 적게 사용한다는것을 의미.

8. 이식성 : 시스템을 다른 환경으로 쉽게 이동시킬 수 있도록 설계하는것을 의미.

9. 간결성 : 다음버전은 반드시 나머지 코드와 하위 호환성을 유지해야한다.

10. 계층화 : 시스템을 특정한 수준으로 살펴보고 일관된 뷰를 얻을 수 있도록 분산계층을 유지하는 것을 의미. 다른수준을 살펴보지 않고도 특정한 수준에서 시스템을 볼 수 있도록 설계해야한다.

11. 표준기술들 : 시스템이 색다른 방법에 의존하면, 다른 사람이 처음에 그 코드를 이해하는 시간적 비용이 많이듬. 일반적 접근 방법을 사용하여

전체시스템이 친숙하다고 느낄 수 있도록 노력해야 한다.