자격증/정보처리기사 실기

[요구사항확인] 2. 현행 시스템 분석

염두리안 2023. 9. 1. 23:34
728x90
반응형

양 줠라 만타...


주요 키워드
현행 시스템 파악 / 디자인 패턴 / 소프트웨어 아키텍처 패턴 / 생성패턴 / 구조패턴 / 행위패턴 / 현행 시스템 분석(네트워크, 운영체제, DBMS, 미들웨어) / 오픈소스 고려사항

현행 시스템 파악 (★★★)

  • 개념 - 현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 제공 기능 및 연계 정보는 뭐고 어떤 기술 요소를 사용하는지 파악
  • 절차) 구성/기능/인터페이스 파악 → 아키텍처 및 소프트웨어 구성 파악 → 하드웨어 및 네트워크 구성 파악
  • SW 아키텍처 - 여러 가지 SW 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 구성요소 간의 관걔를 표현하는 시스템의 구조, 구조체
  • SW 아키텍처 프레임워크 - SW 집약적인 시스템에서 아키텍처가 표현해야 하는 내용, 관계를 제공하는 아키텍처 기술 표준
    • 구성요소) 아키텍처 명세서 / 이해관걔자 / 관심사 / 관점 / 뷰 / 근거 / 목표 / 환경 / 시스템
  • SW 아키텍처 4+1 뷰 - 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 SW적인 접근 방법 / 증명을 위해 유스케이스 사용
    • 4+1에서 1은 유스케이스(다른뷰 검증시 사용) / 4는 논리(어떻게 제공?), 프로세스(비기능적인 속성), 구현(정적인 SW 모듈의 구성을 보여줌), 배포(어떻게 배치?)
  • SW 아키텍처 패턴 - SW 설계 시 참조할 수 있는 전형적인 해결 방식 / 문제점에 대한 일반화, 재사용 가능한 솔루션
    • 계층화 패턴) 시스템을 계층(layer)으로 구분해 구성하는 패턴 / 서로 마주 보는 두 개의 계층 사이에서만 상호 작용 이뤄짐
    • 클라이언트-서버 패턴) 하나의 서버와 다수의 클라이언트로 구성된 패턴
    • 파이프-필터 패턴) 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴 / 서브 시스템이 입력 데이터 받아 처리하고, 결과를 다음 서브 시스템으로 넘겨주는 과정 반복 / 필터 컴포넌트 재사용성이 좋고 추가 쉬워서 확장에 용이
    • 브로커 패턴) 분리된 컴포넌트들로 이뤄진 분산 시스템에서 사용, 원격 서비스 실행을 통해 상호 작용이 가능한 패턴 / 컴포넌트 간의 통신을 조정하는 역할 수행
    • 모델-뷰-컨트롤러 패턴) MVC패턴 / 대화형 애플리케이션을 모델, 뷰, 컨트롤러 3개의 서브 시스템으로 구조화하는 패턴 / 각 부분이 별도 컴포넌트로 분리... ~> 서로 영향 받지 않고 개발 작업 수행 가능 
      • 모델) 핵심 기능, 데이터 보관
      • 뷰) 사용자에게 정보 표시
      • 컨트롤러) 사용자로부터 요청을 입력받아 처리
  • SW 아키텍처 비용 평가 모델 - 품질 속성에 미치는 영향 판단, 아키텍처의 적합성 평가
    • SAAM) 변경 용이성&기능성에 집중, 평가 용이해 경험 없는 조직에서도 활용 가능한 비용 평가 모델
    • ATAM) 아키텍처 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상충관계까지 평가하는 모델
    • CBAM) ATAM 바탕의 시스템 아키텍처 분석 중심으로 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델
    • ADR) SW 아키텍처 구성요소 간 응집도 평가 모델
    • ARID) 전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 비용 평가 모델
  • 디자인 패턴 - 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴
    • 구성요소) 패턴 이름 / 문제 및 배경 / 솔루션 / 사례 / 결과 / 샘플코드
    • 유형
      • 목적) 생성(수행하는 패턴) / 구조(조합을 다루는 패턴) / 행위(역할 분담을 다루는 패턴)
      • 범위) 클래스(컴파일 타임에 정적으로 결정) / 객체(런타임에 동적으로 결정)
    • 종류
      • 생성패턴
        • Builder) 복잡한 인스턴스를 조립하여 만드는 구조 / 생성과 표기를 분리해서 복잡한 객체 생성
        • Prototype) 처음부터 일반적인 원형을 반들어 놓고, 그것을 복사한 후 필요한 부분만 수정해 사용하는 패턴 / 기존 객체를 복제함으로써 객체 생성... 약간 클론 느낌?
        • Factory Method) 상위 클래스에서 객체를 생성하는 인터페이스 정의, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
        • Abstract Factory) 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴... 얘를 통해 API 제공
        • Singleton) 전역 변수를 사용 않고 객체를 하나만 생성하도록 하며 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴 / 한 클래스에 한 객체만 존재하도록 제한
      • 구조패턴
        • Bridge) 기능의 클래스 계층과 구현의 클래스 계층 연결, 구현부에서 추상 계층을 분리해 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 디자인 패턴
        • Decorator) 기존 클래스에 필요한 기능을 추가해 나가는 설계 패턴
        • Facade) 복잡한 시스템에 대해 단순한 인터페이스 제공... 사용자와 시스템 간 or 여타 시스템과의 결합도 낮춰 시스템 구조에 대한 파악을 쉽게 하는 패턴 / 오류에 대해 단위별로 확인 / 통합된 인터페이스 제공
        • Flyweight) 모두가 갖는 본질적인 요소를 클래스화해 공유 ~> 메모리 절약... 클래스의 경량화 목적 / 여러 개의 가상 인스턴스 제공해 메모리 절감
        • Proxy) '실제 객체에 대한 대리 객체'로 실제 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만듦 / 정보은닉의 역할도 수행
        • Composite) 객체들의 관계를 트리 구조로 구성
        • Adapter) 기존 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴
      • 행위패턴
        • Mediator) 중재자에게 모든 것을 요구해 통신의 빈도수 줄여 객체 지향의 목표를 달성하게 해주는 디자인 패턴 / 상호작용의 유연한 변경 지원
        • Interpreter) 여러 형태의 언어 구문을 해석할 수 있게 만드는 디자인 패턴 / 문법 자체를 캡슐화해 사용
        • Iterator) 컬렉션 구현 방법 노출 안하면서 집합체 안에 있는 모든 항목에 반복자 사용해 접근할 수 있는 디자인 패턴
        • Template Method) 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바구지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴
        • Observer) 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고 자동으로 내용 갱신되는 방법
        • State) 객체 상태를 캡슐화해 클래스화함으로써 그것을 참조하게 하는 방식으로 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경&변경 시 원시 코드의 수정을 최소화 할 수 있고 유지보수의 편의성도 갖는 디자인 패턴
        • Visitor) 각 클래스 데이터 구조로부터 처리 기능을 분리해 별도 클래스를 만들어 놓고 해당 클래스의 메서드가 각 클래스를 돌아다며 특정 작업을 수행하도록 만드는 패턴
        • Command) 실행될 기능을 캡슐화 / 요구사항을 객체로 캡슐화
        • Strategy) 알고리즘 군을 정의하고 같을 알고리즘을 각각 하나의 클래스로 캡슐화한 다음 필요 시 서로 교환해 사용할 수 있게 하는 패턴
        • Memento) 클래스 설계 관점에서 객체 정보 저장 필요가 있을 때 적용하는 디자인 패턴 / Undo 기능 개발 시 사용하는 디자인 패턴
        • Chain of Responsibility) 한 요청을 2개 이상의 객체에서 처리

