1. 아키텍쳐란 무엇인가?
- 구현하고자 하는 시스템 아키텍쳐
- 비즈니스 컴포넌트 관점의 애플리케이션 아키텍쳐
- 기술 유스케이스 정의 및 실현, 비즈니스 컴포넌트의 실행 환경 및 배포 관점의 기술 아키텍쳐
- 데이터 관점의 데이터 아키텍쳐
2. 산출물
- 소프트웨어 설계 명세서 (개발 요건)
- 유스케이스 기술서
- 사용자 인터페이스 및 비즈니스 컴포넌트 정의서
- 데이터 베이스 설계서
3. 아키텍처 핵심 개념 구분
- 비즈니스 아키텍쳐 (사용자, 개발 요구 사항)
- 애플리케이션 아키텍쳐
- 기술 아키텍쳐
- 데이터 아키텍쳐
4. 아키텍쳐 설계 과정
- 품질 속성
- 행위 분석(유스케이스, 시퀀스 다이어그램)
- 어플리케이션 아키텍쳐(기획안)
+ 스토리 보드
+ 화면 이동 맵
+ 인터페이스 뷰
- 기술 아키텍쳐 (기능 및 비기능 정의)
+ 기술 유스케이스 정의 및 실현(유스케이스 다이어그램)
+ 프레임워크 정의 및 클래스 설계(클래스 다이어그램)
+ 배포 다이어그램
- 데이터 아키텍쳐
+ 비즈니스 객체 및 비즈니스 객체 모델
+ 정규화 과정 및 논리 데이터 모델
+ 비정규화 과정 및 물리 데이터 모델
+ 저장 프로시저 설계
+ 데이터 논리 모델과 물리 모델은 ER 다이어그램(엔디티, 릴레이션쉽) 모델로 정의, 데이터 뷰 정의
- 아키텍쳐 프로토타이핑
+ 설계 매커니즘, 구현 매커니즘
+ 아키텍쳐 프로토타이핑
5. 아키텍쳐 전략
- 변경 가능성
+ 애플리케이션 : 레이어 아키텍처 스타일
+ 기술 : 미들웨어(EJB 컨테이너, 논리적 레이어를 물리적 레이어에 분산 배포)
- 가용성
+ 기술 아키텍쳐 : 클러스터링, 트랜잭션, 예외 처리, 장애 처리
- 보안
+ 기술 아키텍쳐 : 폼 인증, 권한, 암복호화
- 성능
+ 기술 아키텍쳐 : 동적 로드 밸런싱, CPU 및 메모리 리소스
- 운영
+ 기술 아키텍쳐 : 웹서비스
6. 레이어 아키텍쳐
- 프리젠테이션 레이어 | 비즈니스 레이어 | 데이터 레이어 등의 구분
+ 프리젠테이션 : 웹 티어, 사용자가 엔터프라이즈 애플리케이션과 상호 작용
+ 비즈니스 : 비즈니스 컴포넌트, 비즈니스 워크 플로어, 서비스 인터페이스(JSON, XML)
+ 데이터 : 데이터 엑세스 컴포넌트, 서비스 에이전트 컴포넌트(외부 시스템과 상호 작용)
- 시스템 외부에서는 최상위 레이어와 통신하며, 각 하부 레이어가 제공하는 서비스를 사용함
- 하위 레이어는 이벤트, 콜백, 위임등을 통해서 상위 레이어와 커뮤니케이션함(상위 레이어를 직접 호출하지 않음)
- 논리적 레이어는 물리적 티어(컴퓨터 시스템)에 배포함
7. 행위 분석
- 유스케이스
+ 액터 | 뷰(경계) | 컨트롤(제어) | 모델(실체)
+ 각 기능에 대한 시퀀스 및 다음 기능 안내
- 화면 및 화면 이동 경로 정의
- 비즈니스 객체 모델(ER 다이어그램 논리 수준) 및 화면별 객체 모델
=> 3개가 연결된 산출물 (유스케이스, 화면 다이어그램, 비즈니스 객체 모델)
8. 애플리케이션 아키텍쳐 설계
- 비즈니스 컴포넌트 설계 (OOP)
+ 비즈니스 퍼사드 레이어 : 비즈니스 퍼사드 컴포넌트
+ 비즈니스 레이어 : 비즈니스 컴포넌트
+ 데이터 레이어 : 데이터 엑세스 컴포넌트, 서비스 에이전트 컴포넌트
- 후보 비즈니스 컴포넌트 : 인터페이스 정의 및 관계 식별
- 각 비즈니스 컴포넌트별로 추가 설명, 입출력,제약사항,책임 체크
=> 계층 구조, 계층 별 비즈니스 컴포넌트 정의, 관계 정의