Nhiều công việc trước đây phải do con người trực tiếp thực hiện, thì nay ứng dụng hệ thống thời gian thực thiết kế các sản phẩm phần mềm công nghiệp thay thế con người trong nhiều lĩnh v
Trang 1PHẦN MỞ ĐẦU
Cùng với xu hướng phát triển ngành công nghệ thông tin, công nghệ phần mềm đã và đang trở thành lĩnh vực mũi nhọn của nhiều quốc gia trên thế giới Ngày nay, việc phát triển một phần mềm với qui mô và chất lượng cao không còn là công việc đơn lẻ của những nhà lập trình, mà đó là sản phẩm của một tập thể, một công ty phần mềm theo một qui trình công nghệ chuẩn được quản lý chặt chẽ và được hỗ trợ tối đa bởi các công cụ và môi trường phát triển phần mềm Do đó, việc lập trình ngày càng trở nên dễ dàng hơn và nhường lại vai trò mấu chốt cho việc phân tích và thiết kế phần mềm, trong đó quan trọng nhất là đặc tả và mô hình thế giới thực, mọi ứng dụng trong thế giới thực có thể “tin học hoá” đều được suy nghĩ đến để đặc
tả, xây dựng và phát triển Nhiều công việc trước đây phải do con người trực tiếp thực hiện, thì nay ứng dụng hệ thống thời gian thực thiết kế các sản phẩm phần mềm công nghiệp thay thế con người trong nhiều lĩnh vực, với những công việc nặng nhọc và nguy hiểm, ứng dụng trong gia đình như máy giặt, hệ thống lò sưởi, ngoài ra còn ứng dụng trong các lĩnh vực khác như điều khiển không lưu, hệ thống thang máy, robotics (người máy học), điều khiển thực hiện trong các dự án công nghiệp và các trạm năng lượng hạt nhân
Việc đặc tả và thiết kế hệ thống thời gian thực là một vấn đề phức tạp
vì hệ thống thời gian thực yêu cầu sự chính xác logic giống như sự chính xác thời gian thực tế Nhiều năm trước đây, kỹ thuật đặc tả và thiết kế hệ thống thời gian thực đã được chú ý, các công ty phần mềm lớn trên thế giới
đã nhanh chóng đưa ra nhiều công cụ hỗ trợ phân tích thiết kế dựa trên nhiều phương pháp khác nhau, đưa vào ứng dụng trong nhiều lĩnh vực và được phát triển liên tục Sự ra đời của UML dựa trên ba phương pháp hướng đối tượng Booch, OMT, OOSE là ký hiệu lập mô hình chuẩn công nghiệp cho các hệ thống hướng đối tượng, và nó cũng dùng để xây dựng
Trang 2các hệ thống thời gian thực một cách chi tiết, chính xác Do đó, UML đã và đang được các nhà phát triển hệ thống thời gian thực chọn làm tiêu chuẩn
để xây dựng mô hình thời gian thực cho các ứng dụng thực tế Với nguyên
nhân đó, tôi chọn đề tài “Phân tích thiết kế hệ thống thời gian thực theo cách tiếp cận hướng đối tượng với UML” để có thể hiểu sâu hơn về lĩnh
vực ứng dụng hệ thống thời gian thực, dùng công nghệ mới để phân tích và thiết kế ứng dụng hệ thống thời gian thực
Cấu trúc nội dung của luận văn gồm ba chương và phần kết luận
Chương 1: Trình bày tổng quan về hệ thống thời gian thực bao gồm
các khái niệm cơ sở, các yêu cầu và ràng buộc về thời gian của hệ thống thời gian thực
Chương 2: Giới thiệu các thành phần, kiến trúc hệ thống của UML và
những thuận lợi của UML đối với phân tích và thiết kế hệ thống thời gian thực
Chương 3: Ứng dụng xây dựng từng bước trên UML để mô phỏng bài
toán điều khiển nút đèn giao thông
Kết luận Những nội dung đạt được trong luận văn và định hướng phát
Trang 3MỤC LỤC
CHƯƠNG 1 1
TỔNG QUAN VỀ HỆ THỐNG THỜI GIAN THỰC 1
1.1 Các khái niệm cơ sở của hệ thống thời gian thực 1
1.2 Yêu cầu của các hệ thống thời gian thực 4
1.2.1 Những yêu cầu thời gian trong việc trình bày hệ thống thời gian thực 1.2.1.1 Thời gian tuần tự 5
1.2.1.2 Thời gian quan hệ 6
1.2.1.3 Thời gian chính xác 6
1.2.2 Một số yêu cầu của hệ thống thời gian thực 11
1.2.2.1 Hệ thống lớn và phức tạp 11
1.2.2.2 Xử lý trên số thực 11
1.2.2.3 Thực sự an toàn và đáng tin cậy 11
1.2.2.4 Giao tiếp trực tiếp với thiết bị phần cứng 12
1.2.2.5 Thực hiện trên môi trường và ngôn ngữ lập trình hiệu quả 12
1.2.2.6 Người sử dụng điều khiển 12
1.3 Phân tích các ràng buộc thời gian trong hệ thống thời gian thực 12
1.3.1 Quan niệm thời gian trong hệ thống thời gian thực 12
1.3.1.1 Đồng hồ hệ thống 12
1.3.1.2 Các loại đồng hồ hệ thống 13
1.3.1.3 Quan niệm về rời rạc thời gian 13
1.3.1.4 Ràng buộc về thời gian 14
1.3.2 Các hệ thống thời gian thực 15
1.4 Tổng kết chương 1 17
CHƯƠNG 2 18
PHÂN TÍCH THIẾT KẾ HỆ THỐNG 18
THỜI GIAN THỰC VỚI UML 18
2.1 Giới thiệu UML 18
2.1.1 Yêu cầu thực tế 20
2.1.2 Mục đích của UML 21
2.1.3 Các thành phần của UML 23
2.1.3.1 Mô hình cấu trúc trong UML 23
2.1.3.2 Mô hình hành vi 27
Trang 42.1.4 Kiến trúc của hệ thống 32
2.1.4.1 Quan sát UC 32
2.1.4.2 Quan sát Lôgic 32
2.1.4.3 Quan sát tiến trình 33
2.1.4.4 Quan sát thực thi 33
2.1.4.5 Quan sát triển khai 33
2.2 Các giai đoạn phát triển phần mềm với UML 33
2.2.1 Phân tích yêu cầu (Dự kiến kế hoạch) 36
2.2.2 Giai đoạn phân tích 36
2.2.3 Giai đoạn thiết kế 36
2.2.4 Giai đoạn triển khai 37
2.3 Phân tích và thiết kế hệ thống thời gian thực 38
2.3.1 Mô hình đối tượng của UML 38
2.3.2 Mô hình động của UML 39
2.3.3 Những thuận lợi của UML đối với hệ thống thời gian thực 45
2.4 Tổng kết chương 2 47
CHƯƠNG 3 49
XÂY DỰNG ỨNG DỤNG 49
3.1 Khảo sát 49
3.1.1 Mô tả bài toán 49
3.1.2 Xây dựng biểu đồ UC 51
3.2 Phân tích 52
3.2.1 Các UC 52
3.2.2 Biểu đồ UC 53
3.2.3 Kịch bản cho các uc 54
3.2.3.1 UC điều khiển tự động 54
3.2.3.3 Nhận tín hiệu quá tải 56
3.2.3.4 Đặt lại thời gian đợi 57
3.2.4 Biểu đồ lớp phân tích 58
3.2.4.1 UC điều khiển tự động 58
3.2.4.2 UC chuyển đổi điều khiển 59
3.2.4.3 UC nhận tín hiệu quá tải 59
3.2.4.4 UC đặt lại thời gian đợi 59
3.3 Thiết kế 59
Trang 53.3.1 UC điều khiển tự động 59
3.3.2 UC chuyển đổi điều khiển 60
3.3.3 UC nhận tín hiệu quá tải 61
3.3.4 UC đặt lại thời gian đợi 62
3.4 Biểu đồ lớp 63
3.4.1Xác định các lớp đối tượng 63
3.4.2 Các mối quan hệ của các lớp 64
3.4.3 Biểu đồ lớp 64
3.4.4 Thiết kế chi tiết 65
3.4.5 Biểu đồ thành phần 69
3.5 Xây dựng chương trình mô phỏng 69
3.5.1 Cài đặt chương trình 69
3.5.1.1 Cấu hình hệ thống 69
3.5.1.2 Lựa chọn công nghệ 70
3.5.2 Một số form chính 70
3.6 Kết luận chương 3 72
KẾT LUẬN 73
1.Kết quả đạt được trong luận văn 73
2.Hướng nghiên cứu tiếp theo 73
TÀI LIỆU THAM KHẢO 75
Trang 6LỜI CẢM ƠN
Xin chân thành cảm ơn Thầy giáo PGS TS Đoàn Văn Ban đã tận tình
hướng dẫn, giúp đỡ và đóng góp cho tôi nhiều ý kiến quí báu để hoàn thành luận văn
Xin bày tỏ lòng biết ơn đến Thầy giáo, Cô giáo Viện Công nghệ thông tin Việt Nam và Trường Đại học Công nghệ thông tin và Truyền thông đã giảng dạy, giúp đỡ và tạo điều kiện cho tôi trong thời gian học tập tại Trường
Tôi xin gửi lời cảm ơn đến các bạn, các anh chị học viên Cao học khóa K8 - chuyên ngành Khoa học máy tính - Trường Đại học Công nghệ thông tin
và truyền thông, các cán bộ, giảng viên trường Đại học Khoa học Thái Nguyên
đã tạo điều kiện cho tôi trong quá trình học tập và làm luận văn
Cuối cùng cho phép tôi được gửi những tình cảm quý báu đến gia đình - những người luôn tin tưởng, động viên để tôi nổ lực phấn đấu trong công tác
Trang 7LỜI CAM ĐOAN
Để hoàn thành luận văn đúng thời gian quy định và đáp ứng được yêu cầu đề ra, bản thân em luôn cố gắng nghiên cứu, học tập Em đã tham khảo một số tài liệu đã nêu trong phần “Tài liệu tham khảo” và không hề sao chép nội dung từ bất kỳ luận văn nào khác Toàn bộ luận văn do ý tưởng bản thân
em được sự chỉ bảo tận tình của thầy hướng dẫn, em tự nghiên cứu và xây dựng nên Toàn bộ mã nguồn do em nghiên cứu, tham khảo và cài đặt
Cho đến nay nội dung luận văn của em chưa từng được công bố hay xuất bản dưới bất kỳ hình thức nào và cũng không sao chép từ bất kỳ luận văn của học viên nào hay một công trình nghiên cứu nào
Em xin cam đoan những lời khai trên là đúng, mọi thông tin sai lệch em xin hoàn toàn chịu trách nhiệm trước Hội đồng
Thái nguyên, ngày 01 tháng 10 năm 2011
Người cam đoan
Học viên Lê Bá Huỳnh Công
Trang 8CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG THỜI GIAN THỰC
Trong những năm gần đây, các hệ thống điều khiển theo thời gian thực là một trong những lĩnh vực thu hút nhiều sự chú ý trong giới khoa học nghiên cứu về khoa học máy tính Trong đó, vấn đề điều hành thời gian thực và vấn đề lập lịch là đặc biệt quan trọng Một số ứng dụng quan trọng của hệ thống thời
gian thực (RTS) đã và đang được ứng dụng rộng rãi, phổ biến nhiều nơi hiện
nay là những hệ thống thời gian thực ứng dụng điều khiển trong gia đình như: máy giặt, lò sưởi; các dây chuyền sản xuất tự động, rô bốt, điều khiển không lưu, điều khiển các thí nghiệm tự động, truyền thông, điều khiển trong quân sự, điều khiển các qui trình thiết bị công nghiệp và các trạm năng lượng hạt nhân, v.v Thế hệ ứng dụng tiếp theo của hệ thống này sẽ là điều khiển rô bốt có hoạt động giống con người, hệ thống kiểm soát thông minh trong các nhà máy công nghiệp, điều khiển các trạm không gian, thăm dò đại dương, v.v [11] Nội dung trong Chương 1 bao gồm các vấn đề sau:
Các khái niệm cơ sở của hệ thống thời gian thực
Các yêu cầu của hệ thống thời gian thực
Phân tích các ràng buộc thời gian trong hệ thống thời gian thực
1.1 Các khái niệm cơ sở của hệ thống thời gian thực
Định nghĩa cho RTS có nhiều quan niệm của các nhóm khác nhau như nhóm các nhà phát triển phần mềm, nhóm kỹ thuật, nhóm các đại lý cung cấp máy tính, trường phái lý thuyết và các nhà nghiên cứu, v.v [16]
Một hệ thống thời gian thực (RTS) có thể được hiểu như là một mô hình
xử lý mà tính đúng đắn của hệ thống không chỉ phụ thuộc vào kết quả tính toán lôgic mà còn phụ thuộc vào thời gian mà kết quả phát sinh ra [7]
Trang 9Theo từ điển Oxford về máy tính cung cấp đĩnh nghĩa: Một hệ thống tại một
thời điểm cung cấp tín hiệu đầu ra quan trọng Điều này là dĩ nhiên vì tín hiệu đầu vào tương ứng đã được đưa vào trong không gian thiết bị và tín hiệu đầu
ra có liên quan đến sự di chuyển tương ứng đó Thời gian trễ (delay) được bắt đầu từ thời điểm tín hiệu đầu vào được đưa vào đến thời điểm nhận được tín hiệu đầu ra phải đủ nhỏ để có thể chấp nhận được kịp thời
Một định nghĩa khác trên “Journal of Systems and Control Engineering”
(Chuyên đề Ứng dụng thiết kế hệ thống và điều khiển): RTS là hệ thống cung
cấp các phản ứng trả lời chính xác trong một giới hạn thời gian rõ ràng Do đó việc tính toán các phản ứng trả lời vượt quá ranh giới thời gian cho phép khi
đó hiệu quả thực thi bị biến đổi và gây ra kết quả sai lệch
Ngoài ra còn có một số định nghĩa khác như sau:
RTS đọc các tín hiệu đầu vào từ thiết bị (một hệ thống vật lý để tính toán điều khiển như: rô bốt, cửa trượt lối ra vào ở siêu thị, qui trình tự động trong các nhà máy, tín hiệu số ở camera, ) và gởi các tín hiệu điều khiển đến thiết bị tại thời điểm xác định, RTS không chỉ chú ý đến khả năng sẵn sàng hành động của các thiết bị trong một hạn định thời gian, mà còn chú ý đến khả năng của hệ thống máy tính điều khiển [16]
Hệ thống thời gian thực được thiết kế nhằm cho phép đáp ứng (response) lại các yếu tố kích hoạt phát sinh từ các thiết bị phần cứng theo một ràng buộc thời gian xác định Nhìn chung, trong những RTS chỉ có một số công việc được gọi là công việc thời gian thực, các công việc này có một mức độ khẩn
cấp riêng cần phải hoàn tất, ví dụ một tiến trình đang cố gắng điều khiển hoặc giám sát một sự kiện đang xảy ra trong thế giới thực Bởi vì các sự kiện xuất
hiện trong thế giới thực nên tiến trình giám sát sự kiện này phải xử lý theo kịp với những thay đổi của sự kiện Sự thay đổi của sự kiện trong thế giới thực xảy
ra thường rất nhanh, mỗi tiến trình giám sát sự kiện phải thực hiện việc xử lý trong một khoảng thời gian ràng buộc gọi là deadline, khoảng thời gian ràng
Trang 10buộc được xác định bởi thời gian bắt đầu và thời gian hoàn tất công việc Trong thực tế, các yếu tố kích thích xảy ra trong thời gian rất ngắn vào khoảng vài mili giây, thời gian mà hệ thống trả lời lại yếu tố kích thích đó tốt nhất vào khoảng dưới một giây, thường vào khoảng vài chục mili giây, khoảng thời gian này bao gồm thời gian tiếp nhận kích thích, xử lý thông tin và trả lời lại kích thích Một yếu tố khác cần quan tâm trong RTS là những công việc thời gian thực này có tuần hoàn hay không? Công việc thời gian tuần hoàn thì ràng buộc thời gian ấn định theo từng chu kỳ xác định Công việc không tuần hoàn xảy ra với ràng buộc thời gian vào lúc bắt đầu và lúc kết thúc công việc, giới hạn thời gian ràng buộc chỉ được xác định vào lúc bắt đầu công việc Các biến cố kích hoạt công việc không tuần hoàn thường dựa trên kỹ thuật xử lý ngắt của hệ thống phần cứng
Một trong những tiêu chuẩn cho hành động chính xác của RTS đó là tính chính xác lôgic [10], cũng được gọi là sự chính xác đầu vào/đầu ra, chính xác thiết thực và sự chính xác biến đổi Mặc khác, RTS thực yêu cầu cả tính chính xác lôgic lẫn tính chính xác thời gian Tính chính xác lôgic thường thể hiện trong giới hạn đúng đắn đầu ra và đầu vào Tiêu chuẩn về tính chính xác thời gian cũng được gọi là sự chính xác tác động trở lại, có thể nhìn thấy như là sự
mở rộng của tính chính xác lôgic bao gồm sự định hướng mới, tên thời gian thực Phần mềm thời gian thực là một kiểu thiết kế như là một tập hợp những qui trình trao đổi thông điệp hiện tại Trong nhiều trường hợp, có những qui trình thực thi ở trạng thái không đồng bộ để cung cấp sự kiểm tra các thành phần và sự tác động trở lại của các thành phần với các tốc độ khác nhau Qui trình truyền đạt thông điệp còn được dùng để chuyển đổi dữ liệu hoặc điều khiển thông tin
Sự phân tích RTS thành các thành phần là một vấn đề to lớn với các cách trình bày phức tạp Một hướng tiếp cận đó là sự phân tích chức năng mà hệ thống đã được phân rả thành các thành phần với các chức năng tương tự Phân
Trang 11tích cấu trúc là phương pháp phân tích mà các dòng dữ liệu trong hệ thống và các gói quan hệ thực thể diễn tả cấu trúc của dữ liệu là các phương thức cơ bản cho việc phân tích và kết quả rút ra
Về mặt cấu tạo, RTS thường được cấu thành từ các thành tố chính sau [9]:
+ Đồng hồ thời gian thực: Cung cấp thông tin thời gian thực
+ Bộ điều khiển ngắt: Quản lý các biến cố không theo chu kỳ
+ Bộ định biểu: Quản lý các quá trình thực hiện
+ Bộ quản lý tài nguyên: Cung cấp các tài nguyên máy tính
+ Bộ điều khiển thực hiện: Khởi động các tiến trình
Các thành tố trên có thể được phân định là thành phần cứng hay mềm tùy thuộc vào hệ thống và ý nghĩa sử dụng Thông thường, các RTS được kết hợp vào phần cứng có khả năng tốt hơn so với hệ thống phần mềm có chức năng tương ứng và tránh được chi phí quá đắt cho việc tối ưu hóa phần mềm Ngày nay, chi phí phần cứng ngày càng rẻ, chọn lựa ưu tiên phần cứng là một xu hướng chung
Hệ điều hành thời gian thực:
Hệ điều hành thời gian thực (RTOS-Realtime operating system) là hệ điều hành (HĐH) có sự chú trọng giải quyết vấn đề đòi hỏi khắc khe về thời gian cho các thao tác xử lý hoặc dòng dữ liệu Đây là HĐH hiện đại, tinh vi, thời gian xử lý nhanh, phải cho kết quả chính xác trong thời gian bị thúc ép nhanh nhất RTOS thường sử dụng một đồng hồ hệ thống có cho kỳ ngắt nhỏ vào khoảng vài micro giây để thực hiện điều phối các tiến trình
1.2 Yêu cầu của các hệ thống thời gian thực
1.2.1 Những yêu cầu thời gian trong việc trình bày hệ thống thời gian thực
Nét đặc trưng cơ bản quan trọng nhất của hệ thống thời gian thực là sự đòi hỏi để theo kịp môi trường tự trị với sự phản ứng của thuộc tính và thời gian để
Trang 12sự kiện xuất hiện trong môi trường đồng bộ từ thao tác của hệ thống Bởi vậy,
sự tương tác trong môi trường hệ thống, sự phản ứng lại của hệ thống với tác nhân kích thích từ môi trường bên ngoài truyền vào sẽ tăng lên để trả lời lại tác nhân của máy móc, là chủ thể yêu cầu Trong nội dung được đề cập, sự kiện giới hạn sẽ sử dụng cho việc truyền đạt các thực thể không có hiệu lực thời
gian (ví dụ: sự chuyển đến của thông điệp) Những hành động giới hạn đã sử
dụng cho thực thể với một số khoảng thời gian, có thể khởi tạo bởi sự kiện đưa
ra sự thay đổi trong trạng thái của hệ thống Những yêu cầu thời gian có thể phân loại như sau [13]:
1.2.1.1 Thời gian tuần tự
Cấu trúc của thời gian tuần tự có thể được định nghĩa chính xác trong thuật ngữ tuần tự tập hợp của các sự kiện trong sự kết hợp với các mối quan hệ thứ tự
Ví dụ: trong phạm vi cấu trúc thời gian tuần tự chúng ta có thể nói rằng sự kiện (event) A1 trước sự kiện A2 Kết hợp với thứ tự lôgic hoặc lôgic thời gian chúng
ta có thể biểu diễn sự phụ thuộc và các mối quan hệ giữa 2 sự kiện khác nhau Trình tự thời gian là khái niệm định tính của thời gian thực, bởi vì trạng thái về khoảng thời gian giữa các sự kiện không thể có trong phạm vi cấu trúc này
Trang 131.2.1.2 Thời gian quan hệ
Thời gian quan hệ là khái niệm ngầm của thời gian thực xuyên suốt các sự kiện, là quan hệ giữa những sự kiện trong suốt quãng thời gian các hoạt động Mối quan hệ giữa các sự kiện đƣợc mô tả trong thuật ngữ của các mối quan hệ
ƣu tiên và độ dài khoảng thời gian giữa các sự kiện, tính thứ tự có thể đƣợc mô
tả trên giây Cho nên sự kiện đƣợc mô tả không tham chiếu cố định đến một điểm trong thời gian đã đƣợc đƣa ra trong các mối quan hệ giữa chúng Thời gian quan hệ là khái niệm định tính của thời gian thực
Ví dụ: sự kiện re_A1 phản ứng trả lời, đáp ứng sự kiện A1 trong khoảng thời gian nhỏ hơn hoặc bằng 4s, sự kiện A2 xuất hiện sau sự kiện A1 chậm nhất là 5s và sự kiện A2 sau re_A1
1.2.1.3 Thời gian chính xác
Mẫu thời gian này là khái niệm rõ ràng của thời gian thực mà hành vi hệ thống có thể chỉ rõ từng điểm trong thời gian, với độ chính xác để chọn lựa trọng tâm Vì thế trong thời gian chính xác, tất cả các sự kiện hiện tại đều đƣợc kiểm tra điểm tham chiếu cố định và do đó đây là khái niệm định tính của thời gian thực
Hình 1.2 Sơ đồ tuần tự của các sự kiện quan hệ ràng buộc về thời gian
{re_A1-A14s}
{A2-A15s}
Trang 14Ví dụ: sự kiện A n+1 xuất hiện đều đặn sau sự kiện A n 4s
Thời gian thực là một thuật ngữ thời gian trong ý nghĩa vật lý và thời gian đồng hồ có thể xấp xỉ với thời gian thực của đồng hồ bên trong máy tính Trong phương thức xác định hệ thống thời gian thực mili-giây, giây hoặc giờ
có thể được mô tả bởi các ràng buộc thời gian, nhưng một hệ thống đang thực thi thời gian đồng hồ có thể xấp xỉ thời gian thực Vì thế ràng buộc thời gian
mô tả trong ví dụ trên giây có sự chuyển đổi trong thời gian đồng hồ, ví dụ như một tích tắc thời gian, một lần xác định sẽ được thực thi Những lí do cơ sở là khái niệm của thời gian trong máy tính có thể chỉ đạt được từ thời gian mở rộng hoặc thời gian trong máy tính Xấp xỉ thời gian thực có thể ví dụ đạt được
từ thời gian nguyên tử với đồng hồ thời gian của hệ thống thời gian thực đồng
bộ Chia nhỏ những yêu cầu thời gian quan hệ định lượng tương tác trong môi trường hệ thống được cho như sau:
Thời gian trả lời: đây là quan hệ thời gian xuất hiện của các sự kiện và
phản ứng trả lời của nó Các trường hợp thường sử dụng nhất đó là:
- Khoảng thời gian nhanh nhất giữa sự kiện và phản ứng trả lời của nó
Ví dụ 1: sự kiện a tiếp đến là phản ứng trả lời b trong khoảng thời gian 3 giây (yêu cầu đặc trưng sẵn sàng hành động)
- Khoảng thời gian chậm nhất giữa sự kiện và phản ứng trả lời của nó
Trang 15Ví dụ 2: sự kiện a tiếp đến là phản ứng trả lời b, khoảng thời gian nhỏ nhất là 8 giây giữa a và b
- Khoảng thời gian chính xác (Exact) giữa sự kiện và phản ứng trả lời của nó
Ví dụ 3: sự kiện a tiếp đến là phản ứng trả lời b trong khoảng thời gian
chính xác 7 giây (như với sự cài đặt thời gian bấm giờ và thời gian không tính của nó)
Tính thường xuyên: đây là quan hệ xuất hiện của các sự kiện tương tự Các trường hợp thường sử dụng nhất:
- Khoảng thời gian nhanh nhất giữa các sự kiện xuất hiện
Ví dụ 4: xuất hiện liên tục sự kiện a x và a x+1 cách nhau khoảng thời gian lớn nhất là 4 giây
- Khoảng thời gian chậm nhất giữa các sự kiện xuất hiện
Ví dụ 5: xuất hiện liên tục sự kiện a x và a x+1 cách nhau khoảng thời gian nhỏ nhất là 5 giây (kiểu giả định tỉ lệ tác nhân từ môi trường)
- Khoảng thời gian chính xác (Exact) giữa các sự kiện xuất hiện, đây cũng được gọi là tính chu kỳ
Trang 16Ví dụ 6: sự kiện a xuất hiện đều đặn cách nhau khoảng thời gian 2 giây (như với sự lấy mẫu)
Ví dụ 6 là trường hợp điển hình của các sự kiện có tính chu kỳ bởi vì tất
cả các sự kiện đều xuất hiện trong từng khoảng thời gian xác định, vì thế khi thời gian thực sự kiện xuất hiện cũng như một sự kiện được biết, tất cả các sự kiện quá khứ và tương lai có thể có quan hệ với sự kiện kết quả, thì sự kiện kết quả biết rõ tất cả thời gian thực của các sự kiện đó Theo lý thuyết, cấu trúc thời gian chính xác có thể xác định được theo cách này Nhưng trong thực hành một sự kiện luôn có ở trạng thái không ổn định nào đó thì kết quả sẽ tính nhầm N sự kiện từ quá khứ đến tương lai Vì thế 3 ví dụ đầu tiên (ví dụ 1, ví dụ 2,
ví dụ 3) có yêu cầu về thời gian do sự xuất hiện của các sự kiện gây ra các phản ứng trả lời tương ứng, vì vậy thời gian của những phản ứng trả lời chỉ có thể liên quan tới các sự kiện xuất hiện trước đó
Tóm lại, có thể phát biểu rằng sự phát triển hệ thống thời gian thực yêu cầu cần xem xét về khái niệm thời gian áp dụng cho yêu cầu thi hành trên hệ thống Một vấn đề cần làm rõ ràng, ngôn ngữ mô hình là nền tảng sẽ hỗ trợ cho qui trình phát triển và nó cũng hỗ trợ khái niệm thời gian do vậy các yêu cầu về thời gian cũng được mô tả Trong các ứng dụng đồ họa tổng quát hoặc ngôn ngữ mô hình thời gian thực nguyên mẫu nó có thể được mô tả bởi các mối quan hệ sự
Trang 17thời gian thực, như trong những ví dụ từ 1 đến 6 Khi một sự kiện muốn mô tả yêu cầu thời gian chính xác, thời gian thực cần kiểm tra khả năng xuất hiện của các sự kiện và phản ứng trả lời để xác định điểm tham chiếu
Đến nay các yêu cầu về thời gian chỉ dành cho các sự kiện riêng, phản ứng trả lời trực tiếp của chúng và các sự kiện xuất hiện có quan hệ với nhau
Có một số kiểu yêu cầu dành cho hệ thống với một tình huống, mà tình huống
đó xuất hiện chính xác tại một thời điểm và nó không cần thiết trong suốt chu
kỳ sống của hệ thống Ví dụ: sự kiện A xảy ra, sau đó đến phản ứng trả lời B, khoảng thời gian giữa A và B là 5 giây Yêu cầu khoảng thời gian 5 giây chỉ áp
dụng khi sự kiện A có xảy ra Trong suốt chu kỳ sống của hệ thống sự kiện A chỉ xảy ra tại một thời điểm xác định nào đó Những kiểu yêu cầu này được gọi là: yêu cầu ngữ cảnh Yêu cầu ngữ cảnh luôn tùy thuộc vào sự xuất hiện của các sự kiện trước đó Nếu một sự kiện xảy ra mà bắt đầu là một yêu cầu ngữ cảnh, yêu cầu đó phải được thỏa mãn Khi không có sự kiện xảy ra thì khởi tạo yêu cầu ngữ cảnh đó là tầm thường Loại yêu cầu như vậy có thể được gọi là yêu cầu xu hướng sự kiện
Ngoài ra còn có những yêu cầu không phụ thuộc vào ngoại lệ sự kiện nhưng nó tồn tại trong hệ thống trong suốt chu kỳ sống cho đến khi hoàn thành, được gọi là: những yêu cầu chung Một ví dụ về yêu cầu chung tại hệ
thống trạm điều khiển hạt nhân: lò phản ứng sẽ không nổ Đây là một yêu cầu
mà cần phải thỏa mãn trong toàn bộ chu kỳ hoạt động tồn tại của hệ thống trạm điều khiển hạt nhân và không tùy thuộc vào thứ tự trước sau của sự kiện (tình huống) nào, mặt khác có thể có một tai nạn tai họa xuất hiện Tóm lại, có thể phát biểu rằng khoảng thời gian trong ngôn ngữ mô hình tổng quát có thể hỗ trợ cho các qui trình phát triển, nó dùng để mô tả các yêu cầu ngữ cảnh cũng như các yêu cầu tổng quát
Trang 181.2.2 Một số yêu cầu của hệ thống thời gian thực
Các RTS có một số đặc điểm đặc trưng, tuy nhiên không phải tất cả các RTS đều quan tâm đến các điểm đó Thường thì ngôn ngữ lập trình và HĐH cho RTS đã có rất nhiều cung cấp một số điểm đặc trưng hoặc tạo môi trường thuận lợi cho việc thực hiện các đặc điểm đó
1.2.2.1 Hệ thống lớn và phức tạp
Đây là vấn đề chung cho cả lĩnh vực phần mềm, yếu tố phức tạp và tầm
cỡ của hệ thống thường tỉ lệ thuận với nhau Đặc biệt khi mà RTS phải phân chia thời gian hợp lý, sử dụng nhiều thuật toán phức tạp, phải thực hiện lập lịch, đồng bộ, nên độ phức tạp là rất lớn, cả từ các giai đoạn đặt vấn đề, phân tích, thiết kế, tiến hành, kiểm tra, bảo trì
1.2.2.2 Xử lý trên số thực
RTS luôn làm việc trên các thông số trạng thái thực của thiết bị vật lý Việc tính toán trên số thực tốn rất nhiều thời gian xử lý Ngày nay, tốc độ xử lý của máy tính đã rất nhanh, việc xử lý số thực được hỗ trợ ngay từ phần cứng, HĐH và ngôn ngữ lập trình nhưng sử dụng một phương pháp tính toán phù hợp, ít tốn thời gian nhất vẫn là một yêu cầu thực tế
1.2.2.3 Thực sự an toàn và đáng tin cậy
Những hậu quả do sự thiếu an toàn của những hệ thống thông tin nói chung và RTS nói riêng có thể lên đến hàng tỉ đôla, thậm chí gây thiệt hại về tính mạng nhiều người Việc thiết lập một RTS có độ tin cậy cao và an toàn là một yêu cầu hàng đầu, phải có cách lường trước được những lỗi có thể xảy ra
và các biện pháp khắc phục
Trang 191.2.2.4 Giao tiếp trực tiếp với thiết bị phần cứng
Các thiết bị vật lý giao tiếp trực tiếp thường là các bộ phận cảm biến, các loại đồng hồ trạng thái, nhiệt kế, các thiết bị điện, điện tử, bán dẫn Các thiết bị này có khả năng phát sinh hoặc tiếp nhận các tín hiệu, phát sinh các ngắt được nhận biết bởi máy tính Thông qua các tín hiệu, các ngắt mà máy tính có thể kiểm soát các trạng thái hoặc điều khiển sự hoạt động của thiết bị
1.2.2.5 Thực hiện trên môi trường và ngôn ngữ lập trình hiệu quả
Khác với các hệ thống khác, RTS có yêu cầu thực thi nhanh và hiệu quả
Vì vậy việc sử dụng một môi trường không hợp lý hay một ngôn ngữ lập trình
bình thường thì khó mà có thể đạt được yêu cầu, ví dụ : Hệ thống xử lý thời gian có độ chia cho đến micro giây thì không thể thực hiện trên ngôn ngữ lập trình chỉ hỗ trợ đến mili giây
1.2.2.6 Người sử dụng điều khiển
Trong các hệ thống kinh điển, thường thì người sử dụng ra yêu cầu và chờ nhận kết quả Trong những RTS còn yêu cầu người sử dụng phải nắm vững về hệ thống nền (HĐH) Để kết quả công việc thành công tốt, người sử dụng có thể can thiệp trực tiếp đến từng tiến trình, từng tiểu trình, cho phép, cấp quyền ưu tiên đến từng công việc nhằm tạo sự thông suốt trong hệ thống, tránh sự tắt nghẽn
1.3 Phân tích các ràng buộc thời gian trong hệ thống thời gian thực
1.3.1 Quan niệm thời gian trong hệ thống thời gian thực
1.3.1.1 Đồng hồ hệ thống
Thời gian hệ thống được báo bằng một đồng hồ gọi là đồng hồ hệ thống Trong môi trường có nhiều bộ vi xử lý, có thể tồn tại nhiều đồng hồ, thì những đồng hồ trên các vi xử lý riêng phải được đồng bộ với nhau
Trang 20Có thể biểu diễn mức độ chính xác của đồng hồ hệ thống qua hàm số sau:
C
(trong đó: t* đối với hệ thống nhiều vi xử lý)
Đồng hồ được gọi là chính xác vào thời điểm ti nếu:
t i t i
C
1.3.1.2 Các loại đồng hồ hệ thống
Đơn giản nhất là hệ thống chỉ có một đồng hồ chủ (server lock), yêu cầu
độ chính xác và tin cậy rất cao Loại đồng hồ chủ giá thành rất đắt
Một loại khác gồm một đồng hồ chính (master clock) đồng bộ với nhiều đồng hồ phụ (slave clock) theo kiểu “polling” (kiểm soát vòng), tất cả các đồng hồ có cùng độ chính xác, nếu đồng hồ chính bị hỏng thì một trong những đồng hồ phụ sẽ thay thế
Đối với hệ thống phân tán, đồng hồ hệ thống bao gồm tất cả các đồng hồ phân tán và được đồng bộ với nhau theo cùng một thuật toán
1.3.1.3 Quan niệm về rời rạc thời gian
Trong quan niệm của RTS, thời gian được xem như là một yếu tố rời rạc Đây là một khía cạnh rất phức tạp và lý thú
(1) Trong các HĐH kinh điển, có một đồng hồ quản lý thời gian đồng bộ giữa các tiến trình Đồng hồ này phát sinh ra ngắt báo hiệu cho hệ thống theo chu kỳ Chu kỳ này có thể được điều chỉnh nhưng không quá nhanh hay quá chậm làm ảnh hưởng đến thời gian thực thi các tiến trình và thường là vào khoảng vài chục mili giây Chính chu kỳ này đã chia thời gian ra thành các mảnh đủ nhỏ
Trang 21(2) Còn trong các hệ thống điều khiển thời gian thực, hệ thống sử dụng một đồng hồ có khả năng lập trình điều phối ngắt theo một chu kỳ đủ nhỏ, hợp
lý, chu kỳ ở hệ thống này vào khoảng vài micro giây
Trong thực tế thì các hệ thống thời gian thực thường dựa trên cách tiếp cận kết hợp giữa hai quan niệm trên, thường thì quan điểm (1) là nền tảng có
sự hỗ trợ của quan điểm (2)
1.3.1.4 Ràng buộc về thời gian
Với mỗi yếu tố kích thích, hệ thống tiếp nhận vào một thời điểm t0, hệ thống tiến hành cấp phát tài nguyên, thực hiện các xử lý tính toán và hoàn tất việc trả lời vào thời điểm tk khác sau đó
Một ràng buộc tối thiểu có thể được định nghĩa qua bộ ba sau:
Trong đó:
ID: Chỉ số của tiến trình
Tbegin(condition1): Thời gian bắt đầu tiến trình
Tend(condition2): Thời gian tiến trình hoàn tất xử lý
Đây là một ràng buộc đơn giản đối với tiến trình trong hệ thống thời gian thực, ràng buộc trên không có tiền điều kiện và xác định được khoảng thời
gian mà tiến trình phải thi hành (Tbegin - Tend)
Một ràng buộc khác, khắc khe hơn, phụ thuộc vào hệ thống và thời gian xác định tài nguyên cần cấp phát, cũng như quá trình giải phóng tài nguyên sau khi tiến trình sử dụng được xác định như sau:
Trong đó:
ID: chỉ số của tiến trình
(ID, Tbegin(condition1), Tend(condition2)
(ID, Tbegin(condition1),CID,FID, Tend(condition2))dC(t)dt t i
Trang 22Tbegin(condition1): Thời gian bắt đầu tiến trình
Tend(condition2): Thời gian tiến trình hoàn tất xử lý
CID: Thời gian ước tính của tiến trình (số mẫu thời gian)
FID: Tần số mẫu thời gian
Mỗi chỉ thị cơ sở có một thời gian thực thi cố định phụ thuộc vào phần cứng
ra (thường thì ảnh hưởng của các tác hại không đáng kể)
Ví dụ: + Luồng dữ liệu audio, nếu một gói dữ liệu bị chậm hoặc bị mất, chất lượng của tín hiệu sẽ bị giảm nhưng vẫn có thể chấp nhận được
+ Hệ thống máy rút tiền tự động ở ngân hàng, hệ thống hoạt động khi sự kiện bắt đầu với hành động đưa thẻ vào khe máy của người sử dụng Phản ứng trả lời của máy sẽ được xác định trong giới hạn trả lời trung bình, ví
dụ là 15 giây Thời gian trả lời thật xuất hiện sẽ thay đổi tùy thuộc vào thời điểm trong ngày
Đối với hệ thống thời gian thực cứng: người ta quan tâm khắc khe đến các hậu quả do sự vi phạm giới hạn thời gian gây ra, vì những hậu quả này có thể
là rất tồi tệ, ảnh hưởng hết sức nghiêm trọng lên hoạt động chung, gây thiệt hại
về vật chất hoặc có những ảnh hưởng xấu đến đời sống con người
Trang 23Ví dụ cho hệ thống thời gian thực cứng:
+ Hệ thống điều khiển không lưu, một phân phối đường bay cho thời gian cất cánh, hạ cánh không hợp lý và không đúng lúc có thể gây ra tai nạn máy bay mà thảm họa của nó khó mà lường trước được
+ Việc kiểm tra nhiệt độ ở bộ phận điều khiển chỉnh qui trình thiết
bị hóa học, ví dụ cách khoảng 10 mili giây nhiệt độ của thiết bị được đọc, sự tính toán điều chỉnh được đưa ra và giá trị đầu ra được gởi đến bộ phận quản
lí điều khiển nhiệt độ Công việc kiểm tra và xứ lý phải luôn được thỏa mãn
Như vậy, ràng buộc thời gian thực cứng được mô tả chặc chẽ hơn trong thực thi của hệ thống so với thời gian thực mềm, do đó các hệ thống cũng khó khăn hơn khi đưa ra để phát triển phần cứng và phần mềm Hầu hết các RTS bao gồm tổng hợp các hoạt động đó là khóa cơ bản hoặc sự tương tác cơ bản của cả ràng buộc thời gian cứng và thời gian mềm
Trong các hệ thống thời gian thực, các thao tác phải được xác định biên bằng các thời điểm tác động của các ngắt thời gian, nghĩa là có thể đoán trước được trường hợp xấu nhất trong việc đáp ứng thực tế có thể có, thực tế thì có nhiều RTS bao gồm cả hai loại mềm (Soft) và cứng (Hard) Trong cả hai loại trên, máy tính thường can thiệp trực tiếp hoặc gián tiếp đến các thiết bị vật lý
để kiểm soát cũng như điều khiển sự hoạt động của thiết bị Đứng trên góc độ phân tích, người ta thường chia các RTS ra làm hai loại sau:
Hệ thống nhúng: Bộ vi xử lý điều khiển là một phần trong toàn bộ thiết bị, nó được sản xuất trọn gói từ yếu tố cứng đến yếu tố mềm từ nhà máy, người sử dụng không biết về chi tiết của nó và chỉ sử dụng thông qua các nút điều khiển, các bảng số Với chủng loại hệ thống này, ta sẽ không thấy được những thiết bị như trong máy tính bình thường như bàn phím, màn hình, mà thay vào đó là các nút điều khiển, các bảng số, đèn
tín hiệu hay các màn hình chuyên dụng đặc trưng cho từng hệ thống Máy giặt là một ví dụ, người sử dụng chỉ việc bấm nút chọn chương trình giặt,
Trang 24xem kết quả qua hệ thống đèn hiệu, Bộ vi xủa lý trong hệ thống nhúng
đã được lập trình trước và gắn chặt vào ngay từ khi sản xuất và không thể lập trình lại Những chương trình như vậy chạy độc lập, không có sự giao tiếp với hệ điều hành cũng như không cho phép người sử dụng can thiệp vào
Loại thứ hai là bao gồm những hệ thống có sự can thiệp của máy tính thông thường Thông qua máy tính ta hoàn toàn có thể kiểm soát cũng như điều khiển mọi hoạt động của thiết bị phần cứng của hệ thống Những chương trình điều khiển kiểu dạng trên có rất nhiều loại, phục vụ cho nhiều mục đích khác nhau và có thể được viết lại cho phù hợp với yêu cầu thực tế Hiển nhiên loại hệ thống như vậy hoạt động được phải cần một HĐH điều khiển máy tính, HĐH phải có khả năng nhận biết được thiết bị phần cứng, có khả năng hoàn tất công việc trong giới hạn thời gian nghiêm ngặt và phải là HĐH hỗ trợ xử lý thời gian thực
Trang 25CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG THỜI GIAN THỰC VỚI UML
Nội dung chính chương 2 sẽ giới thiệu khái quát về các cấu trúc của mô hình tĩnh và mô hình động của ngôn ngữ mô hình hợp nhất UML, áp dụng những sơ đồ để thiết kế mô hình doanh nghiệp, cũng như đáp ứng được những ràng buộc khắc khe về thời gian, tuần tự thông điệp để thiết kế mô hình thời gian thực
Giới thiệu UML, yêu cầu thực tế và khả năng đáp ứng của UML
Các thành phần của UML
Các giai đoạn phát triển phần mềm với UML
Ứng dụng UML để phân tích thiết kế hệ thống thời gian thực
2.1 Giới thiệu UML
Những năm đầu của thập kỷ 90 có rất nhiều phương pháp phân tích, thiết kế
hệ thống hướng đối tượng và cùng với chúng là các ký hiệu riêng cho từng phương pháp Số lượng các phương pháp trong khoảng từ 10 đã lên đến gần 50 trong những năm từ 1989 đến 1994 Ba phương pháp phổ biến nhất là OMT [James Rumbaugh], Booch91 [Grady Booch] và OOSE [Ivar Jacobson] Mỗi phương pháp đều có những điểm mạnh và yếu Như OMT mạnh trong phân tích
và yếu ở khâu thiết kế, Booch91 thì mạnh ở thiết kế và yếu ở phân tích OOSE mạnh ở phân tích các ứng xử, đáp ứng của hệ thống mà yếu trong các khâu khác
Do các phương pháp chưa hoàn thiện nên người dùng rất phân vân trong việc chọn ra một phương pháp phù hợp nhất để giải quyết bài toán của họ Hơn nữa, việc các ký hiệu khác nhau của các phương pháp đã gây ra những sự mập
mờ, nhầm lẫn khi mà một ký hiệu có thể mang những ý nghĩa khác nhau trong mỗi phương pháp Ví dụ như một hình tròn được tô đen biểu hiện một bội số
Trang 26(multiplicity) trong OMT, lại là một kết hợp (aggregation) trong Booch Thời
kỳ này còn được biết đến với tên gọi là cuộc chiến giữa các phương pháp Khoảng đầu năm 94, Booch đã cải tiến phương pháp của mình trong đó có ứng dụng những ưu điểm của các phương pháp của Rumbaugh và Jacobson Tương
tự Rumbaugh cũng cho đăng một loạt các bài báo được biết đến với tên gọi phương pháp OMT-2 cũng sử dụng nhiều ưu điểm của phương pháp của Booch Các phương pháp đã bắt đầu hợp nhất, nhưng các kí hiệu sử dụng ở các phương pháp vẫn còn nhiều điểm khác biệt
Cuộc chiến này chỉ kết thúc khi có sự ra đời của UML Đó là do có sự hợp nhất các cách kí hiệu của Booch, OMT và Objectory cũng như các ý tưởng tốt nhất của một số phương pháp khác như hình vẽ sau:
Bằng cách hợp nhất các kí hiệu sử dụng trong khi phân tích, thiết kế của các phương pháp đó, UML cung cấp một nền tảng chuẩn trong việc phân tích thiết kế Có nghĩa là các nhà phát triển vẫn có thể tiến hành theo phương pháp
mà họ đang sử dụng hoặc là có thể tiến hành theo một phương pháp tổng hợp hơn (do thêm vào những bước ưu điểm của từng phương pháp) Nhưng điều
Hình 2.1 Xây dựng hợp nhất các kí hiệu vào trong mô hình UML
Trang 27quan trọng là các ký hiệu giờ đây đã thống nhất và mỗi ký hiệu chuẩn của tổ chức OMG vào tháng 7-1997
UML [2,3,6] là một ngôn ngữ đặc tả, trực quan, cấu trúc và sưu liệu để tạo
ra các hệ thống phần mềm, cũng như các mô hình doanh nghiệp và các hệ thống phần mềm khác UML mô tả một tập hợp thực hành thiết kế tốt nhất đã được chứng minh thành công trong các mô hình hệ thống lớn và phức tạp UML cung cấp cho các nhà phân tích thiết kế các hệ thống hướng đối tượng cách hình dung ra những hệ thống phần mềm, mô hình hóa các tổ chức nghiệp vụ sử dụng các hệ thống phần mềm UML là hệ ký hiệu lập mô hình chuẩn công nghiệp cho các hệ thống hướng đối tượng và là nền tảng hàng đầu
để nhanh chóng phát triển ứng dụng UML được sử dụng để hiển thị, đặc tả, tổ chức, xây dựng và làm tài liệu các vật phẩm của quá trình phát triển phần mềm hướng đối tượng, đặc biệt là phân tích, thiết kế dưới dạng các báo cáo, biểu đồ, bản mẫu hay các trang Web, v.v
2.1.1 Yêu cầu thực tế
Trong thế giới luôn biến động của các ứng dụng hướng đối tượng thì việc phát triển và bảo trì các ứng dụng có chất lượng cao trong một khoảng thời gian hợp lý ngày càng trở nên khó khăn hơn Một tổ chức phát triển phần mềm thành công là tổ chức xây dựng được các phần mềm có chất lượng, thoả mãn được mọi yêu cầu của khách hàng
Mô hình hóa là cách xem xét một bài toán thông qua việc sử dụng các mô hình Mô hình dùng để hiểu rõ bài toán, trao đổi thông tin giữa những người liên quan như khách hàng, chuyên gia, người phân tích, người thiết kế Mô hình giúp cho việc xác định các yêu cầu tốt hơn, thiết kế rõ ràng hơn và khả năng bảo trì hệ thống cao hơn
Hiện nay hầu hết các CASE tools đều có hỗ trợ UML, do đó việc tìm hiểu ngôn ngữ UML trước hết giúp tiếp cận với ngôn ngữ mô hình hóa tiên tiến,
Trang 28nắm bắt và sử dụng một số CASE tools hiện tại và từng bước xây dựng CASE tools đặc thù hỗ trợ cho việc xây dựng và phát triển phần mềm sau này
Mô hình là sự trừu tượng hóa, mô tả mặt bản chất của một vấn đề hoặc một cấu trúc phức tạp bằng cách loại bỏ những chi tiết không quan trọng, khiến cho bài toán trở nên dễ hiểu và dễ nắm bắt hơn Trừu tượng hóa là một khả năng cơ bản của con người trong việc giải quyết các vấn đề phức tạp Các
kỹ sư, kiến trúc sư, các nghệ sĩ đã từng xây dựng những mô hình từ hàng nghìn năm nay để thử các thiết kế của họ trước khi thực hiện chúng Việc phát triển các hệ thống phần mềm cũng không ngoại lệ Để xây dựng một hệ thống phức tạp, những người phát triển phải trừu tượng hóa những khía cạnh (View) khác nhau của hệ thống, xây dựng các mô hình bằng cách sử dụng các kí hiệu một cách rõ ràng, cẩn thận, kiểm tra xem các mô hình đã thoả mãn các yêu cầu của
hệ thống chưa và dần dần thêm vào các chi tiết để có thể chuyển đổi từ mô hình sang một cài đặt cụ thể
2.1.2 Mục đích của UML
Chúng ta xây dựng mô hình của những hệ thống phức tạp bởi vì chúng ta không thể lĩnh hội một lúc toàn bộ hệ thống đó Hệ thống càng phức tạp thì việc xây dựng mô hình càng quan trọng Xây dựng mô hình cho phép người thiết kế thấy được bức tranh tổng quan của hệ thống, thấy được các thành phần của hệ thống tương tác với nhau như thế nào hơn là việc sa lầy vào chi tiết bên trong của các thành phần đó Việc lập mô hình không chỉ dành cho các hệ thống lớn Khi xây dựng mô hình trong UML chúng ta sẽ đạt được các mục đích sau:
Mô hình được các hệ thống (không chỉ hệ thống phần mềm) và sử dụng được tất cả các khái niệm hướng đối tượng một cách thống nhất
Cho phép đặc tả, hỗ trợ để đặc tả tường minh (trực quan) mối quan hệ giữa các khái niệm cơ bản trong hệ thống, đồng thời mô tả
Trang 29phép mô tả được cả mô hình tĩnh lẫn mô hình động một cách đầy đủ
và trực quan
Tận dụng được những khả năng sử dụng lại và kế thừa ở phạm vi diện rộng để xây dựng được những hệ thống phức tạp và nhạy cảm như: các hệ thống động, các hệ thống thời gian thực,
Tạo ra những ngôn ngữ mô hình hóa sử dụng được cho cả người lẫn máy tính
Ngoài ra còn có những mục đích sau:
Đưa ra cho người sử dụng một công cụ sẵn sàng để dùng, một ngôn ngữ mô hình trực quan diễn cảm để phát triển và thay đổi những mô hình đầy ý nghĩa
Cung cấp những đặc tính kỹ thuật mở rộng và chuyên môn hóa để
mở rộng những khái niệm cốt lõi
Hỗ trợ những đặc tả độc lập với các ngôn ngữ lập trình riêng và qui trình phát triển
Cung cấp nội dung cơ bản để hiểu được ngôn ngữ mô hình
Khuyến khích sự phát triển thị trường những công cụ đối tượng
Hỗ trợ những khái niệm phát triển mức cao hơn như: công nghệ thành phần, xử lý phân tán, cơ cấu và khả năng thực thi, các mối cộng tác và những kiểu mô hình
Kết hợp thực hành tốt nhất
Thông qua việc mô hình hóa, chúng ta thu hẹp bài toán mà chúng ta đang nghiên cứu bằng cách chỉ tập trung vào một khía cạnh tại một thời điểm Điều này cũng giống như phương pháp “chia để trị” mà Edsger Dijkstra đã đưa ra:
“Giải quyết một vấn đề khó bằng cách chia nó thành những bài toán nhỏ hơn
mà bạn có thể giải quyết được.”
Trang 30Mô hình hóa là việc đơn giản hóa thực tế, loại bỏ những điểm thứ yếu, tuy nhiên ta phải chắc chắn rằng không bỏ sót một chi tiết quan trọng nào
Tùy thuộc vào đặc điểm tự nhiên của hệ thống, mỗi mô hình có thể tập trung vào những mặt khác nhau của hệ thống Như hệ thống tập trung vào dữ liệu thì các mô hình về phần thiết kế tĩnh của hệ thống sẽ được chú ý hơn Trong hệ thống giao diện người dùng thì phần tĩnh và động của UC sẽ là quan trọng Trong hệ thống thời gian thực, các tiến trình động là quan trọng Cuối cùng, trong hệ thống phân tán dựa trên cở sở Web thì các mô hình về thực thi
và triển khai là quan trọng nhất
2.1.3 Các thành phần của UML
2.1.3.1 Mô hình cấu trúc trong UML
Mô hình cấu trúc là một cách thức mô tả dữ liệu của hệ thống đã được sử
dụng và tạo ra, ví dụ: con người, nơi ở, hoặc những thông tin gì đó thu được và chúng có quan hệ với nhau Mô hình cấu trúc được đưa vào sử dụng ở qui trình
lặp lại trong những mô hình phát triển nhiều chi tiết Mục đích chính của mô hình cấu trúc là khởi tạo từ vựng mà đã được dùng ở nhà phân tích và người sử dụng Mô hình cấu trúc mô tả những sự vật, quan niệm hoặc khái niệm mà các đối tượng đó thuộc trong phạm vi bài toán ứng dụng
UML sẽ cho ta biết cách tạo ra và đọc hiểu được một mô hình được cấu trúc tốt, nhưng nó không cho ta biết những mô hình nào nên tạo ra và khi nào tạo ra chúng Đó là nhiệm vụ của quy trình phát triển phần mềm
(a) Lớp (Class)
(i) Lớp, thuộc tính và phương thức
Là một tập hợp các đối tượng có cùng một tập thuộc tính, các hành vi, các mối quan hệ với những đối tượng khác Lớp chính là cơ chế được sử dụng để phân loại các đối tượng của một hệ thống Dưới đây là ký hiệu và biểu tượng biểu diễn lớp trong UML
Trang 31Ví dụ: ký hiệu và biểu tượng lớp Nhanvien trên UML
(ii) Các mối quan hệ giữa các lớp
Quan hệ là sự kết nối ngữ nghĩa giữa các lớp đối tƣợng, trong đó thể hiện mối liên quan về các thuộc tính, các hành vi của chúng với nhau trong hệ thống Để một đối tƣợng gởi thông điệp đến một đối tƣợng khác, thì chúng phải liên quan với nhau theo một vài quan hệ/cách thức nào đó Giữa các lớp
có năm quan hệ cơ bản:
Quan hệ tổng quát hóa, kế thừa
+employer
+employee
Trang 32Tổng quát hóa và chuyên biệt hóa là hai cách nhìn dưới lên và trên xuống
về sự phân cấp các lớp, mô tả khả năng quản lý cấp độ phức tạp của hệ thống bằng cách trừu tượng hóa các lớp
Tổng quát hóa đi từ các lớp dưới lên sau đó hình thành lớp tổng quát (lớp trên, lớp cha), tức là cây cấu trúc các lớp từ lá đến gốc
Chuyên biệt hóa là quá trình ngược lại của tổng quát hóa, nó cho phép tạo
ra các lớp dưới (lớp con) khác nhau của lớp cha
Quan hệ phụ thuộc
Quan hệ phụ thuộc là một mối quan hệ liên kết giữa hai phần tử trong mô hình, trong đó thể hiện sự thay đổi trong một phần tử sẽ kéo theo sự thay đổi của phần tử kia Quan hệ phụ thuộc thường là quan hệ một chiều, thể hiện một lớp phụ thuộc vào lớp khác
Hiện thực hóa
Quan hệ hiện thực hóa thể hiện sự kết nối giữa các lớp và giao diện Quan
hệ này thường được sử dụng với các giao diện và những lớp làm nhiệm vụ cài đặt các dịch vụ (phương thức) đã được khai báo trong các giao diện
(iii) Các phần tử của biểu đồ lớp
Biểu đồ lớp là mô tình tĩnh thể hiện các lớp và mối quan hệ giữa các lớp trong hệ thống với nhau Biểu đồ lớp mô tả các lớp bao gồm cả hành vi và trạng thái của chúng với những mối quan hệ giữa các lớp Biểu đồ lớp giúp người phát triển phần mềm quan sát và lập kế hoạch cấu trúc hệ thống trước khi lập trình Nó đảm bảo rằng hệ thống được thiết kế tốt ngay từ đầu
Trang 33 Lớp thông thường
Lớp tham số hóa là lớp được sử dụng để tạo ra một họ các lớp khác, nó thể hiện quyết định thiết kế về các giao thức trao đổi giữa các lớp Lớp tham số hóa chủ yếu được sử dụng trong mô hình cài đặt
Lớp hiện thực là loại lớp tham số hóa mà đối số của nó là một kiểu trị cụ thể, như vậy các lớp tham số hóa là khuôn để tạo ra các lớp hiện thực
Lớp tiện ích là tập hợp các thao tác được sử dụng nhiều nơi trong hệ thống, chúng được tổ chức thành một lớp để các lớp khác cùng sử dụng
Giao diện là tập những thao tác quan sát được từ bên ngoài của một lớp và/hoặc một thành phần và không có nội dung cài đặt của riêng lớp đó
Siêu lớp là lớp để tạo ra các lớp khác, nghĩa là thể hiện của nó là lớp chứ không phải là đối tượng
(c) Thành phần
Thành phần là biểu diễn vật lý của mã nguồn Trong hệ thống ta sẽ thấy các kiểu khác nhau của thành phần như các thành phần COM+ hay JavaBeans
Tên ca sử dụng
Trang 34cũng như là các thành phần như các tập tin mã nguồn, các tập tin nhị phân tạo
ra trong quá trình phát triển hệ thống
(d) Nút
Nút là thể hiện một thành phần vật lý như là một máy tính hay một thiết bị phần cứng
2.1.3.2 Mô hình hành vi
(a) Biểu đồ tương tác
Trong UML có hai loại biểu đồ được xếp vào loại biểu đồ tương tác là biểu đồ tuần tự và biểu đồ cộng tác Biểu đồ lớp dùng để mô hình cấu trúc tĩnh của hệ thống; còn biểu đồ tương tác dùng để mô hình các khía cạnh động của
hệ thống Biểu đồ tương tác biểu diễn cách tương tác giữa các đối tượng để thực hiện một số chức năng ở mức cao mà một đối tượng độc lập không thể thực hiện được Biểu đồ cộng tác biểu diễn sự tương tác trong ngữ cảnh của các vai trò lớp tham gia vào tương tác và biểu diễn mối quan hệ cấu trúc giữa các lớp bằng cách dùng các vai trò kết hợp Biểu đồ tuần tự được dùng để biểu diễn sự tương tác giống như biểu đồ cộng tác, nhưng nhấn mạnh tính thứ tự của thông điệp theo thời gian
Trang 35điệp, nó nhấn mạnh tính thời gian của hành động giữa các tập đối tượng, vì vậy
nó hỗ trợ hiểu biết chính xác đặc tả thời gian thực và các UC phức tạp
Biểu đồ còn là phương tiện biểu diễn tương tác dưới dạng hình ảnh, biểu
đồ tuần tự có hai đặc điểm chính: Mô tả mối quan hệ cấu trúc giữa các vai trò lớp hoặc giữa các đối tượng dưới dạng vai trò kết hợp hoặc liên kết nhằm phản ánh cấu trúc của biểu đồ lớp và mô tả thứ tự của tương tác bằng cách đánh số thứ tự các thông điệp Các biểu đồ tuần tự biểu diễn một số thông tin tương tự, nhưng không phải tất cả Chúng biểu diễn các thể hiện đóng vai trò được định nghĩa trong cộng tác; chúng không biểu diễn các quan hệ cấu trúc giữa các đối tượng mà biểu diễn thứ tự của tương tác một cách trực quan bằng cách dùng trục đứng của biểu đồ để biểu diễn thời gian
Các thành phần của biểu đồ tuần tự
Biểu đồ trình tự mô tả sự trao đổi thông điệp giữa các đối tượng trình tự theo thời gian, thông điệp được gửi và nhận bởi các đối tượng đang hoạt động trong hệ thống Biểu đồ trình tự được thể hiện theo hai trục:
- Trục dọc trên xuống chỉ thời gian xảy ra các sự kiện, hay sự truyền
thông điệp, được biểu diễn bằng các đường gạch - gạch thẳng đứng bắt đầu từ đỉnh đến đáy của biểu đồ, đó là sự tồn tại của đối tượng trong chuỗi tương tác Trong khoảng thời gian này, đối tượng được thực thể hóa, sẵn sàng để gửi và nhận thông điệp
- Trục ngang từ trái qua phải là dãy các đối tượng tham gia vào tham gia vào
việc trao đổi các thông điệp với nhau theo chiều ngang, có thể có cả các tác nhân
Đối tượng được biểu diễn bằng hình chữ nhật trong đó có tên đối tượng cụ thể và/hoặc tên lớp cùng được gạch dưới (hoặc tên lớp được gạch dưới biểu diễn cho một đối tượng bất kỳ của lớp đó)
Trang 36: Nguoigoi : Hethong : Nguoinghe
1: nhac tai nghe
4: dat tai nghe xuong 5: dat tai nghe xuong
Hình 2.2 Sơ đồ tuần tự mô tả ca sử dụng “Gọi điện thoại”
Biểu đồ trình tự được đọc từ trên xuống dưới, từ trái sang phải Thứ tự
các đối tượng trong biểu đồ phải được sắp xếp sao cho đơn giản nhất có thể để
dễ quan sát Thời gian thực hiện một thông điệp của một đối tượng được biểu
diễn bằng hình chữ nhật hẹp dọc theo trục thẳng đứng của đối tượng đó
Mỗi thông điệp đều có tên gọi thể hiện được ý nghĩa của thông tin cần gửi
và các tham số về dữ liệu liên quan, được ghi kèm với mũi tên ký hiệu tương ứng cho kiểu thông điệp (loại đơn, được đồng bộ hoá hay dị bộ)
Quan sát biểu đồ tuần tự mô tả UC “Gọi điện thoại” Hình 2.2
Hai tác nhân là NguoiGoi (Người gọi) và NguoiNghe (người nghe) Hệ thống nhận được các sự kiện vào được ký hiệu là các lời gọi hàm: nhac tai nghe (nhấc tai nghe), quay so (quay số), tra loi dien thoai (trả lời điện thoại) và dat tai nghe xuong (đặt tai nghe xuống)
Trình tự của các sự kiện có thể giải thích như sau: NguoiGoi nhấc tai nghe, quay số và đợi tín hiệu trả lời, NguoiNghe nhận tín hiệu và trả lời; NguoiGoi và NguoiNghe trao đổi thông tin cho nhau, UC “Gọi điện thoại” sẽ kết thúc khi Nguoi goi hoặc NguoiNghe đặt tai nghe xuống
Trang 37
Biểu đồ cộng tác
Biểu đồ cộng tác tương tự như biểu đồ tuần tự, về cơ bản nó cũng cung cấp hướng nhìn động của hệ thống hướng đối tượng Một biểu đồ cộng tác cũng là một biểu đồ đối tượng thể hiện những mối quan hệ chuyển nhận thông điệp, nó được sử dụng để diễn tả mô hình qui trình như là một phần hoạt động trọng tâm của các lớp cộng tác [10]
Các biểu đồ cộng tác cũng nêu những thông tin tương tự như các biểu đồ tuần tự, nhưng nó nhấn mạnh đến các luồng thông điệp từ tập hợp của đối tượng trong khi đó trọng tâm của các biểu đồ tuần tự là thứ tự các thông điệp gởi nhận, bởi vậy để nắm được khái quát sự tương tác giữa các đối tượng chúng ta nên sử dụng biểu đồ cộng tác; để nắm được thời gian chuyển nhận thông điệp nên sử dụng biểu đồ tuần tự Trong một vài trường hợp, sẽ cần sử dụng cả hai loại biểu đồ để nắm bắt chính xác khía cạnh động của hệ thống
Hình 2.3 Biểu đồ cộng tác UC “Gọi điện thoại”, biểu đồ đưa ra thông tin tương
tự biểu đồ Hình 2.2
(b) Biểu đồ trạng thái
Một công cụ tương đối mạnh mẽ trong lĩnh vực thiết kế RTS là dùng biểu
đồ trạng thái Biểu đồ trạng thái mô tả các trạng thái cũng như quá trình biến đổi giữa các trạng thái đó trong một hệ thống cùng với các sự kiện được kích hoạt, các điều kiện ràng buộc
Hình 2.3 Biểu đồ cộng tác mô tả hoạt động “Gọi điện thoại”
Trang 38Biểu đồ trạng thái cho phép nhìn hệ thống dưới những mức độ chi tiết khác nhau Biểu đồ trạng thái có thể được phân rã xuống mức trạng thái thấp hơn hoặc là liên kết với mức trạng thái cao hơn, sự kết hợp này cho phép nhìn thấy giao tiếp giữa các lớp trạng thái khác nhau trong hệ thống
Biểu đồ trạng thái giống như bản thiết kế chi tiết những hành vi động có thể xảy ra trong hệ thống, do vậy nó giúp đọc hiểu và nhanh chóng nắm bắt được quá trình hoạt động của từng đối tượng trong UC, phát huy tính nhất quán trong làm việc nhóm cũng như tái sử dụng hệ thống có sẵn
Biểu đồ trạng thái thể hiện chu kỳ hoạt động của đối tượng, các hệ thống con và của cả hệ thống [2] Biểu đồ trạng thái mô tả:
Các trạng thái: mà các đối tượng có thể có
Các sự kiện: các thông điệp nhận được, các lỗi có thể xuất hiện, điều kiện nào đó có thể trở thành đúng (true), khoảng thời gian đã qua, v.v
tác động lên trạng thái để làm biến đổi trạng thái
Biểu đồ này là giải pháp tốt để mô hình hoá hành vi động của các lớp đối tượng Trong một dự án, không nhất thiết phải tạo ra các biểu đồ trạng thái cho tất cả các lớp Tuy nhiên, đối với những lớp có nhiều hành vi động, có nhiều trạng thái hoạt động khác nhau thì biểu đồ trạng thái là hữu ích, giúp chúng ta hiểu rõ hệ thống hơn
Hình 2.4 Minh họa các trạng thái trong lớp “Hethong”
tro chuyen
nhan so goi
entry/ nhanso
[ nguoi nghe nhac may ]
[ nhan so khong dung, nguoi nghe khong nhac may ]
ket thuc
exit/ dat tai nghe xuong
Trang 392.1.4 Kiến trúc của hệ thống
Khi xem xét một hệ thống, chúng ta cần xây dựng các mô hình từ những hướng nhìn (View - khía cạnh) khác nhau, xuất phát từ thực tế là những người làm việc với hệ thống, với các vai trò khác nhau sẽ nhìn hệ thống từ những khía cạnh khác nhau
UML xét hệ thống trên cả 5 khía cạnh:
2.1.4.1 Quan sát UC
Bao gồm các UC mô tả ứng xử của hệ thống theo cách nhìn nhận của người dùng, người phân tích hệ thống Nó không đưa ra cách cấu trúc của hệ thống phần mềm, nó chỉ dùng để nhìn nhận một cách tổng quát những gì mà hệ thống sẽ cung cấp, thông qua đó người dùng có thể kiểm tra xem các yêu cầu của mình đã được đáp ứng đầy đủ hay chưa hoặc có chức năng nào của hệ thống là không cần thiết Biểu đồ dùng đến là biểu đồ UC
2.1.4.2 Quan sát Lôgic
Quan sát lôgic được dùng để xem xét các phần tử bên trong hệ thống và mối quan hệ, sự tương tác giữa chúng để thực hiện các chức năng mong đợi của hệ thống
Trang 402.1.4.3 Quan sát tiến trình
Quan sát tiến trình chia hệ thống thành các tiến trình (process) và luồng (thread), mô tả việc đồng bộ hóa và các xử lý đồng thời Kiểu xem này dùng cho người phát triển và tích hợp hệ thống, bao gồm các biểu đồ tuần tự, biểu
đồ cộng tác, biểu đồ hoạt động và biểu đồ trạng thái
2.1.4.4 Quan sát thực thi
Bao gồm các thành phần và tập tin tạo nên hệ thống vật lý Nó chỉ ra sự phụ thuộc giữa các thành phần này, cách kết hợp chúng lại với nhau để tạo ra một hệ thống thực thi
2.1.4.5 Quan sát triển khai
Chỉ ra cấu hình phần cứng mà hệ thống sẽ chạy trên đó Nó thể hiện sự phân tán, cài đặt các phần mà tạo nên kiến trúc vật lý của hệ thống Biểu đồ được sử dụng là biểu đồ triển khai
2.2 Các giai đoạn phát triển phần mềm với UML
Các giai đoạn phát triển hệ thống hay còn được gọi là vòng đời phát triển
hệ thống (SDLC) bao gồm bốn giai đoạn cơ bản: Dự kiến kế hoạch, Phân tích, Thiết kế, và Triển khai Các dự án khác nhau có thể nhấn mạnh các phần khác nhau của SDLC hoặc tiếp cận SDLC theo các cách khác nhau, nhưng tất cả các
dự án đều có đầy đủ bốn giai đoạn trên Mỗi một giai đoạn là việc phân tích chính bản thân giai đoạn đó thành một chuỗi các bước, dựa vào các kỹ thuật
mà đưa ra khả năng thực hiện (xác định rõ ràng tài liệu và tập tin để giúp nắm bắt nội dung dự án) Có hai điểm quan trọng phải hiểu về SDLC Thứ nhất, phải xác định được ý nghĩa từng giai đoạn và từng bước trong dự án hệ thống thông tin và những công nghệ để thực hiện Thứ hai, phải hiểu rằng SDLC là một qui trình cải tiến từng bước Để thực hiện được thì trong giai đoạn phân tích phải cung cấp được các ý kiến tổng quát về một hệ thống mới Phải đưa được thông tin đầu vào trong giai đoạn thiết kế, sau đó cải tiến những thông tin