Chương 6 Kết luận
4.3 Minh họa ôtômát khoảng giao diện và môi trường
Tương tự như vậy luận án cũng định nghĩa ôtômát khoảng cho mơi trường trong đó mỗi trạng thái s được gán nhãn vớihX(σ) vàhY(σ) trong đó σ là một dãy tính tốn dẫn tới s.
Định nghĩa 4.16 (Ơtơmát khoảng cho mơi trường). Một ôtômát khoảng hữu hạn môi trường ME được định nghĩa giống như Định nghĩa 4.13 ngoại trừ hàm gán nhãn Λf :S → F(X)× F(X ∪Y) và Λτ : S → Intv.
Tương tự như trường hợp của ôtômát khoảng giao diện, một ôtômát khoảng môi trường được định nghĩa như dưới đây:
Định nghĩa 4.17. Ơtơmát khoảng mơi trường là một bộE(ME) =hX{ăx}, Y∪ {ăy}, hX∧in∈ yăin, hYi trong đó hX(σ.(a, τ)) =ΛX(s)∧i ∈s+ và hY(σ.(a, τ)) = (ΛY(s)∧(s,x,ă y)ă ∈T, ΛYτ).
Hình 4.3 minh họa cho định nghĩa ôtômát khoảng giao diện và ôtômát khoảng môi trường.
Định lý 4.7. Cho ôtômát khoảngMIvà một ôtômát khoảng cho môi trường ME. Giao diện môi trườngE(ME) cắm vào giao diệnI(MI)khi và chỉ khi ME là đồ thị con của MI, và với mọi s ∈ S(E), ΛX(s) ⇒ in(Λf(s)), ΛX(s)∧Λf(s) ⇒ ΛY(s)
và ΛYτ(s) ⊆ Λτ(s).
Chứng minh. Đặt GraphM = hVM, EMi là một đồ thị có hướng biểu diễn bảng chuyển của ôtômát M, where VM là tập các đỉnh tương ứng với tập trạng thái
QM của M, và tập các cạnh tương ứng với tập dịch chuyển TM và được gán nhãn bằng hàm ΛM đã được định nghĩa như trong Định nghĩa 4.13.
Đặt GraphE = hVE, EEi là đồ thị có hướng biểu diễn ơtơmát ME với VE
là tập các đỉnh tương ứng với tập trạng thái QE, tập các cạnh tương ứng với tập các dịch chuyểnTE và được gán nhãn bằng hàm ΛE, trong đóΛE được định nghĩa như trong Định nghĩa 4.16. Sử dụng phương pháp quy nạp để chứng minh
định lý này.
(i) Bước cơ sở: Kết quả này đúng với trạng thái s = , vì là trạng thái khởi tạo của bất kỳ giao diện nào, nghĩa là tương ứng với s, đó là đỉnh khởi tạo của GraphM và GraphE. Quy nạp theo độ dài của các trạng thái.
(ii) Bước quy nạp: Giả sử kết quả này đúng với trạng tháis ∈S(E), chúng
ta chứng minh nó đúng với s.(a, τ). Theo giả thiết, E(E) cắm vào I(M). Đặt s.(a, τ) là dãy trạng thái đến được sao cho s.(a, τ) ∈S(E(E),I(M)). Điều này suy ra s.(a, τ) là một đường đi trong đồ thị GraphM và cũng là đường đi trong đồ thị GraphE. Theo Định nghĩa 4.7 và giả thiết
E(E) cắm vào I(M). Công thức dưới đây đúng hX(a, τ) ∧in ∈ πin ⇒
in(ξ(a, τ)), ξf(a, τ) ∧ hX(a, τ) ⇒ hYf(a, τ) và ξτ(a, τ) ⊆ hYτ(a, τ) suy ra S(E(E),I(M)) ⊆ S(I(M)), tức là với mọi s ∈ S(E) tập trạng thái S(E(E))⊆ S(I(M)). Do đó, GraphE ⊆ GraphM. Vì E(E) cắm vào I(M), tức là cơng thức hX(a, τ)∧in ∈ πin ⇒ in(ξ(a, τ)), ξf(a, τ)∧hX(a, τ) ⇒
hYf(a, τ) và ξτ(a, τ) ⊆ hYτ(a, τ) đúng. Theo Định nghĩa 4.17, và theo
giả thiết với mọi s ∈ S(E) suy ra công thức ΛX(s) ⇒ in(Λf(s)),
ΛX(s) ∧ Λf(s) ⇒ ΛY(s), và Λτ(s) ⊆ ΛYτ(s) đúng. Theo hướng ngược lại: Giả sử GraphE ⊆ GraphM và với mọi s ∈ S(E), các công thức
ΛX(s) ⇒ in(Λf(s)), ΛX(s) ∧Λf(s) ⇒ ΛY(s), và ΛYτ(s) ⊆ Λτ(s) đúng. Suy ra E(E) cắm vào I(M). Vậy, phép cắm giữa ôtômát môi trường với ôtômát giao diện là quyết định được.
4.7 Tổng kết chương
Chương 4 đã đề xuất một kỹ thuật hiệu quả trong việc đặc tả, mơ hình hóa hệ thống thời gian thực dựa trên thành phần. Các đóng góp chính được thể hiện qua những kết quả như sau.
Thứ nhất, thành phần phần mềm thời gian thực được đặc tả bằng giao diện thời gian thực gồm tập biến đầu vào và tập biến đầu ra, quan hệ giữa tập biến đầu vào và tập biến đầu ra và thời gian thực thi của thành phần phần mềm thỏa các ràng buộc của quan hệ trong giao diện. Giao diện có mức trừu tượng cao nên phương pháp biểu diễn ngắn gọn, tường minh. Sự đảm bảo tính đúng đắn của thành phần phần mềm được biểu diễn bằng quan hệ đầu vào đầu ra là một cơng thức lơgíc vị từ. Quan hệ trên tập biến đầu vào và đầu ra này đảm bảo rằng nếu môi trường gán một bộ dữ liệu thỏa điều kiện đầu vào của giao diện thì giao diện sẽ đảm bảo kết quả đầu ra thỏa yêu cầu của môi trường trong khoảng thời gian đã cho.
Thứ hai, quy mô của hệ thống được phát triển tăng dần dựa trên các kỹ thuật ghép các giao diện để phát triển các hệ thống phức tạp, có quy mơ lớn. Các kỹ thuật này đảm bảo việc phát triển hệ thống đúng đắn dựa trên phương pháp ghép các biểu thức lơgíc trong giao diện. Do đó, hệ thống được phát triển đảm bảo được tính chất. Khi mơi trường muốn sử dụng các dịch vụ từ giao diện, môi trường phải cắm vào giao diện. Dựa trên sự kiểm tra các điều kiện khi cắm mơi trường vào giao diện, chúng ta có thể kiểm chứng được hệ thống cần phát triển thông qua phép cắm này.
Thứ ba, do các chuỗi hành vi của giao diện và môi trường thời gian thực là vô hạn, chương này đã đưa ra phương pháp biểu diễn hữu hạn các hành vi của giao diện và môi trường bằng ôtômát khoảng. Với ưu thế có thể đặc tả được thời gian tối thiểu và thời gian tối đa của quá trình sử dụng dịch vụ từ môi trường, ôtômát khoảng rất phù hợp để giải quyết bài tốn địi hỏi đánh giá chất lượng dịch vụ trên hai khía cạnh sử dụng thời gian.
Các đóng góp chính của nghiên cứu này được cơng bố tại Kỷ yếu của Hội nghị Quốc tế “Third International Conference on Knowledge and Systems Engineering” (KSE 2011). Kết quả của nghiên cứu này có thể áp dụng trong q trình phát triển hệ thống thời gian thực dựa trên thành phần nhờ sự ngắn gọn, súc tích trong đặc tả và kỹ thuật ghép các giao diện thời gian thực bằng toán học. Tuy nhiên, kỹ thuật đặc tả và kiểm chứng này vẫn còn một số hạn chế cần
được cải tiến trong tương lai như bổ sung các đặc tả tài nguyên cho giao diện thời gian thực, cài đặt công cụ để hỗ trợ trong quá trình phát triển hệ thống thời gian thực bằng phương pháp này.
CHƯƠNG 5
Đặc tả và kiểm chứng bằng hợp đồng thời gian thực với ràng buộc tài nguyên
Chương này luận án đề xuất 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à hợp đồng thời gian với ràng buộc tài nguyên. Kỹ thuật này dựa trên cách tiếp cận tính đúng đắn bởi cách xây dựng và thiết kế bằng hợp đồng nhằm hướng đến mục tiêu giảm thiểu lỗi trong quá trình phát triển hệ thống thời gian thực dựa trên thành phần.
5.1 Giới thiệu
Phát triển phần mềm thời gian thực dựa trên thành phần được xem là phương pháp chính trong phát triển hệ thống phần mềm thời gian thực. Tuy nhiên, phương pháp này đối mặt với các bài tốn như tính đúng đắn của hệ thống khi ghép các thành phần phần mềm, vấn đề bùng nổ khơng gian trạng thái khi kiểm chứng các tính chất của hệ thống, v.v. Để giải quyết những vấn đề trên, người ta có thể dùng lý thuyết giả định - đảm bảo để giải quyết vấn đề bùng nổ không gian trạng thái trong kiểm chứng [99,100], sử dụng lý thuyết giao diện nhằm đặc tả thành phần phần mềm ở mức trừu tượng cao để dễ dàng áp dụng vào bài toán kiểm chứng [48,55,94,97,101,102]. Các lý thuyết trên đã giải quyết được một số khía cạnh như tính đồng bộ và bất đồng bộ của hệ thống, các ràng buộc thời gian, quan hệ giữa tập biến đầu vào/đầu ra. Tuy nhiên, các lý thuyết vẫn chưa đưa ra giải pháp tổng thể để giải quyết vấn đề bài toán phát triển phần mềm dựa trên thành phần. Bên cạnh đó, kỹ thuật phát triển phần mềm theo cách tiếp cận thiết kế bằng hợp đồng được đánh giá là kỹ thuật phát
triển phần mềm ít lỗi hơn các phương pháp khác [69], nhưng kỹ thuật này chưa áp dụng nhiều trong phát triển phần mềm thời gian thực.
Trong chương này, luận án áp dụng cách tiếp cận tính đúng đắn bởi cách xây dựng [12,69] và thiết kế bằng hợp đồng [70,103] để đặc tả hệ thống thời gian thực bằng hợp đồng thời gian và hợp đồng thời gian có ràng buộc tài nguyên. Luận án sử dụng thiết kế để đặc tả phương thức trong thành phần phần mềm và được coi như phần tử cơ bản hình thành nên thành phần phần mềm thời gian thực. Một thiết kế là một đặc tả của một phương thức gồm tập đầu vào, đầu ra của phương thức, quan hệ giữa các biến đầu vào và đầu ra, các ràng buộc phi chức năng. Từ các thiết kế, luận án sử dụng hợp đồng thời gian để đặc tả thành phần phần mềm thời gian thực. Một hợp đồng là một đặc tả chi tiết và đầy đủ các yếu tố trong thành phần phần mềm thời gian thực gồm giao diện hợp đồng để cho biết hợp đồng cung cấp cho mơi trường những dịch vụ gì và cần dịch vụ nào để có thể thực thi được, phần khởi tạo sẽ khởi tạo các biến trong thành phần phần mềm, phần đặc tả phương thức cho biết mỗi phương thức liên quan đến thiết kế thời gian như thế nào. Đặc biệt, yếu tố bất biến trong hợp đồng được đặc tả bằng cơng thức lơgíc thời gian tuyến tính (LTL) với mục đích đảm bảo rằng các thành phần phần mềm ln thỏa một tính chất nào đó của hệ thống [104]. Do đó, tính đúng đắn của các đặc tả trong mơ hình được chứng minh chính xác dựa trên các phương pháp phát triển chúng.
Trên khía cạnh sử dụng hiệu quả các tài nguyên, một trong những thách thức đối với các ứng dụng trên hệ thống vật lý - điều khiển học (Cyber-physical systems) nói chung và đối với hệ thống thời gian thực nói riêng đó là sự phụ thuộc rất nhiều vào cách phát triển phần mềm và nền tảng phần cứng mà các hệ thống đó được cài đặt như sức mạnh CPU, năng lượng, băng thơng mạng, bộ nhớ trong và thiết bị lưu trữ ngồi, v.v. gọi chung là tài nguyên hệ thống. Một số kỹ thuật đã ước lượng bộ nhớ tĩnh dựa trên mã nguồn [105], phân tích độ chính xác sự tiêu thụ bộ nhớ trong chương trình lơgíc [106], sự tiêu thụ tài ngun trong thời gian thực thi [107], và dự đoán sự thiêu thụ tài nguyên dựa trên kịch bản [108], v.v. Tuy nhiên, các cơng trình nghiên cứu này đều chọn cách tiếp cận hoặc dựa trên mã nguồn chương trình, mã thực thi chương trình hoặc cho chương trình thực thi mà khơng tiếp cận từ đặc tả hệ thống. Chương này cũng bổ sung ràng buộc tài nguyên vào thiết kế thời gian dưới dạng một véctơ có số thành phần tương ứng với số thành phần tài nguyên cần đặc tả để sử dụng trong q trình phân tích đánh giá tính hiệu quả của việc sử dụng tài nguyên hệ thống của thành phần phần mềm. Khi một phương thức được kích hoạt thì
mơi trường hệ thống phải cung cấp cho dịch vụ đó một số tài nguyên để dịch vụ đó có thể thực hiện được. Tiếp theo, khi phương thức thực thi thì lượng tài nguyên của hệ thống sẽ bị chiếm dụng hoặc bị tiêu thụ hoặc cả hai. Do đó, sau một số bước thực thi, tài nguyên của hệ thống có thể khơng cịn đủ để cung cấp cho các dịch vụ, điều này dẫn đến hệ thống hoặc có cần nguồn cấp ổn định hoặc hệ thống bị dừng.
Từ các hợp đồng, luận án kết hợp với mã nguồn chương trình để tạo thành thành phần phần mềm, như vậy một thành phần phần mềm có đầy đủ đặc tả và mã nguồn. Đặc tính này giúp cho hệ thống thời gian thực khi được triển khai có thể được phát triển từ nhiều ngơn ngữ lập trình khác nhau. Với cách tiếp cận này, hệ thống được phát triển có thể áp dụng cho những hệ thống tự tích hợp và những hệ thống có thực thi trên nhiều môi trường khác nhau.
Khi môi trường muốn sử dụng các dịch vụ của thành phần phần mềm, các yêu cầu của môi trường phải tuân thủ thể thức tương tranh thời gian trong hợp đồng. Do đó, luận án sử dụng thể thức tương tác trong Chương 3 để đảm bảo rằng nếu môi trường tuân thủ thể thức tương tác của hợp đồng thì hợp đồng đảm bảo được tính đúng đắn của hệ thống. Nếu chuỗi hành vi của môi trường được mơ hình hóa bằng ơtơmát thời gian [5], thỏa thể thức tương tranh thời gian thực điều này chứng tỏ rằng thành phần phần mềm được phát triển thỏa thiết kế đã cho. Hệ thống được phát triển bằng cách ghép dần các thành phần phần mềm và trong q trình ghép, tính đúng đắn của hệ thống ln được đảm bảo thơng qua các phép ghép các thành phần này.
5.2 Các nghiên cứu liên quan
Hiện nay, lý thuyết phát triển phần mềm dựa trên thành phần đã được nghiên cứu và là cách tiếp cận chính trong phát triển phần mềm. Đã có nhiều nghiên cứu trong lĩnh vực này như phát triển phần mềm dựa trên thành phần [9,70], các công nghệ được triển khai trên thực tế như CORBA, EBJ, COM, DCOM và .NET [17–19], v.v. Tuy nhiên, các công nghệ này dựa trên những ngơn ngữ lập trình riêng rẽ, chưa hỗ trợ đủ mạnh cho hệ thống thời gian thực. Lý thuyết về giao diện được đề xuất như là một cách tiếp cận khác cho phát triển phần mềm dựa trên thành phần [46,48,97,98]. Tuy nhiên các lý thuyết này không áp dụng cho hệ thống thời gian thực. Lý thuyết giao diện thời gian thực được sử dụng đặc tả cho thời gian trên tập biến đầu vào/đầu ra và đã xử lý được vấn đề đồng bộ, bất đồng bộ, quan hệ đầu vào/đầu ra, v.v. [55,56]. Tuy nhiên, vấn đề ràng buộc thời gian trên quan hệ đầu vào đầu ra chưa đề cập.
Đối với việc ước lượng tài ngun, đã có nhiều phương pháp tính tốn cho các thành phần phi chức năng này. Đó là, tính tốn bộ nhớ của hệ thống dựa trên mã nguồn chương trình [109], dự đốn tài ngun trong khi thực thi chương trình dựa trên kịch bản [107]. Tuy nhiên, phương pháp này không áp dụng trong lý thuyết giao diện thành phần. Tiếp theo, một phương pháp khác đề xuất ước lượng sự tiêu thụ bộ nhớ tĩnh của thành phần phần mềm để áp dụng trong Koala nhưng phương pháp này chỉ dựa trên mã nguồn chương trình [105]. Ngồi ra, một kỹ thuật dựa trên các chuỗi thông điệp được gọi là kịch bản để đánh giá việc sử dụng tài nguyên thông qua thời gian thực thi [108]. Các kỹ thuật trên đã giải quyết một số khía cạnh khác nhau trong ước lượng bộ nhớ. Tuy nhiên, các kỹ thuật đó chưa có giải pháp tổng thể cho việc ước lượng, đánh giá và lập luận cho loại tài nguyên này.
Trên khía cạnh sử dụng năng lượng, một kỹ thuật tính tốn và tối ưu tiêu thụ năng lượng cho chương trình dựa trên sự lập lịch [110]. Một đề xuất nữa đánh giá lượng tiêu thụ tài nguyên cho hệ thống HPC (High Performance Computing), phương pháp này dựa trên quá trình thực thi của các ứng dụng để tìm ra lượng tài nguyên được sử dụng [111,112]. Bên cạnh đó cịn có phương pháp kiểm chứng tài ngun với thuật tốn tính tốn tối ưu bộ nhớ, tuy nhiên không áp dụng cho hệ thống thời gian thực [113].
Tóm lại, các phương pháp của các tác giả trên đã giải quyết được một số khía cạnh trong đặc tả thành phần phần mềm và ước lượng, đánh giá tài nguyên của hệ thống. Tuy nhiên, các cơng trình trên đều khơng áp dụng cho hệ thống thời gian thực dựa trên thành phần, không lập luận về ràng buộc tài nguyên cho quá trình thực thi của chương trình và khơng thể phân tích đánh giá ngay giai đoạn thiết kế.
5.3 Hợp đồng thời gian
Đặc tả thành phần phần mềm thời gian thực bằng hợp đồng thời gian là một kỹ thuật đem lại nhiều ưu điểm trong quá trình phát triển phần mềm. Mỗi hợp đồng, ngồi việc có thể mơ tả từng chi tiết trong thành phần phần mềm từ giao diện, thành phần bất biến, các ràng buộc tiền điều kiện, hậu điều kiện đến thể thức tương tác, v.v. mà cịn có thể mở rộng để đặc tả các yếu tố phi chức năng và có thể kết hợp với mã nguồn chương trình trong hợp đồng. Do đó, kỹ thuật này đem lại những ưu điểm trong phát triển phần mềm thời gian thực.
5.3.1 Thiết kế thời gian
Với mục tiêu tìm kiếm một kỹ thuật có nhiều ưu điểm trong q trình phát triển hệ thống thời gian thực dựa trên thành phần, luận án đặc tả các phương thức trong thành phần phần mềm bằng thiết kế thời gian. Cho một phương thức có dạng op(X, Y) được biểu diễn thông qua từng thiết kế có tập biến đầu vào,