Có khá nhiều các công cụ hỗ trợ cho việc tái kỹ nghệ. Trong mỗi giai đoạn của quy trình lại có một công cụ phục vụ cho các công việc khác nhau. Để dịch mã nguồn sang mô hình thiết kế chúng ta có các công cụ như Rational Software Architecture, Rational Rose v.v.. Bộ công cụ DMS Software Reengineering Toolkit là công cụ tự động phân tích chương trình, tùy chỉnh mã nguồn, sửa đổi, dịch hay phát sinh ra hệ thống phần mềm. Có rất nhiều các công cụ hỗ trợ như thế, nhưng trong phạm vi luận văn này sẽ tập trung vào việc tái kỹ nghệ phần mềm với sự hỗ trợ của công cụ Rational Rose và ngôn ngữ mô hình hóa thống nhất UML.
1.4.1 Ngôn ngữ UML
Ngôn ngữ mô hình hóa thống nhất (Unifield Modeling Language – UML) là một ngôn ngữ mô hình có phần chính bao gồm những ký pháp đồ họa, được các phương pháp hướng đối tượng sử dụng để thể hiện và miêu tả các thiết kế của một hệ thống. Nó là một ngôn ngữ để đặc tả, trực quan hoá, xây dựng và làm tài liệu cho nhiều khía cạnh khác nhau của một hệ thống phần mềm chuyên sâu. UML có thể được sử dụng làm công cụ giao tiếp giữa người dùng, nhà phân tích, nhà thiết kế và nhà phát triển phần mềm.
Trong quá trình phát triển có nhiều công ty đã hỗ trợ và khuyến khích phát triển UML có thể kể tới như: Hewlett Packard, Microsoft, Oracle, IBM, Unisys.
UML có thể được sử dụng trong nhiều giai đoạn, từ phát triển, thiết kế cho tới thực hiện và bảo trì. Vì mục đích chính của ngôn ngữ này là dùng các biểu đồ hướng
31
đối tượng để mô tả hệ thống nên miền ứng dụng của UML bao gồm nhiều loại hệ thống khác nhau như:
− Hệ thống thống tin (Information System)
− Hệ thống kỹ thuật (Technical System)
− Hệ thống nhúng (Embeded System)
− Hệ thống phân bố ( Distributed System)
− Hệ thống Giao dịch (Business System)
− Phần mềm hệ thống (System Software)
Có thể nói UML không phải là một phương pháp mà là một ngôn ngữ mô hình hóa đối tượng đã được công nhận là một phương pháp đối tượng và được sử dụng chung trong cộng đồng công nghệ thông tin. Nó đã trở thành một chuẩn và được sử dụng phổ biến trong qui trình kỹ nghệ phần mềm.
Một số các ký pháp sử dụng trong UML
− Các thực thể cấu trúc
− Các thực thể hành vi
32
Các biểu đồ trong UML là:
− Biểu đồ ca sử dụng
− Biểu đồ đối tượng
− Biểu đồ lớp − Biểu đồ tuần tự − Biểu đồ trạng thái − Biểu đồ tương tác − Biểu đồ hoạt động − Biểu đồ thành phần − Biểu đồ cài đặt
Biểu đồ UML hỗ trợ rất lớn không chỉ trong việc dịch xuôi mà còn trong việc dịch ngược trong qui trình phát triển phần mềm. Dịch xuôi là khả năng phát sinh mã nguồn từ các mô hình thiết kế. Dịch ngược là khả năng tự động hoá việc xây dựng lại các mô hình thiết kế từ các thông tin trong mã nguồn.
UML được thiết kế để hỗ trợ việc ánh xạ tất cả các mô hình thiết kế vào các ngôn ngữ triển khai và ngược lại ánh xạ từ mã nguồn về mô hình. Đối với dịch xuôi, mã được phát sinh cho mỗi phần tử mô hình phụ thuộc vào đặc tả các phần tử của mô hình và các thuộc tính của nó. Cũng như vậy, khi dịch ngược, các thông tin trong mã nguồn sẽ quyết định các mô hình được phát sinh. Tuy nhiên kết quả của việc dịch xuôi và dịch ngược còn phụ thuộc vào công cụ biểu diễn thiết kế việc dịch được hỗ trợ tới đâu, và cũng phụ thuộc vào ngôn ngữ lập trình triển khai được chọn để ánh xạ tới nó.
UML là ngôn ngữ phong phú hơn bất cứ một ngôn ngữ lập trình hướng đối tượng nào hiện nay. Vì vậy, một số phần tử có trong mô hình sẽ không có phần tử tương ứng với nó trong một ngôn ngữ lập trình cụ thể, các phần tử đó sẽ bị bỏ qua trong cả hai
33
quá trình dịch. Như vậy khi dịch xuôi hay ngược sẽ xẩy ra sự mất thông tin, để có được hệ thống hoàn chỉnh thì cần phải bổ sung thêm các thông tin bị mất mát vào kết quả thu được sau khi dịch.
Việc dịch xuôi và ngược được thực hiện dựa trên các nguyên tắc ánh xạ một-một giữa các phần tử trong mô hình thiết kế và các phần tử trong mã nguồn. Kết quả của quá trình dịch xuôi có thể cho mã nguồn thực hiện được hoặc các tệp nhị phân lưu giữ thông tin về mô hình. Kết quả của việc dịch ngược sẽ cho các mô hình thiết kế ban đầu.
Ta có thể mô tả quá trình của kĩ thuật đảo ngược trong UML như sau:
Hình 1-13: Dịch xuôi và dịch ngược trong UML