2-1. 현행 시스템 파악

(1) 현행 시스템 파악 개념

  • 현행 시스템이 어떤 하위 시스템으로 구성되어 있고, 어떤 기술요소를 사용하는지를 파악하는 활동

(2) 현행 시스템 파악 절차

[구성/기능/인터페이스 파악] -> [아키텍처 및 소프트웨어 구성 파악] -> [하드웨어 및 네트워크 구성 파악]

(3) 소프트웨어 아키텍처

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

  • 여러가지 소프트웨어 구성요소와 그 구성요소가 가진 특성 중에서 외부에 드러나는 특성, 그리고 구성요소 간의 관계를 표현하는 시스템의 구조가 구조체이다.

2. 소프트웨어 아키텍처 프레임워크 구성요소

구성요소설명
아키텍처 명세서 (Architectural Description)개별 뷰, 뷰 개괄 문서, 인터페이스 명세 등
이해관계자 (Stakeholder)시스템 개발에 관련된 모든 사람과 조직
관심사 (Concerns)시스템에 대해 이해 관계자들의 서로 다른 의견과 목표
관점 (Viewpoint)개별 뷰를 개발할 때 토대가 되는 패턴이나 양식
뷰 (View)서로 관련 있는 관심사들의 집합이라는 관점에서 전체 시스템을 표현
근거 (Rationale)아키텍처 결정 근거
목표 (Misson)시스템의 목적, 사용 운영 방법
환경 (Environment)외부 요인 등으로 시스템에 영향을 주는 요인
시스템 (System)각 애플리케이션 서브 시스템, 시스템의 집합, 제품군 등의 구현체

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

  • 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근방법
  • 4개 구조가 충돌되거나 요구사항을 충족하는지 증명하기 위해 유스케이스를 사용한다.
  • [논리, 구현, 프로세스, 배포 뷰] + 유스케이스
설명
유스케이스 뷰
(Usecase View)
다른 뷰를 검증하는 데 사용되는 뷰
사용자, 설계자, 개발자, 테스트 관점
논리 뷰
(Logical View)
시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
설계자, 개발자 관점
프로세스 뷰
(Process View)
자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현한 뷰
개발자, 시스템 통합자 관점
구현 뷰
(Implementation View)
정적인 소프트웨어 모듈의 구성을 보여주는 뷰
배포 뷰
(Deployment View)
컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰

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

  • 소프트웨어 아키텍처에서 일반적으로 발생하는 문제점들에 대한 일반화되고 재사용 가능한 솔루션이다.
  • 소프트웨어 아키텍처의 필요성
    • 고객의 요구사항을 만족시키고, 소프트웨어 개발 생산성과 품질 확보가 가능하다.
    • 시행착오를 줄여 개발시간을 단축하고, 높은 품질의 소프트웨어 생산이 가능하다.
    • 이미 검증된 구조로 개발하기 때문에 소프트웨어 개발을 안정적으로 수행할 수 있다.
    • 시스템의 특성을 개발 전에 예측이 가능하다.
  • 소프트웨어 아키텍처 패턴 유형
유형설명
계층화 패턴
(Layered Pattern)
시스템을 계층으로 구분하여 구성하는 패턴
클라이언트-서버 패턴
(Client-Server Pattern)
하나의 서버와 다수의 클라이언트로 구성된 패턴
파이프-필터 패턴
(Pipe-Filter Pattern)
데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴
브로커 패턴
(Broker Pattern)
분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 원격 서비스 실행을 통해 상호작용이 가능한 패턴
모델-뷰-컨트롤러 패턴
(MVC Pattern)
모델, 뷰 , 컨트롤러 3개의 서브 시스템으로 구조화하는 패턴

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

  • 아키텍처의 접근법이 품질 속성에 미치는 영향을 판단하고 아키텍처의 적합성을 평가하는 모델이다.
종류설명
SAAM
(Software Architecture Analysis Method)
변경 용이성과 기능성에 집중, 평가가 용이한 모델
ATAM
(Architecture Trade-off Analysis Method)
아키텍처 품질 속성을 만족 시키는지 판단 및 이해 상충관계까지 평가하는 모델
CBAM
(Cost Benefit Analysis Method)
경제적 의사결정에 대한 요구를 충족하는 모델
ADR
(Active Design Review)
소프트웨어 아키텍처 구성요소 간 응집도를 평가하는 모델
ARID
(Active Reviews for Intermediate Designs)
전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 모델

(4) 디자인 패턴

  • 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴이다.

1. 디자인 패턴 구성요소

구성요소설명
패턴의 이름디자인 패턴을 부를 때 사용하는 이름과 디자인 패턴의 유형
문제 및 배경디자인패턴이 사용되는 분야 또는 배경, 해결하는 문제를 의미
솔루션디자인 패턴을 이루는 요소들, 관계, 협동 과정
사례디자인 패턴의 간단한 적용 사례
결과디자인 패턴을 사용하면 얻게 되는 이점이나 영향
샘플 코드디자인 패턴이 적용된 원시 코드

2. 디자인 패턴 유형

구분유형설명
목적생성객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴
구조더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
행위클래스나 객체들이 상효작용하는 방법과 역할 분담을 다루는 패턴
범위클래스 - 클래스 간 관련성 (상속 관계를 다루는 패턴)
- 컴파일 타임에 정적으로 결정
객체 - 객체 간 관련성을 다루는 패턴
- 런타임에 동적으로 결정

3. 디자인 패턴 종류

작성하다가 너무 길어서 poiuyy0420님의 벨로그로 대체한다. (...) https://velog.io/@poiuyy0420/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%A2%85%EB%A5%98open in new window

4. 현행 시스템 분석서 작성 및 검토

Last Updated: