'UML' 검색 결과 4건

  1. 2012.03.08 UML로 팩맨 기획하기 #2 (5)
  2. 2012.03.07 UML로 팩맨 기획하기 #1 (9)
  3. 2009.04.02 기획자를 위한 분석 및 설계 기법 (5)
  4. 2008.11.05 구구단을 UML로.. (6)

UML로 팩맨 기획하기 #2

블로그를 옮겼습니다: [글 읽기]

신고

UML로 팩맨 기획하기 #1

블로그를 옮겼습니다: [글 읽기]

신고

예전부터 고민하던 문제인데 자꾸 미루게 되어서 일단 질러놓고 봅니다. 연재 형식으로 쓰려고 하며, 예상 독자는 게임 기획자나 웹 기획자 혹은 기획에 관심있는 개발자 입니다. 주제는 아래와 같으며 순서나 일정은 미리 정하지 않았습니다.

  • 복잡한 논리의 흐름을 몇 가지 기본적인 단위로 분해하는 방법
  • 거대한 개념을 작은 단위로 나누는 다양한 방법
  • 구체화되지 않은(혹은 의도적으로 구체화하지 않은) 매우 추상적인 개념을 효과적으로 다루는 방법
  • 서로 다른 여러 개념 사이의 공통점을 찾아내는 방법
  • 생각을 정리하기 위한 정보 시각화 방법
  • 효과적인 의사소통을 위한 정보 시각화 방법
  • 특정한 기획 요소의 변화가 다른 기획 요소에 미치는 영향을 추적하고 관리하는 방법

거의 모든 주제가 “논리적이고 체계적인 사고”에 대한 것입니다. 따라서 독자께서 이런 생각을 하실 수도 있습니다:

기획은 논리만으로 되는 것이 아니다. 기획자는 사용자의 이성적 측면 뿐 아니라 감성적 측면도 고려해야 한다.

이러한 의문에 대해서는 두 가지 생각을 가지고 있습니다.

첫째, 기획의 모든 면을 다루는 것은 이 연재의 목적이 아닙니다. 그러기에는 제 지식이나 경험이 턱없이 부족합니다.

둘째, 감성과 논리는 대치되는 개념이 아닙니다. 논리라고 하면 보통은 ‘이성’에 대한 것으로 한정지어 생각하는 경향이 있는데 감성이나 도덕에도 논리가 있습니다. 감성적 측면을 다루는 능력이 진정 중요하다고 생각한다면 인간의 감성을 지배하는 논리를 파악하고 이를 체계적으로 다루는 기술을 연마해야 한다고 생각합니다. 이 중 감성의 논리를 파악하기 위해 필요한 내용(심리학, 사회학, 생물학, 미학 등)은 아마도 이번 연재의 범위에 포함되지 않을 것이고, 파악된 논리를 체계적으로 분석하고 활용하기 위해 필요한 내용을 주로 다룬다고 보면 될 것 같습니다.

이런 종류의 글을 쓰기에 더 적합할 것 같은 분들이 주위에 좀 계셔서 부담스럽지만 스스로 공부도 할겸 제가 먼저 깝쭉 나대보려고 합니다. ㅋ

앞으로 연재가 진행되는 동안 댓글로 의견/제안/질문 등을 남겨주시면 큰 도움이 되겠습니다. :-)

신고

구구단을 UML로..

나쁜 코딩 - 약한 결합을 위해 추상클래스를 선언했지만...를 읽다가 흥미가 동하여 끄적여봅니다.

참고로 UML을 학습하시는 분들이 계신데, 위에 작성한 클래스들을 UML로 작성해보면 정말 약한 결합을 실현한 것처럼 보입니다. 제가 UML을 별로 선호하지 않는 이유인데요. 책에 나와 있는 그림이랑 똑같은데 뭐가 문제라는 겁니까라고 얼굴이 벌게져서 항의하는 후배 앞에서 정말 뭐라 할 말을 잃었습니다. 여전히 후배랑 화해를 못하고 있어요... 나쁜 UML (엉뚱한데 탓한다) UML을 신봉하는 사람에게 코드를 좀 보란 말이야 라고 얘기해도 자꾸 UML 다이어그램만 보더라구요.

저도 UML을 딱히 좋아하는 것은 아니지만, 어느 정도 유용한 측면이 분명 있다고 생각합니다. 사실, 이 경우엔 UML 자체가 문제라기 보다 UML을 제대로 못 그린 것이 문제인거죠.

위에 작성한 클래스라는 것은 복잡한 것 빼고 간단히 요약하면 이런 코드입니다:
abstract class Computer {
   static int arr[][];
   abstract void print();
}

class Windows extends Computer {
   void print() {
       // depends on "arr"
   }
}

class Linux extends Computer {
   void print() {
      // depends on "arr"
  }
}

이 코드를 UML로 나타내라고 하면 보통은 이렇게 하겠죠:

사용자 삽입 이미지

따라서, 위 다이어그램을 보면 마치 약한 결합(generalization)인 것으로 보입니다. 하지만, 좋은 모델이라는 것은 "적절한 요소를 드러내야"하는데, 이 맥락에서 "적절한 요소"란 Windows 클래스와 Linux 클래스가 "arr"에 의존하고 있다는 점입니다. 한편, arr은 엄밀히 쓰자면 Computer.arr 이죠. 따라서 아래와 같은 선이 추가되어야 합니다:

사용자 삽입 이미지

이제 다이어그램만 봐도 잘못된 설계가 눈에 보이게 됩니다.

많은 사람들이 다양한 측면에서 UML을 비판합니다만(시각화가 적절치 못하다, Executable UML은 비용이 너무 비싸다 등등), 그렇다고 해서 아주 못 쓸 물건은 아니라는 얘기가 하고 싶었어요.

관련글:

신고
< Newer     Older >

티스토리 툴바