본문 바로가기
자격증/정보처리기사

소프트웨어 아키텍처

by 두두리안 2022. 6. 23.
728x90

목차

1.시스템 아키텍처
2.소프트웨어 아키텍처
3.소프트웨어 아키텍처 패턴
4.코드설계
5.파일설계

1.시스템 아키텍처

1-1. 시스템 아키텍처의 개념

* 하드웨어와 소프트웨어를 아우르는 시스템 전체에 대한 논리적인 기능 체계
* 시스템의 구성 및 작동원리를 설명하는 프레임워크

1-2. 시스템 아키텍처 특징

* 시스템 구성 요소에 대한 설계 및 구현이 자세히 기술되어 있다
* 요구사항 및 시스템의 전체 생명주기를 고려하여 시스템의 최적화를 목표로 한다

1-3. 시스템 아키텍처 설계

* 시스템 아키텍처 설계는 소프트웨어 아키텍처 설계에 제약을 하는 상위 설계
* 소프트웨어 아키텍처의 설계는 상세설계를 제약한다

2.소프트웨어 아키텍처

2-1. 소프트웨어 아키텍처의 개념

* 소프트웨어의 골격이 되는 기본구조이며 소프트웨어 전체에 대한 밑그림
* 소프트웨어 구성 요소의 유기적인 결합형태와 전체구조
* 설계 및 구현을 위한 구조적, 비구조적인 틀을 제공
* 모듈이나 컴포넌트들과의 관계를 정의, 상호관계를 설계하고 전개하기 위한 지침
* 소프트웨어 품질 요구사항은 소프트웨어 아키텍처를 결정하는데 중요한 요소로 작용

2-2. 소프트웨어 아키텍처 설계

1. 아키텍처 드라이버: 아키텍처에 영향을 주는 요구사항
2. 아키텍처 설계의 입력물과 출력물
    * 입력물: 시스템 요구사항, 아키텍처 드라이버
    * 태스크: 작업의 단위(더이상 분해되지 않음), 병행되지 않는 하나의 프로세스
    * 출력물: 아키텍처를 문서화

2-3. 소프트웨어 아키텍처 설계시 고려사항

* 개발자와 사용자 간의 의사소통 도구로 활용할수 있어야 한다
* 구현시 제약 사항을 파악
* 재사용할수 있도록 설계
* 이해하기 쉽고, 명확하게 작성해야한다
* 표준화된 형식으로 작성하며, 버전관리를 해야한다

2-4. 소프트웨어 아키텍처의 비즈니스 품질

1. 시장적시성: 지정한 시간에 소프트웨어 출시
2. 비용과 이익: 비용의 절감이나 유연성, 어느부분에 초점을 맞출지 판단
3. 예상 시스템 수명: 소프트웨어 유통 및 폐기시점을 고려해 확장성이나 이식성 고려
4. 목표시장: 사용 고객층을 정확히 파악하여 시장성을 파악
5. 신규 발매 일정또는 공개 일정: 소프트웨어의 신규발매, 유통, 관리일정을 공개하여 관리한다
6. 기존 시스템과의 통합: 기존 시스템또는 타 시스템과의 통합 방법을 고려

3.소프트웨어 아키텍처 패턴

3-1. 계층화 패턴 (Layerd Pattern)

1. 기능을 분리한 계층: 각각의 인접 레이어끼리만 상호작용을 하는 패턴
    * SOA기반 애플리케이션 계층
        - 표현 계층 (UI)
        - 프로세스 계층 (Service)
        - 비즈니스 계층 (Domain)
        - 데이터 접근 계층 (Persistence)
2. n-Tier 패턴: 시스템을 물리적으로 분리한다
    * 1-Tier 패턴: 클라이언트, 애플리케이션, 데이터 계층을 하나의 서버 또는 클라이언트에 함께 구현
    * 2-Tier 패턴: 클라이언트와 애플리케이션 계층, 데이터 계층을 각각 구분하여 구현
    * 3-Tier 패턴: 각각의 계층을 모두 물리적으로 분리하여 구현

3-2. 클라이언트/서버 패턴 (Client/Server Pattern)

* 서비스를 제공하는 서버와, 서비스를 요청하는 클라이언트로 구성
* 분산 네트워크 방식으로 병목현상을 줄일수 있다
* 보안에 취약하고 응용프로그램이 복잡해질수 있다

3-3. 마스터/슬레이브 패턴 (Mater/Slave Pattern)

* 작업을 분리하고 배포하는 주인(Mater)과 요청작업을 처리하는 하인(Slave)으로 구성된다
* 마스터 데이터베이스는 원본데이터, 슬레이브는 복제본을 동기화하는 형태로 활용

3-4. 파이프-필터 패턴 (Pipe-filter Pattern)

* 데이터 스트림을 생성하고 처리하는 시스템에서 사용된다
* 서브 시스템이 입력 데이터를 받아 처리한 결과를 파이프를 통해 다음 서브시스템으로 넘겨주는 과정
* 버퍼링또는 동기화 목적으로 사용된다

