observe_db

[객체지향설계] 6. Structure Modeling 본문

학교 공부/객체지향설계(3-1)

[객체지향설계] 6. Structure Modeling

쩡윤 2023. 4. 10. 16:09

4/10, 4/14, 4/17

 

Structure Modeling 전에..

Use case diagram의 실현화

- 정교한 작업 수행

- 오브젝트와 use-case 연결

Sequence Diagram을 통해 실현화(Object간 메시지를 어떻게 주고받는지)

 

 

규칙과 스타일 가이드라인 이해

  • CRC(Class-Responsibility-Collaboration) Cards
  • Class Diagram
  • Object Diagram

 

 

Introduction

Functional model(기능)

Structural model(구조)

이해를 위한 3가지 방법(CRC, Class diagram, Object diagram)

 

Structure Modeling의 목적

-실제와 소프트웨어 사이의 semantic gap의 감소

-분석가와 사용자에게 문법 제공

-중요한 사물, 생각, 주제를 적용영역에서 대표.

 

Class

  • 인스턴스나 객체를 만드는 틀(템플릿)
  • concrete/abstract

Attribute(속성)

  • 클래스의 묘사와 관련된 정보의 유닛
  • 이름/변수/함수의 3개 요소로 이루어짐.

Operations

  • 인스턴스나 객체가 할수있는 행동
  • 관려된 프로그램 특화 운영에 중점

 

Relationships

기본적인 관계 3가지: generalization, aggregation, association

  • generalization: a-kind-of 관계
  • aggregation: a-part-of 관계
  • association: 다양하고 잡다한 관계

CRC 카드

  • 멤버변수로 할 것이 뭔지 알려줌.
  • class의 colaboration
  • 클래스에 대해 알려주는 '클래스의 이력서'
  • 처음부터 다 채울 필요는 없음.

 

Class Diagram

  • 정적모델(static model)
  • Class와 Relationship으로 이루어짐.
  • 클래스는 이름/변수/함수의 3개 칸으로 이루어짐
  • 클래스는 연결되어있음.(존재 자체는 자기 스스로도 가능)
  • 속성은 보통 이름을 쓴다. 기본적으로 private level이다.
  • /(slash) 되어있는 것은 derived 라고 하여, 유도되는 속성을 뜻한다.
  • opeartion은 괄호(). 기본적으로 public level이다(이름 불려야 써먹을 수 있다)
  • 관계는 양쪽에 가능한 범위(하나면 한개만, 0...n이나 m..n이나)
  • 관계에서 + 표시를 두는 것은 이 객체의 역할을 의미.

관계

Aggregation(집합 관계): part of의 관계. 마름표 표시

Generalization(보편 관계): kind of의 관계. 화살표 표시

 

Dependency(의존관계): A->B면 A is dependent on B. 독립적인 쪽(B)의 변화가 의존적인 쪽(A)에게 영향을 미친다.

- <<use>>나 <<permit>>

Abstraction/Realization(추상화/실현화 관계): 같은것에 대해 다른 수준으로 표현한 것.(일종의 의존관계)

- <<refine>>, <<trace>>, <<derive>>

 

 

Navigable association: 방향이 가리키는 쪽으로만 유지될 수 있다.(역방향X)

Recursive association: 

Roles in an association: 생성되는 모든 instance가 해당 역할을 가짐.

Qualified association: 해당 관계에서 이것을 가짐. (Activity Diagram의 pin과 유사)

XOR: 배타적 논리합. 둘 중 하나에만 관계를 가짐(동시 불가)

Ternary association(삼항관계): 관계를 3개와 맺음

Association transformation: 중간에 하나를 끼워서 한쪽 영향으로 데이터 삭제를 방지.(ex. DB의 normalization)

 

(Shared) Aggregation: 한쪽이 삭제되더라도 상관 없음.

Composition Aggregation: 구성원중 하나가 삭제되면 같이 삭제

Generalization Set: 공통의 superclass에서 상속된 다른 subclass의 집합을 생성.

-속성중 complete는 그 구분으로 전체집합 생성 가능/incomplete는 불가능. disjoint는 교집합 없음./Overlapping은 교집합 가능.

Powertype: subclass를 생성하는 매커니즘. 모든 powertype의 instance는 subclass.

 

그 외..

Constraint association: association간 의존성(dependency)

Package: 연관된 class 묶음(자세한건 package diagram에서..)

Interface: 그것이 해당 인터페이스를 통해 소통한다는 의미.

-Enumeration, 가질수 있는 값 제한.(관계X)

Port: 클래스에선 잘 안씀. 행위 content가 외부 영향을 받을 수 있을 때, 그 외부영향 표기.

 

 

Object Diagram

  • 생명을 부여한다(give the life)
  • class에 유용한 디테일 추가
  • Class diagram만으로는 정보가 부족할 때 사용.

 

CRC Card와 Class Diagram 만들기

  • 객체 식별을 위한 4가지 방법
    • 구문분석
      • use case 설명서 이용
      • 이름, 속성, 연산, 관계 식별(명사는 클래스로, 동사는 함수로)
      • 자세한건 길어짐. 보통 엑셀을 이용해서 품사 태깅 및 분류
    • 브레인스토밍
      • 발전할만한 클래스나 객체 리스트(후보 객체)
      • 그들의 속성과 연산
    • 공통 객체 목록
      • 물리적이고 만질 수 있는 것
      • 사건
      • 역할
      • 상호작용(다른 것에 영향을 주는 기능적 행위)
      • 그 외(장소, 조직, 정책..)
    • 패턴
      • 특정 대상물(사물, 개념, 생각)이 반복적으로 발생하는 것
      • 굉장히 다양하다.(이후 챕터로 등장)

 

 

구조적 모델링의 과정

  1. CRC Card 생성: usecase description 참고
  2. CRC Card 리뷰
  3. CRC Cards 테스트(role-playing): 많이 남으면 쓸모 없는것이 있다. 적으면 식별되지 않은 것이 있다.
  4. Class Diagram 생성
  5. Class Diagram 리뷰: 불필요한/빠진 클래스 확인 devil's advocate(부정적으로 바라보기)
  6. 패턴 포함
  7. 모델 리뷰

Class Diagram 간략화

  • 속성이 늘어나면서 긴 박스가 됨
  • 이름만 쓰기
  • package로 묶기
Comments