01. 모델이란?
1. 모델
: 현실세계의 생각이나 아이디어를 구체적으로 표현하기 위해 사용되는 방법.
모델은 어떤 현상을 표현해 줄 수 있으며, 모델을 작성하는 규칙 혹은 표현 규칙이 존재한다.
* 예를 들어 자동차를 디자인하는 사람들은 가장 먼저 자동차를 설계한 뒤에 찰흙, 나무 등으로 설계를 따라 동일하게 제작한다고 한다. 이 과정을 모델링이라고 한다.
2. 모델링
: 해석하기 용이한 추상적인 디자인의 구축.
- 분석 기법은 모델을 대상으로 유용한 정보를 이끌어 내는 일에 사용된다.
- 모델은 자체적으로 어떤 현상을 표현할 수 있다.
- 모델의 구성자는 잘 정의된 구문과 의미를 제공함으로 공통된 이해에 도움을 줄 수 있어야 하고 - 이를 통해 문제의 표현 혹은 솔루션의 표현에 대한 공통 이해를 가능하게 한다.
! 구성자: 모델링 언어) syntax
네가지 파트로 분리되어 있다.
1) Name(Visibility)
2) Attributes: +Public, #Protected, -Private
3) Operations
4) Responsibilities 책임: 모든 오브젝트는 '무슨 일을 한다는 책임'이 질문되어야 한다. 이것은 중요도의 기준이 된다. 필수는 아님.
- 모델은 다양한 시각에서 표현이 가능하다.
건축에서 조감도, 정면도, 측면도, 평면도 등 다양한 도면을 제공하듯이 소프트웨어도 다양한 모델을 필요로 한다.
- 모델링에는 사용자 시각과 개발자 시각이 공존한다.
* 왜 설계도는 다양한 정보를 시공자에게 전달할까?
사실 발주자에게 정확한 정보를 전달하고 컨펌을 받기 위해서이다. 즉, 일종의 커뮤니케이션 수단이다.
3. 모델링의 주요 개념
1) 추상화
: 객체의 추상화 과정에서 속성과 오퍼레이션을 구분한다.
상세함을 버리고 핵심적, 필수적 부분만을 추출한다.
- 추상화란?
불필요한 부분을 제거해가면서 사물의 본질을 드러나게 하는 과정.
"하나만 제외하고" 모든 변수를 제외함으로 핵심적 의미를 발견하려고 함.
2) 분류
관계 있는 개체들에 대한 그룹화 -> 대상의 특성을 이해한다.
- 이들은 왜 필요한가?
현실 객체는 너무 데이터가 많지만, 시스템이 관심을 두어야 하는 데이터는 제한적이기 때문에.
02. 모델링 언어 - UML
: Unified Modeling Language
- SW 모델을 표현하기 위한 시각적 언어.
- 다양한 시각을 반영할 수 있다.
- 발주자 - 개발자, 개발자 - 개발자 사이의 의사교류 수단.
- 시스템의 구조/기능/행위 측면을 모델링 가능.
1. UML의 역사
- 1995년 Rational사의 Rumbaug, Booch, Jacobson이 그들의 방법론을 통합하기 위한 표준작업을 실행.
- UML1.1이 OMG에 의해 공인기술로 채택.
- UML2.0이 발표되어 현재까지도 활용 중.
2. UML의 능력과 한계
장점
- 공통적인 개념을 제공해 문서에 대한 공통적 이해를 가능하게 함.
- 모델링 도구의 지원을 받음.
단점
- 프로그래밍 언어가 아님: 프로그래밍 불가능.
- 방법론이 아님: 분석, 설계에 대한 구체적인 절차를 제시하지 않음.
- 구조적 분석에 적합하지 않은 표기법.
3. UML을 구성하는 모델
1) 기능모델: 사용자 시각에서 시스템의 기능을 서술.
- 유스케이스 다이어그램.
2) 객체모델: 객체로 구성되는 시스템의 구조를 서술.
객체, 클래스, 속성, 오퍼레이션, 연관 등의 개념 사용.
- 클래스 다이어그램.
3) 동적모델: 시스템의 동적 행위를 모델링.
- 시퀀스 다이어그램, 활동 다이어그램, 상태 다이어그램.
4. UML 의미론 - 4개의 레이어 모델
1) meta-metamodel: 메타 모델링을 정의. 호환을 위해 사용.
2) metamodel = 지금까지 설명한 것: 모델의 구체적인 언어를 정의. 모델의 언어. Class, Attribute, Operation 등.
3) model: 메타모델의 예시. 정보 영역을 정의하기 위한 언어를 정의. StockShare, askPrice 등.
4) user objects: 모델의 예시. 정보 영역을 구체적으로 정의. <Acme_SW_Share_98789>, 654.56 등.
5. 왜 이렇게 다이어그램이 많은가?
시스템의 복잡성을 더 잘 이해하기 위해서.
03. 객체Object의 다양한 정의
- Object, a thing, being, concept, process.
1. 객체란?
객체는 잘 정의된 경계, 경계 내에서 보호되는 상태 state, Attributes / 행위 behavior, Operations를 갖는다.
- 상태: 객체가 존재하도록 하는 여러 조건 중 하나.
속성에 관한 속성값, 다른 객체와의 연결로 구현.
- 행위: 객체가 어떻게 행동하고, 반응하는지를 결정.
객체가 수행하는 오퍼레이션에 의해 표현.
2. 유일성
각 객체들은 고유의 식별자를 통해 독립적으로 식별된다.
- 객체의 식별이 필요한 이유: 고유성을 가지고 있어야만 개별적으로 접근할 수 있다.
- 데이터와 객체의 차이점: 데이터는 그대로 존재하는 것, 객체는 접근할 수 있는 오퍼레이션들이 묶여있는 상태.
3. 객체화
클래스는 객체를 생성하기 위한 템플릿을 제공한다.
-> 클래스는 먼저 정의되어야 한다. 즉, 일종의 데이터타입.
* 시스템상에서 오브젝트는 메모리에 실체로 존재하지만, 클래스는 언어 속에만 존재한다.
4. 클래스란?
: 객체에 대한 일반적인 정의 또는 표현물.
객체를 생성하기 위한 템플릿을 제공하는 역할.
- 모든 객체는 클래스와 연관되어 있다.
! 구조체와 클래스
1) 프로그래밍 언어의 구조체와 클래스
C언어의 구조체는 클래스와 유사한 구조(멤버필드, 멤버함수)를 가지고 사용된다.
클래스와의 차이점: 멤버데이터가 필드 연산자에 의해 직접 수정이 가능하다는 것.
2) 구조체와 클래스의 차이
- 클래스 정의와 구현을 분리 -> 재사용을 편리하게 한다.
- 멤버데이터에 대한 안전한 접근이 가능한 매커니즘을 제공한다.
- 생성자, 소멸자, 멤버함수 등의 오퍼레이션을 제공한다.
- 객체 시스템의 작동은 메인 함수에서 객체를 생성함으로 작동한다.
- 생성자와 소멸자의 역할은 객체 활용에서 가장 중요하다.
'강의 정리 > 소프트웨어 분석 및 설계' 카테고리의 다른 글
소프트웨어분석및설계 (13) 컴포넌트 모델과 OOP / (0) | 2024.05.27 |
---|---|
소프트웨어 분석 및 설계 중간 정리 (1) | 2024.04.18 |
소프트웨어 분석 및 설계 (7) 상태 모델 (0) | 2024.04.15 |
소프트웨어 분석 및 설계 (6) 유스케이스 모델2 (0) | 2024.04.08 |
소프트웨어 분석 및 설계 (5) 유스케이스 모델 (0) | 2024.04.02 |