ch5. System modeling
시스템 모델링은 시스템의 추상적인 모델들을 만드는 과정이고, 각 모델들은 시스템의 다른 관점을 표현한다.
Unified Modeling Language (UML) graphical notation을 통해서 시스템 모델링을 표현한다.
시스템 모델링은 기능 이해를 돕고 고객과 커뮤니케이션에 쓰인다.
시스템 관점들 (Perspectives)
1. External (시스템의 문맥이나 환경)
2. Interaction (시스템, 환경, 컴포넌트들의 상호작용)
3. Structural (시스템 구성이나 데이터 구조)
4. Behavioral (이벤트에 반응하는 동적인 행동)
UML(Unified Modeling Language): Activity, Usecase, Sequence, Class, State diagram
Context model은 시스템의 문맥을 나타내는데, 시스템 바운더리 밖에 있는 것들을 보여준다. 이 때, 사회적, 구성체들이 바운더리 위치에 영향을 줄 수 있다.
System boundaries (시스템 바운더리)
시스템 내외부에 무엇이 있는지를 정의한다.
시스템 바운더리의 위치는 시스템 요구사항에 큰 영향을 미친다.
시스템 바운더리는 조직 내부 구성원들에 영양을 미치기 때문에, 정의 시에 정치적인 판단이 된다.
Interaction model
유저 요구사항을 확인하는데에 중요하게 쓰인다.
시스템 간의 커뮤니케이션에서 문제될 수 있는 것을 중시한다.
Use-case diagram / Sequence diagram 사용한다.
Use-case diagram은 요구사항 추출을 위해 개발되었으나 UML과 통합되었다.
액터는사람들이나 다른 시스템들을 말한다.
Sequence diagram은 UML 중 하나이고,
시스템에서 액터와 객체들의 상호작용을 나타낸다.
Structural model
시스템의 컴포넌트들이나 관계들에 관한 시스템의 구성을 나타낸다.
시스템 설계를 토론하고 디자인 할 때 쓸 수 있다.
Class diagram
OOP 시스템 모델 개발에 사용함. 클래스들의 관계를 나타냄
Generalization (일반화, 계층구조로 나타냄)
복잡도를 다루기 위해서 사용하는 기법
상세한 구성요소들(entities)을 일반화(추상화) 시켜서 general한 클래스들을 만든다.
공통의 특징을 묶어서 클래스를 만드는 것 (상위 클래스 개념으로)
OOP 에서는 class inheritance 상속 을 통해서 나타내어진다.
모델은 시스템의 추상적인 관점으로, 디테일을 무시함. 보완적인 시스템 모델들은 문맥, 상호작용, 수고, 행동 을 보이기 위해 개발됨
- Context model, Interaction model, Structural model, Behavioral model, Model-driven engineering(MDE, MDA)
- 문맥은 다른 시스템이나 프로세스들과의 환경에서 어떻게 위치하는지를 보여줌
- Use-case 다이어그램과 Sequence 다이어그램은 유저와 시스템의 상호작용을 보여줌
- 구조적인 모델은 시스템의 구성과 구조를 보여줌 (class diagram, + package diagram)
- 행동적인 모델은 실행한 시스템의 동적인 행동을 보여주기 위해 쓰임 (Data-driven, Event-driven)
- Activity diagram은 데이터의 처리에 사용되는 모델에 사용
- State diagram은 내외부 이벤트에 반응한 시스템의 행동을 나타내는 모델에 사용
- Model-driven engineering(MOE)는 모델을 다 만들고 자동으로 실행가능한 코드로 변경하려는 것
Behavioral model
실행된 시스템의 동적인 행동을 나타내는 모델.
환경으로부터의 자극에 반응하는 것
자극은 두종류로,
Data: 처리해야할 데이터가 도착
Events: 시스템 처리를 trigger하는 이벤트가 도착 (데이터가 될 수도 있고)
Data-driven modeling (데이터 전달전달~ 연결)
Event-driven modeling (내외부 이벤트에 반응하는 시스템 모델링, finite automata model)
State machine model ( + state diagram/state chart)
Model-driven engineering (MDE)
모델을 프로그램보다 우선시해서 코드는 자동생성 하도록
장점:
고레벨 추상화를 하게해줌
모델로부터 자동 코드생성은 새로운 플랫폼으로의 적용에 낮은 비용을 의미함
단점:
추상화는 구현 시에 항상 옳은 것은 아님
새 플랫폼의 자동 코드 제너레이터 만드는 비용이 더 들 수도
Model-driven Architecture (MDA)
Types of model (MDA)
CIM: Computation Independent Model, Domain Model, 플랫폼과 관계없음
PIM: Platform Independent Model, 플랫폼과 관계없음
PSM: Platform Specific Model, 플랫폼에 적용됨
CIM(도메인 추상화) - PIM(시스템 추상화, UML) - PSM(실제 어플리케이션 적용)
MDA는 애자일 방법론에 적용할 수 있다고 주장한다.
애자일 개발자 중 모델기반 공학에 편한 사람은 없을 것 같다
원리로는, 코딩 없이 애자일 개발을 할 수 있다.
구현보다는 디자인 토론에 좋다.
복잡한 시스템들은 구현은 문제가 아니고 - 요구사항, 보안, 통합 등이 더 중요함