소프트웨어 설계


이전 요구사항 분석∙정의 단계가 What(무엇)에 대한 관점이었다면, 그 다음인 설계 단계는 How(어떻게)에 대한 관점이다. 

요구사항 분석∙정의 단계에서 생각한 걸 구체적으로 어떻게 만들건지 !

( OS, 미들웨어, 프레임워크 등의 플랫폼을 디테일하게 결정하는 단계 )

 

 좋은 설계의 조건은 다음과 같다.

  1. 요구분석 명세서의 내용을 설계서에 모두 포함해야 한다.
  2. 유지보수가 용이하고, 변화에 쉽게 대응하기 위해 모듈을 기능에 따라 독립적으로 작성해야한다. (디자인 패턴)
  3. 설계서는 읽기 쉽고, 이해하기 쉽게 작성되어야 한다.

 

즉, 좋은 설계가 될려면 모듈이 서로 독립적이어야 하고, 모듈 내 요소들 간의 응집력은 높게, 모듈 간의 결합력은 낮게 !

(이러한 고민을 해결하기 위해 디자인 패턴이 나온거겠지?)

설계는 크게 2가지로 나뉜다.

  1. 상위 설계
  2. 하위 설계

 

 

간단히 말해 설계 잘하려면 잘 쪼개면됨. (하나의 함수에 모든 기능을 우겨넣지말고 기능에 따라 나누는거)

설계의 원리를 5가지 키워드로 정리하면 다음과 같다.

  1. 분할과 정복 : Bottom-Up 방식으로 작은 시스템을 개발하고, 이를 합쳐 큰 시스템을 만듦.
  2. 추상화 : 기능만 관심있고 구체적인 로직은 무시하는 것.
  3. 단계적 분해 : 하향식 설계에서 사용. 기능을 쪼갤 수 있을만큼 쪼갠 후에 하나씩 구현해나감
  4. 모듈화 : 말 그대로 모듈화하는 것.
  5. 정보은닉 : 외부에서 참조되지 않는 필드나 메서드를 private시키는 것.

 

난 MVC 패턴으로 웹 개발을 몇 번해봐서 살짝은 감이 오는 듯하다. (물론 깊게 들어가면 어렵겠지만...)