Altova UModel을 사용하여 레거시 애플리케이션 분석하기 – 1부
거의 모든 전문 개발자는 결국 기존 애플리케이션의 버그를 수정하거나 새로운 기능을 추가하는 작업을 맡게 되는데, 이때 개발하는 애플리케이션은 자신이 직접 개발에 참여하지 않았을 가능성이 높습니다. 이러한 상황에서 부정확하거나 불완전한 문서, 그리고 원래 개발팀에 대한 접근성 부족은 큰 어려움을 초래할 수 있습니다. 다행히도, 알토바 유모델 (Altova UModel) 할 수 있습니다 역공학적으로 분석하다 기존 소프트웨어를 활용하여 시각적인 모델을 생성함으로써, 기존 시스템의 분석 속도를 높이고 이해도를 향상시킬 수 있습니다. 이 글은 일련의 게시물 중 첫 번째이며, 여기서는 알토바(Altova)의 UModel을 활용하는 방법을 설명할 예정입니다 소프트웨어 모델링을 위한 UML 도구 그리고 개발 분야에서, 자바로 작성된 ATM(자동 입출금기) 시뮬레이션을 분석합니다. 이 애플리케이션은 인기 있는 자바 튜토리얼에 나오는 여러 ATM(자동화된 현금 입출금기) 예제를 기반으로 만들어졌습니다. ATM(자동화기기)의 작동 방식은 이미 익숙하실 것이므로, 예제 코드보다는 자바, C#, 비주얼 베이직 프로젝트에 직접 적용할 수 있는 기술에 대해 더 자세히 설명드리겠습니다. 다음은 명령 창에서 실행되는 기존 애플리케이션의 모습입니다
![]()
원래 개발자가 편리하게 샘플 계정 정보를 제공해 주었기 때문에, 우리는 로그인할 수 있습니다. 그런 다음 애플리케이션은 익숙한 ATM 거래 메뉴를 보여줍니다
![]()
애플리케이션이 들어 있는 폴더를 살펴보면, 자바 소스 파일과 컴파일된 .class 파일은 있지만, 프로젝트 파일은 보이지 않습니다.
![]()
그건 문제가 되지 않습니다. UModel 프로젝트 메뉴를 통해 프로젝트 파일, 소스 코드 폴더, 심지어 컴파일된 애플리케이션의 실행 파일까지 가져올 수 있습니다. 매우 큰 프로젝트의 소스 코드는 여러 폴더로 구성되어 있을 가능성이 높으므로, 프로젝트 파일이 있더라도 폴더별로 하나씩 살펴보는 것이 좋습니다.
![]()
시작하기 전에, 소스 코드에 정의된 모든 클래스 간의 연관 관계를 자동으로 표시하도록 UModel 옵션을 설정하는 것이 중요합니다
![]()
폴더를 가져오는 과정에서, 소스 코드에 포함된 모든 JavaDoc 주석을 UModel 프로젝트의 문서로 함께 포함하는 것이 좋습니다
![]()
먼저, 기존 시스템을 간략하게 살펴보겠습니다. 따라서 모든 선택적인 기능들을 바로 실행하지 않고, 전체적인 개요를 먼저 확인하겠습니다
![]()
UModel은 프로젝트를 단 몇 초 만에 불러오며, 메시지 창에 오류가 없음을 표시합니다. 다이어그램 트리에는 두 개의 다이어그램이 포함되어 있습니다
![]()
"모델 트리" 탭을 클릭하고 소스 폴더를 확장하면, UModel이 가져온 모든 Java 클래스를 나타내는 아이콘을 확인할 수 있습니다
![]()
이제 다이어그램 트리로 돌아가서 "UML 클래스 다이어그램의 내용을 열겠습니다. 모든 선의 스타일을 직각으로 설정하고, 몇몇 선과 클래스의 위치를 조정하여 겹침을 피한 후, 다이어그램을 보면 애플리케이션 클래스와 그 관계가 명확하게 나타나는 것을 확인할 수 있습니다
![]()
트랜잭션 클래스 이름은 이탤릭체로 표시되어 있으며, 이는 추상 클래스(또는 상위 클래스)임을 나타냅니다. BalanceInquiry, Withdrawal, Deposit와 같은 하위 클래스들은 이 클래스의 특징을 상속받습니다. 트랜잭션 클래스를 선택하면, UModel 계층 구조 도움말 창에서 상속 관계가 표시되고, 해당 클래스 정의 바로 앞에 나타나는 모든 JavaDoc 주석은 문서 창에 표시됩니다
![]()
만약 기존 애플리케이션을 분석하기 위해 텍스트 편집기만 사용한다면, 위에 표시된 계층 구조를 이해하기 위해 모든 소스 코드 파일을 하나하나 살펴봐야 합니다. 그 이유는 "Transaction" 클래스가 내부적으로 자신의 하위 클래스를 식별하지 않기 때문입니다. 하위 클래스를 찾더라도, 해당 하위 클래스가 다른 하위 클래스와의 관계를 나타내지 않습니다. 또한, 비정상적인 이름으로 명명된 다른 클래스가 "Transaction"의 하위 클래스가 아닌지 확인할 수 없으며, 이를 확인하려면 모든 클래스를 살펴봐야 합니다. 또한, 각 클래스를 개별적으로 선택하여 "Documentation" 창에서 해당 클래스의 문서를 확인할 수 있습니다. 또는, 더 깔끔한 다이어그램을 선호한다면, 다이어그램에서 연결 관계 표시를 제거할 수 있습니다
![]()
이제 은행 데이터베이스 내에서 "0개에서 많음"으로 정의되는 계정의 개수를 나타내는 별표(*)의 의미가 훨씬 더 명확해졌습니다.
![]()
저희 개발팀의 또 다른 멤버가 기존 프로젝트를 나타한다고 주장하는 일부 클래스 다이어그램을 발견하여 공유했습니다. 하지만 이 다이어그램을 보자마자 UModel이 생성한 다이어그램과는 전혀 다르다는 것을 알 수 있습니다
![]()
저희 기존 앱의 문서와 실제 코드가 일치하지 않는 경우가 발생했는데, 안타깝지만 흔히 일어나는 일입니다. 이전 다이어그램과 저희가 생성한 다이어그램 사이에 몇 가지 차이점이 있습니다
· The associations between ATM and the physical components are shown as composition associations
· The association between ATM and the BankDatabase is described by a text annotation
· The association between ATM and Transaction also has a text annotation, and it does not even exist in the UModel diagram
· Multiplicity is defined at each end of each association, but none were created by UModel
각각의 항목을 하나씩 살펴보겠습니다
· The representation of composition in the Java language is identical to ordinary association, so UModel could not deduce the composition characteristic. Of course the ATM “is composed of” a keypad, screen, cash dispenser, and deposit slot, so we can update the diagram to show composition.
· We can add a text annotation to any UModel association arrow. Simply click the arrow and start typing.
· If UModel did not create an association arrow between the ATM class and the Transaction, one must not be defined in the source code. We will postpone further investigation of this anomaly for now. · Multiplicity as shown in the legacy diagram would also require specific definition in the source code. We’ll leave this for investigation later too. Maybe that old diagram was left in the back of the file cabinet for a reason!
이제 어노테이션을 추가하고, UModel 속성 창에서 각 ATM 연관 관계의 집계 특성을 업데이트하겠습니다. 또한, UModel 레이아웃 도구 모음을 사용하여 모든 클래스를 나타내는 사각형의 크기를 동일하게 만들어 보겠습니다. 이제 클래스 다이어그램은 다음과 같이 보입니다
![]()
완성된 클래스 다이어그램은 분석의 시작일 뿐입니다. 다음 부분에서는 애플리케이션 코드에 대해 더 자세히 분석하고, 자동으로 더 많은 내용을 생성하겠습니다 UML 다이어그램, 그리고 기존 코드에 대한 이해가 깊어짐에 따라, 저희 스스로 새로운 다이어그램을 만들어 추가할 것입니다.
자바, C#, 또는 비주얼 베이직으로 작성된 기존 애플리케이션을 즉시 분석하고 개선하고 싶으시다면, Altova UModel의 무료 체험판(30일)을 다운로드하여 사용해 보세요. 체험판은 모든 기능을 제공합니다.