Tiến trình dịch chương trình

Một phần của tài liệu Tái kỹ nghệ trong phát triển phần mềm hướng đối tượng (Trang 83)

Hình 4-19 Tiến trình dịch chương trình

Trong thư mục NewTempBoadcast chứa các tệp mã nguồn và header của TempBoadcast đã được thay đổi. Nhưng tệp này có mã C++ mà ta có thể xem, sửa hay thay đổi các giá trị ngay trên mô hình bằng cách nhấn đúp chuột vào từng lớp để sửa

Hệ thống được

tái kỹ nghệ Hệ thống được tái kỹ nghệ Hệ thống tái kỹ nghệ (HEX)

Xác định sự khác nhau của mã nguồn Thiết kế bộ chuyển đổi các lệnh Dịch mã tự động (Keil) Dịch mã thủ công

mã nguồn. Sau đó sử dụng Keil để dịch dự án này sang tệp HEX rồi thực hiện qua trình nạp lại (Ép flash rom) cho bộ nhớ của CC1010 của từng nút mạng một.

 Mô hình UML ánh xạ thành phần tới mã C++

Bảng liệt kê các thành phần cơ bản của UML được chuyển sang các thành phần mã nguồn cơ bản.

UML C++

Package Folder

Class Class (tệp .h and .cpp) Generalization relationship Class inheritance Association relationship Class attribute

Property Class attribute Enumeration Enum (tệp .h)

Operation Operation

Parameter Operation argument

"Usage" relationship Inclusion

Template parameter Parameter for parameterized class "Binding" relationship Instantiated class (.h tệp)

Bảng 4-1 Các thành phần cơ bản của UML chuyển sang mã nguồn

 Tùy biến trong việc sinh mã

Chúng ta có thể sinh mã tùy biến bằng dùng các dạng stereotypes của C++ Transformation prototype. Ví dụ, để thao tác UML như là chuyến tuyến tính:

 Apply the C++ Transformation prototype to the model.  Apply the cpp_operation stereotype to the operation.

 In Properties view, on the Advanced page, set isInline to True.  Run the UML to C++ transformation.

 Hồ sơ của C++ trong mã chuyển từ mô hình

Sự chuyển đổi này dùng "C++ Transformation" không thực sự có ở UML nhưng bao gồm các ký hiện của C++ gọi là stereotypes:

Stereotype Applicable to Attributes Type cpp_type Parameter, Property isMutable, qualifier (String), InitializerKind (Enumeration)

Boolean with default value of false

cpp_generalization Generalization GeneralizationKind Enumeration

cpp_struct Class Boolean with default value of false

cpp_union Class isAnonymousUnion Boolean with default value of false

cpp_typedef Class ImplementationType String

cpp_dependency Dependency isInclusionInHeader Boolean with default value of false

cpp_friend Dependency Boolean with default value of false

cpp_namespace Package, Model

NamespaceName String

cpp_operation Operation isInline, isVirtual, isFriend

Boolean with default value of false

cpp_constructor Operation isExplicit, isInline Boolean with default value of false

cpp_copy_construc tor

Operation isExplicit, isInline Boolean with default value of false

cpp_destructor Operation isVirtual, isInline Boolean with default value of false

cpp_assignment Operation isInline Boolean with default value of false

Bảng 4-2 Các stereotypes

Chúng ta không nên áp đặt quá nhiều C++ transformation stereotype vào đối tượng UML mà nên phân thành các nhóm:

UML class (cpp_struct, cpp_union, cpp_typedef): sẽ chuyển thành đối tượng, như vậy, khi sinh mã cấu trúc sang C++ nó sẽ không sinh các toán từ chuẩn. Do vậy, phải sửa mã nguồn trên dự án chính xác, chi tiết rồi mới dịch.

UML dependency (cpp_dependency, cpp_friend): Nếu áp dụng các mẫu stereotypes thì tiến trình chuyển quan hệ độc lập hàm bạn và mẫu stereotypes.

UML operation (cpp_operation, cpp_constructor, cpp_copy_constructor,

cpp_destructor, cpp_assignment): tạo ra các đối tượng áp dụng cho các phép toán. Thứ tự ưu tiên stereotypes từ cao xuống thấp: cpp_constructor, cpp_copy_constructor, cpp_destructor, cpp_assignment, cpp_operation.

Một phần của tài liệu Tái kỹ nghệ trong phát triển phần mềm hướng đối tượng (Trang 83)