Modeling
- simplification of reality
- SW 시스템의 모델
- (분석 단계에서) 만들고자 하는 시스템 표현 : input과 ouput의 관계
- (설계 단계에서) input과 ouput을 구현하기 위한 내부 구조에 대한 설명
=> SW 시스템의 모델은 분석 단계에서도, 설계 단계에서도 만들어 활용할 수 있다.
- input이 주어졌을 때 ouput으로 맵핑을 하기 위해서, 필요한 시스템이 무엇인지 표현
- 각각의 기능적 요구사항들을 input과 ouput으로 맺기 위해 필요한 요소를 모아놓은 것이 모델
- element를 찾고 정의하는 것이 모델링
SW 시스템의 요소
: 모델링 하는 두 가지 방법의 차이는 요소의 타입
Software Development Methodology
- Structured Methods (Function)
- SP : Structured prgramming
- SD : Structured design
- SA : Structured analysis
- SA 단계에서 모델링하는 방법
1) Data flow diagram (DFD)
2) Data dictionary
- Object-Oriented Methods (Class/Object)
- OOP : OO programming
- OOD : OO design
- OOA : OO analysis
- UML :객체지향 분석과 설계에서 사용하는 모델
객체지향 분석
- 모델의 요소가 Class/Obejct
- 객체가 중심이 되는 분석
Q. 객체지향이 무엇인가요?
- Data over function (함수와 데이터를 합한 것)
- Information hiding(encapsulation) : 함수가 다루는 데이터가 외부에서 알 필요가 없어 숨김
- Inheritance (상속) : 함수를 재사용
Objects and classes
- Object : attributes (state) + operation (methods)
- Class : 같은 attributes와 operations의 object를 모아놓은 것
- class와 object를 주요 요소로 요구사항 정리, 모델링
- 표기법 : UML (Unified Modeling Language)
UML Diagram
- 정적인 특징을 기술하기에 편리한 다이어그램 (Static)
: 프로그램이 실행되더라도 변하지 않는 속성
- 동적인 특징을 기술하기에 편리한 다이어그램 (Dynamic)
: 프로그램을 실행하면서 변하는 속성
Roadmap
Structured Analysis
Structured Programming (구조적 프로그래밍)
: 구조를 조합하여 프로그램을 작성하는 행위
Edger W. Dijkstra : 분석 방법론은 제안한 컴퓨터 과학자
- Sequence : 문장 나열
- Selection : 조건문 구조 (if-then-else)
- Iteration : 반복문 구조 (for, while)
cf) spaghetti code : 구조화되지 않은 코드, 위 방법을 쓰더라도 복잡한 코드를 뜻하기도 함
DFD (Data flow diagram)
- 구조적 방법론에서 사용
- Sequence, Selection, Iteration 방법으로 모델링하는 방법
- 전체 시스템의 기본 기능을 식별하고 세분화
- input과 output을 단어로 표시
Data dictionary
- input과 output의 상세한 데이터 구성
- Sequencing data types : 항목을 다 모아놓는 것
- ex) name + category + class
- Repeating data types : 반복 가능한 항목
- ex) { no + stock number + quantity + unit price }
- Selecting one from several types : 선택 사항
- ex) [ vacuum cleaner order | jet engine order]
UML
Class Diagram
- 남들이 작성한 클래스 다이어그램을 읽을 수 있어야 하고, 작성할 수 있어야 한다.
- Static, structural view
- Class 간의 관계
- 클래스에 대한 관계
- Association : X has a Y (X 클래스가 Y클래스의 인스턴스를 가지고 있다.)
- Inheritance : X is a Y (X클래스가 Y클래스의 자식 클래스이다.)
- Realization : 클래스와 인터페이스의 관계
- Dependency : X uses a Y (X클래스가 Y클래스를 임시로 사용한다.)
Class Diagram : Class
클래스 표현방법
Class Diagram : Relationship aming classes
Association
Inheritance
Aggregation/Composition (포함/합성)
- 공통점 : 전체 - 부분 관계
- 차이점 : 포함관계는 부분 객체가 사라져도 전체 객체가 남아있지만, 합성관계는 함께 사라진다.
UML 클래스 다이어그램 작성
1) 클래스 찾기
- 자연어로 작성된 문장에서 명사(클래스), 형용사(attribute), 동사(operation) 찾기
2) attributes와 operations 지정
3) 클래스 간의 연관 관계 찾기
클래스 유형
- Entity class : ⭐️ persistent (유지의 의미) things -> 데이터 저장소로 사용할만한 클래스
- Boundary class : 사용자와의 인터페이스를 위한 클래스
- Control class
- Entity class의 내용을 만들거나 업데이트 역할
- Boundary class의 제어 역할