비전공자나 모델링에 대해 전혀 지식이 없는 분들이라면 또 오히려 새로운 개념을 무에서 받아들이는데도 도움이 될거라는 생각이 듭니다.
본격적인 교육후기를 쓰기에 앞서 먼저 제 자신에 대한 간단한 소개를 하는게 좋을것 같네요.
저는 컴퓨터학과를 졸업하고 소프트웨어공학을 석사로 전공하고 현재는 휴대폰 제조사에서 SW 개발을 하고 있습니다. 정확히는 SW 개발 업무 지원으로 SW 아키텍트 팀에 속해 있습니다. 본 교육은 같은 회사에 있는 최상호님 소개를 통해 수강하게 되었구요. (최상호 책임님께 이 자리를 빌어 감사의 말씀을…^^)
SW 공학 전공자인 저로서는 모델링에 대해 실무 경험은 적었지만 나름 개념이나 이론은 어느 정도 알고 있다고 생각해온 상태였습니다. 그런데, 이번 교육을 통해서 그동안 제가 알고 있던 개념들을 새로운 view로 바라보고 정리하는 좋은 계기가 되었습니다. 강사님은 모델링에 대한 새로운 패러다임을 제시하기 때문에 기존 관습에 젖어 있는 사람들에게는 거부감이 드는 것을 우려하셔서 마음을 비우라고 하시더군요. 그런데, 다행히 저는 현업에서 실제 모델링을 해본 경험이 적기 때문에 오히려 open mind로 쉽게 받아 들이고, 또 그동안 부분적으로 알고 있던 객체와 모델링, 컴포넌트 등에 대해 논리적으로 명확하게 정리하는 그림을 그리게 되어서 좋았습니다.
비전공자나 모델링에 대해 전혀 지식이 없는 분들이라면 또 오히려 새로운 개념을 무에서 받아들이는데도 도움이 될거라는 생각이 듭니다.
교육은 총 6주 과정이고 전체 일정이 다음과 같습니다.
1주 & 2주 –> 객체 모델링에 대한 핵심개념
3주 & 4주 –> 행위형식화 기법
5주 & 6주 –> 유스케이스 기반의 컴포넌트 기반 개발
그러면, 제가 교육 받으면서 느꼈던 사항들을 위의 일정별로 간단하게 정리해 보겠습니다.
1주차
모델링이란 무엇인가? 객체 모델이란 무엇인가? 라는 근본적인 질문으로부터 강의가 시작됩니다.
더 근본으로 돌아가서 객체와 인스턴스, 값, 링크에 대해서 철학적인 수준에서 핵심 개념을 배웁니다.
이 모든것이 UML 스펙의 철학에서 기인한 것이므로 논리적으로 명쾌하게 머리속에서 정리가 가능합니다.
상태, 행위, 특성, 협력, 역할의 개념까지 정리하면 이제 객체다이어그램을 배우고 실습합니다.
설계==클래스다이어그램 이라는 기존의 선입관에서 벗어나는 새로운 경험이었는데, 문제영역인 도메인의 fact를 그대로 표현해보는 객체다이어그램은 강사님 표현대로 기계적으로 쉽게 작성이 가능했습니다.
2주차
지난주가 도메인의 fact를 모델링 하는 객체 다이어그램을 학습했다면, 이번주는 객체의 개념(설계도)가 되는 클래스를 학습하고, 이를 클래스다이어그램으로 작성하는 실습으로 시작합니다.
클래스간의 관계를 나타내는 의존, 연관과 일반화까지 계속 개념들을 학습해 나갑니다.
클래스를 생성하는 개념과 사용하는 개념에 대해 정리를 하고 본 교육의 본격적인 내용인 행위형식화 기법에 대해서도 살짝 맛을 봅니다. 이제서야 왜 핵심개념에 2주나 시간을 소요하는지 이해가 가기 시작합니다.
“모델링은 경험이 아니라 논리이다.” “도메인 분석이 정확히 이뤄지면, 모델링은 논리에 의해 명확하게 수행이 된다.”
3주차
행위 형식화의 기본 개념인 요구정보, 수행방법, 수행조건으로 시작해서 생성, 사용의 개념에 대해서 배우게 됩니다. 기존 모델링 관련 서적에서 언급하는 responsibility, collaboration 수준에서 이해하고 따라가면 조금 접근이 쉬운것 같습니다.
행위 형식화 모델링을 지원하는 도구를 사용해 몇 가지 예제를 직접 고민하고 작성해봅니다.
“행위를 가지고 작업해서 구조가 나온다”.
이제부터 꼼꼼한 복습(실습한 것들)이 필요한 시기입니다.
4주차
지난주에 이어 요구정보 모델링을 마무리하고, 수행방법 모델링까지 배우게 됩니다.
폴더크기계산시스템 예제를 직접 실습하면서 작성하고 개념을 정리하게 됩니다.
모델링을 위해서는 우리가 친숙한 구조적 사고 외에도 객체지향적 사고와 결과적 사고, 재귀적 사고가 필요하다는 말이 아직까지 기억나네요. 특히 재귀사고는 인간이 하기에는 참 어려운 방식인것 같습니다.
5주차
행위형식화의 마지막 단계인 수행조건 모델링을 학습하고, 예제로 차고문개폐시스템을 state machine으로 직접 모델링합니다.
머리속에 전체 개념을 한번에 정리하기보다는 직접 손으로 단계별로 테이블을 통해 표현해내는 것은 복잡한 상태 모델링을 접근하는데 유용한 방법인것 같습니다.
정적행위와 동적행위를 구분하고 어떻게 모델링에서 사용해야 하는지를 정리하며 드디어 행위형식화를 마무리합니다.
오후 시간에는 행위형식화 기법을 유스케이스/컴포넌트 기반 개발방법론에 적용되는 산출물로 표한하는 방법에 대해 학습합니다. 실제, 프로젝트를 수행할 때 고객이 원하는 산출물 형태로 만드는 작업이라고 볼 수 있습니다.
6주차
드디어 마지막 차입니다. 의욕이 넘쳤던 1,2 주차에 비해 몸도 마음도 조금 지치긴 하지만, 새로운 것을 배우는 것은 여전히 재미있고 동기부여가 되는 일입니다.
그동안 배웠던 아직까지는 생소한 행위형식화 기법을 산업계에 널리 쓰이는 유스케이스, 클래스, 컴포넌트 다이어그램으로 표현하고 산출물로 작성해보는 시간입니다. 즉 직접 프로젝트를 수행할 경우 고객에게 제공되는 산출물 작성이 되는거죠. 남은 시간에는 UI 모델링, DB 모델링까지 다루면서 긴 6주의 여정이 드디어 끝나가네요.
후기를 쓰면서 나름 제가 배운 것들을 시간에 따라 정리해보았는데, 양이 상당히 많은것 같네요. (공부하고 연습해야 할 것도 많구요.)
지금까지 기술한게 본 교육에서 제공하는 기능적인 부분이라면, 매 교육마다 친절하게 지난 시간에 배운 것을 리뷰해주시고, 모든 수강생들을 원하는 곳까지 끌고 가려는 강사님의 열정은 아주 중요한 비기능적인(품질속성) 이라고 할 수 있습니다.
교육은 끝났지만, 모델링은 이제 시작이고, 내년부터 이어지는 교육 후 세미나까지 배움의 즐거움은 끝이 없을것 같네요 ^^ 이렇게 후기를 장황하게 적어보며 제 스스로도 다시 한번 다짐해봅니다.
– 서만수