소프트웨어 아키텍처
소프트웨어의 골격이 되는 기본 구조, 소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조체
비기능적 요소를 포함한 기능적 요구사항을 구현하는 방법을 찾는 해결 과정
소프트웨어 아키텍처 설계의 기본 원리
모듈화
<aside>
💡 소프트웨어의 성능향상, 수정 및 재사용,유지 관리 등이 용이하도록 시스템의 기능들을 모듈 단위로 나누는 것을 의미함
</aside>
- 프로젝트 재사용성 향상
- 모듈이 너무 작으면 개수가 많아짐 → 통합비용의 증가
- 모듈이 너무 크면 모델 하나의 개발 비용이 많이 듦
- 모듈화를 통해 기능의 분리 → 인터페이스 단순화
- 프로그램의 효율적인 관리가 가능, 오류의 파급 효과를 최소화할 수 있음
추상화
문제의 전체적인(포괄적인 개념)을 설계한 후 차례로 세분화하여 구체화 시켜 나가는 것
- 과정 추상화 : 자세한 수행 과정을 정의하지 않고, 전반적인 흐름만 파악할 수 있게 설계하는 방법
- 데이터 추상화 : 세부적으로 묘사하지 않고 데이터구조를 대표할 수 있는 표현으로 대체하는 방법
- 제어 추상화 : 이벤트 발생의 절차를 세부적으로 표현하지 않고 대표할 수 있는 표현으로 대체