Bùi Duy Hải



tải về 0.58 Mb.
trang4/4
Chuyển đổi dữ liệu20.05.2018
Kích0.58 Mb.
1   2   3   4

Chương 3: Kiểm chứng mô hình Aspect-UML

  1. Giới thiệu về Alloy

    1. Alloy[4] là gì?


Trong công nghệ phần mềm, Alloy là một ngôn ngữ đặc tả mô hình hóa cho những biểu thị sự ràng buộc của những cấu trúc phực tạp trong công nghệ phần mềm. Alloy là một công cụ mô hình hóa đơn giản dựa trên thứ bậc logic đầu tiên.Nền tảng toán học của ngôn ngữ này bị ảnh hưởng nặng lề bởi các phép biểu diễn. Mặc dù cú pháp của ngôn ngữ này có trách nhiêm hơn so với ngôn ngữ khác như hạn chế về đối tượng ngôn ngữ. Alloy xác định mục tiêu tạo nên những mô hình vi mô để sau này nó tự động kiểm tra cho sự đứng đắn của các mô hình ấy. Mặc dù Alloy được thiết kế với phân tích tự động trong suy nghĩ, khác với nhiều ngôn ngữ đặc tả thiết kế cho mô hình kiểm tra ở chỗ nó cho phép định nghĩa các mô hình vô hạn .Các đặc tả Alloy có thể bị kiểm tra bằng cách sử dụng Alloy Analyzer. Alloy Analyzer được thiết kế để thực hiện kiểm tra phạm vi hữu hạn, ngay cả trên các mô hình vô hạn.
      1. Tính chất của ngôn ngữ alloy


  • Đối các mô hình hữu hạn alloy có thể hữu hạn phạm vi kiểm tra: phân tích được đầy đủ các đối tượng đặc tả

  • Alloy cho phép kiểm tra vô hạn các mô hình vì kiểm tra hữu hạn không nhận được phản ánh đúng từ mô hình cần đặc tả

  • Alloy có khả năng đặt quan hệ logic giữa các đối tượng trong mô hình

  • Tự động phân tích và kiểm tra tính đứng đắn của các mô hình

  • Về cấu trúc dữ liệu:

    • Xử lý vụng về

    • Chức năng đệ quy khó diễn tả
      1. Cấu trúc một chương trình Alloy


module ….

sig A{…}


fact F {…}

assert a { …}

check a scope

pred P () {…}

run P

Ý nghĩa:


– sig A: Thiết lập một lớp đối tượng A

– fact F: nghĩa là giả sử ràng buộc F vững chắc

–assert a: tin tưởng rằng A sau F

–check a : tìm một ví dụ không đáp ứng A và F

– pred: định nghĩa sự ràng buộc P

– run: tìm ra 1 instance thỏa mãn P và F


      1. Khai báo trong alloy


Dòng đầu tiên khai báo modul

  • Sig Object{} định nghĩa một lớp đối tượng

  • Trừu tượng sig Object ()là trừu tượng sig không có các thành phần ngoại trừ những phần mở rộng của nó

  • SigFile extends Object ()-sự thiêt lập này có thể được giới thiệu là một tập hợp con của tập khác
        1. Các ký hiệu


  • Sig A{}

  • sig B extends A {} (nghĩa là B trong A)

  • sig C extends A {}(C trong A)
        1. Khai báo các liên kết


Liên kết được khai báo như các trường và các ký hiệu

sigObject{}

sigDir extends Object {

entries: set Object,

parent: lone Dir

}

        1. Các trường


  • Sig A{f: set X}

  • Sig B extends A{g:set Y}

Nghĩa là : B in A

f: A-> X


g: B->Y
        1. Các dạng thiết lập


  • Lone: chỉ không hoặc một

  • All: bất kì số nào

  • One: chỉ duy nhất một

  • Some: một hoặc nhiều hơn
        1. Facts và Assertions


  • Fact

    • Hạn chế được những giả đình luôn luôn giữ(ví dụ như sử dụng các không gian hạn chế của các bộ đếm)

    • Một mô hình có thể có bất kỳ các con số của fact

sigA {}

fact { all z: A | F }



  • Assert: sự liên kết có ý đi theo các fact của mô hình có thể kiểm tra bằng cách sử dụng các lệnh kiểm tra


        1. Các hằng số và các toán tử


Ngôn ngữ của các mối quan hệ có các hằng và toán tử của mình chúng

  • Hằng:

    • None = tập rỗng.

    • Univ = tập phổ biến

    • Iden = đồng nhất.

  • Các toán tử(Operators):

    • Set operators:

      • +: hợp nhất

