소프트웨어 아키텍처
- 소프트웨어 아키텍처는 소프트웨어를 구성하는 요스들 간의 관계를 표현하는 시스템의 구조 또는 구조체이다.
- 소프트웨어의 골격이 되는 기본구조로, 기능적 비기능적 요구사항이 반영되어 있어 이해 관계자들의 의사소통 도구로 활용
- 애플리케이션의 분할 방법과 분할된 모듈에 할당될 기능, 모듈 간의 인터페이스 등을 결정
- 소프트웨어 아키텍처 설계의 기본 원리에는 모듈화, 추상화, 단계적 분해, 정보은닉이 있다.
모듈화
- 소프트웨어의 성능 향상, 시스템의 수정 및 재사용, 유지 관리 등을 용이하도록 시스템의 기능을 모듈 단위로 나눈것.
추상화
- 문제의 전체적이고 포괄적인 개념을 설계한 후 차례로 세분화하여 구체화시켜 나가는 것.
단계적 분해
- 문제를 상위의 중요 개념으로부터 하위의 개념으로 구체화시키는 분할 기법.
- 소프트웨어의 포괄적인 기능에서부터 시작하여 점차 구체화하고, 알고리즘, 자료 구조 등 상세한 내역은 가능한 뒤로 미루어 진행.
정보 은닉
- 한 모듈 내부에 포함된 절차와 자료들의 정보가 감추어져 다른 모듈이 접근하거나 변경하지 못하도록 하는 기법
- 정보 은닉을 통해 모듈을 독립적으로 수행
- 모듈이 변경되더라도 다른 모듈에 영향이 없으니 수정, 테스트, 유지보수가 용이.
소프트웨어 아키텍처의 설계 과정
- 설계 목표 설정 -> 시스템 타입 결정 -> 아키텍처 패턴 적용 -> 서브시스템 구체화 -> 검토
아키텍처 패턴
- 아키텍처 패턴은 아키텍처를 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제를 의미한다.
- 소프트웨어 시스템의 구조를 구성하는 기본 윤곽을 제시.
- 레이어, 클라이언트-서버, 파이프-필터, 모델-뷰-컨트롤러 패턴 등이 있다.
레이어 패턴
- 시스템을 계층으로 구분하여 구성
- 하위 계층은 상위 계층에 대한 서비스 제공자
- 상위 계층은 하위 계층의 클라이언트
- 서로 마주보는 두 개의 층에서만 상호작용
ex) OSI 참조 모델
클라이언트-서버 패턴
- 하나의 서버 다수의 클라이언트 컴포넌트로 구성되는 패턴.
- 사용자가 클라이언트를 통해 서버에 요청, 클라이언트가 응답을 받아 사용자에게 제공.
ex) 인터넷 검색, 애플리케이션
파이프-필터 패턴
- 데이터 스트림 절차의 각 단계를 필터로 캡슐화 하여 파이프를 통해 전송하는 패턴.
- 앞 시스템의 처리 결과물을 파이프를 통해 전달받아 처리 후 그 결과물을 파이프를 통해 다음 시스템으로 넘겨주는 패턴을 반복.
- 데이터 변화, 버퍼링, 동기화등에 주로 사용
ex) UNIX의 쉘
모델-뷰-컨트롤러 패턴
- 서브시스템을 모델, 뷰, 컨트롤러로 구조화하는 패턴.
- 컨트롤러가 사용자의 요청을 받으면 핵심 기능과 데이터를 보관하는 모델을 이용하여 뷰에 정보를 출력하는 구조.
- 여러 개의 뷰를 만들 수 있다.
- 한 개의 모델에 대해 여러 개의 뷰를 필요로 하는 대화형 애플리케이션에 적합하다.
'정보처리기사' 카테고리의 다른 글
[정보처리기사] - 자료 구조 (0) | 2024.07.15 |
---|---|
[정보처리기사] - 데이터베이스 보안 (0) | 2024.07.15 |
[정보처리기사] - 트랜잭션 / 클러스터 (0) | 2024.07.14 |
[정보처리기사] - 정규화 / 반정규화 (1) | 2024.07.13 |
[정보처리기사] - 관계형 데이터베이스 (1) | 2024.07.13 |