본문 바로가기

ComputerScience/Software Engineering

소프트웨어공학 - 13. Logical Architecture

728x90

1. Logical Architecture

- non-functional requirement는 주로 supplimentary specification에 속한다.

- supplimentary specification이 Logical Architecture에 input으로 들어간다.

 

- 한번 결정되면 번복하기 어려운, 아주 fundamental한 내용들이 Logical Architecture이다.

- 이 아키텍쳐 설계에 대한 내용들은 UML package diagram으로 표현한다.

- 상위 layer는 하위 layer의 서비스들의 호출이 가능하지만 그 반대는 불가능 하다.

- strict layered architecture : 상위 레이어는 인접한 하위 레이어의 서비스만 호출 가능

- relaxed layered architecture : 상위 레이어는 하위 레이어들의 서비스를 호출 가능 (UI 레이어에 있는 web 패키지는 인접하지 않은 하위 레이어의 Logging 패키지를 사용할 수 있다.)

 

- Software Architecture는 소프트웨어의 원천적인 구조이다. 왜 그런 구조를 지니고 있는지 누가 그런 구조를 이루는지에 대한 내용들을 명세해야 한다. 

2. UML package diagram  

- 여러 element, 패키지들을 그룹화 하는 단위를 layer라고 한다.

- 패키지끼리 점선으로 연결한 것이 서로의 dependency를 나타낸다. (web이 Logging을 의존한다/사용한다)

- 보통 제일 위에 UI layer가 위치한다. 여기서 들어온 Input은 application layer로 전달된다.

- application layer에서 domain레이어로 내려가서 실제 logic을 처리하게 된다.

 

- 이렇게 표현을 하면 low level, high level service 분리를 통해 관심 영역의 분리가 가능하다.

- 패키지간의 의존성을 낮추고 layer 내에 패키지들의 응집성을 강화해준다.

- Domain layer는 application logic을 처리하는 레이어이다. 지난 시간에 domain model을 살펴보았다. 바로 이 부분이다.

- layer는 수직 구분이라면 layer내부에서 다시 여러 element들로 수평 구분하는 것이 partition이다.

3. Model-View Seperation Principle

- UI object들은 자주 바뀌기 때문에 non-ui object와 ui object의 직접 연결을 피한다.

- application logic이 UI object 메서드에 존재해서는 안된다.

- 즉 user interface layer에 해당하는 view와 domain layer에 해당하는 model은 구분되어야 한다.

728x90
반응형