---
title: "2부: Altova UModel을 사용하여 기존 애플리케이션 분석하기"
date: "2009-04-24"
tags: 
  - "c"
  - "java"
  - "missionkit"
  - "software-modeling"
  - "uml"
  - "uml-tool"
  - "umodel"
description: 이 기사에서는 Altova UModel을 사용하여 기존 ATM(자동 입출금기) 애플리케이션에 대한 유스 케이스 다이어그램을 만드는 방법을 설명하며, 사용자 상호 작용과 향후 개선 사항에 중점을 둡니다.
---
Status: #blog

Tags:  #c #java #missionkit #software-modeling #uml #uml-tool #umodel

Categories: [Altova](/blog/ko/category/altova.md) 
# 2부: Altova UModel을 사용하여 기존 애플리케이션 분석하기

"[분석 시리즈 1부](https://www.altova.com/blog/2009/04/analyzing-legacy-application-with.html)에서는 저희의 ATM 시뮬레이션 앱을 소개하고, Java 소스 코드를 [UModel](https://www.altova.com/ko/products/umodel/uml_tool.html) 프로젝트로 가져온 후, 애플리케이션의 클래스와 그 관계를 파악하기 위해 클래스 다이어그램을 개선했습니다. 이번 글에서는 저희 ATM 앱의 현재 기능을 문서화하기 위해 [유스 케이스 다이어그램](https://www.altova.com/ko/features_use_case.html)을 만들고, 향후 개선 사항을 계획하기 위해 하나의 유스 케이스 다이어그램에 내용을 추가할 예정입니다. 1부에서 보셨듯이, 사용자가 저희 ATM 시뮬레이션을 실행하면 계좌 번호와 비밀번호를 입력하라는 메시지가 표시되고, 이후 애플리케이션과의 모든 가능한 상호 작용을 요약하는 거래 메뉴가 나타납니다 

