Thực hành trên Rose
+ Tạo lập mới hoặc mở một biểu đồ thành phần đã được tạo lập trước, + Bổ sung, loại bỏ các thành phần, + Đặc tả chi tiết các thành phần: gán Stereotype, chọn ngôn ngữ Language, chọn lớp để gán Assign, + Thiết lập các ...
+ Tạo lập mới hoặc mở một biểu đồ thành phần đã được tạo lập trước,
+ Bổ sung, loại bỏ các thành phần,
+ Đặc tả chi tiết các thành phần: gán Stereotype, chọn ngôn ngữ Language, chọn lớp để gán Assign,
+ Thiết lập các mối quan hệ phụ thuộc giữa các thành phần.
+ Tạo lập mới hoặc mở một biểu đồ triển khai đã được tạo lập trước,
+ Bổ sung, loại bỏ các nút, các phần tử xử lý Processor,
+ Đặc tả chi tiết các phần tử xử lý: gán Stereotype, bổ sung một số đặc tính như Preemtive, Non preemtive, Cyclic, v.v. và gán Schelduling,
+ Bổ sung các thiết bị Device và đặc tả chúng,
+ Thiết lập các mối quan hệ kết nối giữa các nút,
+ Bổ sung và huỷ bỏ các tiến trình Process.
Có sáu bước cơ bản thực hiện để phát sinh mã chương trình:
1. Thiết lập các thuộc tính của mô hình
2. Kiểm tra mô hình
3. Tạo lập các thành phần
4. Gán các lớp vào thành phần
5. Chọn lớp, thành phần hay gói để phát sinh mã.
6. Phát sinh mã chương trình.
Không phải ngôn ngữ nào cũng cần đầy đủ các bước nêu trên. Ví dụ, khi phát sinh mã chương trình bằng C++ (hay Java) cho các lớp đã được thiết kế chi tiết thì chỉ cần thực hiện bước 5 và 6, hay bước một cũng không bắt buộc phải thực hiện. Tuy nhiên, về mặt qui trình công nghiệp nên thực hiện cả sáu bước trên.
Bước 1: Thiết lập các đặc tính của mô hình
Có nhiều đặc tính được sử dụng để phát sinh mã nguồn có thể gán cho lớp, vai trò
(Role), thuộc tính, hàm và các thành phần khác của lớp.
+ Các đặc tính của lớp bao gồm: các toán tử tạo lập, huỷ tử, toán tử tạo lập nhân bản, phép đối sánh, các phương thức truy cập dữ liệu (get/set methods)
+ Các đặc tính của vai trò bao gồm: thiết lập các phương thức truy cập, lớp chứa
+ Các đặc tính của phương thức bao gồm: những phép toán chung như phương thức abstract, virtual, static, friend, v.v.
Các đặc tính này điều khiển việc phát sinh mã chương trình tự động.
Đặc tính GenrateGetOperation trong C++ sẽ điều khiển để sinh mã các hàm có tiếp đầu ngữ là getX để đọc dữ liệu bị che giấu (khai báo private) trong lớp nếu nó được chọn. Trước khi phát sinh mã chương trình nên xem xét các đặc tính của mô hình và có thể bổ sung, hay thay đổi chúng nếu cần.
Để quan sát đặc tính của mô hình có thể chọn Tools > Options (hoặc nhấn đúp vào Model Properties từ Browser), sau đó chọn ngôn ngữ lập trình, ví dụ chọn C++ như hình 1.
Bạn có thể thay đổi Value và Source của các đặc tính bằng nhấn chuột vào những đặc tính cần thay đổi và lựa chọn các đại lượng tương ứng trong thực đơn đẩy xuống.
Tập đặc tính tạm thời. Thay vì những đặc tính mặc định, ta có thể tạo lập đặc tính tạm thời để sử dụng. Để tạo lập tập đặc tính tạm thời cho C++, bạn có thể chọn
Tools > Model Properties > Edit > C++ tab > Edit Set
sau đó nhấn nút Close trong cửa sổ Clone the Property Set và nhập tên mới cho tập đặc tính đó. Khi không còn cần đến tập đặc tính tạm thời thì có thể chọn Remove để loại bỏ nó.

