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

내부에서 1부 이 시리즈에서 우리는 다음을 적용했습니다 역공학 (또는 역설계) 기능 알토바 유모델 (Altova UModel) 기존의 ATM 시뮬레이션 애플리케이션에서 소스 코드를 가져와서 사용했습니다. 또한, UML 다이어그램을 제작했습니다 클래스 다이어그램 애플리케이션의 클래스 계층 구조와 클래스 간의 관계를 설명하기 위해 2부 저희는 UML 다이어그램을 그렸습니다 사용 사례 다이어그램 시스템과의 사용자 상호 작용을 기록하고, 상호 작용 세부 사항과 계획된 개선 사항을 문서화하기 위해 여러 개의 추가 사용 사례 다이어그램을 작성했습니다. 이번에는 ATM을 다른 관점에서 살펴보겠습니다.

무더운 여름 오후, 한 운전자는 앞쪽에 드라이브 스루 방식의 아이스크림 가게를 발견합니다. 하지만 문제가 하나 있습니다. 현금이 없기 때문입니다. 그래서 그는 쇼핑몰 주차장으로 방향을 틀어 유리로 된 현금 자동 입출금기 앞에 차를 세웁니다. 차에서 내리기 전, 더워진 은행 고객은 자동 입출금기의 상태가 궁금해집니다. 혹시 다른 고객이 복잡한 은행 업무 때문에 이미 사용하고 있을까요? 만약 안에 아무도 없다 하더라도, 자동 입출금기가 작동하지 않을 수도 있을까요?

UML (Unified Modeling Language, 통합 모델링 언어) 상태 다이어그램 (또는 상태 다이어그램이라고도 함)은 시뮬레이션된 ATM의 상태와, 상태 간의 전환을 유발하는 요소, 이벤트 등을 파악하여 기존 시스템이 어떻게 작동하는지 더 잘 이해할 수 있도록 도와줍니다. 이제 시뮬레이션을 시작하기 위해, 이전에 진행했던 경험을 다시 살펴보겠습니다

레거시 애플리케이션을 실행하자, 시뮬레이션된 ATM 기기는 유휴 상태에 들어가 첫 번째 고객을 기다렸습니다

다음으로, 분리된 타원 형태로 추가적인 상태들을 파악하고 그려보는 것이 도움이 될 수 있습니다. 이렇게 그린 타원들을 퍼즐 조각처럼 자유롭게 움직여서, 각 상태 간의 연결 관계를 고려하지 않고도 논리적인 순서를 찾을 수 있습니다.

이 ATM 상태 목록은 아직 초안 단계이며, 저희가 작성한 초기 버전입니다. 각 상태에 대한 설명은 기존 애플리케이션의 메뉴 항목을 참고하여 작성되었으며, 다음과 같이 간소화할 수 있습니다.

  • "첫 번째 거래 선택"과 "다음 거래 선택"은 기능적으로 차이가 없으므로, 이 두 항목을 하나로 합칠 수 있습니다.
  • "로그아웃"은 상태라기보다는, 사용자가 거래 메뉴에서 4번을 누르는 즉각적인 전환 과정으로 보는 것이 적절합니다.
  • "거래 수행" 상태 내에서, 사용자가 인출 금액 또는 입금 금액을 입력하는 것을 하위 상태로 분류할 수 있습니다.
  • 세 번째 항목은 다이어그램을 단순화하고, 계좌 번호 및 비밀번호 입력 과정을 "사용자 인증"의 일부로 처리하는 방식과 일관성을 유지합니다.

이러한 변경 사항을 적용하고 전환 과정을 추가하면, 다이어그램은 다음과 같이 구성됩니다

저희가 추가한 간단한 전환 요소들은 ATM이 현재 상태에서 벗어나 다음 상태로 이동하도록 만드는 트리거 역할을 합니다. 또한, 각 상태는 최소한 하나의 진입 지점과 하나의 출구 지점을 가지고 있다는 점에 유의하십시오. 그렇지 않으면 기존 시스템이 사용자에게 막다른 길로 몰아넣을 수 있습니다. "거래 선택"과 "거래 수행" 사이에 있는 다이아몬드 모양은 UML 다이어그램에서 흐름의 선택을 나타내는 기호입니다. 처음에는 사용자가 어떤 거래도 수행하기 전에 로그아웃할 수 있도록 하는 것이 비논리적으로 보일 수 있지만, 이는 기존 시스템의 거래 메뉴에서 제공하는 옵션입니다. 실제로 사용자들은 종종 마지막 순간에 마음을 바꿀 수 있습니다! 저희는 요소 이름과 설명에 가능한 한 일관된 용어를 사용하도록 주의했습니다. 상태는 현재 시제로 끝나고 "-ing"으로 끝나는 동사로 명명되었습니다. 전환 요소는 해당 상태 변화를 유발하는 작업의 완료를 나타내는 라벨로 표시됩니다. 일관된 요소 명명은 다이어그램의 가독성을 향상시킵니다.

위와 같은 작동 가능한 상태 다이어그램을 완성한 후, 전환이 시도되었지만 성공적으로 완료되지 못하는 경우에 어떤 일이 발생하는지 고려하는 것이 좋습니다. 예를 들어, ATM 사용자가 유효하지 않은 계좌 번호/PIN 조합을 입력하거나, 인증된 사용자가 계좌 잔액을 초과하는 금액을 인출하려고 할 수 있습니다. 이러한 가능성을 포함하도록 상태 다이어그램을 개선할 수 있습니다

현재 우리의 상태 다이어그램은 애플리케이션 실행 과정에서 단 하나의 "정상적인 경로"뿐만 아니라 다양한 대체 경로를 보여줍니다. 우리는 다이어그램의 레이아웃을 수직으로 구성했지만, 이는 반드시 지켜야 할 규칙은 아닙니다. 어떤 애플리케이션은 수평 레이아웃이 더 적합할 수도 있고, 어쩌면 그것은 단순히 개인적인 선호일 수도 있습니다. 다음 그림은 우리의 상태 다이어그램의 일부를 수평 형태로 보여줍니다

어떤 상태 다이어그램 레이아웃을 선택하든, 선이 서로 교차하거나 겹치지 않도록 주의해야 합니다. UML 상태 다이어그램을 그리는 것이 기존 시스템이 작고, ATM의 작동 방식을 모두 잘 알고 있기 때문에 우리 ATM 시뮬레이션에서는 과도하게 느껴질 수 있습니다. 하지만 이러한 기술은 훨씬 더 크고 복잡하며, 익숙하지 않은 분야의 애플리케이션을 다룰 때 매우 유용할 수 있습니다.

자바, C#, 또는 Visual Basic으로 작성된 기존 애플리케이션에 대한 UML 상태 다이어그램을 만들 준비가 되셨다면, Altova UModel의 무료 체험판(30일)을 다운로드하여 사용해 보세요. 체험판은 모든 기능을 제공합니다 다음 편에서는 2부에서 계획했던 새로운 기능과 함께, 출금 거래에 대해 자세히 살펴보겠습니다.