2018년 8월 12일 일요일

소프트웨어 아키텍쳐

1. 아키텍쳐란 무엇인가?
  - 구현하고자 하는 시스템 아키텍쳐
  - 비즈니스 컴포넌트 관점의 애플리케이션 아키텍쳐
  - 기술 유스케이스 정의 및 실현, 비즈니스 컴포넌트의 실행 환경 및 배포 관점의 기술 아키텍쳐
  - 데이터 관점의 데이터 아키텍쳐

2. 산출물
  - 소프트웨어 설계 명세서 (개발 요건)
  - 유스케이스 기술서
  - 사용자 인터페이스 및 비즈니스 컴포넌트 정의서
  - 데이터 베이스 설계서

3. 아키텍처 핵심 개념 구분
  - 비즈니스 아키텍쳐 (사용자, 개발 요구 사항)
  - 애플리케이션 아키텍쳐
  - 기술 아키텍쳐
  - 데이터 아키텍쳐

4. 아키텍쳐 설계 과정
  - 품질 속성
  - 행위 분석(유스케이스, 시퀀스 다이어그램)
  - 어플리케이션 아키텍쳐(기획안)
    + 스토리 보드
    + 화면 이동 맵
    + 인터페이스 뷰
  - 기술 아키텍쳐 (기능 및 비기능 정의)
    + 기술 유스케이스 정의 및 실현(유스케이스 다이어그램)
    + 프레임워크 정의 및 클래스 설계(클래스 다이어그램)
    + 배포 다이어그램
  - 데이터 아키텍쳐
    + 비즈니스 객체 및 비즈니스 객체 모델
    + 정규화 과정 및 논리 데이터 모델
    + 비정규화 과정 및 물리 데이터 모델
    + 저장 프로시저 설계
    + 데이터 논리 모델과 물리 모델은 ER 다이어그램(엔디티, 릴레이션쉽) 모델로 정의, 데이터 뷰 정의
  - 아키텍쳐 프로토타이핑
    + 설계 매커니즘, 구현 매커니즘
    + 아키텍쳐 프로토타이핑

5. 아키텍쳐 전략
  - 변경 가능성
    + 애플리케이션 : 레이어 아키텍처 스타일
    + 기술 : 미들웨어(EJB 컨테이너, 논리적 레이어를 물리적 레이어에 분산 배포)
  - 가용성
    + 기술 아키텍쳐 : 클러스터링, 트랜잭션, 예외 처리, 장애 처리
  - 보안
    + 기술 아키텍쳐 : 폼 인증, 권한, 암복호화
  - 성능
    + 기술 아키텍쳐 : 동적 로드 밸런싱, CPU 및 메모리 리소스
  - 운영
    + 기술 아키텍쳐 : 웹서비스

6. 레이어 아키텍쳐
  - 프리젠테이션 레이어 | 비즈니스 레이어 | 데이터 레이어 등의 구분
    + 프리젠테이션 : 웹 티어, 사용자가 엔터프라이즈 애플리케이션과 상호 작용
    + 비즈니스 : 비즈니스 컴포넌트, 비즈니스 워크 플로어, 서비스 인터페이스(JSON, XML)
    + 데이터 : 데이터 엑세스 컴포넌트, 서비스 에이전트 컴포넌트(외부 시스템과 상호 작용)
  - 시스템 외부에서는 최상위 레이어와 통신하며, 각 하부 레이어가 제공하는 서비스를 사용함
  - 하위 레이어는 이벤트, 콜백, 위임등을 통해서 상위 레이어와 커뮤니케이션함(상위 레이어를 직접 호출하지 않음)
  - 논리적 레이어는 물리적 티어(컴퓨터 시스템)에 배포함

7. 행위 분석
  - 유스케이스
    + 액터 | 뷰(경계) | 컨트롤(제어) | 모델(실체)
    + 각 기능에 대한 시퀀스 및 다음 기능 안내
  - 화면 및 화면 이동 경로 정의
  - 비즈니스 객체 모델(ER 다이어그램 논리 수준) 및 화면별 객체 모델
  => 3개가 연결된 산출물 (유스케이스, 화면 다이어그램, 비즈니스 객체 모델)

8. 애플리케이션 아키텍쳐 설계
  - 비즈니스 컴포넌트 설계 (OOP)
    + 비즈니스 퍼사드 레이어 : 비즈니스 퍼사드 컴포넌트
    + 비즈니스 레이어 : 비즈니스 컴포넌트
    + 데이터 레이어 : 데이터 엑세스 컴포넌트, 서비스 에이전트 컴포넌트
  - 후보 비즈니스 컴포넌트 : 인터페이스 정의 및 관계 식별
  - 각 비즈니스 컴포넌트별로 추가 설명, 입출력,제약사항,책임 체크
  => 계층 구조, 계층 별 비즈니스 컴포넌트 정의, 관계 정의