'staruml'에 해당되는 글 2건

  1. 2006.10.10 About UML #03 - Usecase
  2. 2006.10.05 About StarUML 1
UML2006. 10. 10. 10:12
이번 시간에는 Usecase 다이어그램의 대략적인 구성에 대해서 살펴보겠습니다. ^_^

#들어가기에 앞서서#
프로젝트가 실패하는 가장 큰 이유중에 하나는 "비정상적으로 짧은 개발기간"이라고들 합니다. 네, 물론 그렇습니다. 아직까지 헝그리 정신으로 밤샘과 철야를 하루 세끼 밥먹듯이 하며, "까라면 까는거지"라는 마인드를 가지고 있는 과장이나 부장밑에서 힘들게 고생하시는 한국의 프로그래머들을 보면 제가 다 화가 납니다. 또 프로젝트가 실패하는 큰 이유중에 하나는 "말도 안되게 수시로 변경되는 고객의 과도한 기능요구"라도들 합니다. 이 역시 맞는 말입니다. 무슨 도깨비 방망이라도 되는줄 알고 "이런저런 것들도 들어갔으면 하는데 간단하죠?"라고 고객이 말하면 나오는건 한숨밖에 없죠. 하지만 제 생각에 후자의 경우는 프로젝트에대한, 즉 원래 고객이 요구한 시스템에 대한 정확한 이해만 있으면 유동적으로 대처 할 수 있다는게 제 생각입니다. 프로젝트 초기에 가능한한 정확히 고객의 요구를 파악하고, 어느정도 변경이나 추가적인 요구가 들어와도 충분히 받아들일 수 있는 설계를 지향하는 것입니다. 이를 위해서 반듯이 필요한것이 요구사항 분석인데, 사실 많은 개발그룹들이 요구사항 분석을 단순 "요구사항서 낭독"쯤으로 생각하고 있는것 같았습니다. 제가 지향하는 "요구사항 분석"은 고객이 원하고 또 알고있는 것이상의 개발 시스템에대한 전문가가 되는것입니다. 자 그럼, 함께 Usecase를 사용해서 시스템을 분석해 보도록 합시다.

1. Usecase 란
1.1 정의
뭐 복잡한 말 하지 않겠습니다. 간단히 말해서 Use case란 말 그대로 "기능"이라고 보면 되겠습니다. 기능을 어느정도 작게 나눌지, 크게 합쳐서 표현할지는 개발 시스템마다 다르겠습니다.
1.2 특징
1.2.1 시스템 개발의 기본적인 단위가 된다.
무슨 말인고 하니, 대부분의 프로세스에서 제일 먼저 하는 일이 요구사항 분석입니다. 그렇기 때문에 Usecase가 이후 진행되는 프로세스에서 모듈이라던지 패키지라던지 컴포넌트도 전이될 확률이 상당히 높다는 말이죠, 즉 Usecase가 복잡하면 할 수록 시스템의 복잡도도 올라간다라고 할 수 있는것입니다.
1.2.2 구현 단계로부터 독립된다.
이 역시 당연한 말입니다. 길게 설명하지 않겠습니다.

2. Notation
2.1 Actor
액터는 다음과 같이 표현합니다.
액터가 생긴것이 "사람"모양을 하고 있어서 처음 공부하시는 분들은 Actor를 사용자에 국한시키는 경우를 몇번 보았는데 - 저도 역시 그랬구요 - Actor는 시스템의 기능을 사용하는 "외부의 모든것"을 의미합니다. 다른 시스템의 특정 컴포넌트가 개발할 시스템의 특정 기능을 사용하게 되면 그 외부 시스템도 역시 Actor가 되는 것입니다.

2.2 Usecase
Usecase는 다음과 같이 표시합니다.
간단하죠 ? 그냥 옆으로 길쭉한 타원에다가 Usecase의 이름을 적으면 됩니다. ^_^

