4부: Altova UModel을 사용하여 기존 애플리케이션 분석하기

본 시리즈의 1부에서는 Altova UModel에 소스 코드를 가져와 UML 프로젝트를 생성하고, 기존 ATM 애플리케이션의 클래스 다이어그램을 살펴보았습니다.

2부에서는 시스템과의 사용자 상호 작용을 설명하기 위해 일련의 UML 유스케이스 다이어그램을 작성했으며, 수수료 부과 기능을 구현하기 위한 애플리케이션 개선 계획을 수립했습니다.

3부에서는 시스템의 작동 방식을 더욱 자세히 분석하고 문서화하기 위해 UML 상태 다이어그램을 설계했습니다. 이번에는 계획된 기능 개선 사항으로 돌아가겠습니다. 저희는 100달러 미만의 출금액에 대해서는 2달러, 100달러 이상의 출금액에 대해서는 4달러의 수수료를 부과하도록 구현해야 합니다. 2부에서는 사용자들이 새로운 기능을 어떻게 사용할지 보여주는 유스 케이스 다이어그램을 그렸습니다

1부에서 분석한 객체 지향 클래스들을 바탕으로, 저희 시스템에는 "Withdrawal" 클래스가 존재하며, 이 클래스가 새로운 기능을 구현하기에 가장 적합한 위치입니다. 모델 트리에서 "Withdrawal" 클래스를 선택한 후, 오른쪽 클릭 메뉴에서 "새 다이어그램 만들기" 옵션을 선택하면, 해당 클래스를 나타내는 새로운 다이어그램을 생성할 수 있습니다.

우리는 "출금" 클래스의 모든 속성을 보여주는 계층 구조 다이어그램을 만들기로 결정했습니다. 여기에는 "거래" 클래스에서 상속받은 속성도 포함됩니다. 수수료 기능을 구현하기 전에, 관련하여 해결해야 할 질문이 하나 있습니다. 현재 코드에 사용자가 요청한 출금 금액이 현재 계좌 잔액을 초과하지 않는지 확인하는 테스트가 포함되어 있는지 확인하고 싶었습니다 UML 시퀀스 다이어그램 이를 통해 우리는 출금 처리 과정의 실행 흐름을 추적할 수 있습니다. UModel은 역공학된 클래스의 동작으로부터 시퀀스 다이어그램을 자동으로 생성할 수 있습니다. 저희는 클래스 다이어그램에서 실행 동작을 선택하고, UModel의 오른쪽 클릭 메뉴에서 "시퀀스 다이어그램 생성"을 선택하여 필요한 다이어그램을 만들 수 있습니다.

UModel 시퀀스 다이어그램 생성 대화 상자에는 새로운 기능 구현에 도움이 되는 다양한 옵션이 있습니다. 우리는 "자동 업데이트" 옵션을 선택했습니다. 왜냐하면 코드를 수정한 후에 다이어그램을 업데이트해야 할 것이고, 코드를 별도의 레이어로 표시하면 출금 로직에 집중하는 데 도움이 될 것이기 때문입니다.

스크롤 손잡이의 크기를 보면 현재 창에서 시퀀스 다이어그램의 일부분만 보여주고 있다는 것을 알 수 있습니다. 창 크기에 맞춰 화면을 축소할 수는 있지만, 텍스트가 읽기 어려워질 가능성이 높습니다. 대신, UModel 사용자 인터페이스의 유연성을 활용하여 다이어그램 트리와 속성 창을 자동으로 숨기고, 개요 도움말 창을 확대해 보겠습니다

개요 창에서 빨간색 사각형을 드래그하여 시퀀스 다이어그램을 탐색할 수 있습니다. 이를 통해 입금액과 계좌 잔액의 비교 부분을 빠르게 찾을 수 있습니다.

또한, ATM 기기에 현금이 충분하지 않거나 계좌 잔액이 부족할 경우 표시되는 오류 메시지를 확인할 수 있습니다.

"철수" 클래스 다이어그램으로 돌아가서, "수수료" 속성을 추가하고 기본값을 설정할 수 있습니다

우선, 사용자 취소 옵션을 포함하지 않고 수수료 로직을 구현하는 초기 단계를 진행하겠습니다. 저희 모델을 기반으로 소스 코드를 업데이트하면, 수수료 관련 속성이 Withdrawal 클래스에 추가됩니다. 그런 다음, 저희가 가장 좋아하는 소스 코드 편집기를 사용하여 Withdrawal.java 파일에 직접 수수료 로직을 구현하겠습니다. 재컴파일된 애플리케이션을 테스트한 결과는 다음과 같습니다

초기 잔액은 147달러였습니다. 100달러를 인출한 후, 새로운 잔액은 43달러입니다. 수수료는 새로운 메시지로 표시되며, 최종 잔액은 정확합니다. 하지만 현재 저희 UML 모델의 시퀀스 다이어그램이 부정확합니다. 그 이유는 수수료 기능이 포함되지 않았기 때문입니다. 수정된 소스 코드를 사용하여 UML 프로젝트를 업데이트하면 시퀀스 다이어그램을 수정할 수 있습니다. UModel 메시지 창에 따르면, Withdrawal.java 파일의 변경 사항으로 인해 시퀀스 다이어그램이 재생성되었습니다. 또한, 다이어그램을 쉽게 탐색하여 인출 금액에 대한 새로운 테스트를 찾을 수 있으며, 수수료를 4달러로 인상해야 하는지 확인할 수 있습니다.

이제 수정된 시퀀스 다이어그램이 ATM의 업데이트된 작동 방식을 시각적으로 보여주므로, 이 시리즈 3부에서 만났던 바쁜 운전자가 아이스크림을 살 만큼 충분한 현금을 가지고 있다는 것을 확신할 수 있습니다! 다음 편에서는 UModel의 또 다른 기능을 활용하여 지금까지 진행한 작업에 대한 상세한 프로젝트 문서를 생성할 예정입니다. 이는 UML 모델과 애플리케이션 소스 코드를 동기화하는 또 다른 장점입니다.

자바, C#, 또는 Visual Basic으로 작성된 기존 애플리케이션에서 Altova UModel을 직접 사용해 보고 싶으시다면, 여기에서 무료로 30일 동안 모든 기능을 사용할 수 있는 체험판을 다운로드하세요