[UML.1] UML의 시작 UML
S/W를 개발할 때마다 느끼게 되는 어려움은,
어떻게 하면 생각을 효율적으로 정리할 수 있을까 라는 것이다.
효율적이라함은,
표현하기가 쉬워야 하고,
이해하기 쉬워야 하고,
구현하기 쉬워야 한다는 뜻이다.
하지만 막상 실천을 하려고 보면, 매우 어렵다는 것을 느끼게 되는데,
그 이유는 위의 3가지 원칙이 서로 상충하는 부분이 많기 때문이다.
비록, "쉽다"는 공통된 형용사를 썼지만, 속뜻은 서로 다르기 때문이다.
첫번째의 "표현하기 쉬워야 한다"의 "쉽다"는 말 그대로 쉽다는 의미이다.
생각을 표현하는데 제약이 적고, 수정하기 쉽고, 많은 노력/시간이 필요하지 않고, 심지어는 이 과정을 통해 생각을 정리하고 보완할 수 있다면 더욱 좋을 것이다.
두번째의 "이해하기 쉬워야 한다"의 "쉽다"는 체계적이어야하는 의미이다.
아무리 복잡한 생각이라도 핵심은 간단하게 표현이 되어 있어야 하며, 세부사항은 자세하게 설명이 되어야 한다. 읽기에 거부감이 없어야 하고, 핵심을 빠르게 파악하며, 원하는 사항에 빠르게 접근할 수 있어야 한다.
세번째의 "구현하기 쉬워야 한다"의 "쉽다"는 명확하다는 의미이다.
실제 구현을 하다보면 이런저런 예외 사항이 나타나게 마련이다. 생각의 큰 개념에서는 아주 미미하지만 구현하는 입장에서는 명시되지 않았다면 매우 난처한 상황이다.
그리고 이런 부분이 명시되지 않은 상황에서 임의로 구현이 되고, 임의로 구현된 것들이 점점 많아지면, 애초에 정리된 생각과 구현된 것과는 전혀 딴판의 결과를 가져 올 수 있다.
즉, 빠짐 없이 명확하게 기술하되, 간단하게 기술하면서도 체계적이어야 하므로 어렵지 않을 수 없는 것이다.
이러한 고민으로 인해, S/W개발과 관련해서 많은 이론, 방법론, 도구들이 만들어졌다.
이제 알아볼 UML은 이러한 고민을 해결하기 위해 고민하다 찾아낸 한줄기 빛이다.
아직은 모르지만 과연 이 빛이 나의 고민을 해결해 줄 수 있을지 알아보도록 하자.
[출처] [UML.1] UML의 시작|작성자 dimalion