{ CS } Software Architecture

소프트웨어 아키텍처

  • 소프트웨어 개발 시 적용되는 원칙과 지침이며, 이해 관계자들의 의사소통 도구로 활용된다
  • 이해하기 쉽고 명확하게 작성되어야 한다
  • 기본적으로 좋은 품질을 요구하고 사용자의 비기능적 요구사항으로 나타난 제약을 반영, 기능적 요구사항을 구현하는 방법을 찾는 해결 방법이다
  • 애플리케이션의 분할 방법과 분할된 모듈에 할당될 기능, 모듈 간의 인터페이스 등을 제공한다
  • 설계 과정: 설계 목표 설정, 시스템 타입 결정, 아키텍처 패턴 적용, 서브시스템 구체화, 검토

View 의 종류 & 특징

  • 유스케이스 뷰: 시스템 외부 사용자의 관점 / 사용 사례와 이들 간의 관게를 정의하며, 다른 뷰를 검증하는 용도로 사용하는 뷰
  • 논리적 뷰: 설계자의 관점 / 시스템의 기능적인 요구사항이 제공되는 방법을 설명해주는 뷰
  • 구현 뷰: 개발자의 관점 / 서브 시스템 모듈이 어떻게 구조화되어 있는지를 확인하기 위해 소프트웨어 구성을 보여주는 뷰
  • 프로세스 뷰: 시스템 통합자의 관점 / 자원의 효율적인 사용, 이벤트 처리 등을 표현한 뷰
  • 배포 뷰: 테스터의 관점 / 컴포넌트가 어떻게 배치되고 연결되는지를 보여주는 뷰

추상화의 종류

  • 종류: 과정 추상화, 데이터(자료) 추상화, 제어 추상화

정보 은닉

  • 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하게 하는 기법
  • 다른 모듈과 커뮤니케이션이 필요한 경우에는 필요한 정보만 인터페이스를 통해 교환
  • 정보은닉을 통해 모듈을 독립적으로 수행가능 하고 이로 인하여 수정, 테스트, 유지보수가 용이

사용성

  • 사용자가 소프트웨어를 사용하는데 헤매지 않도록 명확하고 편리하게 구현하는 것

아키텍처 패턴

  • 시행착오를 줄여 개발시간을 단축시키고, 고품질의 소프트웨어를 생산 할 수 있도록 사용 하는 패턴
  • 검증된 구조로 개발하기 때문에 안정적인 개발이 가능
  • 이해관계자들이 공통된 아키텍처를 공유할 수 있어 의사소통이 간편함
  • 시스템의 특성을 개발 전에 예측하는 것이 가능해진다

파이프-필터 패턴

  • 데이터 스트림 절차의 각 단계를 필터(Filter) 컴포넌트로 캡슐화하여 파이프(Pipe)를 통해 데이터를 전송하는 패턴
  • 필터 간 데이터 이동 시 데이터 변환으로 인한 오버헤드가 발생함

MVC 패턴

  • 모델: 서브시스템의 핵심 기능과 데이터를 보관
  • 뷰: 사용자에게 정보를 표시함
  • 컨트롤러: 사용자로부터 입력된 변경 요청을 처리하기 위해 모델에게 명령을 보냄

마스터-슬레이브 패턴

  • 동일한 구조의 슬레이브 컴포넌트로 작업을 분할한 후, 슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식으로 작업을 수행하는 패턴
  • 마스터 컴포넌트는 모든 작업의 주체이고 슬레이브 컴포넌트는 마스터 컴포넌트의 지시에 따라 작업을 수행하여 결과를 반환함
  • 장애 허용 시스템이나 병렬 컴퓨팅 시스템에서 주로 활용된다

그 외 패턴

  • 레이어 패턴: 시스템을 계층으로 구분해서 구성하는 패턴
  • 클라이언트-서버 패턴: 하나의 서버, 다수의 클라이언트 컴포넌트로 구성되는 패턴