[![ATM 시뮬레이션 거래 메뉴](https://lh6.ggpht.com/_REdrfeVqYdU/SfHSDHQ4GSI/AAAAAAAAAEM/jvo19yCSOQo/transaction%20menu_thumb%5B2%5D.gif?imgmax=800 "ATM Simulation transaction menu")](http://lh4.ggpht.com/_REdrfeVqYdU/SfHSC3HfXsI/AAAAAAAAAEI/b8fsi30qDyg/s1600-h/transaction%20menu%5B4%5D.gif) 

"거래" 메뉴를 참고하여, ATM 시뮬레이션과의 사용자 상호 작용을 보여주는 개략적인 유스 케이스 다이어그램을 만들 수 있습니다 

[![ATM 시뮬레이션 개요: 유스 케이스 다이어그램](https://lh6.ggpht.com/_REdrfeVqYdU/SfHSEJlkKRI/AAAAAAAAAEU/zZp4OlbX7Ms/usecase1_thumb%5B1%5D.gif?imgmax=800 "ATM Simulation overview use case diagram")](http://lh3.ggpht.com/_REdrfeVqYdU/SfHSDuArD2I/AAAAAAAAAEQ/pb26wYjQWWA/s1600-h/usecase1%5B3%5D.gif)

UML 표기법에 익숙하신 분이라면, 저희 다이어그램에 있는 액터(actor)가 일반적인 UML에서 사용하는 단순한 막대기 모양이 아니라는 점을 아마 눈치채셨을 겁니다. UModel을 사용하면 소프트웨어 모델러가 유스 케이스 다이어그램에서 액터를 표현하기 위해 원하는 Windows .bmp 이미지 파일을 지정할 수 있습니다. 저희는 UModel과 함께 제공되는 라이브러리에서 이미지를 선택하여, 속성 설정 창을 통해 해당 이미지를 지정했습니다.

[![Altova UModel 속성 창](https://lh4.ggpht.com/_REdrfeVqYdU/SfHSEq2AYoI/AAAAAAAAAEc/qDV7VjIP0p4/PropertiesWindow_thumb%5B1%5D.gif?imgmax=800 "Altova UModel Properties Window")](http://lh4.ggpht.com/_REdrfeVqYdU/SfHSEfzVyeI/AAAAAAAAAEY/1m5PRtMuCHg/s1600-h/PropertiesWindow%5B3%5D.gif) 

유스 케이스 다이어그램은 애플리케이션의 흐름이나 객체 지향 클래스를 정의하는 데 적합한 도구가 아니며, 단순히 사용자가 시스템과 어떻게 상호 작용하는지를 기록하는 데 사용됩니다. 각 상호 작용에 대한 더 자세한 내용을 보여주기 위해 추가적인 유스 케이스 다이어그램을 만들 수 있습니다. 각 상호 작용을 별도의 다이어그램으로 표현하면, 각 다이어그램의 구조를 단순하고 명확하게 유지하여 가독성을 높이고, 다양한 옵션을 시도할 수 있는 충분한 공간을 확보할 수 있습니다. 

[![사용자 로그인 기능에 대한 상세 사용 사례 다이어그램](https://lh4.ggpht.com/_REdrfeVqYdU/SfHSFKI29WI/AAAAAAAAAEk/AFJI7u3ywco/usecase2_thumb%5B1%5D.gif?imgmax=800 "Detailed user sign in use case diagram")](http://lh5.ggpht.com/_REdrfeVqYdU/SfHSE60c0kI/AAAAAAAAAEg/Lg11jQtejFM/s1600-h/usecase2%5B3%5D.gif) 

계좌 번호와 비밀번호 인증 과정은 사용 사례 다이어그램의 액터 역할을 하는 사람이 수행하는 작업이 아니므로, 대신 메모 형태로 추가했습니다. 실제 ATM 사용 경험을 바탕으로 추측해 보면 (아직 코드를 확인하지 않았지만), 요청된 금액이 계좌 잔액보다 크면 출금이 취소될 것입니다. 하지만 출금 금액과 계좌 잔액을 비교하는 작업은 사용자가 직접 수행하는 것이 아니므로, 이 활동 또한 사용 사례 다이어그램의 액터 역할을 하는 부분에는 포함되지 않습니다. 

[![현금 인출 기능의 유스 케이스 다이어그램](https://lh6.ggpht.com/_REdrfeVqYdU/SfHSF209eRI/AAAAAAAAAEs/eB3dPyG57PI/usecase3_thumb%5B1%5D.gif?imgmax=800 "Withdraw cash use case diagram")](http://lh5.ggpht.com/_REdrfeVqYdU/SfHSFm6llBI/AAAAAAAAAEo/xn6UYTTGn7I/s1600-h/usecase3%5B3%5D.gif) 

"현금 인출" 사용 사례 내의 화살표는 하이퍼링크를 나타냅니다. UModel을 사용하면 다이어그램 내의 모든 요소에 하나 이상의 하이퍼링크를 연결할 수 있습니다. 하이퍼링크는 URL, 외부 파일 또는 다른 다이어그램을 참조할 수 있습니다. 또한, 하이퍼링크 대화 상자를 통해 하이퍼링크에 대한 설명 텍스트를 정의할 수도 있습니다. 

[![Altova UModel 하이퍼링크 대화 상자](https://lh6.ggpht.com/_REdrfeVqYdU/SfHSGYeH0rI/AAAAAAAAAE0/36DgzV_Yl-0/hyperlinksdialog_thumb%5B1%5D.gif?imgmax=800 "Altova UModel hyperlinks dialog")](http://lh4.ggpht.com/_REdrfeVqYdU/SfHSGFUiWVI/AAAAAAAAAEw/ZZU8p5k9ks4/s1600-h/hyperlinksdialog%5B3%5D.gif) 

[![유스케이스 다이어그램에서 하이퍼링크 팝업 텍스트](https://lh4.ggpht.com/_REdrfeVqYdU/SfHSHKYq3HI/AAAAAAAAAE8/fw1H_zlU6Vo/usecase4_thumb%5B1%5D.gif?imgmax=800 "Hyperlink pop-up text in use case diagram")](http://lh4.ggpht.com/_REdrfeVqYdU/SfHSGu60M4I/AAAAAAAAAE4/qrle7DV5PXw/s1600-h/usecase4%5B3%5D.gif) 

만약 여러 개의 하이퍼링크를 정의하면, 도움말 텍스트는 팝업 선택 메뉴로 표시됩니다. 예를 들어, 기존 ATM 시뮬레이션을 수정하여 각 출금 시 수수료를 부과하도록 해야 한다고 가정해 보겠습니다. 만약 출금 금액이 100달러 미만이면 수수료는 2달러이고, 100달러 이상이면 수수료는 4달러입니다. ATM 기계에 1달러 지폐가 없으므로, 수수료는 현금에서 직접 차감하는 것이 아니라 계좌에서 부과되어야 합니다. 수수료는 현금이 지급되기 전에 사용자에게 공개되며, 사용자는 거래를 취소할 수 있습니다. 우리는 이 새로운 요구사항을 ATM 출금 사용 사례 다이어그램에 추가할 수 있습니다. 

[![향상된 현금 인출 기능의 유스 케이스 다이어그램](https://lh6.ggpht.com/_REdrfeVqYdU/SfHSHjveWdI/AAAAAAAAAFE/etX3ZjlAsQM/usecase5b_thumb%5B1%5D.gif?imgmax=800 "Enhanced Withdraw Cash use case diagram")](http://lh3.ggpht.com/_REdrfeVqYdU/SfHSHRdwdII/AAAAAAAAAFA/3zBX6tvvOAM/s1600-h/usecase5b%5B3%5D.gif) 

승인 수수료 관련 기능은 아직 구현되지 않은 계획 단계의 기능임을 나타내기 위해, 해당 기능의 다이어그램 내에서 사용되는 타원형의 색상을 변경했습니다. 일부 개발자들은 승인 수수료 타원형에 추가된 설명이 불필요하다고 주장할 수 있습니다. 왜냐하면 "include" 표기만으로도 승인 수수료가 현금 인출의 필수 구성 요소임을 나타낼 수 있기 때문입니다. 하지만 많은 사람들이 "include"와 "extend"의 차이점에 대해 혼란스러워하므로, 최대한 명확하게 표현하는 것이 좋습니다. 또한, UModel의 레이어 기능을 활용하여 새로운 기능과 관련된 모든 요소를 별도의 레이어에 배치할 수 있습니다.

[![Altova UModel의 "레이어 할당" 컨텍스트 메뉴](https://lh5.ggpht.com/_REdrfeVqYdU/SfHSIi2xicI/AAAAAAAAAFM/ScNlckyeir4/layersAssign_thumb%5B1%5D.gif?imgmax=800 "Altova UModel Assign Layer context menu")](http://lh4.ggpht.com/_REdrfeVqYdU/SfHSIBpiEzI/AAAAAAAAAFI/CcWmv9OlLxs/s1600-h/layersAssign%5B3%5D.gif)

이제 "레이어" 도우미 창을 통해 다이어그램 보기에서 계획된 기능을 표시하거나 숨길 수 있습니다. 

[![Altova UModel 레이어 도우미 창](https://lh6.ggpht.com/_REdrfeVqYdU/SfHSJdL7XKI/AAAAAAAAAFU/3N3VfK_DHpM/layersview_thumb%5B1%5D.gif?imgmax=800 "Altova UModel Layer helper window")](http://lh4.ggpht.com/_REdrfeVqYdU/SfHSI19nEtI/AAAAAAAAAFQ/uwwdU85SDgo/s1600-h/layersview%5B3%5D.gif) 

실제 ATM 사용 경험을 통해 기존 ATM 시뮬레이션에서 누락된 거래가 있음을 알 수 있습니다. 거래 메뉴에서 계좌 간 자금 이체 옵션이 제공되지 않습니다. 기존 설계도를 보면, 원래 애플리케이션 설계로는 자금 이체 기능을 구현하기가 어렵다는 것을 알 수 있습니다. 사용자 로그인 방식은 계좌 번호 기반이며, 기존 애플리케이션은 하나의 은행 고객이 예금 계좌와 당좌 예금 계좌를 모두 가지고 있다는 개념을 이해하지 못하는 것으로 보입니다. 만약 담당자가 자금 이체 기능을 요청한다면, 회사 내 엔터프라이즈 소프트웨어 아키텍트와 논의해야 할 것입니다. 사용자 ID가 여러 계좌와 연결되도록 하는 기능은 ATM 시뮬레이션 앱뿐만 아니라 은행 데이터베이스에도 구현해야 합니다. 

[Jolt 상을 수상한](https://www.altova.com/ko/JOLTAward_MissionKit_031809.html) Altova [MissionKit for Enterprise Architects](https://www.altova.com/ko/products/missionkit/software_architect_tools.html)는 엔터프라이즈 소프트웨어 아키텍트가 고급 XML, 웹 서비스 및 데이터 통합 기능 외에도 UML 모델링 및 데이터베이스 관리 도구가 필요할 때 사용할 수 있는 XML, 데이터베이스 및 UML 도구 모음입니다. 

[여기에서 완전 기능이 탑재된 30일 체험판을 다운로드하세요.](https://www.altova.com/ko/download/missionkit/software_development_tools_enterprise.html) 다음 편에서는 코드를 분석하기 전에, 기존 ATM 시뮬레이션을 완전히 다른 관점에서 살펴보겠습니다. 
