이 단원에서는 지금까지 배운 정보 모델링, 객체지향분석을 통해 얻은 ER모델/클래스 다이어그램을 '관계형 데이터베이스'로 옮기는 과정을 배운다.
다시말해 구조적 분석을 통해 얻은 산출물을 프로그램 구조로 바꾸는 것이다. 그 과정에서 필요한 것이 자료 흐름 중심 설계이다.
자료 흐름 중심 설계 (DFD : Data Flow-oriented Design)
- 앞서 분석을 하며 얻은 결과를 구조적 설계로 옮기는 과정
- 시스템을 모듈화하여 하향식으로 세분화
개요
- 프로세스, 자료흐름, 자료저장소, 외부객체로 구성
- 구조적 설계를 위한 입력 = DFD에 기초한 요구사항 명세서
구조도표
- 모듈들 사이의 자료와 제어의 흐름을 보여주며 반복, 선택과 같은 프로그램 제어구조를 나타냄
구조도표의 표기법
- 사각형 = 모듈
- 오각형 = 다른 페이지로 연결되어 있는 모듈
- 원형 = 정보흐름
- 마름모꼴 = 선택적 호출
- 곡선 화살표 = 반복적 호출
- 검정색 원형 : 제어흐름
- 하얀색 원형 : 데이터흐름
정보 흐름의 유형
① 변환흐름 : 입력을 받고 가공후 새로운 결과물을 출력하는 프로세스
② 트랜젝션 흐름 : 입력을 받고 입력값에 의해 결정을 내린 후 입력과 관계없는 결과물을 출력하는 프로세스
변환흐름 중심 설계
위 그림처럼 시스템을 크게 3단계로 나누어 입력을 담당하는 프로세스를 입력흐름, 입력된 정보를 가공처리하는 프로세스들을 변환중심, 가공된 정보를 출력하는 프로세스를 출력흐름이라고 한다.
변환흐름 중심 설계의 단계
① 요구사항 명세서로부터 정제된 자료 흐름도 제작
② 자료 흐름의 유형 조사
③ 입력 경계와 출력 경계 설정
④ 최상위 수준에서 자료 흐름 중심 프로그램 구조 개발 (최상위 수준의 세분화)
⑤ 자료 흐름도를 프로그램 구조로 전환 (두 번째 수준의 세분화)
⑥ 프로그램 구조 정제
트랜젝션 흐름 중심 설계
입력을 여러갈래의 출력으로 쪼갤 수 있는 경우
입력의 결과에 따라 여러 출력 경로중 하나를 따라 흘러간다
* 트랜젝션 : 자료나 제어 시그널 등이 어떠한 행위를 유발시키는 것
트랜젝션 흐름 중심 설계의 단계
① 요구사항 명세서로부터 자료흐름도 제작
② 자료흐름도가 트랜잭션 흐름을 갖는지 결정
③ 트랜젝션 중심과 동작 경로 파악
④ 트랜젝션 흐름 프로그램 구조 개발
⑤ 자료흐름도를 프로그램 구조로 매핑
⑥ 프로그램 구조 정제
데이터베이스 설계
: 정보 모델링의 결과인 ER 모델 또는 UML 클래스 다이어그램을 관계형 데이터베이스로 옮기는 과정
관계형 모델
- 테이블을 이용하여 나타냄. 각 테이블은 릴레이션이라 불리며 테이블의 행은 투플이라고 부른다.
- 각 투플은 연관된 데이터값의 모임으로 실세계의 엔티티/관계를 나타낸다.
- ER모델과 유사한 구조를 가지며 투플은 ER모델의 엔티티 혹은 관계를 나타낸다.
데이터베이스 설계의 단계
① ER모델의 각 엔티티타입에 대해 하나의 테이블을 만들어 엔티티타입의 속성들을 테이블의 속성으로 포함시킨다.
이때 엔티티타입의 주 키는 테이블의 주 키가 된다. 아래는 대학교 ER모델을 1단계를 거쳐 생성한 테이블의 그림이다.
② 두 엔티티타입이 이차관계 타입으로 일대일 대응 관계를 가지고 있는 경우 이 관계 타입은 두 엔티티 타입중 하나에 포함될 수 있다.
→ 참여제약조건이 필수인 엔티티타입이 있으면 필수인 엔티티타입에 포함시키는것이 일반적이다.
③ 두 엔티티 사이의 관계가 일대다 매핑의 경우에도 '일'로 참여하는 엔티티타입의 테이블에 관계 타입을 묶어 나타낸다
④ 다대다 관계가 있는 경우 관계 타입을 위해 독립적인 테이블 S를 만든다.
→ 일반적으로 참여 엔티티 타입의 주 키들을 합친것이 S의 주 키가 된다.
⑤ 관계 타입의 차수가 3차 이상일 경우 다대다 관계와 마찬가지로 새로운 테이블 S를 만든다.
⑥ 상위 클래스와 하위 클래스에 나타나 있는 정보를 관계형 테이블로 매핑시키는 방법은 4가지가 있다.
1.
상/하위 클래스에 해당하는 테이블을 만들고 이 테이블에 상/하위 클래스의 주 키를 포함한 모든 속성을 포함시킨다.
2.
하위클래스의 테이블을 만들고 상위 클래스의 모든 속성을 포함시킨다.
3.
하위클래스를 모두 합하여 하나의 테이블로 나타낸다.
4.
상/하위의 모든 클래스를 합하여 하나의 테이블로 나타낸다.
'개발 > 소프트웨어 공학' 카테고리의 다른 글
사용자 인터페이스 설계와 상세 설계 (0) | 2022.01.24 |
---|---|
디자인 패턴 (0) | 2022.01.23 |
소프트웨어 설계 기법 (0) | 2022.01.20 |
유스케이스와 UML (0) | 2022.01.19 |
객체지향 분석 기법 (0) | 2022.01.17 |
댓글