1. Software Architecture Style
1-2. Software Architecture style이란?
이전에 Design pattern에 대해서 배운적이 있다. design pattern은 특정 condition의 특정 문제에 대한 solution을 재사용 가능하게 패턴화 해놓은 것이었다. 지금 배울 Architecture style은 전체 시스템에 적용되는 재사용 가능한 설계로, form, method, materials 등 다양한 element를 포함한다. architecture style은 building block과 connection으로 나뉘어 정의된다. 즉, Architecture stlye이란, software architecture에서 일반적으로 발생하는 structural problem에 대한 general하고 reusable한 structural 레이아웃과 속성의 description이다.
1-2. Software architecture style이 정의하는 것
architecture style은 다음을 정의한다.
1. 시스템 구조를 구성하는 Component와 Connector를 정의한다
2. component와 connect가 어떻게 연결될지에 대한 constraints를 명시한다
3. 시스템의 특정 속성을 드러낸다.
1-3. Software architecture style의 요소
다음은 Architecture style의 요소들이다.
1. Topological layout of the system (2차원적 그림)
2. Types of component (Tiers, Layers, Partitions)
3. Types of connectors (Batch, Data stream, Binding과 같은 방식)
4. Properties (Direction of data-flow, Dynamism, Concurrency 등)
각 Architecture style는 자신을 표현하는 meta element가 있다. 이에 대한 요소는 다음과 같다.
1-4. Software architecture style의 표현 예
이를 이용하여 이전 시간에 배웠던 MVC를 요약하여 나타내보자.
이처럼 재사용 가능하도록 문서화가 가능하다
2. Architecture style의 예시
이 중에서 체크된게 주로 많이 사용되는 것이라고 한다. 각 style의 대한 디테일한 내용은 너무 많고 딥하기 때문에 생략하고, 어떤 모양을 띄는지, 어떤 특장점을 갖는지만 간단히 알아보자.
2-1. Batch Sequential Architecture Style
전체 실행 완료 후 전체 데이터 다음으로 전달
2-2. Pipe and Filter Architecture Style
Filter에서 전체 데이터에 대한 연산이 끝나지 않았더라도, 일부 데이터에 대한 연산이 끝났다면 결과 데이터를 바로 다음 filter로 흘림 2-1보다 무조건 좋아보이지만, target system별로 특징과 요구사항이 달라지므로, 어떤 것이 '우수하다' 라고 표현해서는 안됨
2-3. Shared Repository Architecture Style
각 Application이 중간 layer나 agent 없이 shared repository에 직접 접근한다. 따라서 dataset 공유에 효과적이지만 관리에는 어려움이 존재
2-4. Layered Architecture Style
시스템이 여러개의 unique한 role을 갖는 layer로 분해되고, 수직으로 연결되어 구성되는 스타일. 각 layer는 unique role이 있으며, 끝나면 lower layer가 제공하는 service를 즉시 호출한다.(이를 위해서 모든 layer는 상위 layer에게 Virtual machine을 제공해야함)
2-5. MVC Architecture Style
Layered Architecture Style의 일부. 하지만, 갯수와 역할이 MVC형태로 고정된다.
2-6. Client Server Architecture Style
시스템이 client, server의 2개의 tier로 구성된다. 여기서 tier와 layer의 개념은 다른데, layer는 하나의 컴퓨터에서 role에 따른 구분이지만, tier는 서로 다른 역할을 하는 별도의 컴퓨터를 구분하는 개념이다.
server tier는 client에게 common service와 server tier에는 computation overhead가 높은 서비스를 제공하고 client tier는 user와 상호작용한다 .
2-7. Microservice Architecture Style
작은 functionality를 제공하도록 함. Gateway는 client와 micro service간의 interface를 제공한다.
2-8. Publish and Subscribe Architecture Style
publisher와 subscriber로 나뉨. publisher의 state가 바뀔 때 subscriber에게 notification이 간다. 그리고 subscriber는 fetch를 통해 데이터를 가져올 수 있게된다.
'학교 공부 > 소프트웨어 분석 및 설계' 카테고리의 다른 글
Software Analysis and Design - ML (0) | 2021.12.05 |
---|---|
Software Analysis and Design - Software Architecture Design (0) | 2021.12.04 |
Software Analysis and Design (0) | 2021.12.04 |
Software Analysis and Design - Design Patterns (0) | 2021.12.04 |
Software Analysis and Design - Functional and Data Component (0) | 2021.12.04 |