sig Vehicle{} {Vehicle = Car+ Truck}

fact DisSubtrees{all t1, t2: Tree | (t1.^children)&(t2.^children)= none}

      • -: hiệu số

fact dirinothers { all d: Directory - Root | some contents.d }

      • in : tập con

sibling = (brother + sister)

sister in sibling



      • =: bằng nhau

    • Relational operators:

      • . : dot (phép nối)

      • ->: mũi tên (product)

      • ^ : transitive closure

      • *: reflexive- transitive closure

      • ~: đảo vế

      • [] : box (join)

      • <: : domain restriction

      • :> : range restriction

      • ++ : override

    • Toán tử logic

      • ! : negation

      • && : conjunction (and)

      • || : disjunction (OR)

      • => : implication

      • else : alternative

      • <=> : bi-implication (IFF)

    • Logic Cardinalities

      • = equals

      • < less than

      • > greater than

      • =< less than or equal to

      • >= greater than or equal to

      • #r number of tuples in r

      • 0,1,... integer literal

      • + plus

      • - minus
        1. Predicates


  • Một pred là tên của một ràng buộc

  • Không hoặc nhiều hơn sự khai báo cho những lí luận

  • Có thể sử dụng để đại diện cho một quá trình thực thi

  • Chỉ được dùng khi được gọi (không như fact)
    1. Đặc tả mô hình Aspect-UML trong Alloy

      1. Mô hình Aspect UML


Vì việc đặc tả mô hình UML+ OCL đã được nghiên cứu và hoàn thành do vậy chúng ta chỉ xem xét đến mô hình Aspect- UML. Phương pháp đặc tả trong bài luận này sẽ xem xét cách phân tích các tương tác aspect trong mô hình A-O được viết trong Aspect UML [5,6]. Aspect-UML là một mô hình đơn giản mở rộng của UML và sử dụng các khái niệm cơ bản của AOP (aspect, các advice, point cut, joint point và các crosscutting). Nó cũng cho phép các chú thích hình thức ví dụ như pre , post conditions, để đặc tả chính xác các trạng thái của các thành phần như join points và advices cũng như context ở pointcut. Nhờ có các chú thích này, mô hình Aspect UML cung cấp thêm thông tin để phân tích các tương tác aspect từ các điểm ngữ nghĩa của khung nhìn. Công việc này do đó đi một bước xa hơn các phương pháp truyển thống dựa trên phân tích chương trình tĩnh mà thường quên đi việc giải quyết ngữ nghĩa gây ra xung đột giữa các aspect.

Mô hình Aspect-UML có thể được kiểm tra từ các xung đột tương tác aspect. Một cách để tự động quá trình kiểm chứng là chuyển đổi mô hình Aspect- UML sang ngôn ngữ đặc tả Alloy. Alloy cung cấp một ngôn ngữ đặc tả mô hình đơn giản dựa trên logic đầu tiên như phân tích mô hình và công cụ mô phỏng[]. Một mô hình Alloy được soạn thảo từ một tập hợp các signature xác đinh tập hợp đối tượng và các mối quan hệ giữa chúng. Mô hình này có thể được thêm các rang buộc bởi predicates và assertions. Một mô hình là trừu tượng cái mà thực sự xác định một tập hợp có thể vô hạn của một mô hình hữu hạn. Alloy thực thi đặc tả mô hình bằng cách tìm kiếm mô hình cá biệt đáp ứng một số đặc điểm của đặc tả. Một mô hình có thể được kiểm tra là có giá trị hay là thỏa mãn bên trong các ràng buộc một mô hình cá biệt. Thật vậy, các phân tích Alloy giới hạn việc tìm kiếm các mô hình cá biệt cái mà kích cỡ(về các đối tượng) là thấp hơn cho một số ràng buộc cố đinh bời người sử dụng. Alloy khẳng định hướng tiếp cận đặc tả của nó bằng việc đề xuất giả thuyết phạm vi nhỏ mà theo đó các counterexample phế bỏ một mô hình có khuynh hướng xảy ra trong các ví dụ mô hình nhỏ.



