용's
[Chap 8] Architecture Design 본문
7.1 Architecture Design
- 왜 아키텍처 설계가 중요한가?
.실체(아키텍처)를 두고 얘기하게 됨으로 커뮤니케이션의 기반이 될 수 있음
.초기 디자인 결정에 중요한 부분
7.1.1 Architecture Style
- 아키텍처 디자인을 할 때 여러가지 양식(style)이 존재하며 각 스타일은 다음과 같은 카테고리를 포함
.컴포넌트 집함(데이터베이스, 컴퓨터 모듈들)
.커넥터의 집함(컴포넌트들 사이의 통신)
.제약사항(어떻게 컴포넌트가 한 시스템으로 통합될 것인가)
.의미 모델(semantic model: 설계자를 이해 시킬만한 전체적인 시스템의 특징)
- 각 양식(style)에 대해 알아보자.
- Data Centered Architecture(데이터 중심 아키텍처)
.데이터 저장공간을 두고 클라이언트가 데이터를 가져다 쓰는 형태
.repository(저장소) 형태: 데이터 저장이 수동적으로 클라이언트가 필요할 때 알아서 가져다 쓰도록
.black board: 능동적으로 대이터를 클라이언트에게 알려줌
.새로운 클라이언트를 더할 것인가?
- Data flow Architecture(데이터 흐름 아키텍처)
- Call and return Architecture
- Layered Architecture(계층구조의 아키텍처)
7.1.2 Architecture Pattern
- Style이 조금더 큰 개념이고 아키텍처 패턴은 조금 더 구체적으로 아키텍처 적인 행위에 관한 것
- Concurrency, Persistence, Distribution 등으로 존재함
7.2 Architecture Design Method
- 먼저 고객의 요구사항들을 토대로 아키텍처의 디자인을 시작함
- 요구사항을 토대로 작성한 다이어그램(Data flow diagram과 같은)을 가지고 아래과 같은 하나의 프로그램으로 만듦. 이 프로그램은 아래 그림과 같이 수평적으로 또는 수직적으로 분할(Partitioning)이 가능함.
- Horizontal Partitioning(수평적 분할): 주요 함수(function)들에 대한 모듈의 계층적인 구조를 확인 할 수 있음
- Vertical Partitioning(수직적 분할): Decision making 모듈과 working 모듈을 확인할 수 있음
- 분할을 하는 이유?
.나눠서 테스트하기(testing) 위해
.나누면 유지보수도 쉬워짐
.사이즈가 적고 다른 부분과 연결된 부분을 잘랐으므로 다른 모듈로 사이드 이펙트 전달이 적어짐
7.2.1 Structured Design
- 실제 아키텍처 디자인을 하는 방법으로 구조화된 디자인(Structured Design)을 소개한다
- 목표는 실제 분할되어진 아키텍처 프로그램을 얻어내는 것이다.
- 하는 방법으로는 DFD(Data Flow Diagram)을 아키텍처 프로그램으로 맵핑하고, STD(State Transition
Diagram)을 각 모듈의 내용을 가르키기 위해 사용된다.
- 디자인 표기는 Structure Chart를 이용한다.
.구조 차트는 모듈, 커넥션, 모듈간의 통신(데이터, 제어) 등의 요소들을 가짐
.시스템을 모듈들로 나누어 표현할 수있음
.모듈들의 구조나 계층구조와 모듈간의 인터페이스 통신을 확인할 수 있음
.모듈의 내무적인 logic이나 데이터는 볼 수 없음
'Computer Science > Software Engineering' 카테고리의 다른 글
[Chap 10] Black Box Testing (0) | 2014.12.13 |
---|---|
[Chap 9] Software Testing (0) | 2014.12.13 |
[Chap 7] Design (0) | 2014.12.11 |
[Chap 6] Object-Oriented Concepts (0) | 2014.12.05 |
[Chap 5] Behavioral Modeling (0) | 2014.12.04 |