3-5. 브로커 패턴 (Broker Pattern)

* 브로커는 컴포넌트간의 통신을 조정하는 역할
* 분산 시스템에서 원격 서비스 실행을 통해 상호작용을 한다
* 서버와 클라이언트 사이에 위치하여 클라이언트가 요청한 기능을 서버대신 클라이언트에게 서비스를 한다

3-6. 피어 투 피어 패턴 (Peer-to-peer Pattern)

* 서버와 클라이언트의 역할이 유동적으로 바뀔수 있다
* 서로에게 서비스를 요청하고 서비스하는 파일 공유 네트워크 등에 활용될수 있다

3-7. 이벤트-버스 패턴 (Event-bus Pattern)

* 알리 서비스등을 활용된다
* 이벤트를 처리하는 주요 컴포넌트
    - 이벤트 소스: 데이터와 처리 결과
    - 이벤트 리스너: 특정 채널의 메시지를 구독
    - 채널: 서버, 클라이언트, 컴포넌트
    - 이벤트 버스: 메시지 경로

3-8. MVC 패턴 (Model-View-Controller Pattern)

1. 개념
    * 사용자 인터페이스로부터 비즈니스 로직을 분리하여 응용 프로그램의 시각적 요소를 쉽게 수정할수 있도록 지원
    * 사용자 인터페이스 변경에 로직이 영향을 덜 받도록 만든 모델
2. Model
    * 응용프로그램의 데이터에 해당하며 요청한 데이터 처리를 담당
    * 모델 상태의 변화가 있을 경우에 컨트롤러와 뷰에 통보
3. View
    * 모델로부터 가져온 데이터의 시각화
    * 버튼, 텍스트상자, 체크박스
4. Controller
    * 데이터와 비즈니스 로직 사이의 상호작용을 관리
    * 뷰를 통해 사용자 요청을 해당모델에 전달, 모델의 응답을 다시 사용자에게 돌려준다

3-9. 블랙보드 패턴 (Blackboard Pattern)

1. 개념
    * 음성인식, 차량식별 및 추적등에 활용
    * 블랙보드에 접근하여 기존 지식 소스와의 패턴 매칭을 통해 데이터를 검색
2. 주요 컴포넌트
    * 블랙보드: 소스저장 메모리
    * 지식소스: 특정 데이터, 블랙보드에 저장된 데이터
    * 제어 컴포넌트: 모듈선택, 설정 및 실행 담당

3-10. 인터프리터 패턴 (Interpreter Pattern)

* 특정언어나 명령어를 해석하는 컴포넌트를 설계할때 사용
* 특정언어로 작성된 표현식을 수행하는 방법을 지정

4.코드설계

4-1. 코드의 개념

* 정보처리 효율을 극대화하기 위해 일정한 규칙을 통하여 부여한 숫자, 문자등의 기호체계이다
* 코드는 컴퓨터 처리에 융통성과 일관성을 부여할수 있어야 하며 업무처리에 있어 효율성과 용이성이 부여

4-2. 코드의 3대 기능

* 식별 기능: 다른것과 구별될수 있는 기능
* 분류 기능: 동일 특성이나 유형을 가진 데이터로 그룹화하여 나누는 기능
* 배열 기능: 의미를 부여한 일련의 순서로 나열할수 있는 기능

4-3. 코드 설계 원칙

1. 적은자릿수: 적은 자릿수로 많은 데이터를 표현할수 있도록하낟
2. 고유성: 하나의 항목에는 하나의 코드만 부여되어야 한다
3. 정렬과 분류: 데이터를 특정기준으로 분류하고 정렬이 용이하도록 한다
4. 적응성 및 확장성: 데이터 양이 증가하거나 감소해도 기준을 바꾸지 않는다
5. 기계처리의 용이성: 컴퓨터로 처리하는데 편리하도록 한다
6. 표의성: 코드값만 보아도 그 의미를 알수 있도록한다

4-4. 코드설계 시 고려사항

* 코드화 목적과 사용범위 등을 종합적으로 판단하여 적합한 코드 체계를 선정한다
* 에러에 의해 정보처리에 중대한 영향을 주는 항목에 대해서는 체크 디지트를 주어 에러체크가 쉽도록한다
* 코드체계, 코드자릿수, 특성 등을 판단하여 각 대상 항목에 대하여 어떤 요령으로 코드를 부여할지 결정
* 표준화와 호환성을 고려하여 코드의 갱신과 확장이 용이해야 한다

4-5. 코드의 분류

1. 순차코드
    * 일정한 일련번호를 부여하는 방법
    * 코드부여가 간단하고 추가가 용이하다
    * 코드의 길이가 짧고 단순 명료하다