Bước 2: Kiểm tra mô hình
Chức năng Check Model ở Tools được thiết kế để kiểm tra sự nhất quán giữa các đơn thể khi mô hình của bạn được lưu trành nhiều đơn vị điều khiển. Kiểm tra mô hình để phát hiện những sai phạm, những điểm không thống nhất và các lỗi trong mô hình. Sau khi chọn Tools > Check Model, lỗi của mô hình sẽ được hiển thị ở cửa sổ Log. Các lỗi hay xảy ra là các thông điệp trong biểu đồ tương tác không được ánh xạ thành các phương thức của lớp tương ứng. Mục Access Violation sẽ tìm ra những vi phạm khi có những quan hệ giữa hai lớp ở hai gói khác nhau, nhưng hai gói đó lại không có quan hệ với nhau. Chọn Report > Show Access Violation để biết được những vi phạm đó.
Bước 3: Tạo lập thành phần hay mở biểu đồ thành phần
Ta có thể sinh mã trình cho từng lớp hoặc cho từng thành phần chứa một số lớp nhất định và các mẫu rập khuôn (stereotype). Các thành phần cần thiết để ánh xạ các lớp trong mô hình sang ngôn ngữ lập trình đã xác định và các đơn thể phần mềm. Có nhiều loại thành phần như thành phần chứa mã nguồn, tệp thực thi (.exe), tệp thư viện, v.v. Các lớp và các giao diện phải được gán vào một thành phần của một ngữ cài đặthoặc được gán vào một số thành phần của cùng một ngôn ngữ.
3.1 Tạo lập thành phần mới
1. Chọn Component view ở vùng Browser (thường hiển thị ở bên trái nhất).
2. Nhấn chuột phải để hiển thị thực đơn tắt (shortcut). Chọn New > Package hoặc New > Component rồi đặt tên cho chúng, nếu không chúng sẽ được đặt tên mặc định. Bạn chọn package nếu muốn tạo lập một gói mới chứa một số lớp để phát sinh mã chương trình.
3. Hoặc nhấn chuột phải để mở thực đơn tắt và nhấn đúp chuột để mở Open Specification. Trong đó bạn có thể chọn mẫu rập khuôn cho thành phần trong Stereotype và gán ngôn ngữ cho thành phần ở hộp Language (xem hình 2).

