소프트웨어 아키텍처
소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체
아키텍처 설계의 기본원리
- 모듈화(Modularity)
시스템의 기능들을 모듈 단위로 나누어 유지보수를 향상시키는 것
모듈의 크기가 너무 작으면 모듈 간의 통합비용이 많이 듦
반대로 모듈의 크기가 너무 크면 개발비용이 많이 듦
- 추상화(Abstraction)
전체적이고 포괄적인 개념을 설계화 한 후 세분화, 구체화 하는 과정
과정 추상화 : 전반적인 흐름만 설계 ( 자세한 수행 과정 X )
데이터 추상화 : 데이터의 구조를 대표할 수 있는 표현으로 대체 ( 세부적인 속성이나 용도 X )
제어 추상화 : 이벤트 발생을 대표할 수 있는 표현으로 대체 ( 정확한 절차 및 방법 X )
- 단계적 분해(Stepwise Refinement)
상위의 중요한 개념으로 하위의 개념을 구체화시키는 분할 기법
포괄적인 기능을 우선 상세화, 알고리즘 및 자료구조는 가능한 뒤로 미루기
- 정보은닉(Information Hiding)
모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법
- 상위 설계와 하위 설계
상위 설계 : 아키텍처 설계, 시스템의 전체적인 구조 ( DB, 인터페이스 )
하위 설계 : 모듈설계, 상세설계, 시스템 내부 구조 및 행위 (컴포넌트, 자료구조, 알고리즘)
아키텍처 품질 및 속성
이해관계자들이 요구하는 수준의 품질을 유지할 수 있도록 아키텍처가 설계되어있는지 평가요소들을 구체화시킨 것
품질 평가의 요소
시스템 측면 : 성능, 보안, 가용성, 기능성, 사용성, 변경 용이성, 확장성 ( 시스템을 얼마나 구성되어 있는지 )
비지니스 측면 : 시장 적시성, 비용과 혜택, 예상 시스템 수명, 목표시장, 공개일정 ( 시스템이 얼마나 경쟁력있는지 )
아키텍처 측면 : 개념적 무결성, 정확성, 완결성, 구축 가능성, 변경성 , 시험성 ( 아키텍처가 얼마나 잘 구축되었는지 )
아키텍처 설계 과정
설계 목표설정 ( 요구사항 분석 )
시스템 타입 결정 ( 시스템 및 서브시스템 타입 결정 및 아키텍처 패턴 선택 )
아케텍처 패턴 적용 ( 시스템의 표준 아키텍처 설계 )
서브시스템의 구체화 ( 서브시스템의 기능 및 서브시스템간의 상호작용 동작과 인터페이스 정의 )
검토 ( 설계 목표 및 요구사항과 설계 기본 원리를 만족하는지 아키텍처 검토 )
협약(Contract)에 의한 설계
컴포넌트 설계시, 클래스에 대한 여러 가정을 공유할 수 있도록 명세한 것
컴포넌트에 대한 정확한 인터페이스를 명세
1) 선행조건(Precondition) : 오퍼레이션이 호출되기 전에 참이 되어야할 조건
2) 결과조건(Postcondition) : 오퍼레이션이 수행된 후 만족되어야 할 조건
3) 불변조건(Invariant) : 오퍼레이션이 실행되는 동안 항상 만족되어야 할 조건
아키텍처 패턴
아키텍처를 설계할 떄 참조할 수 있는 전형적인 해결방식
시스템 구조를 위한 기본적인 윤곽 제시
레이어 패턴(Layers Pattern)
시스템을 계층으로 구분하여 구성하는 고전적인 방법
상위계층 서비스 제공자, 하위계층 클라이언트
서로 마주보는 두 계층사이에 상호작용이 일어남 ( OSI 참조 모델 )
클라이어트-서버 패턴(Client-Server Pattern)
하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성되는 패턴
파이프-필터 패턴(Pipe-Filter Pattern)
데이터 스트림 절차의 각 단계를 필터로 캡슐화하여 파이프를 통해 전송하는 패턴
데이터 변환, 버퍼링, 동기화에 주로 사용 ( UNIX의 쉘 )
소스 → ( 파이프 ) → 필터1 → ( 파이프 ) → 필터2 → ( 파이프 ) → 필터 3 → ( 파이프 ) → Sink
시스템의 결과물을 파이프로 넘겨 받아 다음 파이프로 다시 넘기는 패턴을 반복
모델 - 뷰 - 컨트롤러 패턴 ( MVC 패턴 )
서브 시스템을 모델, 뷰, 컨트롤러로 구조화 하는 패턴
컨트롤러는 사용자 요청을 받고 모델은 핵심 기능과 데이터를 보관하여 뷰에 정보를 출력하는 구조
한 개의 모델에 대한 여러개의 뷰를 필요로 하는 대화형 어플리케이션에 적합
마스터-슬레이브 패턴
슬레이브 컴포넌트에서 처리된 결과물을 다시 돌려받는 방식 ( 장애 허용 시스템, 병렬 컴퓨팅 시스템 )
브로커 패턴
사용자가 원하는 서비스를 브로커 컴포넌트가 요청에 맞는 컴포넌트를 중개하는 패턴 ( 분산 환경 시스템 )
Peer To Peer 패턴
하나의 컴포넌트가 클라언트이면서 서버의 역할도 하는 패턴 ( 파일 공유 네트워크 )
이벤트 버스 패턴
소스가 이벤트 메시지를 특정 채널에 발행(Publish)하면 해달 채널을 구독(Subcribe)한 리스너들이 메시지를 받아 이벤트를 처리 ( 알림 서비스 )
블랙 보드 패턴
모든 컴포넌트가 공유 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 패턴 ( 음성인식, 차량 식별, 신호 해석 )
인터프리터 패턴
프로그램 코드의 각 라인을 수행하는 방법을 지정하고 기호마다 클래스를 갖도록 구성된 패턴 (번역기, 컴파일러, 인터프리터 )
참고자료
'자격증 > 정보처리기사' 카테고리의 다른 글
[정보처리기사] 모듈(Module) (0) | 2021.10.07 |
---|---|
[정보처리기사] 객체지향 ( Object-Oriented ) (0) | 2021.10.06 |
[정보처리기사] 개발환경 구축 (0) | 2021.10.06 |
[정보처리기사] XML (eXtensible Markup Language) (0) | 2021.10.05 |
[정보처리기사] 연계 메커니즘 (0) | 2021.10.05 |