[Engineering] 소프트웨어 설계
소프트웨어 설계
이전 요구사항 분석∙정의 단계가 What(무엇)에 대한 관점이었다면, 그 다음인 설계 단계는 How(어떻게)에 대한 관점이다.
요구사항 분석∙정의 단계에서 생각한 걸 구체적으로 어떻게 만들건지 !
( OS, 미들웨어, 프레임워크 등의 플랫폼을 디테일하게 결정하는 단계 )
좋은 설계의 조건은 다음과 같다.
- 요구분석 명세서의 내용을 설계서에 모두 포함해야 한다.
- 유지보수가 용이하고, 변화에 쉽게 대응하기 위해 모듈을 기능에 따라 독립적으로 작성해야한다. (디자인 패턴)
- 설계서는 읽기 쉽고, 이해하기 쉽게 작성되어야 한다.
즉, 좋은 설계가 될려면 모듈이 서로 독립적이어야 하고, 모듈 내 요소들 간의 응집력은 높게, 모듈 간의 결합력은 낮게 !
(이러한 고민을 해결하기 위해 디자인 패턴이 나온거겠지?)
설계는 크게 2가지로 나뉜다.
- 상위 설계
- 하위 설계
간단히 말해 설계 잘하려면 잘 쪼개면됨. (하나의 함수에 모든 기능을 우겨넣지말고 기능에 따라 나누는거)
설계의 원리를 5가지 키워드로 정리하면 다음과 같다.
- 분할과 정복 : Bottom-Up 방식으로 작은 시스템을 개발하고, 이를 합쳐 큰 시스템을 만듦.
- 추상화 : 기능만 관심있고 구체적인 로직은 무시하는 것.
- 단계적 분해 : 하향식 설계에서 사용. 기능을 쪼갤 수 있을만큼 쪼갠 후에 하나씩 구현해나감
- 모듈화 : 말 그대로 모듈화하는 것.
- 정보은닉 : 외부에서 참조되지 않는 필드나 메서드를 private시키는 것.
난 MVC 패턴으로 웹 개발을 몇 번해봐서 살짝은 감이 오는 듯하다. (물론 깊게 들어가면 어렵겠지만...)
'Software Engineering' 카테고리의 다른 글
[Engineering] 소프트웨어 테스트 (0) | 2019.12.18 |
---|---|
[Engineering] 소프트웨어 구현 (0) | 2019.12.18 |
[Engineering] 요구사항 정의 #2 (0) | 2019.12.18 |
[Engineering] 요구사항 정의 #1 (0) | 2019.12.18 |
[Engineering] UML - 모델링 언어 (0) | 2019.12.10 |
댓글
이 글 공유하기
다른 글
-
[Engineering] 소프트웨어 테스트
[Engineering] 소프트웨어 테스트
2019.12.18 -
[Engineering] 소프트웨어 구현
[Engineering] 소프트웨어 구현
2019.12.18 -
[Engineering] 요구사항 정의 #2
[Engineering] 요구사항 정의 #2
2019.12.18 -
[Engineering] 요구사항 정의 #1
[Engineering] 요구사항 정의 #1
2019.12.18