3.2 Mở biểu đồ và tạo lập các thành phần
Để tạo lập các thành phần trong biểu đồ thành phần chúng ta làm như sau:
1. Mở Component Diagram
2. Sử dụng biểu tượng Component trong thanh công cụ để bổ sung những loại thành phần mới vào biểu đồ.
Bước 4: Gán lớp, giao diện vào cho thành phần
Mỗi thành phần mã nguồn biểu diễn tệp mã nguồn của một hay một vài lớp. Trong C++, mỗi lớp được gán vào hai thành phần mã nguồn: tệp header .h và tệp chứa thân của lớp .cpp. Với C++, Rose có thể không qua bước này, khi phát sinh mã chương trình cho một lớp nó có thể yêu cầu gán trực tiếp vào thành phần lựa chọn.
Một lớp hoặc giao diện có thể được gán vào thành phần của ngôn ngữ lập trình hoặc gán vào một số thành phần của cùng một ngôn ngữ như sau:
1. Chọn lớp ở Browser, hoặc ở biểu đồ, và mở Open Specification của lớp đó.
2. Ở mục Components tab, chọn Show All Components.
3. Nhấn chuột phải ở thành phần tương ứng và kích vào Assign để gán lớp đã chọn vào thành phần đó.
Bạn cũng có thể chọn thành phần ở Browser di chuột để kéo nó đến lớp tương ứng ở một biểu đồ ở Browser, hoặc mở Components tab ở phần đặc tả lớp (Class Specification). Sau khi lớp được gán vào cho thành phần thì ở Browser, tên của lớp đã được đính với tên của thành phần ở trong ngoặc đơn.Để gán nhiều lớp (giao diện) vào một thành phần ta làm như sau:
1. Chọn thành phần ở Browser, hoặc ở biểu đồ thành phần, và mở Open Specification của thành phần đó.
2. Về Realizes tab, kích vào mục Show All Classes.
3. Đối với những lớp cần gán vào thành phần này thì nhấn chuột phải vào lớp đó và kich vào Assign để gán nó vào thành phần đã chọn.
4. Về mục General tab, có thể đặt tên mới cho thành phần ở hộp Name, chọn kiểu cho thành phần đó ở hộp Stereotype, và gán ngôn ngữ cài đặt cho thành phần này ở hộp Language.
Tương tự như trên, bạn cũng có thể chọn từng lớp (giao diện) và di chuột để gán những lớp đã chọn tới thành phần tương ứng trong biểu đồ hoặc ở Browser.Để gán một ngôn ngữ cho một lớp (tương tự đối với thành phần):
1. Mở phần đặc tả Open Specification của lớp (nhấn chuột phải ở tên lớp).
2. Về mục Components tab, kích vào mục Show All Components. Ở trường Language hiển thị ngôn ngữ đã được gán cho thành phần.
3. Nhấn chuột phải ở thành phần mà bạn định gán lớp vào và nhấn Assign.
Để tìm xem ngôn ngữ nào được gán cho một lớp ta thực hiện như sau:
1. Mở phần đặc tả Open Specification của lớp (nhấn chuột phải ở tên lớp).
2. Bạn sẽ nhìn thấy ngôn ngữ lập trình đã được gán cho lớp đó ở trường Language khi chọn mục Component (xem hình 2).
Bước 5: Chọn lớp, thành phần hay gói
Bạn có thể chọn lớp, thành phần hay gói ở Browser để phát sinh mã chương trình đồng thời. Nếu phát sinh mã chương trình từ gói ở Logical View ở biểu đồ lớp hay biểu đồ thành phần ở Component View.
Bước 6: Phát sinh mã chương trình
Nếu cài đặt Rose Enterprise, bạn có thể lựa chọn khá nhiều ngôn ngữ để cài đặt chương trình. Để hiển thị hay ẩn các lựa chọn ngôn ngữ, hãy chọn Add-Ins > Add-In Manager
Khi chọn lớp hay thành phần để phát sinh mã, hãy chọn ngôn ngữ tương ứng trong thực đơn trên.
Để sinh mã chương trình cho một lớp hay thành phần có thể thực hiện theo hai cách.
Cách thứ nhất thực hiện như sau:
1. Chọn lớp, thành phần, hay gói ở biểu đồ hoặc ở Browser.
2. Từ Tools chọn ngôn ngữ lập trình, ví dụ C++ rồi nhấn Code Generation. Mỗi lớp sẽ tạo ra hai tệp tương ứng như đã nói ở trên. Khi bạn muốn xem mã chương trình thì chọn lớp tương ứng, nhấn chuột phải, về C++ rồi nhấn Browse Header hoặc Browse Body tuỳ bạn muốn hiển thị header file hay thân của lớp.
Cách thứ hai thực hiện như sau:
1. Chọn lớp, hay thành phần ở biểu đồ hoặc ở Browser.
2. Nhấn chuột phải ở lớp, thành phần đã chọn, và chọn ngôn ngữ (C++) rồi nhấn Code Generation.
Nếu có lỗi (Errors) hay cảnh báo (Warning) trong quá trình sinh mã thì những lỗi, hay cảnh báo đó sẽ hiển thị ở cửa sổ Log.
Bạn cũng có thể sinh mã chương trình cho lớp hoặc thành phần mà không cần phải thực hiện những bước nêu trên.Để sinh mã chương trình trực tiếp ta thực hiện như sau:
1. Trước tiên chọn lớp (thành phần) ở biểu đồ.
2. Từ Tools, chọn ngôn ngữ, ví dụ C++.
3. Chọn Code Generation để phát sinh mã chương trình bằng C++ cho lớp đã chọn.
Nếu chọn Java thì trước khi phát sinh mã chương trình, bạn phải chọn thư mục và các lớp tương ứng rồi nhấn Map để ánh xạ những chương trình được phát sinh vào thư mục đã chọn như hình 3.

