1장에서는 ‘소프트웨어모델링이란?’에 답하는 장입니다.
우리는 ‘사고법으로서의 소프트웨어모델링’으로 이 질문에 답합니다.
소프트웨어모델링이 뭔지, 왜 하는지, 뭘 하는것인지에 대해 분명히 정리하고 넘어가야 합니다. 이 장의 첫 부분에 제시된 질문들에 답할 수 있을 때까지 꼼꼼히 여러 번 읽어야 합니다.
[참고도서]
[링크]
[다음 버전에서]
1. 모델링에 대한 일반적인 정의를 포함할 것인가?
To understand modelling, it is important to define it. We define a model as a simplification of reality. It is important to simplify reality in order to understand the system.
포함하더라도 simplification에 대한 설명을 분명히 해야 한다. 의도 된 simplication, simplication이 아니라 다르게 표현되는 세계에서의 재구성으로.
[잡설]
모델에는 패션모델이나 회화나 조각의 대상이 되는 사람모델도 있고 자동차나 건축 모형과 같은 모델도 있다. 복잡한 현상을 개념적으로 표현하는 과학모델도 있다. 소프트웨어 모델은 이러한 모델과 어느 정도 유사한 의미를 갖기도 하지만 많은 부분에서 다르기 때문에 이들과 구분해서 이해할 필요가 있다.
추상(抽象)의 이름의 뜻은 구체적인 상을 빼낸다는 것이다.
해결책을 설계한다는 것은 해결책이 가져야 하는 구조와 행위에 대한 의사결정을 하는 것이다. 아키텍처와 설계로 세분화할 수 있는데, 아키텍처는 기능적 비기능적 요구사항에 직접적으로 관련된 의사결정만을 일컫는다.
분석가는 복잡한 대상에 대한 분석기술로 모델링을 사용하고, 설계자는 복잡한 대상에 대한 설계기술로 모델링을 사용하고, 검증자나 구현자는 복잡한 대상에 대한 검증이나 구현기술로 모델링을 사용한다.
소프트웨어 개발방법론은 유스케이스 기반으로 하고 컴포넌트 중심으로 개발할 필요가 있다. 유스케이스를 기반으로 하고 컴포넌트를 중심적으로 하는 개발은 태생적으로 maintainability, modifiability, testability, traceability, scalability, reusability와 같은 품질속성을 높이도록 맞춰져있다.
A model may be structural, emphasizing the organization of a solution, or behavioral, emphasizing the dynamics of a solution.