개발 기술 환경 정의 (★★★)

  • OS 현행 시스템 분석 - 품질(신뢰도, 성능), 지원(기술지원, 주변기기, 구축비용) 측면 등 고려
    • PC
      • 윈도즈(마소) : 중/소규모 서버, 일반 PC 등 유지, 관리 비용 장점
      • 유닉스(IBM, HP, SUN) : 대용량 처리, 안정성 높은 엔터프라이즈급 서버
      • 리눅스(Linus Torvalds) : 중/대규모 서버 대상, 높은 보안성 제공
    • 모바일
      • 안드로이드(구글) : 표준 응용 프로그램 등을 포함하고 있는 소프트웨어 스택이자 리눅스 모바일 운영체제
      • IOS(애플) : 높은 보안성, 고성능 제공
  • 네트워크 현행 시스템 분석 - 현행 시스템이 구성된 네트워크 구조를 네트워크 구성도를 통해 분석 ~> 서버 위치, 서버 간 연결 방식 파악 가능 / 백본망, 라우터, 스위치, 게이트웨이, 방화벽 등 대상으로 분석
    • OSI 7계층
계층 설명 프로토콜 전송단위
응용 계층 (Application) 사용자-네트워크 간 응용서비스 연결, 데이터 생성 HTTP / FTP 데이터
표현 계층 (Presentation) 데이터 형식 설정과 부호교환, 암/복호화 JPEG / MPEG
세션 계층 (Session) 연결 접속 및 동기제어 SSH / TLS
전송 계층 (Transport) 신뢰성 있는 통신 보장 / 데이터 분할, 재조립, 흐름 제어, 오류제어, 혼잡제어 등 담당 TCP / UDP 세그먼트
네트워크 계층 (Network) 단말기 간 데이터 전송을 위한 최적화된 경로 제공 IP / ICMP 패킷
데이터 링크 계층 (Data link) 인접 시스템 간 데이터 전송, 전송오류 제어 / 동기화, 흐름 제어 등의 전송 기능 제공 / 오류 검출, 재전송 등 기능 제공 이더넷 프레임
물리 계층 (Physical) 0, 1 비트 정보를 회선에 보내기 위한 전기적 신호 변환 RS-232C 비트
  • DBMS 현행 시스템 분석 - 중복 제어, 접근 통제, 인터페이스 제공, 관계표현, 샤딩/파티셔닝, 무결성 제약 조건, 백업 및 회복 => DB의 성능측면(가용성, 성능, 상호 호환성) 지원측면(기술 지원, 구축 비용)을 분석
  • 미들웨어의 현행 시스템 분석 - 성능측면(가용성, 성능), 지원측면(기술지원, 구축비용)을 분석
  • 오픈소스 사용 시 고려사항 : 라이선스 종류, 사용자 수, 기술의 지속 가능성, 자유배포, 소스 코드 공개, 파생작업 허용, 소스 코드 일관성 확보, 차별금지, 라이선스 배포, 포괄적 허용 고려

 

728x90
반응형