바람직한 설계의 특징..
1. 복잡성 최소화 : 재치있는 설계는 피하며, 복잡성을 최소화. 간단하고 이해하기 쉬운 설계.
2. 유지관리의 편리함 : 유지 보수 프로그래머를 위한 설계를 의미. 유지보수 프로그래머가 코드에 대해 물어볼 질문들을 상상해볼것.
3. 느슨한 결합 : 프로그램의 서로 다른 부분들 간의 연결을 최소화하도록 설계하는것을 의미. 클래스간의 연결이 최대한 적도록 설계하여 추상화, 캡슐화, 정보은닉과 같은 방법을 사용. 연결이 최소화되면 통합/테스트/유지보수 시 작업을 줄일 수 있다.
4. 확장성 : 내부구조를 해치지않고, 시스템의 가능성을 높일 수 있도록한다. 다른 부분에 영향을 미치지않고 시스템 일부분을 변경하도록, 예측 가능한 변경사항일수록 시스템에 더 적은 충격을 준다.
5. 재사용성 : 현 시스템의 일부를 다른 시스템에서도 사용할 수 있도록 설계하는것을 의미.
6. 높은 팬인 : 주어진 클래스를 사용하는 클래스의 수가많다는것을 의미. 클래스를 잘 활용하도록 설계되었다는 것을 의미.
7. 낮은 팬아웃 : 주어진 클래스가 다른 클래스를 적게 사용한다는것을 의미.
8. 이식성 : 시스템을 다른 환경으로 쉽게 이동시킬 수 있도록 설계하는것을 의미.
9. 간결성 : 다음버전은 반드시 나머지 코드와 하위 호환성을 유지해야한다.
10. 계층화 : 시스템을 특정한 수준으로 살펴보고 일관된 뷰를 얻을 수 있도록 분산계층을 유지하는 것을 의미. 다른수준을 살펴보지 않고도 특정한 수준에서 시스템을 볼 수 있도록 설계해야한다.
11. 표준기술들 : 시스템이 색다른 방법에 의존하면, 다른 사람이 처음에 그 코드를 이해하는 시간적 비용이 많이듬. 일반적 접근 방법을 사용하여
전체시스템이 친숙하다고 느낄 수 있도록 노력해야 한다.
'프로그래밍 > 공부관련' 카테고리의 다른 글
private 변수접근해서 값 바꾸기 (0) | 2014.06.19 |
---|---|
c++ 사용 cast (캐스트 연산자) (0) | 2013.12.03 |
MFC에서 debug mode와 Release mode의 문제가 생길시 (0) | 2013.04.30 |
QT] 라벨 및 각 컨트롤에 대한 스타일시트적용 예 (0) | 2013.04.24 |
1월2주차 - DB공부 (1) (0) | 2013.01.08 |