CS/Software Engineering

[Software Engineering] 시스템의 타입

콩스프 2022. 12. 10. 21:15
  • 개발할 시스템의 타입은 분석, 모델링, 설계, 구현, 테스팅 거의 모든 개발 작업에 영향을 줌
  • 소프트웨어 아키텍처를 설계할 때 시스템의 타입이 고려되어야 함
  • 설계 방법과 아키텍처 스타일을 선택할 때 시스템의 타입이 영향을 줌
  • 일반적으로 네 가지 타입으로 나눌 수 있음

 

 

대화형 시스템

  • 대화형 (interactive) 시스템은 PC와 웹 애플리케이션이 널리 사용되면서 가장 보편적이 되었음
    EX) 시스템을 사용하기 위해 먼저 로그인 링크를 클릭하면 시스템은 로그인 페이지를 보여줌
           사용자가 아이디와 패스워드를 입력하면 시스템은 웰컴 페이지를 디스플레이 함

  • 대화형 시스템의 상태를 파악하는 것은 곧 비즈니스 프로세스를 반영하는 것
    EX) 온라인 쇼핑몰 시스템
          - 고객이 로그인하여 상품을 고르고 결제함
          - 고객이 로그인 하지 않으면 결제할 수 없음
          - 결제하는 동안 고객은 배송 주소와 결제 방법, 결제 정보를 제공해야 함
         - 시스템이 비즈니스 프로세스를 통제하고 이 순서에 다르지 않는다면 고객이 오퍼레이션을 실행하지 못함

  • 대화형 시스템의  모델링/설계
    1) 액터가 구동시키는 비즈니스 프로세스를 나타내는 유즈케이스를 찾아내고 명세화

    2) 시스템 안에 있는 객체들이 이를 위해 어떻게 협력하고 상호작용하는지 더 상세하게 모델링
    3) 아키텍처는 유스케이스 단위로 구성되고 컴포넌트화 함

 

 

이벤트 중심 시스템

  • 이벤트 중심 (event-driven) 시스템은 상태에 의존적이며 반응 동작을 보임

  • 주로 임베디드 시스템에서 찾아볼 수 있음
    * 임베디드 시스템 : 하드웨어와 소프트웨어로 구성된 시스템에 소프트웨어가 내장된 형태
  • 소프트웨어는 장치에 의해 불규칙적으로 생성된 이벤트를 받아 처리하고 적절히 제어하기 위한 명령을 발생
  • 대부분 동시에 여러 외부 엔티티와 상호작용하는데 주로 하드웨어 장치나 다른 소프트웨어 시스템과 작동함

  • 이벤트 중심 시스템은 모든 입력 이벤트에 대하여 반응할 필요가 없음
  • 상태에 따라 같은 이벤트라도 시스템이 다른 상태에 있다면 반응이 다름
  • 시스템이 이벤트를 무시할 수도 있음

➡ 이벤트 중심 시스템은 상태 다이어그램으로 모델링하고 상태 단위로 아키텍처가 구성됨

 

 

 

변환 시스템

  • 변환(transformational) 시스템은 과학 계산이나 엔지니어링 계산 분야에서 많이 볼 수 있음
  • 워크플로 관리나 비즈니스 데이터 마이닝과 같은 비즈니스 애플리케이션에서도 만날 수 있음

  • 많이 알려진 사례 : 컴파일러 (Compiler) - 원시코드를 실행코드로 바꾸어 줌
    1) 원시코드에서 토큰으로 변환하는 스캐너
    2) 토큰 스트림을 프로그램 문장으로 바꾸는 구문 분석기
    3) 각 문장에 대한 실행코드를 생성하는 코드 생성기
    4) 실행 코드의 성능 및 효율을 개선하는 코드 최적화
    => 액터나 컴파일러는 거의 상호작용이 없이 일괄적으로 변환

  • 복잡한 사례 : 작업 공정 관리
    - 요청이나 작업이 여러 부서에 의하여 처리되는 단계가 있을 때 다수의 의사결정과 동기화, 병렬처리가 이루어짐
    1) 각 부서에서 작업을 자동화한 서브 시스템과 대화하는 대화형 시스템이 있음
    2) 중요한 부분은 작업에 대한 정보를 받아 작업의 흐름을 결정하고 여기에 대한 정보로 바꾸는 것

➡  변환 과정 아키텍처의 중요한 구성 요소가 됨

 

 

 

객체 영속 시스템

  • 객체 영속 (object-persistence) 시스템 :  저장 미디어를 숨기고 데이터베이스나 파일 시스템에 객체를 저장, 검색
  • 데이터베이스를 사용한다는 이유로 분산 시스템이라고도 부름
  • 데이터베이스를 시스템에서 숨기고 데이터베이스 구현에 대한 변경을 시스템이 잘 모르도록 보호
  • 데이터베이스에 객체를 저장하고 검색하는 것 밖에 없음
  • 많은 량의 레코드가 변경되는 경우 외에는 성능이 좋아야할 비즈니스 프로세스가 거의 없음
  • 데이터베이스 시스템은 대규모의 복잡한 데이터효과적으로 저장하고 검색하고 갱신할 수 있어야 함