728x90
반응형
✅ 아키텍처 기초
소프트웨어 아키텍처를 공부하기 위해서 기초지식에 대해서 알아보자..!
💭 소프트웨어 아키텍처란?
소프트웨어 구조 또는 소프트웨어 아키텍처(software architecture)는 소프트웨어의 구성요소들 사이에서 유기적 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙이다.
소프트웨어의 설계는 서브시스템 수준의 덩어리화(chunking) 작업이라고 말할 수 있다.
👨🔧 아키텍처의 역할
- 시스템 구조를 확립하면서 소프트풰어 개발의 중심축
- 설계, 구현, 통합, 테스팅까지 통합하는 뼈대
- 초기 의사 결정의 핵심
- 컴포넌트
- 명백한
역할
을 가지고 있고,독립적
으로 존재할 수 있는시스템의 부분
- 명백한
- 모듈
- 프로그래밍 언어의 문법 구조에서 정의된 컴포넌트
- e.g)
- java에서 메서드, 클래스, 패키지는 모듈
- C언어에서는 모듈의 파일과 함수
- e.g)
- 프로그래밍 언어의 문법 구조에서 정의된 컴포넌트
👨🏻💼 아키텍처 설계
- 소프트웨어 시스템에 대한 전반적인 구조를 설계하는 과정
- 소프트웨어를 서브시스템으로 분할
- 서브시스템들이 어떻게 상호작동하는지 결정
- 서브시스템 인터페이스 결정
- 소프트웨어를 서브시스템으로 분할
👀 아키텍처의 여러가지 관점
논리적으로 분할된 서브시스템
서브시스템 사이의
인터페이스
컴포넌트 사이의 동적인
상호작용
서브시스템 사이에 공유되는
데이터
컴포넌트가
런타임에 존재하는 위치
🤔 아키텍처 사용이유?
- 소프트웨어 시스템을 개발자가 잘 이해하기 위해
- 시스템 일부는 독립적으로 작업을 위함
- 시스템 확장의 용이성을 위함
- 재사용을 위함
아키텍처는 설계의 핵심으로 소프트웨어 개발자가 이해하고 있어야한다.
아키텍처가 시스템 전체의 효율성
, 재사용성
, 유지보수성
을 결정하기 때문!
😽 아키텍처 표현
- 일반적으로
계층적 분할
을 사용한다.- 상세 수준에 따라 표현된 컴포넌트를 자세히 나타낸다.
🎨 패키지 다이어그램
- 관련된 특성을 가진 클래스/패키지들의 모임(재사용의 단위)
- UML에서 서브시스템을 표현할 때 도입되는 개념
- 패키지는 중첩 가능
- 서브시스템(패키지)로 분할하여 표현하면 객체사이의 의존성은 줄여 표현이 가능
- 화살표 의존관계 참고(UML 클래스 관계 :: 딩굴딩굴고양이)
BusinessSystem Client
는RentaUI
,Customer
클래스를 감추는Facade
패키지
🪜 패턴 레벨
- 아키텍처 패턴
- 클래스 묶음 사이의 관계
- 소프트웨어 시스템을 위한 근본적인 구조
- 정의된 하위 시스템
집합
을 제공하고, 하위 시스템의책임
과 하위시스템 간의관계
를 구성하기 위한규칙
- 소프트웨어 시스템의 전체적인 골격 구조
- 디자인 패턴
- 클래스 사이의 관계
- 소프트웨어 시스템의 하위 시스템이나 구성요소의 관계를 개선하기위한 체계를 제공
- 전체 시스템 구종에 영향을 미치지 않고, 하위 시스템과 구성요고의 마이크로 아키텍처를 정의
- 코딩 패턴
- 프로그래밍 언어에 특화된 낮은 수준의 패턴
- 주어진 언어의 기능을 사용하여 구성요소의 특정 문제 또는 구성요소 간의 관계를 구현하는 방법
728x90
반응형
'컴퓨터과학 > 0 + 소프트웨어 아키텍처(디자인 패턴)' 카테고리의 다른 글
[소프트웨어 아키텍처] 6. 상태 패턴(State Pattern -java) (0) | 2022.10.24 |
---|---|
[소프트웨어 아키텍처] 3. 커맨드 패턴(Command Pattern-java) (0) | 2022.10.20 |
[소프트웨어 아키텍처] 4. 옵저버 패턴(Observer Pattern -java) (0) | 2022.10.10 |
[소프트웨어 아키텍처] 1-3) 아키텍처 패턴 스타일 (2) | 2022.09.20 |
[소프트웨어 아키텍처] 1-2) 소프트웨어 아키텍처 문서화와 평가 (1) | 2022.09.20 |