Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Si Yin ([email protected]) Tư vấn EMC 15 01 2010 Fenglian Xu ([email protected]) Kỹ sư phần mềm IBM Trong IBM® Rational® Software Architect (Kiến trúc phần mềm Rational), phiên bản 7.5, bạn có thể dịch ngược mã để phân tích một dự án Java™ bằng cách tạo ra các cây thừa kế chứa đựng các chi tiết của các lớp và các mối quan hệ giữa chúng như các biểu đồ Unified Modeling Language (UML - Ngôn ngữ mô hình hóa thống nhất). Bài viết này giải thích các bước sử dụng kỹ nghệ đảo ngược trong một dự án Java nhỏ. Tạo cây thừa kế của các lớp sử dụng Software Analyzer (Phân tích phần mềm) Trong các ngôn ngữ lập trình hướng đối tượng, thừa kế cho thấy các phương thức và trường dữ liệu phổ biến giữa các lớp được kế thừa bên trong cùng một phả hệ và hiển thị các trường dữ liệu và phương thức riêng biệt cho mỗi lớp. Các nhà phát triển và thiết kế có thể sử dụng cây thừa kế của các lớp trong dự án Java™ để hiểu các quan hệ giữa các lớp trong dự án đó. Giả sử rằng bạn đã tạo hoặc tải một dự án Java trong IBM® Rational® Software Architect 7.5. Để tạo một cây thừa kế trong dự án, làm theo các bước sau: 1. Mở Software Analyzer trong Rational Software Architect phiên bản 7.5 bằng cách chọn Run > Analysis (xem hình 1). Bạn có thể sử dụng Software Analyzer để tạo ra các báo cáo dựa trên các qui tắc mà bạn đã chọn. Rational Software Architect phiên bản 7.5 bao gồm các qui tắc trong phạm vi của Java Architectural Discovery (Phát hiện kiến trúc Java), Code Review, UML Model Metrics, và Model UML (UML mô hình hóa). Việc tạo ra cây thừa kế là một qui tắc trong lĩnh vực Java Architectural Discovery (Phát hiện kiến trúc Java). © Copyright IBM Corporation 2010 Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Nhẫn hiệu đăng ký Trang 1 của 13 developerWorks® ibm.com/developerWorks/vn/ Hình 1. Mở Software Analyzer 2. Tạo cấu hình: a. Trong trường Name, gõ tên của trường. b. Trong vùng Analysis Domains and Rules, mở rộng danh mục Object-oriented Patterns và tích chọn vào hộp kiểm Inheritance Tree (xem hình 2). Hình 2. Tạo cây thừa kế Nhấn vào đây để phóng to Hình 2. c. Nhấn vào Analyze. Cây thừa kế sẽ được hiển thị (xem Hình 3). Cây thừa kế này cho thấy một lớp Vehicle có ba lớp con: Bicycle, Car và PogoStick. Lớp Car có hai lớp con: FamilyCar và SportsCar. Không có thêm bất kỳ một thông tin nào về các phương thức và các trường dữ liệu của lớp trong cây thừa kế. Để duyệt các trường dữ liệu và các phương thức của các lớp, sử dụng biểu đồ trình duyệt (browse diagram). Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 2 của 13 ibm.com/developerWorks/vn/ developerWorks® Hình 3. Cây thừa kế được tạo bởi Software Analyzer Nhấn vào đây để phóng to Hình 3. Duyệt các chi tiết của cây thừa kế bằng cách sử dụng biểu đồ trình duyệt. Cây kế thừa mà bạn đã tạo ra với công cụ Software Analyzer không chứa đựng các chi tiết về các trường dữ liệu và các phương thức của các lớp. Để tìm hiểu về các chi tiết của mỗi lớp trong một phạm vi nhất định, hãy sử dụng biểu đồ trình duyệt. Phạm vi có thể là một gói Java, một dự án, một tập hợp các công việc hoặc là một không gian làm việc nào đó. Ví dụ, sử dụng lớp FamilyCar như là điểm bắt đầu để duyệt các chi tiết của nó với biểu đồ trình duyệt: 1. Để mở biểu đồ trình duyệt, hãy nhấn phải chuột trên tên lớp FamilyCar.java và sau đó chọn Visualize > Explore in Browse Diagram (Hình 4). Hình 4. Duyệt lớp FamilyCar trong biểu đồ trình duyệt 2. Trong cửa sổ Browse Diagram, trên thanh công cụ quan hệ, nhấn vào nút Extends (Xem Hình 5). Thanh công cụ quan hệ chứa năm kiểu quan hệ: • Extends (Mở rộng): Duyệt các lớp mà từ đó FamilyCar được mở rộng • Dependency (Phụ thuộc): Duyệt các lớp được sử dụng trong các phương thức của lớp FamilyCar Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 3 của 13 developerWorks® ibm.com/developerWorks/vn/ • Realization (Thực hiện): Duyệt các giao diện được thực hiện bởi lớp FamilyCar • Association (Liên hệ): Duyệt các lớp có quan hệ với lớp FamilyCar • Declares: Duyệt các gói được khai báo trong lớp FamilyCar • Degree of separation (Mức độ phân chia): Duyệt mức độ mở rộng mà các quan hệ này áp dụng. Hình 5. Biểu đồ trình duyệt của lớp FamilyCar với một mức phân chia. 3. Bên cạnh thanh công cụ quan hệ là ô thể hiện mức độ phân chia, phần này cho biết số lượng các mức độ quan hệ từ lớp FamilyCar được hiển thị trên biểu đồ. Trong hình 5, giá trị 1 cho biết rằng biểu đồ chỉ hiển thị duy nhất lớp FamilyCar. Khi bạn áp dụng giá trị 2, thì biểu đồ sẽ hiển thị các lớp FamilyCar, Car, và Vehicle (xem hình 6). Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 4 của 13 ibm.com/developerWorks/vn/ developerWorks® Hình 6. Lớp FamilyCar trong biểu đồ trình duyệt với hai mức độ phân chia Biểu đồ trình duyệt của cây thừa kế là một dạng biểu đồ tạm thời mà bạn không thể lưu lại. Thông thường, bạn dùng biểu đồ trình duyệt để duyệt một lớp cho trước hoặc để làm tài liệu thiết kế cho một dự án. Tạo ra cây thừa kế sử dụng biểu đồ chủ đề (topic diagram) Ví dụ trước đây cho thấy cách sử dụng biểu đồ trình duyệt để minh họa cây thừa kế của một lớp. Trong một số tình huống nhất định, bạn muốn tạo ra một biểu đồ mô tả tất cả các lớp thuộc lớp FamilyCar trong suốt quá trình phát triển chương trình. Trường hợp này, bạn có thể sử dụng biểu đồ chủ đề để mô tả cây thừa kế của lớp cho trước. Không giống như biểu đồ trình trình duyệt, bạn có thể lưu lại biểu đồ chủ đề dưới dạng tệp tin mô hình để tái sử dụng. Tạo cây thừa kế của lớp trong mô hình chủ đề: 1. Mở biểu đồ chủ đề của lớp cho trước, chẳng hạn như FamilyCar, bằng cách nhấn phải chuột vào lớp FamilyCar.java và sau đó chọn Visualize > Add to New Diagram File > Topic Diagram (xem Hình 7). Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 5 của 13 developerWorks® ibm.com/developerWorks/vn/ Hình 7. Mở lớp trong biểu đồ chủ đề 2. Tạo biểu đồ chủ đề: a. Chọn một chủ đề, chẳng hạn như Inherited Java Classes (N cấp) b. Định rõ những phần tử có liên quan được hiển thị. Trong ví dụ này, quan hệ Extend được chọn với sự mở rộng không giới hạn theo cả hai hướng vào và ra để miêu tả cây thừa kế. c. Nhấn vào Finish. Kết quả được chỉ ra trên hình bên phải của Hình 8. Để đáp ứng lại các thay đổi trong mã nguồn Java, cập nhật lược đồ bằng cách nhấn phải chuột vào vùng làm việc của biểu đồ chủ đề và nhấn vào Refresh. Hình 8. Tạo cây thừa kế bằng cách sử dụng biểu đồ chủ đề Nhấn vào đây để phóng to Hình 2. Tích hợp biểu đồ lớp được tạo ra vào tệp tin mô hình bằng cách sử dụng Harvest Trong Rational Software Architect, bạn có thể chuyển đổi tệp tin mô hình sang mã Java. Bạn có thế tạo một tệp tin mô hình bằng cách tạo một lớp mới với vài thuộc tính và phương thức; bạn cũng có thể tích hợp các lớp Java đã có từ dự án vào trong tệp tin mô hình. Sử dụng hàm Harvest trong Rational Software Architect để sao chép biểu đồ lớp được tạo ra vào trong tệp tin mô hình của bạn: 1. Tạo một tệp tin mô hình rỗng bằng cách nhấn chuột vào File > New item. Cửa sổ mới được mở ra (xem Hình 9). Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 6 của 13 ibm.com/developerWorks/vn/ developerWorks® Hình 9. Mở cửa sổ Model 2. Nhấn vào Next và làm theo các luồng công việc trong hình 10, trong đó cho thấy biểu đồ đặc quyền (freedom diagram). Hình 10: Tạo một tệp tin mô hình Nhấn vào đây để phóng to Hình 10. 3. Sao chép các biểu đồ lớp vào tệp tin mô hình mới sử dụng hàm Harvest: a. Chọn tất cả các lớp trong biểu đồ (xem Hình 11). b. Nhấn phải chuột lên biểu đồ, và sau đó nhấn chọn Harvest. Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 7 của 13 developerWorks® ibm.com/developerWorks/vn/ Hình 11. Harvest lựa chọn các lớp trong biểu đồ trình duyệt c. Dán các lớp vào tệp tin mô hình mới (Hình 11 chỉ ra kết quả). Trong Hình 11, cả lớp Vehicle lẫn lớp Car đều không hiện thông tin các trường dữ liệu và các phương thức. Để làm hiện rõ các trường dữ liệu và các phương thức, chọn một hoặc nhiều lớp trong biểu đồ, nhấn phải chuột vào một hoặc nhiều lớp, và nhấn vào Filters > Show/Hide Compartment > All Compartments (xem Hình 12). Để xem các kết quả cuối cùng của các ngăn (compartment) cho phép, xem Hình 13. Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 8 của 13 ibm.com/developerWorks/vn/ developerWorks® Hình 12. Chỉ ra tất cả các ngăn của lớp Vehicle Nhấn vào đây để phóng to Hình 12. Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 9 của 13 developerWorks® ibm.com/developerWorks/vn/ Hình 13. Các ngăn của lớp Vehicle Tổng kết Để phân tích và phát triển các dự án Java, bạn có thể sử dụng các công cụ trong Rational Software Architect, phiên bản 7.5 cho việc sau: • Tạo cây thừa kế cho tất cả các lớp trong dự án, sử dụng Software Analyzer. • Để hình dung các chi tiết của một lớp là một phần của cây thừa kế, sử dụng lược đồ trình duyệt. • Để sử dụng một truy vấn cố định quan sát sự thay đổi mã, sử dụng biểu đồ chủ đề. • Để dán một lớp từ cây thừa kế vào trong tệp tin mô hình, sử dụng hàm Harvest. Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 10 của 13 ibm.com/developerWorks/vn/ developerWorks® Tài nguyên Học tập • Để biết thêm thông tin về kỹ thuật đảo ngược trong các phiên bản trước đó của Rational Software Architect, xem Reverse engineering UML class and sequence diagrams from Java code with IBM Rational Software Architect (Kỹ thuật đảo ngược lớp và các biểu đồ trình tự trong UML từ mã Java với IBM Rational Software Architect) bởi Fenglian Xu và Alex Wood (IBM developerWorks, June 2008). • Nghiên cứu về các ứng dụng trong IBM Rational Software Delivery Platform (Nền tảng phát triển phần mềm Rational IBM), bao gồm các công cụ cộng tác cho quản trị kiến trúc, quản trị tài sản, quản trị sự thay đổi và loại bỏ, quản trị nhu cầu tích hợp, quản trị quy trình và vốn đầu tư, và quản trị chất lượng. Bạn có thể tìm thấy hướng dẫn sử dụng, hướng dẫn cài đặt và các tài liệu khác tại IBM Rational Online Documentation Center (Trung tâm học liệu trực tuyến Rational của IBM). • Ghé thăm Rational software area on developerWorks (Phầm mềm Rational trên developerWord) gồm các tài nguyên kỹ thuật và các bài tập tốt nhất về các sản phẩm của Rational Software Delivery Platform • Duyệt qua Rational computer-based, Web-based, and instructor-led online courses (Các khóa học trực tuyến về cơ sở tính toán Rational, nền Web. Rèn luyện các kỹ năng của bạn và tìm hiểu thêm về các công cụ Rational với khóa học này, từ cơ bản đến nâng cao. Các khóa học trong danh mục này có sẵn để tham khảo từ khóa đào tạo cơ sở tính toán hay khóa đào tạo cơ sở Web. Ngoài ra, một vài khóa học nhập môn "Getting Started" cũng được cấp miễn phí. • Đăng ký bản tin Rational Edge cho các bài viết về những khái niệm đằng sau việc phát triển phần mềm hiệu quả. • Đăng ký bản tin của IBM developerWorks, cập nhật hàng tuần trên các hướng dẫn developerWorks, các bài viết, các tải về, các hoạt động cộng đồng, các webcasts và các sự kiện. • Duyệt qua technology bookstore (Kho sách công nghệ) để tìm các sách trên đây và các chủ đề kỹ thuật khác. • Để lấy tài liệu về Rational Software Architect, xem Rational Software Architect information center (Trung tâm thông tin Rational Software Architect). Lấy sản phẩm và công nghệ • Tải về phiên bản thử nghiệm phần mềm Rational của IBM. • Tải IBM product evaluation versions (Phiên bản đánh giá sản phẩm của IBM) và cài đặt các công cụ ứng dụng và các sản phẩm ứng dụng lớp giữa từ DB2®, Lotus®, Tivoli®, và WebSphere®. • Thử nghiệm bản dùng thử 30 ngày của Rational Software Architect. Thảo luận • Duyệt qua các developerWorks blogs và tham gia vào developerWorks community (cộng đồng developerWorks). Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 11 của 13 developerWorks® ibm.com/developerWorks/vn/ • Để tham gia thảo luận về Rational Software Architect với những người dùng khác, hãy tham gia Development Tools forum (diễn đàn các công cụ phát triển). Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 12 của 13 ibm.com/developerWorks/vn/ developerWorks® Đôi nét về các tác giả Si Yin Si Yin là một cố vấn IT tại trung tâm IBM Excellence về Quản lý nước ở Amsterdam, Hà Lan. Ông là chuyên gia kỹ thuật cho các dự án Quản lý nước. Si tốt nghiệp thạc sỹ khoa học máy tính tại trường đại học Vrije Hà Lan và từng là một sinh viên Extreme Blue trong năm 2007 Fenglian Xu Tiến sĩ Fenglian Xu là một nhà phát triển phần mềm của IBM WebSphere Service Registry và Repository (Kho lưu trữ và đăng ký WebSphere của IBM) tại IBM Hursley Software Lab (văn phòng phần mềm Hursley của IBM). Trước khi làm việc trong vai trò hiện tại, cô ấy là một thành viên của đội ngũ phát triển IBM WebSphere Enterprise Service Bus, và WebSphere Process Server (máy chủ xử lý quy trình WebSphere), nơi mà cô ấy đạt tới sự thành thạo trong Java Message Service (JMS) và các kết hợp WebSphere MQ JMS, Service Gateway (cổng phục vụ) cho WebSphere Enterprise Service Bus, và WebSphere Process Server (Máy chủ xử lý WebSphere). Cô ấy cũng đã đạt được một số hiểu biết và kinh nghiệm về sự hợp nhất giữa WebSphere Application Server (máy chủ ứng dụng WebSphere) và WebSphere MQ. Trước khi Tiến sĩ Xu gia nhập IBM, cô đã làm việc cho nhiều công ty IT khác nhau, từ các ứng dụng lớp trung gian đến các ứng dụng cuối, và với dự án thí điểm eScience tại vương quốc Anh, GEODISE, nơi mà cô ấy là người tiên phong trong việc tạo ra các công cụ luồng công vệc trong kiến trúc hướng dịch vụ. Cô nhận bằng cử nhân toán học ứng dụng và công nghệ phần mềm tại trường Đại học Xian Jiaotong ở Trung Quốc và bằng tiến sĩ khoa học máy tính tại trường đại học Southampton ở Anh vào năm 1998 © Copyright IBM Corporation 2010 (www.ibm.com/legal/copytrade.shtml) Nhẫn hiệu đăng ký (www.ibm.com/developerworks/vn/ibm/trademarks/) Kỹ thuật đảo ngược các biểu đồ UML sử dụng IBM Rational Software Architect (Kiến trúc phần mềm Rational của IBM), phiên bản 7.5 Trang 13 của 13