[정보처리기사 실기] 1.요구사항 확인(2)

Sua An·2021년 10월 1일
0
post-thumbnail

02. 현행 시스템 분석

📌 현행 시스템 파악

: 사용하고 있는 소프트웨어 및 하드웨어는 무엇인지, 네트워크 구성은 어떻게 되어 있는지 파악하는 활동

✅ 절차

  • 구성/기능/인터페이스 파악
    • 시스템 구성 현황 파악
    • 시스템 기능 파악
    • 시스템 인터페이스 현황 파악
  • 아키텍처 및 소프트웨어 구성 파악
    • 아키텍처 파악
    • 소프트웨어 구성 파악
  • 하드웨어 및 네트워크 구성 파악
    • 시스템 하드웨어 현황 파악
    • 네트워크 구성 파악

📌 소프트웨어 아키텍처

: 여러가지 소프트웨어 구성요소와 특성 중에서 외부에 드러나는 특성, 구성요소간의 관계 표현하는 시스템의 구조나 구조체

✅ 소프트웨어 아키텍처 4+1뷰

: 1은 유스케이스 뷰, 4는 논리 뷰, 구현 뷰, 프로세스 뷰, 배포 뷰

  • 유스케이스 뷰
    - 유스케이스 또는 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는데 사용
    - 사용자, 설계자, 개발자, 테스트 관점
  • 논리 뷰
    - 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명
    - 설계자, 개발자 관점
  • 프로세스 뷰
    - 시스템의 비기능적인 속성 (자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리등을 표현)
    - 개발자, 시스템 통합자 관점
  • 구현 뷰
    - 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
    - 컴포넌트 구조와 의존성, 컴포넌트 부가정보
  • 배포 뷰
    - 물리적인 아키텍처에 어떻게 배치되는가를 보여줌

📌 소프트웨어 아키텍처 패턴

: 소프트웨어 아키텍처에서 일반적으로 발생하는 문제점들에 대한 일반화되고 재사용 가능한 솔루션

✅ 필요성

  • 의사소통을 통해 고객 요구사항 만족, 소프트웨어 개발 생산성과 품질 확보 가능
  • 이미 검증된 구조로 개발하여 안정적인 개발 가능
  • 시스템의 특성을 개발 전 예측 가능

✅ 유형

  • 계층화 패턴
    - 시스템을 레이어로 구분
    - 서로 마주 보는 두개의 계층 사이에서만 상호작용

  • 클라이언트-서버 패턴
    - 하나의 서버와 다수의 클라이언트
    - 사용자가 클라이언트를 통해 서버에 서비스 요청시 서버는 클라이언트에 서비스 제공
    - 서버는 클라이언트로 부터의 요청을 대기

  • 파이프 필터 패턴
    - 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능
    - 서브 시스템이 입력 데이터를 받아 처리하고 결과를 다음 서브 시스템으로 넘겨주는 과정을 반복
    - 필터 컴포넌트는 재사용성이 좋고, 추가가 쉽기 때문에 확장 용이

  • 브로커 패턴
    - 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용
    - 컴포넌트들은 원격 서비스 실행을 통해 상호작용이 가능
    - 브로커 컴포넌트는 컴포넌트 간 통신 조정 역할
    - 서버는 자신의 기능들을 브로커에 넘겨주며(Publish), 클라이언트가 브로커에 서비스를 요청하면 브로커는 자신의 레지스트리에 있는 적합한 서비스로 리다이렉션(Redirection)

    • 모델-뷰-컨트롤러 패턴(= MVC 패턴)
      - 대화형 애플리케이션을 3개의 서브 시스템으로 구조화
      - 모델 : 핵심 기능과 데이터 보관
      - 뷰 : 사용자에게 정보 표시 (하나 이상 정의 가능)
      - 컨트롤러 : 사용자로부터 요청을 입력받아 처리
      - 각 부분이 별도의 컴포넌트로 분리되어 있어서 서로 영향 받지 않고 개발 작업 수행 가능, 코드의 효율적 재사용 가능
      - 여러 뷰가 있어야 하는 대화형 애플리케이션 구축에 적합

📌 소프트웨어 아키텍처 비용 평가 모델

: 아키텍처 접근법이 품질 속성에 미치는 영향을 판단하고 아키텍처의 적합성을 평가하는 모델

✅ 소프트웨어 아키텍처 비용 평가 모델 종류

  • SSAM : 변경 용이성과 기능성에 집중,평가 용이하여 경험이 없는 조직에서도 활용 가능
  • ATAM : 아키텍처 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상충관계까지 평가
  • CBAM : ATAM 바탕, 경제적 의사 결정에 대한 요구 충족
  • ADR : 아키텍처 구성요소 간 응집도 평가
  • ARID : 전체 X, 특정 부분에 대한 품질요소에 집중

📌 디자인 패턴

: 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
개발에 이용시 효율성, 유지보수성, 운용성이 높아지며 프로그램의 최적화에 도움

  • 구성요소 : 패턴 이름, 문제 및 배경, 솔루션, 사례, 결과, 샘플코드

  • 유형 : 생성, 구조, 행위

  • 종류

