1. Đặc tả (Specification)
UML mạnh hơn một ngôn ngữ đồ hoạ: vì rằng, bên cạnh các ký hiệu đồ hoạ nó còn cung cấp một cách diễn tả vượt trội bằng văn bản theo cú pháp và ngữ nghĩa của khối đồ hoạ sử dụng. Ví dụ như một tập đầy đủ các thuộc tính, các tác vụ và các hành vi mà lớp đó chứa. Nhờ vậy ta dùng các ký hiệu đồ hoạ để làm trực quan hoá hệ thống, dùng các đặc tả của UML để chỉ ra các chi tiết của hệ thống.
2. Bài trí (Adornments)
Tất cả các phần tử trong UML đều có một ký hiệu đồ hoạ duy nhất, trực tiếp, phân biệt đối với các phần tử khác để cung cấp một sự thể hiện trực quan về các khía cạnh quan trọng nhất của phần tử đó. Ví dụ như kí hiệu cho một lớp là một hình chữ nhật rất dễ vẽ bởi vì lớp là một thành phần quan trọng, xuất hiện rất nhiều trong các mô hình hướng đối tượng. Và kí hiệu này thể hiện được cả 3 thành phần quan trọng
của lớp đó là tên lớp, các thuộc tính và các phương thức của nó. Ngoài ra nó còn bao gồm các chi tiết như: lớp đó có phải là lớp trừu tượng không, các thuộc tính, phương thức của nó thuộc loại gì (public, private hay protected). Nói tóm lại các kí hiệu trong UML giúp ta nhận biết các đặc điểm quan trọng của đối tượng, khái niệm được mô tả một cách dễ dàng và nhanh chóng.
3. Các phân hoạch chung (common divisions)
Phân biệt rõ phần trừu tượng và cụ thể.Trước tiên là lớp và đối tượng. Một lớp là một sự trừu tượng hóa, một đối tượng là một thể hiện cụ thể của sự trừu tượng đó. Trong UML ta có thể mô hình lớp và đối tượng.
Có rất nhiều thứ tương tự. Ví dụ như một Use case và một thể hiện của Use case, một component và một thể hiện của component
4. Các cơ chế mở rộng (extensibility mechanisms)
UML cung cấp những thành phần cơ bản để lập nên một mô hình cho một phần mềm. Nhưng nó không thể nào bao quát hết theo thời gian mọi mô hình trong mọi lĩnh vực. Do đó UML được thiết kế mở theo nghĩa là người dùng có thể mở rộng một số thành phần để có thể áp dụng một cách tốt nhất cho hệ thống của họ mà lại không phải thay đổi hay thiết kế lại các thành phần cơ sở của UML. Cơ chế đó bao gồm:
Các rập khuôn (Stereotypes): mở rộng tập từ vựng của UML, cho phép tạo những thành phần mới kế thừa những đặc điểm của những thành phần đã có đồng thời chứa thêm những đặc điểm riêng gắn với một bài toán cụ thể nào đó.
Các giá trị thẻ (Tagged values): mở rộng thuộc tính của các thành phần của UML, nó cho phép ta tạo thêm những thông tin mới về một phần tử. Ví dụ như khi làm việc hợp tác để tạo ra một sản phẩm, ta muốn chỉ ra các phiên bản và tác giả của một đối tượng nào đó. Điều này không được xây dựng sẵn trong UML mà có thể thực hiện thông qua việc thêm vào một giá trị thẻ.
Các ràng buộc (Constraints): mở rộng ngữ nghĩa của các thành phần của UML, cho phép tạo ra những quy tắc mới hoặc sửa chữa những quy tắc đã có.
2.4. Kết luận
Công nghệ thông tin phát triển, công nghệ phần mềm đã và đang trở thành lĩnh vực quan trọng của nhiều quốc gia trên thế giới. Phát triển phần mềm trở thành sản phẩm của một tập thể, một quy trình được quản lý chặt chẽ và được hỗ trợ bởi rất nhiều công cụ, lập trình trở nên dễ dàng hơn, và vấn đề của phát triển phần mềm chính là phân tích thiết kế, mà quan trọng nhất là đặc tả và mô hình hoá thế giới thực. Và UML thực sự là ngôn ngữ mô hình hoá cần cho các dự án phát triển phần mềm.
Trong chương này ta trình bày những vấn đề cơ bản nhất về UML, vai trò, kiến trúc, mô hình khái niệm, các quan hệ (phụ thuộc, kết hợp, tập hợp, hợp thành, tổng quát hoá, sự thực hiện hoá) và cách xác định quan hệ giữa các đối tượng; các biểu đồ (biểu đồ lớp, biểu đồ ca sử dụng, biểu đồ tuần tự, biểu đồ thành phần, biểu đồ bố trí, biểu đồ hoạt động, biểu đồ cộng tác, biểu đồ sơ đồ trạng thái, biểu đồ triển khai) và cách xây dựng các biểu; các quy tắc (đặt tên, xác định phạm vi, tính nhìn thấy được, tính toàn vẹn); các kỹ thuật (đặc tả, bài trí, các phân hoạch chung, các cơ chế mở rộng), ... và sẽ sử dụng những những ký hiệu của UML trong các pha phát triển của tiến trình ROPES sẽ được trình bày trong chương 3 để phân tích thiết kế hệ thống kiểm soát không lưu.
CHƢƠNG 3 - TIẾN TRÌNH ROPES 3.1. Giới thiệu
Ta sẽ giới thiệu một cách tổng quan nhất quy trình phân tích, thiết kế, phát triển, thử nghiệm và triển khai một hệ thống phần mềm, ROPES - Rapid Object-Oriented Process for Embedded Systems, được đề xuất để xây dựng các phần mềm cho các hệ thống thời gian thực và đã được hầu hết các hãng phần mềm trên thế giới áp dụng thành công trong các dự án của mình.
Quy trình phát triển hệ thống phần mềm thời gian thực này được đề xuất dựa trên cơ sở 6 bài học thực tế rút ra được từ quá trình thành công cũng như thất bại của các dự án, đó là:
Sự phát triển lặp (develop iteratively): Chia quá trình phát triển thành các chu kỳ khác nhau, ở những chu kỳ đầu sẽ lựa chọn phát triển trước những chức năng mấu chốt, quyết định toàn bộ sự thành công hay thất bại của dự án, mỗi chu kỳ như vậy sẽ sinh ra một phiên bản thi hành được của ứng dụng đang phát triển. Việc phát triển tái lập như vậy có lợi điểm là: giải quyết được những rủi ro lớn trước khi có những đầu tư cho các bước tiếp theo, cho phép sớm tiếp nhận được những phản hồi của người sử dụng, thực hiện việc thử nghiệm và tích hợp một cách thường xuyên liên tục, cho phép tập trung triển khai từng phần hệ thống.
Quản trị các yêu cầu (manage requirements): Quản trị yêu cầu trong suốt quá trình phát triển đảm bảo giải quyết đúng vấn đề gặp phải và xây dựng đúng hệ thống cần xây dựng; quản trị yêu cầu cho phép theo vết được các vấn đề đặt ra từ nhu cầu của người sử dụng hệ thống đến các đặc tính của hệ thống, các chức năng, các vấn đề về phân tích, thiết kế và kịch bản thử nghiệm.
Sử dụng kiến thức thành phần (component architectures): Chia hệ thống phần mềm thành các thành phần nhỏ tương đối độc lập nhưng lại có quan hệ với nhau theo những nguyên tắc nhất định. Việc sử dụng kiến trúc thành phần cho phép hệ thống xây dựng vừa đáp ứng được các yêu cầu ở hiện tại và những mở rộng trong tương lai, nó cho phép có thể tái sử dụng các thành phần đã được xây dựng trước đó hoặc có thể mua các thành phần đã được các hãng trên thế giới xây dựng từ đó có thể đẩy nhanh quá trình phát triển ứng dụng.
Mô hình hóa trực quan (model visually): Sử dụng ngôn ngữ chuẩn UML để mô hình hóa toàn bộ hệ thống phần mềm cần phát triển. Việc mô hình hóa trực quan bằng ngôn ngữ UML cho phép: thu thập được toàn bộ cấu trúc và hành vi của hệ thống, chỉ ra cách thức để các thành phần của hệ thống có thể kết hợp với nhau, đảm bảo sự
thống nhất giữa bản thiết kế và bản chương trình phần mềm được xây dựng, nâng cao chất lượng sự trao đổi giữa các thành viên trong nhóm phát triển, giữa các nhóm phát triển với nhau.
Liên tục kiểm tra chất lƣợng (verify quality): Việc kiểm tra thử nghiệm được thực hiên ở tất cả các chu kỳ phát triển ứng dụng và kiểm tra trên cả 3 mặt chính: kiểm tra về mặt chức năng ứng dụng (thử nghiệm tất cả các kịch bản tình huống sử dụng), kiểm tra tốc độ (hiệu năng) và kiểm tra độ tin cậy của ứng dụng.
Quản trị các thay đổi (manage changes): Đảm bảo quản trị được các thay đổi về yêu cầu, các thay đổi phiên bản hay thay đổi cấu hình trong suốt quá trình phát triển, triển khai, bảo trì và nâng cấp ứng dụng.
Để vận dụng được sáu bài học nói trên ta tìm hiểu quy trình phát triển cho các hệ thống thời gian thực gồm các pha (phase) và các luồng công việc (workflow) mà đội thực hiện dự án cần tuân theo. ROPES là một tiến trình lặp bao gồm 4 pha (Hình 3.1): Phân tích (Analysis), Thiết kế (Design), Cài đặt (Implementation), và Kiểm thử (Testing). ROPES sử dụng các ký hiệu và mô hình UML chuẩn để mô hình hóa.
Hình 3.1. Các pha và luồng công việc trong ROPES
Kiểm thử Cài đặt
Thiết kế
Phân tích
Phân tích yêu cầu
Phân tích hệ thống Phân tích đối tượng
Thiết kế kiến trúc Thiết kế chi tiết
Thiết kế cơ chế Mã hoá Kiểm thử đơn vị Kiểm thử tích hợp Kiểm thử hợp lệ Các bước lặp Thành công!
Mục đích của một tiến trình là cải thiện kết quả tạo ra từ tiến trình. Cụ thể, các mục đích chủ yếu của các tiến trình phát triển là:
- Tăng chất lượng của kết quả cuối cùng.
- Tăng tính khả lặp (repeatability) và tính có thể đoán trước (predictability). - Giảm chi phí phát triển sản phẩm với chất lượng được đảm bảo.
Để đạt được các mục đích cơ bản, một tiến trình phát triển bao gồm các pha, các hoạt động và các vật phẩm (artifact). Một pha là một tập các hoạt động liên quan đến mục đích phát triển chung và được thực thi ở mức trừu tượng thích hợp. Mỗi pha chứa các hoạt động (những việc người phát triển hệ thống phải làm) và vật phẩm. Các kết quả cơ bản của tiến trình ROPES được thể hiện trong Hình 3.2.
Hình 3.2. Các vật phẩm đƣợc tạo ra trong tiến trình ROPES
Các yêu cầu ứng dụng Phân tích Thiết kế Kiểm thử Cài đặt Mô hình đối tượng phân tích Phân tích rủi ro Nhược điểm phân tích Vector kiểm thử Các ca sử dụng Các kịch bản Nhược điểm thiết kế Các thành phần ứng dụng Ứng dụng đã được kiểm thử Nhược điểm cài đặt Các mẫu thiết kế Mô hình đối tượng thiết kế Các thành phần Khung làm việc thời gian thực Mã kế thừa