2. 블록코드
    * 코드화 대상항목을 공통의 특성에 따라서 임의 크기의 블록으로 구분한뒤 각 블록내에서 순서대로 번호를 부여하는 방식
    * 적은 자릿수로 많은 항목의 표시가 가능하고 예비코드 사용이 가능하다
    * 공통된 특성별로 분류 및 집계가 용이
3. 10진 코드
    * 코드의 좌측부분은 그룹화, 우측부분은 세분화하여 지정하는 코드
    * 추가하기 쉽고 확대가 용이
    * 10개 이상의 항목으로 그룹화
4. 그룹분류코드
    * 대분류, 중분류, 소분류로 구분하여 순차번호를 부여하는 방식
    * 다른코드에 비해 비교적 자릿수가 길다
5. 연상코드
    * 대상항목의 명칭등을 코드에 반영하여 대상에 대한 연상이 가능하도록 한방식이다
    * 영문자, 숫자를 조합하여 품목의 약호를 만들기 때문에 표의성이 뛰어나다
6. 표의 숫자 코드
    * 대상 항목의 중량, 면적, 용량 등의 물리적 수치를 이용하여 만든코드이다
    * 물리적인 수치가 나타나 있으므로 대상의 외형을 코드만 보고도 알수 있다
7. 합성코드
    * 2개 이상의 코드를 조합하여 만든 코드

4-6. 코드의 오류 발생 형태

1. 생략 오류: 입력시 한자리 빼놓고 기록
2. 필사 오류: 입력시 한자리를 잘못 기록
3. 전위 오류: 입력시 좌우자리를 바꾸어 기록
4. 이중 오류: 전위오류가 두 가지 이상 발생한경우
5. 추가 오류: 입력시 한 자리를 추가로 기록한 경우
6. 임의 오류: 오류가 2가지 이상 결합하여 발생한 경우

5.파일설계

5-1. 순차 편성

1. 순차편성의 개념
    * 입력되는 데이터의 논리적인 순서에 따라 물리적으로 연속된 위치에 기록
    * 파일복사나 일괄처리에 많이 사용
    * 기록 밀도가 좋고, 어떤 매체에도 이식성이 좋다
    * 순차 검색을 하여야 하므로 검색효율이 떨어진다
2. 순차 파일의 종류
    * 엔트리 순차 파일: 레코드가 추가되는 순서대로 저장되는 파일
    * 키 순차 파일: 레코드에 키 값을 두어 키 값의 순서로 저장되는 파일

5-2. 색인 순차 편성

1. 인덱스 개념
    * 순차 파일에서 원하는 데이터를 빠르게 검색하고 추출할수 있도록 일정한 순서에 따라 별도로 정리하여 놓은 목록을 의미
    * 먼저 인덱스를 찾고, 그 인덱스가 가리키는 위치의 데이터 파일에 접근하여 원하는 레코드를 참조
    * 검색 속도를 향상 시킬수 있다
2. 인덱스 순차 편성의 개념
    * 순차처리와 랜덤처리를 병행 할수있고, 레코드의 삽입과 수정이 용이
    * 인덱스를 저장하기 위한 공간과 오버플로우 처리를 위한 별도의 공간이 필요하다
    * 삽입, 삭제가 많아지면 파일에 대한 재편성이 이루어져야한다
    * 랜덤 편성파일과 비교할때 액세스 시간이 느리다
3. 인덱스 순차 파일의 구성영역
    * 인덱스 구역: 기본 데이터 영역에 대한 인덱스를 구성하는 영역
    * 기본 데이터 구역: 실제 데이터가 기록되는 영역
    * 오버플로우 구역: 정적 인덱스 편성인 경우 기본 데이터 구역대신 기록되는 영역
4. 인덱스 구성방법
    * 정적 인덱스 방법: 데이터 파일이 변경될때 인덱스 내용은 변화하지만 인덱스 파일 구조 자체는 변경없음
    * 동적 인덱스 방법: 각 블록에는 빈 공간을 미리생성, 유지가 안되는 블록은 다른 블록과 병합

5-3. 임의 편성

1. 임의 편성의 개념
    * 기록순서나 코드순서와 같은 론리적 순서와 관계없이 특정 밥법으로 키 변환에 의해 임의로 데이터를 보관
    * 데이터 처리시에도 필요한 장소에 직접 접근하여 원하는 정보에 접근하는 방식
2. 임의 편성의 특징
    * 레크드를 키 변환에 따라 직접처리
    * 어떤 레코드라도 평균 접근 시간 내에 접근
    * 키 변환에 따른 지연 시간이 있고 공간의 낭비를 가져올수 있다
    * 대화형 처리에 적합하고 충돌문제를 해결할수 있는 준비가 필요

참고자료 : 이기적 환상콤비 정보처리기사

728x90

'자격증 > 정보처리기사' 카테고리의 다른 글

자료구조  (0) 2022.06.24
디자인 패턴  (0) 2022.06.24
모듈의 성능 평가  (0) 2022.06.23
공통모듈  (0) 2022.06.22
UI 표준  (0) 2022.06.22