모델링 기법
모델링이 주는 도움
- 소프트웨어를 이해하는 데
- 이해관계자들 사이에서 문제 해결에
- 고객과 소통할 때
- 설계, 구현, 테스팅, 유지보수에 개념적인 기준 제공
모델링 구분
기능적 모델링
- 시스템의 기능을 사용자 관점에서 표현
- 주로 유스케이스 다이어그램 사용
정적 모델링
- 객체간의 관계 표현
- 주로 클래스 다이어그램 사용
동적 모델링
- 시간의 흐름에 따라 객체들의 동작과 상태 변화를 모델링
- 주로 상태다이어그램 사용
구조적 분석 모델
자료흐름도(DFD; Data Flow Diagram)⭐️⭐️
(20년 4회)
- 가장 보편적 시스템 모델링 도구로서, 기능중심 시스템에 적합
- 자료의 흐름과 처리과정을 도형 중심으로 기술
- 자료흐름그래프 또는 버블차트라고도 함
- 구성요소(20.6,8)
자료사전(DD; Data Dictionary)
- 자료흐름도에 기술된 모든 자료들에 대한 사항 자세히 정의
- 사용기호(20.6,8)
=
: 정의(~로 구성되어 있다)
+
: 연결(and)
()
: 생략(optional)
[|]
: 선택(or)
{}
: 반복
**
: 설명(주석)
소단위 명세서(Mini-Specification)(프로세스 명세서)
- 자료흐름도에서 어떤일이 수행되는지 정의하기 위해, 각 처리들의 수행업무를 상세히 작성
- 구조적 언어로, 선후조건문, 의사결정표 등 사용
개체 관계도(ERD;Entity Relationship Diagram)
- 시스템에서 처리되는 개체의 구성과, 속성, 관계 표현하여 자료를 모델화하는데 사용
- 구성요소
상태전이도(STD;State Transition Digram)
- 시스템에 어던 일이 발생할 경우, 시스템의 상태와 상태 간 전이를 모델화
- 이를 통해 개발자는 시스템의 행위를 정의
객체 지향 분석 모델
(20년 4회)
- 동적 모델링 기법 사용
- 상향식 방식
- 데이터와 행위를 하나로 묶어 객체를 정의내리고 추상화시키는 작업
- 코드 재사용에 의한 프로그램 생산성 향상 및 요구에 따른 시스템의 쉬운 변경 가능
Rumbaugh 방법⭐️
- 가장 일반적으로 사용되는 방법
- 분석활동을 객체/동적/기능 모델로 나누어 수행
- 분석 절차(20.6,8)
- 객체모델링: 객체다이어그램(Object Diagram)
- 동적모델링: 상태다이어그램(State Diagram)
- 기능모델링: 자료흐름도(Data Flow Diagram)
Booch 방법
- 미시적 개발 프로세스와 거시적 개발 프로세스를 모두 사용
Jacobson 방법
Coad&Yourdon
(20년 1회)
Wirfs-Brock
- 분석과 설계간의 구분 없음
- 고객명세서를 평가해 설계작업까지 연속적 수행
분석자동화 도구
CASE(Computer Aided Software Engineering)
- 소프트웨어 개발과정의 일부/전체를 자동화하기 위한 도구
- 표준화된 개발 환경 구축 및 문서 자동화 기능 제공
- 작업 과정 및 데이터 공유를 통해 작업자간 커뮤니케이션 증대
주요기능
(20.6,8)
- SW 라이프 사이클 전 단계의 연결
- 시스템 문서화 및 명세화를 위한 그래픽 지원
- 다양한 소프트웨어 개발 모형 지원
원천기술
- 구조적 기법, 프로토타이핑, 자동프로그래밍, 정보저장소, 분산처리기술
도구의 분류
- 상위 CASE
- 계획수립, 요구분석, 설계 단계 지원
- 모순검사, 오류검증, 자료흐름도 등 기능 수행
- 요구사항 도구(Jira), 설계도구(UML)
- 하위 CASE
- 코드작성, 테스트, 문서화 지원
- 구문편집기, 코드작성기 등 기능 수행
- 프로그래밍 도구(IDE), 테스트 도구(JUnit)
- 통합 CASE
- 시스템의 기능을 여러 개의 고유 모듈들로 분할하여 이들 간의 계층구조를 표현한 도표
특징
(20.6)
- 하향식 개발에 적합
- 분석 및 설계 도구로 사용
- 체계적인 문서관리에 효율적
- 기능과 자료의 의존관계 동시 표현 가능
- 보기 쉽고 이해하기 쉬움
- 차트 종류: 가시적 도표, 총체적 도표, 세부적 도표