밍경송의 E.B
<6> SWModel_UML, Usecase diagram, Class diagram 본문
이 글은 기말고사가 2일하고 16시간 남은 학부생이 기말고사 암기를 위해 작성한 내용입니다... 내용은 지현박교수님의 강의자료를 참고하였음을 밝힙니다...........🎀
🎀 소프트웨어 모델링
- 모델: 대상을 특정 관점을 기준으로 표현하는 것 / 모델링: 모델을 만드는 것 - 소프트웨어 모델: 수행해야 하는 기능의 관점에서 소프트웨어를 표현
- 논리적 모델: 시스템은 무엇.이며 어떤 기능을 해야 하는가
- 물리적 모델: 시스템이 실제 어떻게 구현되어야 하는지 기술적인 면을 고려하여 표현
- 모델링 3요소
- 규약: 모델링에 사용되는 요소의 정의
- 표현: 규약을 이용하여 모델링한 결과
- 명세: 표현된 모델에 대한 상세 내용을 서술하는 것
🎀 The Unified Modeling Language (UML)
: OO(Object Oriented) 분석 및 설계 과정에서 생성될 수 있는 다양한 모델에 대한 참고 사항을 설명함
-Views of UML (5)
- Use-case view: 외부 액터의 관점에서 시스템의 기능적 측면을 바라보는 뷰 -유스케이스 다이어그램
- Logical View: 시스템의 기능들이 내부적으로 어떻게 설계될 수 있는지 보여주는 뷰 -패키지, 클래스, 시퀀스, 커뮤니케이션, 액티비티 다이어그램
- Component View: 컴포넌트와 컴포넌트의 관계를 보여주는 뷰 -컴포넌트 다이어그램
- Concurrency View: 시스템 요소들 간의 동기/비동기, 상호작용에 대한 사항 등 시스템 요소들에 대한 처리 방식을 보여주는 뷰 / 프로세스와 프로세서의 할당. .. 개발자와 시스템 통합자를 위한 것 -다이나믹, 임플리멘테이션 다이어그램
- Deployment View: 컴퓨터와 주변 장치로 구성된 시스템의 실제 배치를 보여주는 뷰 -디플로이먼트 다이어그램
🎀 관계 (R)
1) Dependency: 한 변화가 다른 것에 영향을 주는 관계(역은 무관)
2) Association: 연관관계 - binary, n-ary도 가능
3) Generalization : 부모자식 관계 / superclass와 subclass / is-a-kind-of R
*parent가 사용되는 곳이면 어디든 child도 사용 가능 (역은 아님!)
4) Aggregation (약한 집합)
5) Composition (강한 집합)
*뒤에서 자세히 설명함
🎀 Use Case Diagram
: Actor(시스템에 대한 사용자)와 Use case(시스템이 제공하는 기능)의 관계를 도식화
* Actor은 non-human도 가능
* Actor에 의해 바라보는 관점으로 표현됨
⚠️ Use case modeling
- 시스템과 사용자 간의 인터랙션 식별
- 액터 정의 필수
- 모든 유스케이스 취합 -> 시스템의 모습
- Actor 추출에 필요한 질문
- 주요 기능을 누가 사용?
- 운영 관리 및 유지 담당은 누구?
- 결과물을 가용하는 사람은?
- 시스템과 연관되어 상호작용해야 하는 시스템은?
- 함께 동작해야 하는 HW 장치는?
- Actor 추출에 필요한 질문
- 고객이 이해하기 쉽다는 장점
- 요.사를 모델링
- 고객의 요.사를 추출하는 초기단계에 수행
- SW test 시나리오 작성의 기반
*Use case는 어떤 일이 처리되는 단계 X . 시스템의 도움을 받아 처리하고자 하는 Actor의 요구작업
⚠️ Scenarios
: 시스템이 어떻게 사용될 수 있는지를 보여주는 실제 사례
- Usecase Scenario
- 유스케이스 이름, 시작하는 행위자, 시작하는 데 필요한 선행조건
- 유스케이스 목표
- 정상 시나리오(normal flow of events), 예외 시나리오(what can go wrong)
- 동시 발생 가능한 내용, 유스케이스 종료 조건
⚠️Usecase Relationship
1) 유스케이스가 다른 유스케이스를 포함하는 관계
ex) 여러 유.케에서 공통으로 중복되는 시나리오가 있다 -> 공통 부분을 따로 분리하여 새로운 유케를 만들고, 새로 만든 유케를 각 유케에 포함시킴.
2) 유스케이스와 그 유스케이스를 확장하는 관계
*참조되는 유스케이스를 Extended Usecase, 참조하는 유스케이스를 Base Usecase
((기본 유케 실행 -> 확장 포인트 조건 만족 -> 확장 유케 실행))
3) 유스케이스를 상속하는 것 (일반화)
- 자식 유케는 부모 유케의 모든 행동과 의미를 물려 받음 + 자신만의 행동을 추가 가능
🎀Class Diagram
: 클래스들과 그들의 관계를 표시
클래스: 임의의 유사한 객체들을 명세하기 위한 스펙 / 각 객체들을 생성해내기 위한 템플릿으로 사용
[ 속성(attribute) + 메소드 (method, operation) ]
⚠️클래스 추출방법
- 하나의 주제를 가져야 함
- 클래스 이름은 추상화를 가장 특징화하는 하나의 '명사'여야 함
- 명사는 클래스 이름, 동사는 클래스의 operation이 될 확률이 높음
- 고객, 사용자와의 상담(시나리오) + 문제 도메인 지식 + 기술적 경험 + 일반 상식에서 추출
- 명사 추출 -> 클래스 후보
- 클래스와 관련된 명사/형용사 추출 -> 속성 후보
- 클래스와 관련된 동사 추출 -> 메소드(operation) 후보
- 클과 클 사이의 관계를 나타내는 동사 추출 -> 관계(relation) 후보
⚠️Class 사이의 Relationship
1) 클래스가 개념적으로 서로 연결됨(Association)
*rolename: 각 클래스마다 역할을 표시할 수 있음.
*하나의 클래스가 여러 클래스와 연관을 맺을 수 있음.
EX)
*{연관에 제약} 을 둘 수 있음. - or 제약으로 선택지에 대한 모델링 가능
*연관 클래스를 가질 수 있음.
2) 식별정보(Qualifier)
언제? - 일대다의 다중성 연관관계에서
왜? - 한 객체가 특정한 객체를 가려내어야 하는 상황 발생
어떻게? - 식별정보 지정
*효과: 일대다의 다중성 연관관계를 일대일 다중성으로 줄이는 효과!
3) 상속(Inheritance)
앞에서 말한 것과 동일 / 빈 화살표
4) Aggregation(약한 집합)
: 하나의 클래스가 여러 개의 클래스로 구성되어 있는 경우
= 부분- 전체(part of) = has a "consist of" R
*속이 빈 마름모 - 반드시 필요하지 않음(약한 집합) , 마름모가 향하는 곳이 전체임.
5) Composition(강한 집합)
: 각 sub 클래스가 오직 하나의 super 클래스에 대하여만 의미를 가질 때
*속이 채워진 마름모
6) Dependency
: 한 클래스가 다른 클래스를 사용하는 경우 (특히 operation이 다른 클래스를 사용하는 경우)
7) Interface and Realization
인터페이스 : 클래스의 일정한 행동을 나타내는 operation의 집합. 다른 클래스에서 사용 가능
8) Abstract class
: 객체를 생성하지 않는 클래스
*이태릭체 클래스명
'CSE > 소프트웨어공학' 카테고리의 다른 글
<7> OO Development Processing using UML (0) | 2023.12.09 |
---|---|
<6> SWModel_UML 2, Package diagram, Sequence diagram, State chart diagram, Compo (0) | 2023.12.09 |
<5> Architecture design 2 (0) | 2023.12.08 |
<5> Architecture design (0) | 2023.10.16 |
<4> Requirements Engineering (0) | 2023.10.16 |