소프트웨어 아키텍처와 디자인 패턴 정리

이유정·2021년 10월 25일
0

소프트웨어 아키텍처?

  • 소프트웨어를 구성하는 구성요소(모듈 / 컴포넌트 등) 간의 관계를 관리하는 시스템의 구조이자 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙이다.

  • 기본 원리

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

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

    3. 단계적 분해 :
    문제를 상위의 중요 개념으로부터 하위의 개념으로 구체화시키며 분할

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

    :: 모듈 내 응집도는 강하게, 모듈 간 결합도는 약하게가 포인트.

    .

소프트웨어 디자인 패턴?

  • 소프트웨어 설계 시 특정 맥락에서 자주 발생하는 / 공통적인 문제들을 해결하기 위한 방법 중 하나로서 과거의 개발 과정에서 발견된 설계의 노하우를 축적, 재사용하기 좋은 좋은 형태로 묶어 정리한 일종의 설계 디자인 방법론.

아키텍처 패턴?

  • 주어진 상황의 소프트웨어 아키텍처에서 발생하는 공통 문제에 대해 이를 해결하기 위한 일반화, 재사용 가능한 해결책
  • 아키텍처 설계 시 이를 위한 기본적 윤곽을 제시. 서브 시스템들과의 역할 정의, 관계 간 여러 규칙 등이 포함되어있음.
  • 아키텍처 스타일이라고도 함.

EX) MVC, MVP, MVVM 패턴 등

GOF 디자인 패턴?

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

마무리

이러한 아키텍처와 패턴을 잘 활용, 프로그램에 녹일 수 있을 경우 장점 :

  • 검증된 구조 사용 _ 안정적 효율적 개발 가능, 개발 시간 단축 가능
  • SW 성능 향상 및 시스템의 수정 및 재사용성, 테스트 그리고 유지보수 용이
  • 복잡한 구조의 단순화로 프로그램 구조 파악 용이
  • 협업 시 이해관계자들의 의사소통 원활, 프로그램의 이해도 향상 그리고 동일 방식의 코드 작성 가능.

    > 개인적으로 싱글톤 패턴이나 MVC, MVVM 패턴 이용 시 로직에 따라 코드를 나눠 의식적으로 개발 시 코드가 복잡해지거나 업무가 과해지는 걸 막을 수 있다는 점, 그리고 코드를 볼 때, 어디에 무엇을 하려했는지 이해하기 쉽고, 어떤 기능의 코드가 어디에 있을지 대략적으로 파악할 수 있다는 점이 현재의 나에게는 바로 체감할 수 있는 장점으로 느껴졌다.

주의점 :

  • 여러 패턴이 존재하는 만큼, 개발하려는 프로그램에 대해 이해하고, 설계 시 각 패턴의 장단점이나 특성을 파악, 적절한 패턴을 사용하는 것이 중요.
  • 또한 과도하게 사용하려하거나, 억지로 집어넣으려 할 경우 되려 불필요한 코드를 작성하게 될 수 있음.
profile
개인 공부 블로그

0개의 댓글