Để kiểm chứng mô hình Aspect UML, trước hết chúng ta giả định rằng hệ thống cơ bản và Aspect cả 2 đều được chứng minh là đúng. Bằng việc chuyển đổi mô hình Aspect UML sang Alloy, quá trình đặc tả hình thức của chúng ta có mục đích biểu lộ những loại vấn để tương tác aspect sau đây: (1) vi phạm tài nguyên địa phương, một pre/post condition của adive hoặc point cut là vi phạm do kết hợp của 1 aspect; (2) vi phạm của một lớp, aspect hoặc bất biến hệ thống do thêm vào một aspect.
      1. Mô hình viễn thông


Để minh họa cho việc đặc tả mô hình Aspect UML bằng alloy ta sử dụng ví dụ ứng dụng điện thoại. Ứng dụng này là một phỏng đơn giản của một hệ thống điện thoại, trong đó khách bắt đầu chấp nhận, thả và hợp nhất các cuộc gọi trong nội bộ và đường dài. Hệ thống cung cấp các chức năng lõi để mô tả và kết nối khách hàng. Trong các chức năng cơ bản, một người có thể thêm giờ, thanh toán và ngắt các tính năng được mô tả dưới đây:

  • Tính năng thời gian được liên quan tới thời gian kết nối và giữ thời gian kết nối tổng số cho mỗi khách hàng. Nó xảy ra ở trong khoảng đầu đến cuối của mỗi kết nối.

  • Tính năng thanh toán có liên quan tới việc tính phí khách hàng cho các cuộc gọi của họ. Một tính phí cho mõi kết nối được tính toán và khi chấm dứt kết nôi nó được bổ sung vào hóa đơn của khách hàng phù hợp

  • Tính năng ngắt được sử dụng để xử lý các đường truyền bận bằng cách ngắt cuộc gọi. Nó can thiệp vào lúc bắt dầu kết nối bằng cách kiểm tra nếu đích là bận , trong trường hợp này cuộc gọi bị gián đoạn.

Hình 6: Mô hình class cho hệ thống viễn thông

Hình trên thể hiện bằng cách nào viêc tính giờ, thanh toán và các yêu cầu ngắt cuộc gọi được tích hợp vào trong biểu đồ lớp UML, sử dụng Aspect UML thích hợp. Những yêu cầu crosscutting được bắt tương ứng bằng aspect Timing, Billing và Interrupting cái mà được mô tả như các lớp trong UML được mô tả với stereotype <>. Những aspect này cắt ngang ứng dụng cơ bản thông qua 2 point cut được mô hình như một interface đặc biệt có tên là OpComplete và OpDrop. Một quan hệ phụ thuộc <> thì thường được sử dụng để liên kết mỗi join point mà nó biểu hiện. Interface của pointcut OpComplete chứa một biểu thức trừu tượng được đặt tên là opComplete(c:Connection) được thực thi khi một trong những joinpoint của nó đạt được. Tương tự interface của OpDrop chức một biểu thức trừu tượng opDrop(c:Connection). Hãy xem xét về ví dụ aspect Timing( aspect Billing và aspect Interrupting cũng tương tự). Nó thực thi cả interface ponitcut OpComplete và OpDrop và do đó cung cấp 1 số advice tương ứng để thực hiện mỗi cái trong chúng.

      1. Đặc tả mô hình Aspect UML bằng Alloy­


Phần này giải thích cách mà mô hình Aspect UML có thể được chuyển đổi sang đặc tả Alloy để chúng sau này có thể được phân tích bằng Alloy Analyzed.

Bảng 2: Chuyển đổi thành phần cấu trúc mô hình Aspect UML sang Alloy.



Các class và aspect được chuyển thành các khai báo signature trong Alloy. Các thuộc tính của một lớp hoặc của 1 aspect thì được chuyển thành các mối quan hệ trong các signature tương đồng. Tương tự các liên kết giữa những class và hoặc aspect thì được dịch thành các mối quan hệ. Đối với kiểu người dùng tự định nghĩa kiểu dữ liệu tập hợp , cái mà là tập hợp các giá trị không được có mặt trong UML( ví dụ như kết nối hay ngắt kết nối trong trường hợp chúng tôi nghiên cứu), các enumeration con được chuyển đổi thành các signature kế thừa từ signature được định nghĩa bởi cái kiểu enumeration. Ví dụ, đoạn code Alloy sau đặc tả lớp Connection xuất hiện ở trong mô hình lớp của ứng dụng viễn thông (hình 5).

Sig Connection{

status: Status,

origin, destination: Device

}

abstract sig Status{}



sig connected, disconnected extends Status{}

Đối với aspect Timing, nó được xác định bời đoạn code Alloy sau:

sig Timing{

effectiveConnections: set Connection,

getTimer: effectiveConnections → some Timer

}