2.3 System
System은 다음과 같이 표시합니다.
이 사각형이 가지는 의미는 시스템의 경계입니다. 이 사각형안에 위치한 Usecase는 해당 시스템에서 구현되어야 함을 의미합니다.

2.4 Relationship
자 그럼 이제 각각의 요소들과 연관을 지어서 좀더 의미를 부여해 보도록 합시다.

2.4.1 extend and include
extend와 include라는 관계가 있습니다. 의미를 설명하기 전에 먼저 아래의 그림을 봅시다.


점선과 화살표로 표시를 합니다. 이게 조금 의미가 복잡해질 수 있는데 간단히 설명해서 특수한 경우 수행되는 분기문정도로 이해하시면 됩니다. 크게 Include와 비교가 많이 되는데 include는 반드시 포함되는 필수불가결한 요소를 의미하며, extend는 경우에 따라 선택적으로 수행되는 기능을 의미합니다. 아래의 예제를 보도록 하죠.

Write Article은 반드시 Store to DB 기능을 사용한다는 의미로 받아드리시면 됩니다.
이제 extend를 살펴보도록 합시다. 우선 먼저 다음의 예제를 보도록 하죠.

위의 의미는 신용카드로 결재를 하는 Order with Credit에서 신용카드에 적립된 포인트로 결재를 하기를 원할 경우 Order with Point of Credit로 분기한다는 의미입니다.

2.4.3 generalization
객체지향에서 가장 중요한 의미인 상속입니다. 액터나 Usecase사이에서도 상속의 개념을 표현할 수 있습니다.
위의 그림을 보면 금방 이해하실 수 있으리라 생각됩니다. 관리자는 오퍼레이터의 기능을 가지면서 자신만의 고유한 기능을 또한 가지고 있습니다.

2.4.4 association
그럼 이제 액터가 시스템의 기능을 사용한다라는 가장 중요한 의미를 표현해 보도록 하겠습니다.
그림에서 액터와 Usecase사이의 실선이 바로 association입니다. 간단하죠 ? 그럼 이제 위의 그림을 설명해 보도록 하죠. 우선 시스템의 구현해야 할 기능들은 글을 쓰고, 고치고, 지우고 보여주는 기능입니다. User액터는 글을 읽을수만 있고, Writer액터는 글을 읽고, 쓰고, 지우고, 고칠 수 있습니다.
간단하죠 ?
간단한 예제이기 때문에 너무 그림자체에 몰두하지 말아 주시기 바랍니다. 아무 생각없이 그린 그림이라 의미가 이상하거든요.. 그냥 예제로만 보아주시기 바랍니다.
제대로된 그림은 차후 Case Study에서 한번 그려보자구요. ^_^

2.5 문서화
그럼 이제 그림은 대충 그렸는데, 문서화는 어떻게 해야 하는지 많은 분들이 물어 보십니다.
간단히 Usecase에 대해서 말씀드리면, 뭐 별거 없습니다. 기본적으로 Usecase는 액터와 시스템간의 상호 작용 - 바꿔말해서 시나리오 - 을 위주로 작성하시면 됩니다.
예) 1. 액터가 무엇을 한다.
    2. 시스템이 무엇을 한다.
    3. 액터가 뭘 한다.
    4. 시스템이 뭘 요구한다. 등등...

이 시나리오에서 객체라던지 모듈이라던지 등장할 필요은 없습니다. 하지만, GUI레벨 정도수준에서 무슨 화면이 나타난다 정도 기술해주시면 나중 작업이 상당히 수월해 집니다.
그리고 이때 도메인의 전문용어가 있으면 거침없이 사용해주시기 바랍니다. 나중에 수월해 집니다.

기회가 된다면 다음에 제가 사용하는 설계문서 포맷도 한번 올려 보도록 하겠습니다.

팁) 어떻게 Usecase와 Actor를 빨리 알아낼 수 있을까요 ?
다음의 Question List를 활용하실 수 있습니다.
1. Actor 추출

