Chương 4 Đặc tả và mơ hình hóa giao diện thời gian thực
5.4. Hợp đồng thời gian-tài nguyên
5.4.4. Ngôn ngữ đặc tả thời gian thực mẫu
Trong phần này, luận án hướng đến việc cụ thể hóa các đặc tả hợp đồng thời gian thực ở Chương 5 bằng cách đề xuất ngôn ngữ thời gian thực mẫu để từ đó có thể áp dụng mơ hình này trong thực tế. Ngữ nghĩa của ngôn ngữ đặc tả này tuân theo ngữ nghĩa được xác định từ lý thuyết trong phần 5.3. Phần cú
pháp được trình bày trình tự trong các phần sau đây. Tuy nhiên, luận án chưa thực hiện được cài đặt thực tế bằng một công cụ cụ thể.
5.4.4.1 Mô tả các thành phần cơ bản
Các thành phần cơ sở cho ngôn ngữ đặc tả thời gian thực mẫu gồm bảng chữ cáiA, . . . , Z, a, . . . , z, các chữ số 0. . .9, các ký dấu ngoặc (),[],{},0,”,;,v.v. và các dấu phép toán <, >, <=, >=,! =,==,+ =,−=,∗ =, / =,∗, /,+,−, v.v. được sử dụng tương tự như trong các ngơn ngữ lập trình PASCAL, C/C++, C#, Java, Python, v.v. Các định danh (identifiers), các chữ số, các từ khóa được trình bày lần lượt bằng các văn phạm được minh họa trong các hình từ Hình
5.1 đến Hình 5.12.
Character
Character
Digit Identifier
Hình 5.1: Minh họa văn phạm của các định danh.
Digit Integer
Type , Identifier ; , Identifier = value features
Hình 5.3: Minh họa văn phạm của các thuộc tính.
resource value resource
,
identifier = { }
Hình 5.4: Minh họa văn phạm của thành phần tài nguyên trong thành phần phần mềm.
system resource
system resource
Hình 5.5: Minh họa văn phạm của tài nguyên hệ thống.
Integer duration
Type identifier = ;
Hình 5.6: Minh họa văn phạm của khoảng thời gian.
assert
predicate }
{
invariant
LTL formulas }
{
Hình 5.8: Minh họa văn phạm của các bất biến.
resource invariant
predicate }
{
Hình 5.9: Minh họa văn phạm của các bất biến tài nguyên.
term - term ) / * simple expression ( + - / * +
Hình 5.10: Minh họa văn phạm của các biểu thức đơn giản.
expression
simple expression
simple expression < <= > >= == !=
predicate simple expression simple expression < <= > >= == != term term
Hình 5.12: Minh họa văn phạm của các thành phần cơ bản.
5.4.4.2 Mô tả phương thức
Một thiết kế thời gian có ràng buộc các thành phần phi chức năng được đặc tả bằng từ khóa method, các phương thức ở đây hoặc là loại provided
hoặc làrequired, tên phương thức được đặt bằng từ khóa name và được trình bày chi tiết trong văn phạm dưới đây.
{ } name identifier resource duration assert specification ; ; method
1 <[provided][required] > method { 2 name <Name of method>;
3 resource r = {List of resource};
4 duration int d = constant;
5 assert {Predicate};
6 specification {predicate};
7 }
Thiết kế thời gian-tài nguyên là bản mô tả tĩnh cho một phương thức trong thành phần phần mềm. Tại dịng 1, từ khóa provided cho biết phương thức thuộc loại cung cấp, có nghĩa là thành phần phần mềm sẽ cung cấp phương thức cho mơi trường. Ngược lại với từ khóa required phương thức thuộc loại yêu cầu, tức là thành phần phần mềm cần phương thức như vậy đề có thể hoạt động được. Dịng 2, từ khóa name khai báo tên phương thức. Dịng 3 từ khóa
resource khai báo đặc tả tài nguyên được sử dụng cho phương thức. Dịng 4sử dụng từ khóa duration để khai báo thời gian phương thức có thể hồn thành nhiệm vụ, được biểu diễn bằng một số nguyên dương. Nếu trong method vắng mặt thành phần resource thì hệ thống trở thành hệ thống thời gian thực, tức là khơng có ràng buộc tài nguyên. Nếu trong các method vắng cả hai tham số thì thành phần phần mềm trở thành loại phi thời gian. Khơng chấp nhận trường hợp córesource mà thiếu duration. Dịng 5khai báo assertcho phương thức. Cuối cùng, từ khóa specification tài dòng 6 biểu diễn đặc tả chức năng của phương thức là biểu thức lơgíc tân từ cấp 1. Biểu thức lơgíc này chỉ rõ mối quan hệ giữa đầu vào/đầu ra của phương thức.
Ví dụ 5.4. Ví dụ minh họa cách khai báo một phương thức trong thành phần điều khiển cảm biến của Ví dụ 3.1.
1 provided method { 2 name gettemperature(); 3 resource r = {1,10,1,5,1,20}; //{1%,10KB,1%,5%,1 µW,20KB} 4 duration int d = 5; 5 assert (y=x); 6 specification 7 x≥ 0` (x≥ 0∧y =x) ; 8 }
Trong ví dụ này từ khóa resource khai báo tài nguyên được dùng cho phương thức trong thuộc tính (biến) r = {1,10,1,5,1,20}. Điều này cịn cho biết khi mơi trường muốn gọi phương thức gettemperature() thì mơi trường phải một lượng tài nguyên lớn hơn r. Biến d biểu diễn khoảng thời gian trong đặc tả tĩnh của phương thức cho biết khoảng thời gian phương thức thực thi hết ba đơn vị thời gian. Trong trường hợp này, nếu hệ thống gọi phương thức với khoảng thời gian nhỏ hơn ba đơn vị thời gian thì thành phần phần mềm chứa phương thức khơng đáp ứng kịp. <[provided] [required]> identifier { provided feature required feature system resource invariant resource invariant Method protocol } ; ; ; ; ; ; code { function } ; } { Regular Expression component
Hình 5.14: Minh họa văn phạm của thành phần phần mềm.
5.4.4.3 Mô tả hợp đồng
Luận án đã đặc tả các thông tin của một thành phần phần mềm thông qua hợp đồng như được định nghĩa trong Phần 5.4.2. Các dãy thực thi của thành
họa cách biểu diễn hợp đồng thời gian thực bằng ngơn ngữ mẫu. Trong đó, phần giao diện thành phần đặc tả danh sách các phương thức cung cấp và các phương thức yêu cầu; phần init khởi tạo các thuộc tính trong hợp đồng; thành phần bất biến cho phép khai báo điều kiện ràng buộc trên các thuộc tính; thành phần
MSpec biểu diễn danh sách các phương thức có trong thành phần phần mềm và
π đặc tả thể thức mà các hành vi của thành phần phần mềm phải tuân thủ. Luận án đưa ra ví dụ sơ khai về ngơn ngữ thời gian thực mẫu nhằm minh họa hệ thống thời gian thực dựa trên thành phần.
Phần mã nguồn được đưa vào trong đặc tả thành phần phần mềm được trình bày bởi văn phạm trong Hình 5.15.
(
identifier parameter ) { ,
instruction ; } function
Hình 5.15: Minh họa văn phạm của phương thức trong phần mã nguồn.
1 component <Component name>{
2 provided feature <List of features>;
3 required feature <List of features>;
4 system resource <Resource feature>;
5 invariant <LTL formulae>;
6 resource invariant <Predicates>;
7 <[provided][required]> method { 8 name <Name of method>;
9 resource r = Type of resource;
10 duration int d = constant;
11 specification Predicate;
12 }
13 protocol <List of Regular Expression>;
14 code {function}; 15 }
Từ khóa component dịng 1 sử dụng khai báo tên của thành phần phần mềm. Dịng 2 có hai từ khóa provided feature được sử dụng để khai báo tập thuộc tính mà thành phần phần mềm cung cấp ra ngồi. Dịng số 3 từ khóa
required feature khai báo thuộc tính u cầu, có nghĩa là tập thuộc tính sử dụng để nhận giá trị từ mơi trường. Dịng số 4 với từ khóa system resource
khai báo tham số tài nguyên mà hệ thống dành cho thành phần phần mềm thực thi các dịch vụ. Dòng số 5 với từ khóa invariant khai báo yếu tố bất biến cho thành phần phần mềm. Yếu tố bất biến này được đặc tả bằng cơng thức lơgíc thời gian tuyến tính LTL nhằm chỉ ra rằng thành phần phần mềm đã cho thỏa một tính chất nào đó của hệ thống. Dịng số 6với từ khóa resource invariant
cho biết thành phần bất biến thỏa một tính chất về ràng buộc tài nguyên hệ thống. Nếu yếu tố này bị vi phạm thì chứng tỏ thành phần phần mềm đã cho chưa đáp ứng được ràng buộc về việc sử dụng tài nguyên hệ thống. Từ dòng 7
đến dòng 12 khai báo phương thức trong thành phần phần mềm. Trong thành phần phần mềm có bao nhiêu phương thức thì khai báo bấy nhiêu đặc tả cho các phương thức này và tùy thuộc vào loại phương thức là provided hayrequired
để khai báo loại phương thức đó. Từ khóa protocol tại dịng 13 khai báo thể thức tương tác cho thành phần phần mềm. Thể thức này là một biểu thức chính quy với tập các hành động là tập các phương thức trong thành phần phần mềm. Từ khóa code{. . .} tại dòng 14 chỉ rõ mã nguồn của phương thức. Chú ý, mã nguồn chương trình trong cùng một thành phần phần mềm phải cùng một ngơn ngữ lập trình.
5.4.4.4 Mơ tả thành phần phần mềm chủ động
Mặc định thành phần phần mềm là loại thụ động, nếu thành phần phần mềm thuộc loại chủ động phải thêm từ khóa active vào trước từ khóa
component. Như vậy, thành phần phần mềm chủ động được đặc tả theo các
cú pháp sau:
1 active component <Component name>{
2 required feature <Type List of features>;
3 system resource <Resource feature>;
4 invariant <LTL formulae>;
5 system assert <Predicate>;
6 resource invariant <Predicates>;
7 <required> method {
9 resource r = Type of resource;
10 duration int d = constant;
11 assert <Predicate>;
12 specification Predicate;
13 }
14 protocol <List of Regular Expressions>;
15 code {Code}; 16 }
Thành phần phần mềm chủ động active component cũng được đặc tả giống như thành phần phần mềm thụ động. Tuy nhiên, ngoài trường hợp phải thêm từ khóaactivevào trước từ khóacomponentthì trong thành phần phần mềm chủ động chỉ có loại phương thức yêu cầu.
required identifier { required feature system resource invariant resource invariant Method protocol } ; ; ; ; ; code { function } ; } { Regular Expression active component system invariant ; ;
Hình 5.16: Minh họa văn phạm của thành phần phần mềm chủ động.
5.4.4.5 Mô tả hệ thống
Đặc tả hệ thống được tạo bởi sự đặc tả thành phần phần mềm chủ động và thành phần phần mềm thụ động. Với kỹ thuật đặc tả này, hệ thống có thể được đặc tả đầy đủ với các ràng buộc thời gian và tài nguyên hệ thống.
1 system <System name> {
2 component <Component name>{
3 provided feature <Type List of features>
4 required feature <Type List of features>
5 system resource <Resource feature>
7 resource invariant <Predicates> 8 <[provided][required]> method { 9 name <Name of method>;
10 resource r = Type of resource;
11 duration int d = constant;
12 specification Predicate;
13 }
14 protocol <List of Regular Expression>
15 code {Code}; 16 }
17 active component <Component name>{
18 required feature <Type List of features>
19 system resource <Resource feature>
20 invariant <LTL formulae>
21 system assert <Predicate>;
22 resource invariant <Predicates>
23 <required> method {
24 name <Name of method>;
25 resource r = Type of resource;
26 duration int d = constant;
27 assert <Predicate>;
28 specification Predicate;
29 }
30 protocol <List of Regular Expressions>
31 code {Code}; 32 } 33 } identifier component } system { active component
Hình 5.17: Minh họa văn phạm của hệ thống.
Dựa trên đặc tả hệ thống, một hệ thống thời gian thực được đặc tả một cách đầy đủ gồm các thành phần phần mềm với các yếu tố như tập thuộc tính, tập phương thức, các bất biến, v.v. Kết hợp với việc tích hợp mã nguồn cùng với đặc tả làm cho việc phát triển hệ thống hồn tồn đảm bảo được tính đúng đắn và tốc độ triển khai nhanh. Đặc biệt, có thể áp dụng kỹ thuật này để tự động hóa một số giai đoạn trong q trình phát triển hệ thống thời gian thực như giai đoạn triển khai. Việc kiểm thử phần mềm khơng chỉ nhằm mục đích phát hiện lỗi mà chuyển thành việc khẳng định phần mềm có thỏa u cầu hệ thống hay khơng.
5.5 Tổng kết chương
Trong chương này, luận án trình bày kỹ thuật đặc tả thành phần phần mềm thời gian thực bằng hợp đồng thời gian và mở rộng cho đặc tả phi chức năng trên hai khía cạnh gồm (i) bổ sung đặc tả phi chức năng cho thiết kế thời gian trở thành thiết kế thời gian-tài nguyên và (ii) bổ sung ràng buộc phi chức năng vào hợp đồng thời gian để trở thành hợp đồng thời gian-tài nguyên nhằm lập luận khả năng sử dụng tài nguyên của hệ thống cần phát triển. Với sự đóng góp hệ thống lý thuyết trong chương này, khi phát triển hệ thống thời gian thực, các yếu tố chức năng và phi chức năng được xem xét một cách đầy đủ nhằm có sự phân tích, đánh giá tồn bộ các yếu tố trước khi triển khai phần mềm. Một số đóng góp được tóm tắt trong các mục sau:
Mơ hình này cho phép phân tích và lập luận các yếu tố ràng buộc của các thành phần chức năng và phi chức năng dựa trên đặc tả của các thành phần phần mềm.
Mơ hình dễ dàng được mở rộng để điều khiển nhiều loại hệ thống khác nhau có cả ràng buộc thời gian cũng như các hệ thống không ràng buộc thời gian. Đồng thời, hệ thống cũng cho phép mở rộng cho phù hợp với một số mơ hình như hệ thống nhúng, tác tử di động và điều khiển các thuộc tính phi chức năng của thành phần chẳng hạn như chất lượng dịch vụ và một số loại tài nguyên như bộ nhớ trong, hiệu năng CPU, năng lượng, v.v.
Cách tiếp cận lý thuyết trong chương này phản ánh đầy đủ hai khía cạnh trong kỹ thuật phát triển phần mềm thời gian thực, và cho phép phân tích đánh giá các yếu tố khác nhau trong quá trình phát triển hệ thống. Dựa trên lý thuyết này, hệ thống được phát triển giảm thiểu rủi ro, chi phí cho bảo trì và có chất lượng tốt. Phần lý thuyết trong chương này dựa trên các nghiên cứu được công bố trong các hội nghị “4th EAI International Conference on Context-Aware Systems and Applications (ICCASA 2015)”, “Hội nghị NAFOSTED Conference on Information and Computer Science (NICS 2017)” và “Hội thảo Khoa học Quốc gia Công nghệ Thông tin và Ứng dụng trong các lĩnh vực lần thứ 6 (CITA 2017). Dù các nghiên cứu được trình bày trong chương này là một giải pháp tốt cho đặc tả và kiểm chứng hệ thống thời gian thực dựa trên thành phần. Tuy nhiên, vẫn còn một số hạn chế chưa được khắc phục như chưa xây dựng được công cụ để kiểm tra lý thuyết đã đề xuất, chưa triển khai ngôn ngữ đặc tả
thời gian thực mẫu cho ngơn ngữ lập trình Java, C/C++, v.v. Do đó, hướng nghiên cứu tiếp theo luận án sẽ tiến hành cài đặt công cụ. Công cụ này cho phép sử dụng ngôn ngữ đặc tả thời gian thực mẫu để đặc tả các thành phần và hỗ trợ cho ngơn ngữ lập trình Java hoặc C/C++, v.v.