모델(Model)이란?
어플리케이션 영역에서 실존하는 것이나 상상의 것들을 표현하는 것을 모델이라고 한다.
예를 들면, 교각, 교통흐름, 건물, 경제 정책 등등을 모델이라 할 수 있다.
소프트웨어 측면에서는 Abstraction(추상화)을 말한다.
Abstraction을 추상화라고 알고 있지만, 필요로 하는 것만 추출하는 것이라고 이해하는게 더 좋다.
학생들을 예로 보자.
우리는 실존하는 학생들이고, 개개인의 셀수 없이 많은 특성이 있다.
그런데 학교 시스템에서는 우리를 학번, 이름 등등의 처리하기 편한 정보로 우리를 특정화시킨다.
이렇게 컴퓨터로 가져오면서 공통적인, 대표적인 특징으로 표현한다.
또한 특정 요소 전부를 한 번에 표현하면 보기도 이해하기도 어렵기 때문에 계층적으로 표현하기도 한다.
Diagram
Diagram 이란?
사전적 의미는 도표로, 그림으로 표현하는 것을 말한다.
그렇다면 왜 도표로 표현할까?
그 이유는 직관적으로 이해하기 쉽기 때문이다.
Abstract Shapes와 Diagram의 차이
그렇다면 Abstract Shapes와 Diagram의 차이는 무엇일까?
둘 다 의미상으로는 비슷한다.
Abstract shapes는 필요한 것만 추출한 도형 이라는 의미고, Diagram은 꼭 필요한 것만 가져온 그림이다.
사실 의미상으로는 거의 같은데 굳이 차이점을 말하자면 Abstract shapes 중에서 정말로 필요한 것만 들고온 게 Diagram이라고 할 수 있다.
위의 예시를 다시 보자.
학생이라는 모델에서 필요한 것만 추출한 도형이라고 하면, 학생들의 공통적인 외형이 나올 것이다.
사람의 일반적인 형상이나, 교복, 가방 등등이 나올 것이다.
하지만 이를 학교 시스템에서 필요로 할까?
학교 시스템에서 특정 학생에 대한 정보를 저장할 때 학생의 가방이나 형상이 필요로 하지 않는다.
그렇기에 Abstract Shapes에는 있지만, 다이어그램에는 이런 모습은 묘사되지 않을 것이다.
표준 규칙을 따르는 다이어그램
다이어그램은 표준을 따라야 한다.
그래야 여러 사람들이 같은걸 보고 다른 생각을 안한다.
하나의 사회적 약속이라고 할 수 있다.
아래의 그림은 주로 옷에 그려져있는 Diagram이다. ▼
첫번째 그림은 규칙이 없어도 대강 이해가 되는 잘 표현된 diagram이다.
하지만 두번째와 세번째 그림은 원래 이 그림의 의미를 아는게 아니라면 이해가 조금 힘들다.
두번째 그림의 두 요소인 삼각형과 엑스, 표백제를 쓰지 말라는 뜻이고, 세번째는 건조기를 써도 된다는 의미이다.
삼각형과 네모와 동그라미를 각각 표백제와 건조기라는 의미로 이해할 수 있을까?
아무런 제시어나 설명이 없으면 힘들다.
하지만 여기에 글을 잔뜩 적게 되면 그거 대로 가독성이 떨어진다.
그래서 표준 규칙이 필요한 것이다.
세모는 표백제, 네모와 동그라미는 건조기로 이해하자는 하나의 약속을 통해 묘사가 되면 훨씬 가독성 좋게 묘사할 수 있다.
다이어그램을 쓰는 이유
기본적인 이유는 아이디어를 공유하고 소통하는 것이다.
그리고 아래의 이유들로도 다이어그램을 사용한다.
- 새로운 아이디어와 가능성을 만들 수 있다.
- 구조와 관계를 이해하는 것을 도와줄 수 있다.
- 아이디어를 테스트해보고 예측해볼 수 있다.
예시
예시를 하나 보자.
플로우 차트랑 굉장히 유사하고, 각 줄마다의 활동을 누가 하는지 알기 쉽다. ▼
그런데 write chapter에는 숨겨진 과정이 있다.
위의 그림에서 모든 것을 보여주지 않고 계층적으로 필요한 부분만 보여줄 수 있다.
만약에 A의 과정의 세부 내용과, 다른 과정들의 세부 내용들도 모두 묘사해버리면 한 눈에 볼 수 없어지게 된다.
그렇게 되면 가독성이 저하되고 직관성도 떨어지게 된다.
그렇기에 모델링할 때는 디테일 레벨을 조절해야한다.
다이어그램 모델링 기법
직관적이고 가독성 좋은 모델을 그리는데에는 4가지 규칙이 있다.
1. Simplicity of representation
표현의 단순함이라는 말로, 꼭 보여져야 하는 것만 보여준다는 것이다.
“당연한거 아닌가요? 불필요한 것을 표현할 리가 없잖아요?”
상식적으로 생각하면 아주 당연한 이야기다.
하지만 여기서 하는 말은 뭐가 필요한 거고 뭐가 불필요한 것인지, 그 가치를 판단하는 것이 어렵다는 말이다.
잘 설계하다가도 불필요한 것에 꽂혀서, 일명 터널 비전이라고 하는 현상으로 정말 중요한 것을 판단하지 못할 수 있다.
2. Completeness
완전성이라는 말로 보여져야하는 모든 것은 보여져야한다는 것이다.
불필요한 것들을 걸러내는 과정에서 가치 판단의 오류로 필요한 것도 같이 걸러낼 수 도 있다.
그렇기에 보여져야하는 것, 즉 필요한 것과 불필요한 것의 명확한 구분이 필요하다.
3. Internal consistency
내부적 일관성이라는 말로 양 쪽 다이어그램을 모두 같게, 같은 방식으로 그려야한다는 것이다.
4. Hierarchical representation
계층적 표현이라는 것으로 위의 예시에 잘 나타나있다.
계층적 구조없이 모두 보여지면 어떨까?
우리의 컴퓨터의 파일들이 폴더 구조가 없이 바탕화면에 모든 파일이 있다면 어떨까?
물론 나름의 기준을 가지고 적절히 배치하면 한 눈에 볼 수 있겠지만, 파일의 양이 엄청나게 많으면 한 눈에 보는게 어려울 수 있다.
다이어그램도 마찬가지다.
모든 것을 한 번에 묘사하려고 하면 직관성이 떨어지게 된다.
Unified Modelling Language (UML)
통합된 모델링 언어라는 것으로, Object Oriented Programming을 사용하는 모든 언어들은 이 언어로 통합될 수 있다.
'CS > 소프트웨어 공학' 카테고리의 다른 글
9. 요구사항 문서화 (0) | 2024.01.29 |
---|---|
8. 요구사항 포착 (0) | 2024.01.26 |
6. Agile (0) | 2024.01.21 |
5. Process Iteration (0) | 2024.01.21 |
4. Process Activities (0) | 2024.01.20 |