chlqhrud0208
나 혼자 코딩
chlqhrud0208
전체 방문자
오늘
어제
  • 분류 전체보기 (23)
    • Git & Github (2)
    • 그로스 해킹 (2)
    • 소프트웨어공학 (19)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 그로스 해킹

공지사항

인기 글

태그

  • 그로스해킹
  • Git
  • GitHub
  • 그로스 해킹

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
chlqhrud0208

나 혼자 코딩

설계(Part3) - 정적모델링
소프트웨어공학

설계(Part3) - 정적모델링

2024. 10. 21. 17:13

정적 모델링

  • 구조적 다이어그램
    - 클래스 다이어그램
    - 객체 다이어그램 (오브젝트 다이어그램)
    - 컴포넌트 다이어그램

클래스 다이어그램

  • 설계되는 모든 클래스를 다이어그램으로 나타낸 것
  • 클래스의 정적인 정의과 관계를 표현
  • 객체가 아닌 클래스는 정적(Static)임
    시간과 조건이 개입되지 않음
    ( 참고, 클래스를 인스턴스화한 객체는 그 자체가 동적임 )
  • 과정
    - 클래스 속성 찾기
    - 클래스간의 관계 찾기
    - 다이어그램 그리기

  • 구성 요소
    - 클래스 이름
    - 속성 
       Visibilty
          -> + public
               - private
               # protected
               ~ package (디폴트)
               /  derived (다른 속성으로 유추 가능한 것)
    - 메소드
       메소드 이름(name:type):리턴 타입
       (리턴타입이 void면 생략 가능)

클래스 사이의 관계

상속 (일반화(generalization))

  • 한 클래스가 다른 클래스를 포함하는 상위 개념일 경우
  • 부모 클래스를 향한 화살표
  • 클래스 : 실선 (실제 존재)
  • 인터페이스 : 점선 (그냥 틀)

연관 관계 (Association)

  • 클래스들이 개념상 서로 연결됨
  • 표시 : 양방향(실선), 단방향(화살표)
  • 단향향 (화살표)
    - 한쪽이 다른쪽을 참조
  • 양향향 (실선)
    - 서로가 참조

집합 관계 (Aggregation)

  • 연관 관계를 조금 더 특수하게 나타냄 (연관 관계보다 좀 더 끈끈한 관계)
  • 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 독립적임
    - 전체 객체가 사라져도 부분 객체는 남아 있음

합성 관계 (Composition)

  • 전체 객체의 라이프 타임과 부분 객체의 라이프 타임은 의존적임
    -> 전체 객체가 사라지면 부분 객체도 사라짐 (내부 정의로 구현)

-> 집합 관계와 합성 관계는 라이프 타임 차이임

관계의 숫자 표현

  • 관계의 숫자는 참조 가능한 인스턴스의 수를 뜻한다
  • 숫자 표현 
    - 1 : 1개
    - 0..1 : 0~1개
    - * : n개
    - 1..* : 1~n개
    - n..m : n~m개

장점

  • 유스케이스 다이어그램보다 설계 관점에서 더욱 구체적임
  • 클래스 간의 인터페이스를 빠르고 명확하게 알 수 있음
  • 개발 단계에서 중요한 도구로 사용됨

단점

  • 너무 상세한 내용을 기입하면 구현 단계를 미리 이루어지는 오류가 발생
  • 동적인 관점에 대한 정보를 알 수 없음
    ( ex. 어디서 시작하는지? )

객체 다이어그램 (오브젝트 다이어그램)

  • 클래스 다이어그램 요소를 인스턴스화해 시스템의 동작을 탐색
  • 객체간의 상호작용(메세지 전달, 반환)을 이해할 수 있음
  • 구성요소
    - 오브젝트 이름
       (오브젝트 명 : 클래스 명)으로 표시
    - 오브젝트 속성
       특정 시점의 오브젝트가 갖는 값을 표현
    - 연결
       연관 관계 / 집합 관계 / 합성 관계 / 일반화 관계 (최종적으로 실선으로 연결)

vs 클래스 다이어그램

  • 관계 정의
    - 클래스 다이어그램은 클래스와 클래스의 관계 (정적)
    - 객체 다이어그램은 객체와 객체의 관계 (클래스를 인스턴스화한 것)
  • 추상화 vs 구체적
    - 클래스 다이어그램은 인스턴스에 대한 정보는 제공되지 않음 (추상 모델)
    - 객체 다이어그램은 특정 시점에 대한 인스턴스의 정보를 알 수 있음 (보다 구체적)

장점

  • 특정 시점의 오브젝트간의 관계를 보여주기 때문에 이해하기 쉬움
  • 실제 시나리오를 테스트하고 디버깅하는 것이 쉬움

단점

  • 클래스 다이어그램을 미리 그려야 그릴 수 있음
  • 정적이기 때문에 시스템의 동적인 흐름을 이해할 수는 없음
    (다른 시점의 객체간의 관계는 알 수 없음 -> 전체 시스템을 이해할 수 없음)

 

 

'소프트웨어공학' 카테고리의 다른 글

설계 (Part 5) 동적모델링 - 상태, 액티비티 다이어그램  (0) 2024.12.15
설계(part 4) - 동적 모델링 (시퀀스 다이어그램)  (1) 2024.12.15
설계 (Part2) UML 모델링  (0) 2024.10.21
설계 (Part1)  (0) 2024.10.21
요구분석 (Part2)  (0) 2024.10.21
    '소프트웨어공학' 카테고리의 다른 글
    • 설계 (Part 5) 동적모델링 - 상태, 액티비티 다이어그램
    • 설계(part 4) - 동적 모델링 (시퀀스 다이어그램)
    • 설계 (Part2) UML 모델링
    • 설계 (Part1)
    chlqhrud0208
    chlqhrud0208

    티스토리툴바