✅ 생성패턴

  • Builder : 생성과 표기를 분리하여 복잡한 객체 생성
  • Prototype : 원형 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정하여 사용
  • Fatory Method : 상위 클래스에서 객체 생성 인터페이스 정의, 하위 클래스에서 인스턴스 생성
  • Abstract Factory : 동일한 주제의 다른 팩토리를 묶음
  • Singleton : 한 클래스에 한 객체만 존재하도록 제한


✅ 구조 패턴

  • Bridge : 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리
  • Decorator : 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴
  • Facade : 복잡한 시스템에 대하여 단순한 인터페이스 제공
  • Flyweight : 여러 개의 가상 인스턴스 제공, 클래스의 경량화 목적
  • Proxy : 실체 객체에 대한 대리 객체로 정보은닉 역할, 접근제어 용도
  • Composite : 객체들의 관계를 트리구조로 구성하여 부분-전체 계층을 표현, 복합 객체와 단일 객체를 동일하게 취급
  • Adapter : 기존의 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스 생성

✅ 행위 패턴

  • Mediator : 객체들 통신을 통제하는 중재자
  • Interpreter : 구문을 나누고 해석을 맡는 클래스 각각 작성, 여러 형태 언어 구문 해석 가능, 문법 자체를 캡슐화
  • Iterator : 내부구조 노출 X, 복합 객체의 원소를 순차적으로 접근 가능하개 해줌
  • Template : 일부분을 서브 클래스로 캡슐화하여 상위 작업의 구조는 바꾸지 않으면서 서브 클래스로 작업의 일부분 수행
  • Observer : 한 객체 상태 변화 시 의존하는 다른 객체들에 연락이 가고 자동으로 내용 갱신, '일대다' 의존
  • State : 객체 상태를 캡슐화하여 클래스화, 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경
  • Visitor : 각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스 생성, 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴
  • Command : 실행될 기능을 캡슐화, 요구사항을 객체로 캡슐화
  • Strategy : 알고리즘을 각각 하나의 클래스로 캡슐화, 행위를 클래스로 캡슐화하여 필요시 서로 교환
  • Memento : 객체의 정보를 저장할 필요가 있을 때 적용, Undo 기능 개발 시 사용
  • Chain of Responsibility : 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능한데, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결

📌 개발 기술 환경 현행 시스템 분석

✅ 운영체제

  • 개념
    - 컴퓨터 시스템이 제공하는 모든 하드웨어, 소프트웨어를 사용할 수 있도록 해줌
    - 사용자와 하드웨어간 인터페이스 담당
    - 사용자가 컴퓨터를 좀 더 쉽게 사용하기 위해 지원

  • 운영체제 현행 시스템 분석
    - 품질 : 신뢰도, 성능
    - 지원 : 기술 지원, 주변 기기, 구축 비용

  • 종류 및 특징
    • PC
      - 윈도우 : 중/소규모, 유지, 관리 비용 장점
      - 유닉스 : 대용량 처리, 안정성 높음
      - 리눅스 : 중/대규모 서버 대상, 높은 보안성
    • 모바일
      - 안드로이드 : 리눅스 운영체제 위에서 구동, 자바, 코틀린 언어로 개발 가능
      - iOS : 스마트폰, 태블릿PC의 높은 보안성, 고성능 제공

✅ 네트워크

  • 개념
    - 컴퓨터 장치들의 노드 간 연결을 사용하여 서로에게 데이터를 교환
    - 유선매체 or 무선 매체

  • OSI 7계층
계층설명프로토콜
응용 계층사용자와 네트워크 간 응용서비스 연결HTTP, FTP
표현 계층데이터 형식 설정과 부호교환, 암/복호화JPEG, MPEG
세션 계층연결 접속 및 동기제어SSH, TLS
전송 계층신뢰성 있는 통신 보장
데이터 분할과 재조립, 오류제어 흐름제어 등
TCP, UDP
네트워크 계층단말간 데이터 전송을 위한 최적 경로 제공IP, ICMP
데이터 링크 계층데이터 전송, 오류 제어이더넷
물리 계층0과1 비트 정보 변환RS-232C

✅ DBMS

: 데이터베이스라는 데이터의 집합을 만들고, 저장 및 관리할 수 있는 기능들을 제공하는 응용 프로그램

  • 기능 : 중복 제어, 접근 통제, 인터페이스 제공, 관계 표현, 샤딩/파티셔닝, 무결성 제약조건, 백업 및 회복

  • DBMS 현행 시스템 분석
    : (성능) 가용성, 성능, 상호호환성 / (지원) 기술 지원, 구축 비용

✅ 미들웨어

  • 개념
    • 분산 컴퓨팅 환경에서 응용 프로그램과 프로그램이 운영되는 환경 간 원만한 통신이 이루어 지도록 제어
      - 운영체제와 소프트웨어 애플리케이션 사이에 위치
      - 대표 WAS
  • WAS(Web Application Server)
    : 서버계층에서 애플리케이션이 동작할 수 있는 환경 제공, 안정적인 트랜잭션 처리와 관리, 이기종 시스템과의 애플리케이션 연동 지원하는 서버
    • 미들웨어 현행 시스템 분석
      :(성능) 가용성, 성능 / (지원) 기술 지원, 구축 비용

참고자료
소프트웨어 아키텍처 패턴
소프트웨어 아키텍처 비용 평가 모델

0개의 댓글