소프트웨어를 구성하는 구성요소(모듈 / 컴포넌트 등) 간의 관계를 관리하는 시스템의 구조이자 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙이다.
기본 원리
1. 모듈화 :
시스템의 기능들을 모듈 단위로 나누는 것 _ 이때 모듈 개수는 적당히. 너무 많을 경우 통합 비용이, 너무 적을 경우 모듈 하나의 개발 비용이 많이 들게 됨.2. 추상화 :
전체적이고 포괄적인 개념 설계 -> 차례로 세분화 / 구체화3. 단계적 분해 :
문제를 상위의 중요 개념으로부터 하위의 개념으로 구체화시키며 분할4. 정보 은닉
한 모듈 내부에 포함된 절차와 자료를 숨기며 독립적 수행을 가능캐 해, 다른 모듈이 접근하거나 변경하지 못하게 하기:: 모듈 내 응집도는 강하게, 모듈 간 결합도는 약하게가 포인트.
.
EX) MVC, MVP, MVVM 패턴 등
GoF라 불리는 네명의 컴퓨터과학 연구자들이 소개한 대표적인 디자인패턴 방식으로서 생성, 구조, 행위인 3가지 분야로 분류된다.
EX) 싱글톤, 옵저버, 프록시, 전략, 어댑터 패턴 등
. 관련 패턴 별 정리는 추후 추가 예정.
: 아래 위키백과 링크 각주 표 참조
https://ko.wikipedia.org/wiki/%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98_%ED%8C%A8%ED%84%B4
> 개인적으로 싱글톤 패턴이나 MVC, MVVM 패턴 이용 시 로직에 따라 코드를 나눠 의식적으로 개발 시 코드가 복잡해지거나 업무가 과해지는 걸 막을 수 있다는 점, 그리고 코드를 볼 때, 어디에 무엇을 하려했는지 이해하기 쉽고, 어떤 기능의 코드가 어디에 있을지 대략적으로 파악할 수 있다는 점이 현재의 나에게는 바로 체감할 수 있는 장점으로 느껴졌다.