sig Timer{



startTime, connectionTime: Int,

c : Connection

}

Chuyển đổi ngữ pháp của chú thích Aspect UML sang Alloy

Để giải quyết ngữ nghĩa của các tương tác aspect tại join point, mô hình UML đã được mở rộng với các chú thích xác định những giao ước riêng lẻ mà mỗi phương thức / biểu thức advice (thực thi tại join point) phải được lưu ý. Những giao ước đó được khai báo ở các điều kiện trước và sau (post/pre condition). May mắn thay Alloy cũng cho chúng ta đặc tả những ràng buộc mà biểu thức(phương thức và advice tại join point) phải thỏa mãn thông qua việc sử dụng các predicate. Ví dụ: xét 1 phương thức op() với tham số s thuộc kiểu T có hành vi được xác định bởi điều kiện trước là s>0 và điều kiện sau khi thực thi là s<100, Alloy mô tả ràng buộc này predicate sau:

pred op(s, s′:T) {

// precondition

s>0

// postcondition



s′ <100}

Trong một mô hình Aspect UML chính xác, các tương tác aspect tại join point không bao giờ là nguyên nhân sự vi phạm của các điều kiện riêng lẻ trước và sau của hàm, bất kể bối cảnh thực thi có được lưu tâm. Trong mô hình Alloy, điều này có nghĩa là việc kết hợp các aspect sẽ yêu cầu các thành phần của các ràng buộc của advice với những với ràng buộc join point có liên quan. Nếu không có xung đột, tất cả các trường hợp của mô hình có thể đáp ứng các ràng buộc, mà gây ra bởi việc kết hợp các aspect. Nếu không có xung đột, tất cả các trường hợp của mô hình có thể đáp ứng các ràng buộc, mà gây ra bởi việc kết hợp các aspect.

Để minh họa điều này, chúng ta hãy xem xét các predicate của Alloy mà chúng tôi định nghĩa để hạn chế các thực thi kết hợp các phương thức và advice tại join point Drop trong ứng dụng viễn thông. Trong các bước sau đây, chúng tôi sẽ giải thích làm thế nào để xác định (1) những ràng buộc của phương thức drop(), (2) ràng buộc của advice opDropTiming và opDropBilling,(3) những ràng buộc áp đặt bởi các thành phần advice, và cuối cùng (4) các ràng buộc tạo ra bời việc kết hợp các advice tại join point drop().

(1) Các hành vi của phương thức drop() phải thỏa mãn các ràng buộc áp đặt bởi những điều kiện trước và sau của nó. Điều kiện trước phải được thoải mãn bởi mô hình mà mỗi phương thức được thực thi và phương thức thực thi phải rời khỏi mô hình trong trang thái thỏa mãn những điều kiện sau. Trong trường hợp này, trạng thái kết nối được thiết lập để kết nôi khi drop() được gọi, trong khi việc thức thi của nó sau này phải bị hủy để ngắt kết nối. Trạng thái trước và sau việc kết nối tương ứng được nắm bắt bởi các biến c và c’. Những ràng buộc này có thể được đặc tả trong Alloy sử dụng các định nghĩa predicate như bên dưới :

pred drop(c, c′: Connection) {

c.status= connected &&

c′.status=disconnected &&

c′.origin.d_status=idle &&

c′.destination.d_status=idle

}

(2) Hành vi của advice opDrop trong aspect Timing được xác định một cách tương tự .Các điều kiện trước của nó ràng buộc giờ liên quan tới việc kết nối (đang bị ngắt) không có một đăng kí nào về thời gian kết nối. Ngược lại, điều kiện sau tác động mạnh mẽ lên thời gian có đăng kí kết nối giá trị thời gian phải lớn hơn hoặc bằng 0. Những ràng buộc này buộc bộ đếm giờ phải thay đổi trạng thái, cái mà hậu quả ảnh hưởng lớn đến aspect Timing cũng để thay đổi trạng thái nó phải cập nhật các trường bao gồm danh sách các bộ tính giờ. Tham số t và t’ được sử dụng để biểu thị trạng thái của aspect Timing trước và sau khi thức thi advice opDrop. Đối với việc kết nối, cá trạng thái của nó (mô hình bởi tham số c )vẫn giữ nguyên. Predicate Alloy sau được sử dụng để xác định ràng buộc áp đặt bởi advice opDrop:



pred OpDropTiming(t,t′:Timing, c:Connection) {

t.useTimer[c].connectionTime=Null &&

t′.useTimer[c].connectionTime≥ 0 }

