-
정보처리기사[실기 핵심 정리] - 소프트웨어 아키텍처용어 정리 2024. 4. 3. 17:32
소프트웨어 아키텍처
- 정의 : 소프트웨어의 기본 구조로, 시스템의 컴포넌트와 이들 간의 관계를 기술한다.
- 목적 : 시스템의 골격을 제공하고, 고수준에서의 설계 지침을 제공한다.
소프트웨어 아키텍처의 특징
특징 설명 간략성 이해하고 추론할 수 있는 수준의 간결함을 유지한다. 추상화 시스템의 추상적인 표현을 사용한다. 가시성 시스템이 포함해야 하는 요소들을 명확히 가시화한다. 관점 모형 다양한 이해당사자의 관심사에 따른 모형을 제시한다. 의사소통 수단 이해당사자 간의 원할한 의사소통 수단으로 활용된다. 소프트웨어 아키텍처 프레임워크 구성요소
구성요소 설명 아키텍처 명세서
(Architecture Description)● 아키텍처를 기록하기 위한 산출물 이해 관계자
(Stakeholder)● 소프트웨어 시스템 개발에 관련된 모든 사람과 조직을 포함한다.
● ex) 고객, 개발자, 프로젝트 관리자관심사
(Concerns)● 이해 관계자들의 다양한 요구사항과 관점을 반영한다. 관점
(Viewpoint)● 서로 다른 역할이나 책임에 따른 시스템에 대한 서로 다른 관점을 제시한다. 뷰
(View)● 이해 관계자들의 견해로부터 전체 시스템을 표현한다 소프트웨어 아키텍처 4 + 1 뷰
1)소프트웨어 아키텍처 4+1 뷰 개념
- 목적 : 고객의 요구사항을 정리한 시나리오를 다양한 관점에서 분석하고 표현한다.
- 적용 : 복잡한 소프트웨어 아키텍처를 여러 이해 관계자가 이해할 수 있도록 한다.
2)4+1 View Model과 구성요소
- 논리적 관점
- 구현 관점
- 프로세스 관점
- 배치관점
- 유즈케이스 관점
구성요소 설명 논리 뷰
(Logical View)● 시스템의 기능적 요구사항을 표현
● 최종 사용자에게 제공되는 기능을 나타낸다.구현 뷰
(Implementation View)● 소프트웨어 모듈의 구성과 개발자의 관점을 반영
● 컴포넌트 다이어그램으로 구현을 표현프로세스 뷰
(Process View)● 프로그램 실행 시의 시스템을 표현
● 동시성, 분산처리, 시스템 통합 등의 동적인 측면을 중심적으로 둔다.배치 뷰
(Deployment View)● 시스템의 물리적 배치와 네트워크 연결을 표현
● 성능, 가용성, 신뢰성 등의 비기능적 요구사항을 고려한다.유주케이스 뷰
(Use Case View)● 아키텍처 설계 및 검증을 주도한다.
● 유즈케이스 다이어그램을 사용하여 다른 뷰를 검증한다.소프트웨어 아키텍처 품질속성
품질속성 설명 정확성
(Correctness)사용자가 요구한 기능을 정확히 수행해야 한다. 신뢰성
(Reliability)오차나 오류 없이 기능이 안정적으로 동작해야 한다. 효율성
(Efficiency)자원을 적절하게 활용하여 기능을 수행해야 한다. 무결성
(Integrity)자료는 인가된 사용자만이 변경할 수 있어야 한다. 사용 용이성
(Usability)사용자가 쉽게 배우고 사용할 수 있어야 한다. 유지보수성
(Maintainability)오류 수정 및 변경이 용이해야 한다. 시험 용이성
(Testability)테스트를 수행하기 용이해야 한다. 유연성
(Flexibility)새로운 요구사항을 쉽게 적용할 수 있어야 한다. 이식성
(Potability)다양한 플랫폼 및 하드웨어에서 운영이 가능해야 한다. 재사용성
(Reusability)다른 목적으로도 사용하기 용이해야 한다. 상호 운용성
(Interoperability)다른 소프트웨어와 상호 작용이 용이해야 한다. 확장성
(Scalability)시스템이 증가하는 부하에 대응할 수 있어야 한다. 보안
(Security)소프트웨어가 데이터 보안 및 개인정보 보호 기준을 충족해야 한다. 소프트웨어 아키텍처 패턴의 개념
- 정의 : 재사용 가능한 소프트웨어 아키텍처의 해결책으로, 공통적인 설계 문제에 대한 일반적인 접근 방법 제시
- 목적 : 소프트웨어 개발 과정에서 발생할 수 있는 다양한 문제를 해결한다.
소프트웨어 아키텍처 패턴의 중요성
종류 설명 재사용성 이미 검증된 설계 방식을 재사용함으로서 시간과 비용을 절약한다. 표준화 아키텍처 패턴을 사용하면 표준화된 방식으로 소프트웨어를 설계할 수 있다. 개발 효율성 일반적인 문제에 대한 해결책을 제공하여 개발 과정을 과속화한다. 문서화 아키텍처 패턴은 문서화되어 있으며, 이를 통해 소프트웨어의 구조를 쉽게 이해할 수 있다 소프트웨어 아키텍처 패턴 종류
1) 계층화 패턴(Layered Pattern)
- 정의 : 소프트웨어를 여러 개층으로 구분하여 각 계층이 하위 계층의 기능을 사용하도록 하는 구조
- 적용 : OSI 7계층, TCP/IP 4계층 등 네트워크 프로토콜 스택에서 널리 사용된다.
- 장점 : 계층 간의 독립성으로 인해 유지보수와 업그레이드에 용이하다.
2) 클라이언트-서버 패턴(Client -Server Pattern)
- 정의 : 서버가 여러 클라이언트에 서비스를 제공하는 구조
- 적용 : 대부분의 웹 애플리케이션과 데이터베이스 시스템에서 사용
- 장점: 중앙 집중식 데이터 관리와 자원의 효율적인 활용이 가능
3) 마스터-슬레이브 패턴(Master-Slave Pattern)
- 정의 : 마스터 컴포넌트가 작업을 여러 슬레이브에 분산시키고, 슬레이브의 처리 결과를 종합하는 구조
- 적용 : 병렬 컴퓨팅, 고성능 컴퓨팅 환경에서 사용
- 장점 : 복잡한 작업을 여러 컴포넌트가 분담하여 처리 속도 향상이 가능
4) 파이프-필더 패턴(Pipe-Filter Pattern)
- 정의 : 데이터 스트림 처리 시스템에서 필터 컴포넌트가 각단계의 처리를 수행후 파이프를 통해 결과를 전달하는 구조
- 적용 : Unix쉘 스크립트 및 데이터 스트림 처리 시스템에 사용
- 장점 : 각 필터의 독립적인 처리로 시스템의 확장성과 재사용성이 높다.
5) 브로커 패턴(Broker Pattern)
- 정의 : 분산 시스템에서 컴포넌트 간의 통신을 중재하는 브로커 컴포넌트를 사용
- 기능 : 브로커는 서비스 요청을 수신하고 적절한 서비스를 사용자에게 전달한다.
- 장점 : 시스템의 유연성과 확장성을 증진한다.
6) 피어 투 피어 패턴(Peer to Peer Pattern)
- 정의 : 모든 컴포넌트(피어)가 서버와 클라이언트의 역할을 동시에 수행
- 적용 : 파일 공유 시스템 등에서 사용
- 장점 : 중앙 집중식 서버에 의존하지 않는 분산 네트워크 구조를 가능하게 한다.
7) 이벤트-버스 패턴(Event-Bus Pattern)
- 적용 : 이벤트 버스를 통해 메시지를 발행하고 리스너가 이를 구독하는 구조
- 사용 예 : 알림 시스템, 메시징 시스템 등에서 사용
- 장점 : 이벤트 기반의 비동기 통신을 가능하게 한다.
8) 모델-뷰-컨트롤러 패턴(MVC Pattern)
- 구성: 모델(데이터 처리), 뷰(사용자 인터페이스), 컨트롤러(입력처리) 로 구성
- 적용 : 웹 애플리케이션, GUI 기반 애플리케이션으로 널리 사용
- 장점 : 각 컴포넌트의 독립성으로 인해 재사용성과 확장성이 높다.
9) 블랙보드 패턴(Blackboard Pattern)
- 적용 : 복잡하고 명확한 해결 전략이 정의되지 않은 문제에 사용
- 기능 : 여러 컴포넌트가 공유하는 중앙 정보 저장소(블랙보드)를 통해 협업한다.
10) 인터프리터 패턴(Interpreter Pattern)
- 적용 : 특정 프로그래밍 언어의 해석과 실행을 위한 컴포넌트 설계에 사용
- 목적 : 언어의 문법을 정의하고 이를 해석하여 실행한다..
'용어 정리' 카테고리의 다른 글
정보처리기사[실기 핵심 정리] - UI 설계 (0) 2024.04.05 정보처리기사[실기 핵심 정리] - UML (0) 2024.04.04 정보처리기사[실기 핵심 정리] - 소프트웨어 설계 기본 원칙 (0) 2024.04.03 정보처리기사[실기 핵심 정리] - 요구사항 분석 (0) 2024.04.03 정보처리기사[실기 핵심 정리] - 프로젝트 계획 (0) 2024.03.30