Cái gì được phát sinh?
Khi phát sinh mã chương trình, Rose tập hợp các thông tin từ Logical View và
Component View. Rose chỉ phát sinh khung chương trình bao gồm.
Class: mọi lớp trong mô hình đều có thể được phát sinh mã chương trình,
Attribute: thuộc tính được xác định miền tác động, kiểu dữ liệu và giá trị mặc định,
Operation: các thao tác được khai báo kèm theo danh sách các tham số, kiểu của tham số, kiểu dữ liệu trả lại,
Relationships: một số mối quan hệ sẽ được phát sinh mã tương ứng,
Component: mỗi thành phần sẽ được cài đặt trong một tệp mã nguồn tương ứng.
Bài tập và câu hỏi
Hãy cho biết những mệnh đề sau đúng hay sai (true / false), giải thích tại sao?
+ Kiến trúc vật lý thể hiện các lớp đối tượng, các quan hệ và sự cộng tác để hình thành chức năng của hệ thống.
+ Kiến trúc phổ biến chung hiện nay cho các hệ thống phần mềm là kiến trúc ba tầng: tầng giao diện, tầng tác nghiệp và tầng lưu trữ.
+ Biểu đồ thành phần mô tả các thành phần và sự phụ thuộc của chúng trong hệ thống.
+ Có thể chọn mô hình dữ liệu quan hệ để lưu trữ dữ liệu cho hệ thống được phân tích, thiết kế hướng đối tượng.
+ Tất cả các tên gọi, biến và kiểu dữ liệu của các lớp trong biểu đồ lớp được thiết kế phải được chuyển tương ứng sang mã chương trình trong các định nghĩa lớp ở ngôn ngữ lập trình đã được lựa chọn.
Xây dựng biểu đồ thành phần cho hệ thống “Đăng ký môn học”.
Xây dựng biểu đồ thành phần cho hệ thống “Quản lý thư viện”
Thực hiện sinh mã tự động trong Rose cho các lớp ở hình 7.8.
Chọn từ danh sách dưới đây những thuật ngữ thích hợp để điền vào các chỗ [(…)] trong đoạn văn mô tả về kiến trúc của hệ thống phần mềm.
Kiến trúc phần mềm là [(1)] về các hệ thống con, [(2)] và [(3)] giữa chúng. Các hệ thống con và [(2)] được xác định theo nhiều góc nhìn khác nhau để chỉ ra các
[(4)] và của hệ thống phần mềm. Kiến trúc hệ thống được chia thành hai loại:logic và vật lý.
Chọn câu trả lời:
a. thuộc tính chức năng .
b. mối quan hệ.
c. các thành phần.
d. một mô tả.
e. phi chức năng
Chọn từ danh sách dưới đây những thuật ngữ thích hợp để điền vào các chỗ [(…)] trong đoạn văn mô tả về biểu đồ thành phần.
Biểu đồ thành phần được xem như là tập các biểu tượng thành phần biểu diễn cho các [(1)] vật lý trong một [(2)]. Ý tưởng cơ bản của biểu đồ [(1)] là tạo ra cho những [(3)] và phát triển một bức tranh chung về các thành phần của [(2)].
Chọn câu trả lời:
a. hệ thống.
b. người thiết kế.
c. thành phần vật lý.
d. một mô tả.