자격증/정보처리기사

[정보처리기사] 소프트웨어 아키텍처

IT록흐 2021. 10. 6. 09:17
반응형

소프트웨어 아키텍처

 

소프트웨어를 구성하는 요소들 간의 관계를 표현하는 시스템의 구조 또는 구조체

 

 

아키텍처 설계의 기본원리

 

- 모듈화(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)한 리스너들이 메시지를 받아 이벤트를 처리 ( 알림 서비스 )

 

블랙 보드 패턴

모든 컴포넌트가 공유 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 패턴 ( 음성인식, 차량 식별, 신호 해석 )

 

인터프리터 패턴 

프로그램 코드의 각 라인을 수행하는 방법을 지정하고 기호마다 클래스를 갖도록 구성된 패턴 (번역기, 컴파일러, 인터프리터 )

 

 


 

 

참고자료

 

2021 시나공 정보처리기사 실기

수험생들의 궁금증을 100% 반영시험에 나올만한 내용만 구성시나공 정보처리기사 실기는 NCS 학습 모듈을 가이드 삼아 자세한 설명과 충분한 예제를 더한 후 교재에 수록된 문제나 이론은 하나도

book.naver.com

 

반응형