소프트웨어 아키텍처 개념
소프트웨어 설계, 개발 및 유지 관리에 중요한 개념인 소프트웨어 아키텍처는 소프트웨어 시스템의 구조와 구성 요소 간의 상호 작용을 정의합니다. 아키텍처는 시스템이 실행될 수 있는 환경과 구성 요소 간의 통신을 정의하는 인터페이스를 고려하며, 이 모듈을 구성하는 작은 기능 단위를 모듈, 기능별로 그룹화된 모듈의 집합을 컴포넌트, 전체를 라이브러리라고 합니다.

소프트웨어 아키텍처 설계의 기본 원칙
모듈화
- 설명: 시스템 기능을 개별 모듈로 나누는 것
- 장점: 소프트 웨어 성능 향상, 유지관리 용이, 복잡한 시스템의 관리 효율성 향상
추상화
- 설명: 구체화하기 전에 전체적이고 포괄적인 개념 설계하는 것
- 장점: 높은 수준의 관점을 제공한 복잡한 시스템 단순화
단계적 분해
- 설명: 하향식 설계 전략을 활용하여 상위 수준 개념을 보다 상세하고 구체적인 하위 수준 개념으로 나누는 것
- 장점: 시스템 요구 사항 및 기능을 체계적으로 탐색하여 일관되고 체계적인 구조 보장
정보 은닉
- 설명: 다른 모듈이 접근하거나 수정하는 것을 방지하기 위해 모듈의 내부 세부정보를 숨기는 것
- 장점: 보안 강화, 복잡성을 줄여 모듈 내 변경사항이 미치는 영향 최소화
| 원칙 | 설명 | 장점 |
| 모듈화 | 시스템 기능을 개별 모듈로 나누는 것 | 소프트웨어 성능을 향상시키고 유지 관리를 용이하게 하며, 복잡한 시스템의 관리 효율성을 향상시킴 |
| 추상화 | 구체화하기 전 전체적이고 포괄적인 개념 설계하는 것 | 구현 세부 사항보다는 필수 기능에 초점을 맞춘 높은 수준의 관점을 제공하여 복잡한 시스템 단순화 |
| 단계적 분해 | 하향식 설계 전략을 활용하여 상위 수준 개념을 보다 상세하고 구체적인 하위 수준 개념으로 나누는 것 | 시스템 요구 사항 및 기능을 체계적으로 탐색하여 일관되고 체계적인 구조 보장 |
| 정보 은닉 | 다른 모듈이 접근하거나 수정하는 것을 방지하기 위해 모듈의 내부 세부정보를 숨기는 것 | 보안을 강화하고 복잡성을 줄이며 모듈 내의 변경 사항이 시스템의 나머지 부분에 미치는 영향 최소화 |
MVC (Model-View-Controller) 패턴
구성요소
- 모델: 애플리케이션의 데이터 및 비즈니스 로직을 나타냅니다. (애플리케이션에서 사용되는 데이터를 처리)
- 보기: 사용자 인터페이스를 표시합니다. (사용자에게 보이는 UI 부분)
- 컨트롤러: 사용자 입력을 처리하고 모델을 업데이트하여 애플리케이션 상태를 변경, 사용자 작업을 수신하고 처리합니다.

특징
- Controller는 여러 개의 View를 선택할 수 있는 1:n 구조
- 컨트롤러는 뷰만 선택하고 직접 업데이트하지는 않음
장점
- MVC 패턴은 간단한 구조로 인해 간단하고 사용이 많이 됨
단점
- 뷰와 모델 사이에 높은 종속성이 있음
- 종속성이 높으면 애플리케이션이 성장함에 따라 애플리케이션이 더 복잡해지고 유지 관리가 어려워질 수 있음
MVVM(Model-View-ViewModel) 패턴
구성요소
- 모델: 애플리케이션에서 사용되는 데이터와 해당 데이터를 처리하는 부분입니다.
- 보기: 사용자에게 표시되는 UI 부분입니다.
- ViewModel: 뷰를 표현하기 위해 생성된 뷰에 대한 모델입니다. (뷰를 표현하고 뷰를 표현하기 위한 데이터 처리)

특징
- MVVM 패턴은 명령 패턴과 데이터 바인딩이라는 두 가지 패턴을 사용하여 구현
- Command 패턴과 Data Binding을 사용하여 View와 ViewModel 간의 종속성을 제거
- ViewModel과 View는 1:n 관계
장점
- 뷰와 모델 사이에 종속성: 뷰와 모델 사이에는 직접적인 종속성이 없음
- 모듈형 개발: 각 부분(View, ViewModel, Model)이 독립적이므로 모듈형 개발이 가능
- 디커플링: MVVM 패턴은 명령 패턴과 데이터 바인딩을 통해 View와 ViewModel 간의 종속성을 제거
단점
- ViewModel 디자인의 복잡성: ViewModel을 디자인하는 것은 쉽지 않음
추가 정보
- 아키텍처 패턴: 뷰를 애플리케이션의 비즈니스 로직으로부터 완전히 독립적으로 만드는 것을 목표로 하는 아키텍처 패턴
- 재사용성: 아키텍처 패턴은 특정 컨텍스트 내에서 소프트웨어 아키텍처에서 자주 발생하는 문제에 대한 재사용 가능한 솔루션
- 비즈니스 로직: 소프트웨어 시스템이 수행해야 하는 비즈니스 요구사항을 정의하는 부분을 말함
'걔 (개발)로그 > Swift' 카테고리의 다른 글
| Swift에서 인스턴스 (Instance) 및 인스턴스 메서드 (Instance Methods) (0) | 2024.05.17 |
|---|---|
| Swift에서 UserDefaults의 정체 (0) | 2024.05.16 |
| Swift에서 옵셔널의 모든 것 (1) | 2024.05.16 |
| Swift에서의 전달인자(Argument), 매개변수(Parameter), 반환타입(Return Type) | 이건 또 뭐여 (0) | 2024.05.15 |
| Swift에서의 함수? 클래스? 메서드? | 그래서 걔들이 뭔데? (0) | 2024.05.15 |