소프트웨어 아키텍처란?

Software architecture is the set of structures needed to reason about a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. -wikipedia

기본 원리

1. 모듈화

시스템의 기능들을 모듈 단위로 나누는 것 _ 이때 모듈 개수는 적당히. 너무 많을 경우 통합 비용이, 너무 적을 경우 모듈 하나의 개발 비용이 많이 들게 됨.

2. 추상화

전체적이고 포괄적인 개념 설계 -> 차례로 세분화 / 구체화

3. 단계적 분해

문제를 상위의 중요 개념으로부터 하위의 개념으로 구체화시키며 분할

4. 정보 은닉

한 모듈 내부에 포함된 절차와 자료를 숨기며 독립적 수행을 가능캐 해, 다른 모듈이 접근하거나 변경하지 못하게 하기

<aside> 💡 즉, 소프트웨어 아키텍처란 소프트웨어 시스템의 구조이다!

</aside>