[1] 구조 모델링 (정적 모델링)
- 시간의 개념이 개입되지 않음
- 객체들의 공통 구조와 동작들을 추상화 시킨 것
- 시간이 흐르더라도 변하지 않는 정적 구조
- 클래스 다이어그램이 대표적이다. : 도메인 개념과 속성을 표현, 여러번 반복해서 상세하고 구체적인 걸 만들어야 한다.
- 문제 도메인의 중요한 클래스 발견 : 초기 다이어그램의 목적
- 반복되며 구체화
- 구현/유지보수
- 어떤 구조적 요소들이 있는지 파악하기 위해 하는 것
- 비즈니스에서 사용되는 용어들을 이용하여 객체들 정의
- 실세계와 소프트웨어의 의미적 차이를 줄이는 작업
- 모델링 과정
- 객체 식별 → CRC 카드 → 클래스 다이어그램 작성 → 행위 모델링 (여러가지 다이어그램 작성) → 클래스 다이어그램 정제(구체화)
- 행위 모델링 ↔ 클래스 다이어그램 구체화 반복
[1] ① 객체 식별
- UML에서 정의하는 클래스
- <클래스 명, 클래스 속성, 클래스 연산> 3요소로 구성
- 크래스 간에 어떤 상관성이 있는가를 클래스의 관계로 나타냄
- 식별 방식
- 문장 분석
- 일반 객체 목록
- 브레인 스토밍
- 패턴 적용
- 문장 분석
- 유스케이스 설명서의 정상 시나리오와 예외 처리 시나리오에 나타난 문장들의 구성 요소 분석
- 일반 명사는 클래스로, 동사는 클래스의 연산으로, 고유 명사는 클래스 인스턴스인 객체로, 형용사는 클래스의 속성으로 매핑 → “주로 이러더라”를 바탕으로 통계학적으로 만든 규칙, 참고용
- 존재 동사, 소유 동사는 클래스 간의 관계로, 타동사는 연산으로, 자동사는 클래스에 있는 예외 처리 연산으로, 부사는 연산 또는 관계의 속성으로 매핑
- 일반 객체 목록
- 도메인별로 나타나는 일반적인 용어들을 식별하여 목록화 → 구조 모델의 클래스로 사용
- 비즈니스 도메인에서 사용되는 객체 그룹 분류 (후보)
- 물리적으로 존재하는 사물 (Ex. 인사과 파일)
- 사건 : 업무 처리 과정에서 발생하는 이벤트
- 역할 : 문제 영역에서 나타나는 역할자
- 상호작용 : 업무수행 과정에서 발생하는 처리에 관한 것
- 기타 : 장소/조직/정책 등과 관련 있는 것
- 브레인스토밍
- 프로젝트 관련자들의 생각으로부터 객체를 추출하는 방법
- 여러가지 방법을 다 씀 (앞의 식별 방법들)
- 요구사항이나 유스케이스 설명서에서 누락될 수 있는 객체들을 식별하는 좋은 기회 제공
- 패턴 작용
- SW 개발에서 재사용 가능한 컴포넌트 : 객체의 나열과 객체 간의 관계를 미리 정의
- 패턴에 포함된 객체를 구조 모델의 클래스로 직접 사용 가능
- 필요한 패턴을 찾아두고 적용 시키기 or 필요한 패턴 찾아와 적용하기
[1] ② CRC카드
- 클래스 명세 : CRC (Class-Responsibility-Collaborator) 카드 활용
- 클래스가 어떤 책임을 가져야 하는지를 찾아내는 데에 사용하는 카드
- 특정 객체와 그 객체와 관계를 맺어야 하는 것들을 적음 → 목록을 만들어 냄
- 클래스의 메소드가 일부 정의될 것
- 협력해야 하는 클래스에 대한 관계가 정리될 것
- 분석 시작할 때 찾은 객체들의 정리를 위해 사용 + 빠진 객체가 없는지 확인하기 위해 사용
- 분석 초기에 1번만 작성
- 클래스가 어떤 책임을 가져야 하는지를 찾아내는 데에 사용하는 카드
[1] ③ 클래스 다이어그램
- 식별된 모든 클래스를 CRC 카드에 명세한 후에 클래스 다이어그램 작성
'Computer Science > Software Engineering' 카테고리의 다른 글
[CS][소프트웨어공학] 객체지향방법론, UML, 유스케이스 다이어그램 (0) | 2023.10.16 |
---|---|
[CS][소프트웨어공학] SW 요구사항, SW 개발 방법론, DFD, 자료사전 (0) | 2023.10.16 |
[CS][소프트웨어공학] SW 기능 산정 (기능점수, 간이법) (0) | 2023.10.16 |
[CS][소프트웨어공학] SW 개발 프로젝트 관리 기법(일정/비용/위험 관리), SW 개발 프로젝트 조직 유형 (0) | 2023.10.14 |
[CS][소프트웨어공학] SW 개발 프로세스, 전통적 프로세스 모델, SW 프로세스 개선 (0) | 2023.10.08 |