II. Đánh giá giữa phân tích thiết kế theo hớng chức năng và hớng đố
5.8.2. Các khái niệm thời gian thực
Đoạn này nói tới các cơ chế cơ sở cho mô hình hoá hệ thống thời gian thực, các thiết bị đợc sử dụng trong mô hình động.
Các lớp hoạt động thờng dùng mô hình hoá khung cảnh đồng thời của thế giới thực và tạo ra một mô hình để sử dụng hệ thống tài nguyên có hiệu quả cao hơn, tốt hơn. Một lớp hoạt động là một luồng thực hiện riêng có thể điều khiển khởi tạo hoạt động. Một lớp hoạt động thờng là thể hiện của một lớp, tức là đối tợng thực hiện song song với các đối tợng hoạt động khác và các hoạt động khởi tạo bản thân nó (bằng mã riêng của nó hoặc gửi một Message tới đối tợng khác). Một lớp hoạt động thực hiện một cách đồng thời trong sự tơng phản của lớp hoạt động và lớp thụ động, tất cả các lớp đợc xem nh bình thờng trong hệ thống. Một đối tợng thụ động (của lớp thụ động) có thể thực hiện khi một đối tợng khác (là hoạt động hoặc là thụ động) thực hiện một hành động trên nó nh gửi một Message tới nó. Một lớp hoạt động đợc thực hiện nh một tiến trình hoặc một luồng. Một tiến trình là một luồng điêù khiển có “trọng số nặng”, một luồng là một luồng điều khiển có “ trọng số nhẹ”. Điều khác nhau quan trọng giữa tiến trình và luồng là tiến trình bao bọc và bảo vệ tất cả các cấu trúc bên trong của nó bằng cách thực hiện trong không gian bộ nhớ riêng, trong khi luồng thực hiện trong không gian bộ nhớ đợc chia sẻ. Với các luồng khác đó là không gian bộ nhớ có thể chứa thông tin đợc chia sẻ (nh là các đối tợng khác). Một tiến trình đợc khởi tạo bởi một chơng trình có thể chạy đợc và xem nh đó là hệ thống của riêng nó.
Chú ý rằng trong nhiều hệ điều hành tiến trình tơng đơng với luồng vì vậy khái niệm tiến trình và luồng đợc xem nh nhau. Các khái niệm cũng có thể đợc tổ hợp với nhau vì vậy bên trong một tiến trình có một số luồng thực hiện ở không gian bộ nhớ chia sẻ, các lớp hoạt động điển hình đợc thực hiện thông qua th viện lớp gọi là siêu lớp (Superclass). Siêu lớp đó đợc phân cấp bởi tất cả các lớp sẽ hoạt động và chứa các ánh xạ của tiến trình hoặc luồng thực hiện nh là: Sự bắt đầu (Begin), sự dừng(stop), tạm dừng (susperd), làm lại (resume), thực hiện tuần hoàn Priority Handling)… Tơng ứng với hệ điều hành thực hiện gọi chức năng đó dới một hệ điều hành. Hệ điều hành thực hiện một lời gọi trong siêu lớp phải đợc thực hiện thành một khối các lớp con, sự thực hiện đó chỉ định mã luồng thực hiện của lớp hoạt động, mã đó thực hiện song song với các luồng thực hiện khác. Điển hình là thực hiện phơng thức vòng lặp chết, đọc các tín hiệu vào hay tơng tác với các cơ chế đồng bộ hoá và thực hiện công việc của lớp hoạt động.
Sự đồng thời (các lớp hoạt động) Sự đồng thời (các lớp hoạt động) Sự liên kết Sự liên kết Sự đồng bộ Sự đồng bộ ‘ActiveClass ‘ liên kết với bộ giám sát Một trường hợp: Truyền thông với
bộ giám sát
Input: Message
Bufferr Port1: Com: Manager
: Communication Supervisor
truyền thông có thể đợc hỗ trợ bởi hệ điều hành nh là các hộp th hay hàng đợi, ở đó các Message hoặc các tín hiệu có thể đợc gửi và nhận một cách không đồng bộ.
Hình 5.12: Các cơ chế khác nhau của mô hình hệ thống thời gian thực
Hình5.13: Một lớp hoạt động và đối tợng hoạt động của lớp hoạt động đó.
Các cơ chế đồng bộ hoá là kĩ thuật thờng sử dụng để thực hiện việc điều khiển các luồng đồng thời nhằm ngăn ngừa xung đột hoặc không ảnh hởng đến việc sử dụng tài nguyên, ví dụ nh đa luồng có thể sử dụng tài nguyên một cách đồng thời hoặc là ngời tiêu dùng cố gắng đọc và làm việc với thông tin trớc khi nhà sản xuất kết thúc việc hỗ trợ thông tin về mặt hàng.
Các đối tợng hoạt động thờng lớn hơn các đối tợng thụ động bởi vì chúng đợc tham chiếu nh đối tợng khác, thỉnh thoảng một hệ thống con của UML điều khiển thông qua một đối tợng hoạt động tạo nên một gói hoạt động đồng thời với một gói khác (một gói xem nh là một hệ thống con trong UML). Tuy nhiên trong các hệ thống thời gian thực cứng thì đối tợng thụ động nhiều hơn đối tợng hoạt động. Một kết nối tạo ra với luồng hoặc tiến trình và hệ thống sẽ trở nên phức tạp thêm và chậm hơn nếu có quá nhiều đối tợng hoạt động đợc định nghĩa.
Lớp hoạt động hay (đối tợng) đợc chỉ ra trong UML là một lớp hoặc đối tợng đợc vẽ với hình chử nhật nét dày và đậm. Nếu tên bên trong hình chử nhật chứa tên lớp thì ký hiệu biểu diễn là một lớp, Nếu tên đợc gạch chân là ký hiệu biểu diễn đối tợng hoạt
Ready Kế hoạch Thực hiện gọi Kết thúc
Gọi kết quả Thời gian chạy > 50m giây
Tạo ra Running Walting
động. Một lớp hoạt động hay đối tợng đợc mô tả với cấu trúc bên trong đợc nhúng. Các lớp bên trong thờng là dạng thụ động nhng chúng cũng có thể là lớp hoạt động khác.
Hình 5.14: Đối tợng hoạt động với cấu trúc bên trong của đối tợng hoạt động.
5.8.2.2. Các trạng thái của một lớp hoạt động
Một lớp hoạt động thờng thay đổi khung cảnh của nó phụ thuộc vào trạng thái bên trong. Các trạng thái và khung cảnh của lớp hoạt động đợc mô hình hoá trong sơ đồ trạng thái (mô tả trong phần trớc). Sơ đồ trạng thái chỉ ra các trạng thái có thể có của lớp hoạt động với các sự kiện đợc chấp nhận trong mỗi trạng thái và sự chuyển các hành động đợc thực hiện khi một sự kiện xảy ra. Các ràng buộc về thời gian không đ- ợc chỉ ra trong sơ đồ trạng thái nhng có các chú thích ngoại lệ.
Hình 5.15: Các trạng thái của đối tợng hoạt động với các kự kiện đợc chuyển đổi.
5.8.2.3. Sự truyền thông
Khi các đối tợng thụ động truyền thông với nhau thờng thì nó thực hiện gửi các Message đồng bộ. Một đối tợng gửi một Message tới một đối tợng khác và gọi đối t- ợng chờ đợi cho đến khi hành động đó thực hiện và sau đó một điều khiển đợc trả về. Khi đó hành động thực hiện xong nh một phần của lời gọi hành động đó, dữ liệu có thể thông qua giữa các đối tợng nh là các tham số.
Một số cơ chế thờng cho phép các đối tợng truyền thông với nhau, các đối tợng hoạt động phải thực hiện một cách đồng thời và gửi Message tới đối tợng khác, mà không phải đợi cho đến khi hành động đó đợc kết thúc. Một vài cơ chế chung để truyền thông giữa các đối tợng hoạt động là :
• Gọi một phơng thức (Operation Call): Một lời gọi gốc thực hiện trong một đối tợng, nghĩa là gửi một Message đồng bộ tới một đối tợng khác, do đó đối tợng gọi phải đợi cho đến khi hành động đó kết thúc và phản hồi.
• Hộp th thoại/hàng đợi Message (MailBoxes/Message queue): Kỹ thuật này định nghĩa một MailBoxes hay MessageQueue. Message đợc đặt trong
MailBoxes bởi ngời gửi và tại vài điểm đọc đợc thực hiện bởi ngời nhận, kỹ thuật đó cho phép gửi các Message không đồng bộ, ngời gửi có thể đặt Message trong
MailBoxes và ngay lập tức tiếp tục thực hiện công việc khác.
• Bộ nhớ đợc chia sẻ (Shared Memory): một khối bộ nhớ đợc dự phòng cho việc truyền thông, hai hoặc nhiều đối tợng có thể đọc ghi thông tin, khối đó phải đợc tự bảo vệ bởi một vài cơ chế đồng bộ hoá vì vậy các đối tợng không thể đồng thời đọc và/ hoặc ghi thông tin tại những thời điểm giống nhau. Kỹ thuật chia sẻ bộ nhớ thờng đợc dùng khi cấu trúc dữ liệu lớn và thực hiện trên nhiều đối tợng.
• Các điểm hẹn (Rendezvous): kỹ thuật này thực hiện tại điểm hẹn cho trớc của hai luồng đợc định nghĩa, luồng đầu tiên đến điểm hẹn và dừng lại đợi khi luồng khác đến điểm hẹn tơng ứng của nó. Khi cả hai luồng đã ở điểm hẹn chúng thực hiện chuyển thông tin và bắt đầu thực hiện lại một cách đồng thời.
• Các lời gọi thủ tục từ xa RPC (RPC_ Remote Procedure Calls): RPC thực hiện phân tán các luồng đồng thời phân tách các máy tính trên mạng và cho phép các luồng đợc ghi ở các ngôn ngữ khác nhau. Luồng gọi xác định thực hiện trên đối tợng nào nó muốn gọi, và điều đó yêu cầu tới th viện RPC. RPC tìm đối tợng trên mạng, đóng gói yêu cầu vào dạng đa năng và gửi yêu cầu lên mạng. Tại bên nhận yêu cầu đợc dịch từ dạng đa năng về dạng đối tợng nhận muốn và lời gọi đợc tạo ra, khi lời gọi kết thúc kết quả đợc trả về theo cách tơng tự. Nh vậy RPC có cả hai cơ chế là truyền thông và đồng bộ hoá.
Các cơ chế đợc mô tả ở đây là kỹ thuật ánh xạ thực hiện trên các thuộc tính của hệ điều hành trong mô hình này. Truyền thông giữa các đối tợng hoạt động đợc mô tả sử dụng các sự kiện, các tín hiệu và các Message, nó không thiết kế pha cho đến khi các kỹ thuật này đợc lựa chọn thực hiện thật sự.
Sự truyền thông có thể đồng bộ hoặc dị bộ. Truyền thông không đồng bộ là truyền thông không thể đoán trớc đợc sự kiện có thể xảy ra tại một thời điểm bất kỳ khi hệ thống thực hiện, nó không thể biết trớc khi nào sự kiện đó đợc gửi. Truyền thông đồng bộ là truyền thông có thể đoán trớc đợc trong đó nó có thể xảy ra chỉ tại thời điểm biết trớc trong khi hệ thống thực hiện (điều đó có thể biết đợc bằng cách đọc luồng điều khiển trong mã).
Hệ thống thời gian thực sử dụng cả hai cơ chế truyền thông là đồng bộ và dị bộ, các sự kiện xảy ra bên ngoài môi trờng là không đồng bộ trong khi các phần của việc truyền thông bên trong hệ thống là đồng bộ. Khi xem xét các Message gửi giữa các đối tợng truyền thông đồng bộ và dị bộ thì không biết có đối tợng nào muốn gửi
Message để thực hiện Message đồng bộ hay Message dị bộ không.
5.8.2.4. Các sự kiện (Events)
Trong hệ thống thời gian thực các sự kiện điều khiển hoạt động của hệ thống, một sự kiện thỉnh thoảng xảy ra bên trong hệ thống hoặc ngoài môi trờng, và thỉnh thoảng hệ thống phải kích hoạt lại để hoạt động. Tất cả các sự kiện có thể xảy ra phải đợc định nghĩa, và khung cảnh của hệ thống khi sự kiện xảy ra cũng phải đợc định nghĩa, khung cảnh thờng đợc kết nối với trạng thái của đối tợng trong đó sự kiện giống nhau có thể gây ra các khung cảnh khác nhau phụ thuộc vào trạng thái của đối tợng khi sự kiện xảy ra. Một sự kiện có thể gây ra sự chuyển đổi từ trạng thái này tới trạng thái khác.
Trong UML có 4 loại sự kiện khác nhau là :
• Một điều kiện trở nên đúng (Condition Become True): điều kiện chặn trở nên đúng đợc xem xét nh sự kiện điển hình và đợc thực hiện thông qua việc kích hoạt đối tợng. Quản lý các điều kiện và chú thích khi điều kiện là True.
• Đối tợng nhận tín hiệu chỉ định (The receipt of an explicit signal object): là
tín hiệu đối tợng đợc gửi từ một đối tợng tới một đối tợng khác. Tín hiệu đối tợng đợc xem xét nh là một Message, lớp tín hiệu có thể chứa các thuộc tính và các phơng thức. Các đối tợng tín hiệu điển hình thông qua một vài cơ chế của hệ điều hành, nh là đối tợng tín hiệu MailBoxes hay Queue có thể đợc gửi không đồng bộ.
• Nhận một lời gọi phơng thức (The receipt of an opeation call): đối tợng gọi một phơng thức trong một đối tợng khác. Lời gọi đó đợc xem nh một Message
đồng bộ, thông tin đợc thông qua các tham số và giá trị trả về.
• Thời gian trôi qua (A passage of time): chỉ thời gian trôi qua của một sự kiện. sự kiện thờng đợc gọi tuần hoàn, và sự kiện đợc mô tả bởi độ trễ.
Trong khi xử lý hoặc thời gian chết (time - outs). Nếu vài sự kiện không xảy ra trong thời gian đó. Thời gian trôi đi của sự kiện đợc thực hiện qua một lời gọi chết, khi
điều hành phát ra một Message time out,– và nó gửi yêu cầu tới đối tợng khi thời gian xác định đã đợc đánh giá. Các sự kiện có thể đợc chia ra 2 loại là logic và vật lý. Sự kiện vật lý biểu diễn ở mức thấp, sự kiện logíc biểu diễn ở mức cao. Sự kiện vật lý ‘ngắt ở cổng 4H’ có thể đợc chuyển vào sự kiện logic là ‘tiếng chuông phát ra từ bộ phận cảm biến’. Khi sự kiện logic ở mức trừu tợng cao, thì các mô hình sẽ đợc định nghĩa chính xác với các sự kiện logic hơn là các sự kiện vật lý mức thấp. Các sự kiện vật lý sẽ đợc dịch chuyển vào trong các sự kiện logic khép kín, khi đó ta sẽ có thể phát hiện chúng (thông qua đối tợng hoạt động với sơ đồ trạng thái, phụ thuộc vào trạng thái hiện thời, có thể tạo ra giải pháp và sự dịch chuyển của sự kiện vật lý vào sự kiện logic).
Các tính chất phân loại sự kiện nh tính tuần hoàn yêu cầu thời gian thực hiện, Sự quản lý thông tin có thể đợc định nghĩa cho các sự kiện. Để làm điều đó, nó thờng định nghĩa sự kiện nh là một lớp và định nghĩa các tính chất đó nh các giá trị đợc kèm theo của lớp hoặc nếu thông tin đợc kết nối với thể hiện cụ thể của lớp thực sự thì nó nh là thuộc tính của lớp.
5.8.2.5. Các tín hiệu (Signals)
Các tín hiệu trong UML đợc định nghĩa là một sự kiện có tên. Tín hiệu đợc mô tả nh một lớp với kiểu rập khuôn là <<Signal>> biểu diễn sự kiện xảy ra trong hệ thống. Tín hiệu cũng đợc mô tả nh một lớp, nên nó có thể có các thuộc tính và phơng thức mang cả 2 thông tin là: sự kiện và khung cảnh của sự kiện. Các tín hiệu trong hệ thống là các Message đồng bộ hoặc không đồng bộ (chỉ Message truyền thông giữa các đối tợng cũng chứa tín hiệu đối tợng, hay chỉ là lời gọi thực hiện).
Các tín hiệu đợc mô tả trong sơ đồ lớp, Tất cả các tín hiệu trong hệ thống thời gian thực đợc mô hình hoá theo sự phân cấp nh trong hình 5.16. Điều đó tạo nên khả năng nhóm một số tín hiệu bằng cách có một siêu lớp chung. Bộ nhận tín hiệu sau đó có thể chỉ ra sự chấp nhận của nó với các đối tợng của siêu lớp chỉ định, nghĩa là nó chấp nhận các đối tợng của siêu lớp hoặc một lớp con đợc chỉ định của nó. Siêu lớp nh trong sự phân cấp cũng có thể chứa thông tin tổng quát về tín hiệu nh là tính tuần hoàn, thời gian gửi.v.v..
Tín hiệu thả đối tượng “Signal” vật lý (Trừu tượng) “Signal” (Trừu tượng) Tín hiệu thực Hiện lệnh Tín hiệu bấm phím Tín hiệu di chuyển chuột “Signal” logic
(Trừu tượng) “Signal” đồng bộ
Tín hiệu là trờng hợp đặc biệt của các sự kiện. Chúng đợc chia làm 2 loại là tín hiệu là logic và tín hiệu vật lý. Thông tin về phần cứng mức thấp hoặc các giải thích mức cao của sự kiện nào giải thích trong các phần thực hiện của hệ thống.
Hình 5.16: Một phân cấp của các lớp tín hiệu.
5.8.2.6. Các thông điệp (Messages)
Các đối tợng truyền thông qua các Message, đặc biệt các Message thờng sử dụng truyền thông giữa các đối tợng thụ động, giữa các đối tợng chủ động và thụ động hoặc giữa các đối tợng chủ động.
Một Message đợc thực hiện bởi phơng thức đơn giản hoặc nh một tín hiệu. Đối t- ợng đó đặt trong MailBoxe hoặc Queue. Việc nhận một Message thờng đợc xem nh một sự kiện trong hệ thống thời gian thực. Các Message đợc chỉ ra trong một số sơ đồ của UML nh sơ đồ tuần tự, sơ đồ cộng tác, sơ đồ hoạt động, sơ đồ trạng thái… minh