Một predicate Alloy phải được định nghĩa để xác định các ràng buộc áp đặt bởi các điều kiện trước vào sau của mỗi advice và join point phương thức được xuất hiện trong mô hình Aspect UML. Trong trường hợp advice opDrop của Billing, các điều khiện trước và sau có tác động mạnh mẽ lên tổng số hóa đơn của người gọi để tăng thêm nếu bộ đếm thời gian đã được ghi lại một thời gian kết nối lớn hơn hoặc bằng 0. Do vậy chỉ có hóa đơn thay đổi trạng thái. Trạng thái này có thể được quan sát nhờ tham số b và b’ trong predicate opDropBilling bên dưới. Predicate này xác định một ràng buộc bắt buộc bởi thực thi advice opDrop của Billing.

pred OpDropBilling(b,b′:Billing, t:Timing,c:Connection) {

(t.useTimer[c].connectionTime >= 0) &&

(b.useBill[c.origin.owner].charge ≤

b′.useBill[c.origin.owner].charge)

}

Hầu hết ta có thể thấy được aspect Billing ngầm đòi hỏi các dịch vụ của aspect Timing. Cách xây dựng này không được khuyến cáo, các aspect nên được định nghĩa độc lập với nhau.Tuy nhiên nếu aspect Timing được thu lại, phân tích của chung tôi có thể phát hiện lỗi của aspect Billing tại join point drop.



(3) Khi nhiều hơn một advice của cùng 1 loại(tức là trước hoặc sau) được thực hiện ở cùng 1 join point, những advice đầu tiên cần đồng thời được biên soạn cùng nhau trước khi được đan kết lại ở tại join point này. Các advice đồng thời có sự ưu tiên để biên soạn là ngang nhau theo sau là các yêu cầu xác định bởi những ràng buộc cấp cao. Tuần tự các điều kiện tác động đến điều kiện sau của một hàm trong sự nối tiếp đến điều kiện trước của hàm sau. Nếu các advice đồng thời không được ưu tiên, chúng sẽ được biên soạn liên tục nhưng không phải ở trong một trật tự xác định. Do đó tất cả có thể yêu cầu cần phải được kiểm tra. Một lần nữa điều kiện sau của mộ hàm sẽ được ràng buộc tới điều kiện trước của hàm kế tiếp.

Ví dụ Timing và Billing không là các aspect đồng thời tương tác tại join point drop. Advice onDrop tương ứng của chúng cần được biên soạn trong một trật tự khó mà xác định được. Để tác động đến Alloy đi qua tất cả các advice được yêu cầu, chúng ta định nghĩa một predicate được gọi là executeOpDrop cái mà cho phép Alloy có sự lựa chọn thoải mái để cho phép điều kiện sau của predicate opDropBilling tiếp theo điều kiện trước của predicateOpDropTiming hoặc ngược lại. Vậy khi kiểm tra tính hợp lệ của assertion, bộ phân tích alloy sẽ đi qua tất cả các thực thi các predicate, vì thế cố gắng tất cả các yêu cầu của hai advice pre và post constraint.

pred executeOpDrop(t,t′:Timing, b,b′:Billing,c:Connection){

OpDropTiming(t,t′,c) && OpDropBilling(b,b′,t′,c)

||

OpDropBilling(b,b′,t,c) && OpDropTiming(t,t′,c) }



(4) Cuối cùng việc tổng hợp kết quả của advice từ các thành phần của OpDropTiming và OpDropBilling là chỉ xảy ra sau khi thực hiện join point drop(). Predicate weaveAtOpDrop ở dưới đây định nghĩa các ràng buộc cưỡng bức bởi việc kết hợp. Predicate này rõ ràng tác động đến hoàn cảnh thỏa mãn ràng buộc c <- đích (định nghĩa bởi pointcut OpDrop trong mô hình Aspect UML)để được lưu tâm nhờ tham số c’. Tham số này đại diện cho trạng thái của kết nối chỉ sau khi thực thi phương thức drop. Nó được thông qua để predicate executeOpDrop định nghĩa tập hợp các ràng buộc gây ra bởi kết hợp các advice để được thực thi chính xác tại điểm đó. Cuối cùng , từ những ảnh hưởng của advice này phải không trái điều kiện khởi tạo của join point drop, chúng tôi buộc các trạng thái cuối của kết nối bị ngắt như dự kiến ban đầu.

pred weaveAtOpDrop(t,t′: Timing, b,b′:Billing, c,c′: Connection)

