[SE] Architectural Design

parkheeddong·2023년 4월 20일
0

Software Engineering

목록 보기
6/19
post-thumbnail

1. Architecture Design

📌 Architectural Design이란?!

➡️ 소프트웨어의 전반적 구조를 디자인하는 것이다.

시스템의 주요 구조적 컴포넌트와 그 관계를 밝히는 것이다.

✔️시스템 구조를 디자인하는 것은 functional requirement와 non-functional requirement를 충족시키는 작업이다.

architecture는 system 타입, background, experience, specific requirements들에 따라 결정된다.

📌 SW Architecture의 두가지 단계

✔️Architecture in small

individual program의 Architecture

✔️Architecture in large

system of system, 복잡한 시스템의 Architecture

📌 SW Architecture 디자인의 세가지 장점

➡️ 이해관계자와의 의사소통에 유용하다.

➡️ 시스템이 주요 requirement를 충족했는지 분석할 수 있다.

➡️ Large Scale Reuse가 가능하다.

비슷한 시스템은 비슷한 요구사항을 가지기 때문에 기존의 Architecture를 활용할 수 있다.

📌 시스템의 Nonfunctional requirements

➡️ Non-functional requirement는 Architecture를 선택하는 데 영향을 끼친다. 다음과 같이 다섯가지 requirements가 영향을 줄 수 있다.

✔️Performance

컴포넌트의 개수를 줄이고 critical operation을 localize 해야 한다.

✔️Security

Layered structure을 사용해서 가장 밑단의 레이어에 중요한 정보를 저장한다.

✔️Safety

safety validation을 많이 하게 될 것이므로 validation cost를 줄일 수 있도록 관련 component를 넣어둔다.

✔️Availability

꺼지면 안되는, 늘 available한 시스템이어야 하므로 redundant한 component를 사용한다.

✔️Maintanability

유지보수가능할 수 있도록 fine-grain된 component를 많이 만든다.

이러한 requirement는 한번에 모두 충족될 수는없으며, 특히 performance <-> maintanability는 상충되는 부분이 있다.

📌 Architecture View : 4+1 view 모델

➡️ 시스템의 Architecture를 디자인할 때 어떤 관점이 유용할까?!

✔️logical view

functional requirements. 시스템에서의 key abstraction을 보여준다.

✔️physical view

non-functional requirments(performance)를 보여준다.

✔️development view

소프트웨어가 어떻게 분해되어있는지 보여준다. sw 매니저와 프로그래머에게 유용하다.

✔️physical view

어떻게 시스템 하드웨어와 소프트웨어 컴포넌트가 분배되어 있는지 보여준다. 시스템 엔지니어에게 유용하다.

➕Scenarios

오브젝트와 프로세스들 간의 interaction sequence를 보여준다.

2. Architectural Patterns

1) MVC Pattern(Model-View-Controller)

2) Layered Architecture

3) Repository Architecture

4) Client-server Architecture

5) Pipe and Filter Architecture

3. Application Architectures

1) Transaction Processing System

2) Information System

3) Language Processing System

0개의 댓글