Architecture
Architecture 는
최적화를 목표로 두고
시스템 구성과 동작원리, 시스템의 구성환경 등을
설명 및 설계하는 '청사진' 또는 '설계도' 를 말한다.
Why Architecture
좋은 디자인을 가진 소프트웨어는
새로운 기능을 더 빠르게 많이 추가할 수 있다.
Good Architecture
균형 잡힌 분배 [Balanced Distribution]
객체지향 원칙 중,
Single Responsibilty 에 기반한다.
각 모듈들의 독립성이 떨어지면 테스트가 어렵다.
➡ 단일 책임 원칙 : 하나의 객체는 하나의 역할만 가진다.
테스트 가능성 [Testablity]
테스트를 시스템적으로 수행할 수 있도록
소프트웨어에 미리 준비되게 한다.
cf.
모든 이슈를 다루기 보다는
현실적으로 많이 겪게 되는 상황과 연관된 이슈만을 다루도록 한다.
사용 편의성 [Ease of Use]
코드가 적을수록 버그도 줄어든다.
코드를 적게 쓰려는 욕구가
개발자의 게으름만으로 설명되어서는 안된다.
유지관리 비용을 절감하는 방법의 시작이 될 수 있다.
세 가지 계층으로 각 코드의 책임과 역할을 나눈다.
Model
데이터 혹은 데이터를 조작하는 데이터 접근 레이어를 위한 부분
View
사용자에게 보여지는 시각적인 부분 ➡ UI
Controller / Presenter / ViewModel
Model 과 View 사이에서 중재하는 부분
📚 Reference
아키텍처란 무엇인가?
iOS Architecture Patterns
소프트웨어 아키텍처란 왜 중요할까?
Testability의 이해와 향상 방안