{ drop(c,c′) &&

executeOpDrop(t,t′,b,b′,c′) &&

(c′.status=disconnected)

}

      1. Kiểm chứng mô hình Aspect UML sử dụng Alloy


Phương pháp kiểm chứng này có mục đích là phát hiện ra sự xen vào các vấn đề:

  • Sự vi phạm của thuộc tính cục bộ

  • Sự vi phạm của thuộc tính toàn cục
        1. Kiểm chứng sự vi phạm của thuộc tính cục bộ


Tại mỗi join point được đưa ra, một aspect ,advices có thể có can thiệp với hệ thống cơ sở hoặc với các aspect khác bởi sự vi phạm cái điều kiện trước và sau của chúng. Các khẳng định thường chắc chắn rằng tất cả các khởi tạo của mô hình ban đầu đều chính xác phải thỏa mãn việc kết hợp các predicate. Ví dụ, trong ứng dụng viễn thông, để kiểm tra liệu aspect Timing và Billing có tương tác chính xác tại join point drop(chúng không vi phạm các đặc tả của hệ thống cơ bản hay không vi phạm tới các aspect khác), công cụ phân tích Alloy đưa ra khẳng định sau:

assert testWeaveAtOpDrop {

all c: Connection, t:Timing, b: Billing |

some c′: Connection, t′:Timing, b′: Billing |

(c!=c′)&&(t!=t′)&&(b!=b′) => weaveAtOpDrop(t,t′, b,b′, c,c′)

}

Nếu khẳng định không hợp lệ thì sẽ xuất hiện counterexample được sinh ra bởi công cụ phân tích Alloy.


        1. Kiểm chứng sự vi phạm của các thuộc tính toàn cục


Các ràng buộc hệ thống có thể dễ dàng kiểm chứng được bởi các predicate thêm vào trong mô hình Alloy.Trong ứng dụng viễn thông, hai ràng buộc quan trọng có thể được kiểm chững là :

  • Với mỗi trạng thái của hệ thống số lượng các kết nối luôn nhỏ hơn hoặc bằng 50.

  • Trạng thái của tất cả các thiết bị ( nguồn hoặc đích ) tham gia vào các kết nối thì không nhàn rỗi.

Những bất biến này có thể được kiểm chứng bời những predicate sau:

pred limitedConnectedConnections {

#{allc:Connection | c.status=connected}≤ 50 }

pred deviceIdle {

alld:Device,somec:Connection |

(dinc.(origin+destination))&&(c.status=connected)

=> (d.d−status!=idle)

}.

  1. Chương 4 : Kết luận


Trong quá trình thực hiện khóa luận này tôi đã tìm hiểu được những kiến thức cơ bản về kiểm chứng, một trong những công đoạn vô cùng quan trọng giúp phát hiện và sửa lỗi phần mềm nhằm đảm bảo chất lượng phần mềm.Ngoài ra trong khóa luận tôi còn xậy dựng được phương pháp kiểm chứng mô hình Aspect UML bằng Alloy. Cùng với việc kiểm chứng mô hình UML+ OCL đã có sẵn từ trước thì việc kiểm chứng mô hình UML trở lên toàn diện hơn, kiểm chứng trên nhiều phương diện. Do thời gian chưa cho phép tôi vẫn chưa hoàn thành được công cụ tự động đặc tả mô hình UML +OCL + ASPECT bằng Alloy. Những kiến thức trong bài luận này kết hợp với những kiếm thức đặc tả mô hình UML+ OCL có sẵn sẽ giúp tôi hoàn thành công cụ này trong tương lai.

TÀI LIỆU THAM KHẢO

[1] http://www.cs.bham.ac.uk/~bxb/UML2Alloy/



[2] http://mobilesprogramming.wordpress.com/

[3] Farida Mostefaoui DIRO,Julie Vachon , University of Monreal Quebec, Canada Verification of Aspect –UML models using alloy, 2007

[4] Daniel Jackson , Solfware Abstraction: Logic, Language, and Analysis,

[5] J.VachonandF.Mostefaoui.Achieving supplementary equirements using aspect-oriented development.In ICEIS, pages584–587, 2004



[6] F.MostefaouiandJ.Vachon.Approche basee sur les r´ eseaux de Petripourla v´erification de la composition danslessyst` emesparaspects. RSTI-L’Objet, 12(2-3):157–182,September2006.

1   2   3   4


Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2016
được sử dụng cho việc quản lý

    Quê hương