1)     시스템의 주기능을 사용하는 사람은 누구인가?

2)     누가 시스템으로부터 업무 지원을 받는가?

3)     누가 시스템을 운영, 유지 보수하는가?

4)     시스템과 정보를 교환하는 외부 시스템은 무엇인가?

5)     시스템이 내어놓은 결과물에 누가 관심을 가지는가?

2. Usecase 추출

1)     Actor가 요구하는 시스템의 주요 기능은 무엇인가?

2)     Actor가 시스템의 어떤 정보를 수정, 조회, 삭제, 저장하느가?

3)     시스템이 Actor에게 주는 어떠한 Event가 있는가?,  Actor가 시스템에 주는 어떠한 Event가 있는가?

4)     시스템의 입력과 출력으로 무엇이 필요한가? 그리고 입력과 출력이 어디에서 오고 어디에로 가는가?

5)     시스템의 구현에서 가장 문제가 되는 점은 무엇인가?

질문은 심원도선배님의 UML강좌에서 그냥 가져왔습니다. 기본적이고 다른 책에서도 많이 언급되고 있기 때문에 저도 그냥 따로 안만들었습니다.

휴우.. 오늘은 여기까지 하겠습니다. 다음 시간에는 Domain Modeling에 대해서 살펴보도록 하겠습니다.

'UML' 카테고리의 다른 글

About UML #04 - Domain Modeling 2.  (0) 2006.10.27
About UML #04 - Domain Modeling 1.  (0) 2006.10.22
About UML #02 Overview - 전체적인 구성 첫번째  (0) 2006.10.06
About UML #01 Overview - Why UML  (0) 2006.10.05
About StarUML  (1) 2006.10.05
Posted by 알 수 없는 사용자
UML2006. 10. 5. 16:59
강좌에 들어가기 앞서서
아주 유용한 기능들을 많이 가지고 있지만.. 주류가 아니라는 이유로
널리 사용되어지고 있지는 않는 비운의 StarUML에 대해서 간단히 소개해보고자 합니다. ^_^

1. StarUML 이란 ?

