소프트웨어공학
설계 (Part 8) : 아키텍처 설계
chlqhrud0208
2024. 12. 15. 17:33
- 아키텍처의 4+1 관점
[ 문제 영역의 1개 관점 ]
- 시나리오 관점 : 시스템이 사용자에게 제공하는 기능에 주목 -> 유스케이스 관점이라 함
[ 해법 영역의 4개 관점 ]
- 논리적 관점 : 시스템의 내부를 들여다봄, 클래스나 컴포넌트 및 이들의 관계에 초점
- 프로세스 관점 : 비기능적인 속성에 관심을 가지는 것, 자원의 효율적인 사용이나 이벤트 처리 등을 표현
동적인 개념이 들어감
- 개발 관점 : 서브시스템의 모듈이 어떤 관계를 갖고 상호작용하는지에 주목
- 물리적 관점 : 물리적인 배치에 주목, 분산 및 배치 상태
- 아키텍처 스타일
-> 개발할 시스템의 타입에 따라 아키텍처 스타일을 결정
1) MVC 구조 스타일
2) 저장소 구조 스타일
3) 클라이언트/ 서버 스타일
4) 계층 구조 스타일
5) 파이프 필터 구조 스타일
- MVC(Model/View/Controller) 패턴
- 프로그램의 구성요소를 Model, View, Controller로 분리하여 설계
- 분리되어 있어 서로에게 영향을 받지않고 작업을 수행 -> 재사용성과 유지보수의 편리성
- 모델
-> 핵심 기능과 데이터를 가지고 있는 객체
-> 사용가자 원하는 모든 데이터를 가져야 함
-> 데이터에 관련하여 변경이 생기면 반영해야 함
-> 원칙적으로 뷰와 컨트롤러에 의존하면 안됨 (모델 내부에 뷰와 컨트롤러에 대한 코드가 있어서는 안됨)
- 뷰
-> 사용자에게 보여질 인터페이스를 담당하는 객체
-> 원칙적으로 모델에만 의존해야 하며 컨트롤러에는 의존하면 안됨 (모델 내부에 모델과 관련된 코드만 있을 수 있음)
- 컨트롤러
-> 모델과 뷰를 연결
-> 모델과 뷰를 제어해야함
-> 실질적인 처리는 모델에서 진행해야 함
-> 원칙적으로 컨트롤러는 모델과 뷰에 의존해야 함
-> 데이터에 대한 처리를 혼자 단독으로 해서는 안됨
- 동작 순서
1) 컨트롤러는 사용자에게 입력을 받음
2) 컨트롤러는 모델의 데이터를 업데이트하고 모델을 호출
3) 컨트롤러는 모델을 나타낼 뷰를 선택함
4) 뷰는 모델을 통해 화면에 데이터를 나타냄
- 장점
-> 역할 분담으로 프로그램의 독립성이 높아짐
-> 개발 환경의 변화에도 유연하게 대응할 수 있고, 쉽게 분리할 수 있음
- 단점
-> Model, View, Controller 간의 의존하는 정도가 높아 모듈간의 결합도가 높아지고 유지보수가 어려워짐
-> 입출력의 조건이 복잡해질수록 View와 Controller의 의존성이 높아짐