StarUML은 빠르고, 유연하고, 확장가능하며, 풍부한 기능에 Win32 플랫폼에서 무료로 사용할 수 있는 UML/MDA 플랫폼(툴)을 개발하기 위한 오픈 소스 프로젝트입니다. StarUML 프로젝트의 목적은 Rational Rose, Together와 같은 상업적 도구를 비싼 돈을 들여 사용하지 않더라도 그에 준하는 기능을 갖춘 오픈 소스 소프트웨어 모델링 도구 및 플랫폼을 개발하는 것입니다.

  • UML 2.0 : UML 은 OMG(Object Management Group)가 지속적으로 관리하는 통합 표준입니다. 최근에 UML 2.0이 릴리즈 되었으며 StarUML은 UML 2.0 을 지원하며 최신 UML 표준을 지원하고 있습니다.
  • MDA (Model Driven Architecture) : MDA는 OMG가 도입한 새로운 기술입니다. MDA의 장점을 얻기 위해서는 소프트웨어 모델링 툴은 많은 커스터마이징 요소들을 지원해야만 합니다. StarUML은 MDA를 지원할 수 있도록 설계되었고 UML 프로파일, 접근법, 모델 프레임워크, 표기법 확장, MDA 코드 및 문서 템플릿 등 수많은 커스터마이징 요소들을 제공합니다. 이러한 것들은 여러분의 조직문화, 프로세스 및 프로젝트에 툴을 맞출 수 있도록 도와줍니다.
  • 플러그-인 아키텍처 : 많은 사용자들이 소프트웨어 모델링툴에 더 많은 기능을 요구합니다. 이러한 요구사항에 부합하기 위해, 툴은 플래폼에 매우 잘 정의된 플러그를 가져야만 합니다. StarUML 은 누구든지 COM과 호환가능한 언어(C++, Delphi, C#, VB 등)에서 플러그인 모듈을 개발할 수 있게 단순하며 강력한 플러그인 아키텍쳐를 제공합니다.
  • 사용성 : 사용성은 소프트웨어 개발의 가장 중요한 사항입니다. StarUML은 퀵 다이얼로그, 키보드 조작, 다이어그램 오버뷰 등과 같이 많은 사용자들에게 친숙한 특징을 제공할 수 있도록 적용되었습니다.

StarUML 홈페이지에 나와있는 설명입니다. 과거 Plastic이란 이름으로 대학 선배들과 함께 만들었던 실력있는 프로그래머들의 노력과 집념의 결정체라고 한마디로 정의할 수 있겠습니다.
개발툴은 델파이를 사용하였죠. 많은 분들이 Delphi로 만들었다는것에 대해서 놀라시던데요.. 델파이는 여러분이 생각하는것보다 훨씬더 강력하고 유용한 개발툴이랍니다. ㅋㅋㅋ

2. StarUML 의 기능들
스크린샷들을 보면서 설명해보도록 하죠. ㅋㅋ

일단 기본적인 다이어그램들은 충분히 다 지원을 하며 화면 우측에 볼수 있듯이 편리한 접근 인터페이스를 제공하고 있습니다. 그리고 과거의 플라스틱 시절부터 지원해온 '퀵 다이얼로그'기능은 프로그래머들로부터 많은 찬사를 받아왔었습니다. 하지만 StarUML의 기능은 절대 이것만이 아닙니다.

지금까지의 기능은 빙산의 일각에 불과합니다.
StarUML의 진정한 강력함을 느껴보십시오.



무엇이라고 느끼십니까 ? StarUML에서는 ER-Diagram을 지원하지도 않고 자체적으로 아이콘으로 표시되는 기능을 가지고 있지도 않습니다. 다만 StarUML에서 지원하는것은 Profile기능을 지원하고 있을 뿐입니다.
이 Profile기능을 사용하여 보다 다양한 Notation을 지원할 수 있게 되는 것입니다.

요즘 Eclipse는 자바 플랫폼에서 표준 개발툴이 되다시피 널리 사용되어지고 있습니다. 저는 그것의 큰이유는 오픈 플랫폼이며 견고한 기반 설계와 놀라운 확장성이라고 생각합니다. Eclipse는 기반 프레임워크에 얼마든지 확장 기능을 덧 붙일수 있게 아주 잘 설계되어 있죠. 정말 켄트 벡이라는 사람을 존경할 수 밖에 없을것 같습니다.
그 놀라운 프러그인 기능이 StarUML 에서도 지원됩니다. 그것도 아주 훌륭하게 말이죠. 오픈 플랫폼이기 때문에 간단한 프로그래밍 실력이 있으신 분들이라면

누구라도 StarUML에서 동작하는 자신만의 필요를 채워줄 독특한 플러그인을 만들수 있습니다.

또 강력한 기능으로 문서화가 있습니다.
HTML, XML, WORD, Excel, 등등 자신이 원하는 문서서식대로 얼마든지 StarUML은 시스템설계문서를 생성해낼수 있습니다. 정말 대단하지 않습니까 ?

물론 자잘한 버그도 있고, 상용툴에 비해서 지원이 약한것도 사실이지만, 오픈소스로서 이만한 기능의 프로그램을 사용할 수 있는 기회는 많지 않습니다.
StarUML과 함께 UML의 세계로 빠져 봅시다. ^_^

'UML' 카테고리의 다른 글

About UML #04 - Domain Modeling 1.  (0) 2006.10.22
About UML #03 - Usecase  (0) 2006.10.10
About UML #02 Overview - 전체적인 구성 첫번째  (0) 2006.10.06
About UML #01 Overview - Why UML  (0) 2006.10.05
앞으로의 강좌 진행에 대해서  (4) 2006.10.05
Posted by 알 수 없는 사용자