Một phần mơ hình hệ thống ATM đơn giản

Một phần của tài liệu (LUẬN ÁN TIẾN SĨ) Một số phương pháp kiểm chứng tái cấu trúc phần mềm Luận án TS. Máy tính 624801 (Trang 52 - 58)

Định nghĩa 3.4 (Thuộc tính của lớp (Attribute of a class)). Một thuộc tính aCi ∈AC được biểu diễn bởi bộ - 3 aCi =NACi ,TACi ,PACi , trong đó NACi là tên của thuộc tính, Ti

Ai là kiểu của thuộc tính và Pi

AC là biểu thức logic vị từ biểu diễn cho các ràng buộc bất biến trên thuộc tính này.

Trong Hình 3.4, giá trị của thuộc tính balance thuộc vào lớp con Che- ckingAccount phải lớn hơn hoặc bằng giá trị của thuộc tính minBalance

của lớp chaAccount. Đây chính là biểu thức lô gic vị từ biểu diễn cho ràng

buộc bất biến trên thuộc tính balance.

Định nghĩa 3.5 (Bất biến của lớp (Class invariants)). Bất biến của lớp C , ký hiệu là INVC, được xác định bởi sự kết hợp của các biểu thức logic vị từ biểu diễn cho ràng buộc trên các thuộc tính của lớp.

Giả sử, PACi biểu thức logic vị từ biểu diễn ràng buộc trên thuộc tính ai

C ∈ AC (trong trường hợp thuộc tính ai

C khơng có ràng buộc, giá trị của biểu thức Pi

AC sẽ được gán là đúng (true)) và ký hiệu | AC |= n (lực lượng của tập hợp AC). Khi đó, bất biến của lớp C được mơ tả bởi cơng thức sau

đây:

INVC =Vni=1Pi AC

LớpCheckingAccounttrong Hình3.4 bao gồm hai thuộc tínhaccNum- ber và balance. Trong đó, thuộc tính accNumber phải thỏa mãn điều kiện khác null và thuộc tính balance thuộc vào phải lớn hơn hoặc bằng giá trị của thuộc tính minBalance của lớp cha Account. Khi đó bất biến của lớp CheckingAccount được xác định như sau:

INVChecckingAccount ={accNumber 6=null} ∧ {balance >=minBalance}

Định nghĩa 3.6 (Bất biến của mơ hình (Model invariants)). Bất biến F

của mơ hình M được định nghĩa bởi sự kết hợp của tất cả các bất biến của các lớp có trong mơ hình.

Giả sử mơ hình M bao gồm hai lớp C và D , bất biến của mơ hình M

được biểu diễn bởi cơng thức F = INVC ∧INVD, trong đó INVC và INVD tương ứng là bất biến của các lớp C và D .

Định nghĩa 3.7 (Quan hệ Kết hợp trong biểu đồ lớp của UML). Một kết hợp as ∈ΣA được biểu diễn bởi bộ - 3 as =hNas,Eas1,Eas2i, trong đó Nas là tên của kết hợp, Eas1,Eas2 là mấu kết hợp 1 và mấu kết hợp 2.

Định nghĩa 3.8 (Mấu của Kết hợp (Association End)). Một mấu kết hợp EASi được biểu diễn bởi bộ - 2 EASi =hNCL,MULTii, trong đó i ∈ [1,2] và NCL,MULTi tương ứng là tên của lớp tham gia vào quan hệ kết hợp và lực lượng của mấu kết hợp.

Định nghĩa 3.9 (Sự tương đương về ngữ nghĩa của hai phương thức (Se- mantic equivalent between two methods)). Cho cặp phương thức mCi và mDj , trong đó mi

C ∈MC và mDj ∈MD. Khi đó, mi

C và mDj được gọi là tương đương về mặt ngữ nghĩa và biểu thị bởi biểu thức Mi

C ∼=Mj D khi:          NMi C ≡NMj

D // hai phương thức có cùng tên Pi

MC ≡PMDj //trùng số lượng, tên, kiểu và thứ tự của danh sách tham số Ri ≡Rj //hai phương thức có cùng kiểu trả về

Khi đó MC ∪MD được phân chia thành các lớp tương ứng và biểu diễn bởi công thức MC,D ={mCij,D}, trong đó:

mi C,mDj ∈mC,Dij ⇔          mi C ∈MC mDj ∈MD Mi C ∼=Mj D

Ký hiệu phương thứcmCi trong tậpMC và không thuộc bất kỳ tậpmC,Dij

nào bằng biểu thức MC \ MC,D.

Định nghĩa 3.10(Cặp thuộc tính có thể kết hợp (Composable Attributes)).

Cho cặp thuộc tính aCi và aDj , trong đó aCi ∈AC và aDj ∈AD. aCi và aDj được gọi là có thể kết hợp và biểu thị bởi công thức Ai

C ∼=Aj D khi:    NADi ≡NAj

D //hai thuộc tính có cùng tên Ti

AD ≡TAj

D //hai thuộc tính có cùng kiểu

Ở đây Pi

AC và PAj

D có thể tương đương hoặc khơng tương đương.

Khi đó AC ∪AD được phân chia thành các lớp có thể kết hợp và biểu thị bởi AC,D ={aCij,D}, trong đó: ai C,aDj ∈aCij,D ⇔          ai C ∈AC aDj ∈AD Ai C ∼=Aj D Ký hiệu ai

C trong tập hợp AC nhưng không thuộc về bất kỳ tập hợp

AijC,D nào bởi biểu thức AC \ AC,D.

Trong các Chương3và Chương 4luận án định nghĩa một cách hình thức khái niệm tái cấu trúc. Tuy nhiên, các khái niệm này không hề bị trùng lặp

bởi lý do, các tiến trình tái cấu trúc được đề cập trong hai chương là khác nhau. Cụ thể, Chương 3 tái cấu trúc được thực hiện thơng qua các phép tốn liên quan đến biểu đồ lớp còn Chương 4tái cấu trúc lại được thực hiện bằng cách áp dụng mẫu thiết kế. Luận án định nghĩa về tiến trình tái cấu

Định nghĩa 3.11 (Tiến trình tái cấu trúc (Refactoring Process)). Một tiến trình tái cấu trúc R được biểu diễn bởi công thức:

R :M7−−−−−→ MOPname 0

trong đó M và M0 tương ứng là các mơ hình ban đầu và mơ hình sau tái cấu trúc, OPname là tên của phép toán tái cấu trúc được áp dụng.

Chú ý rằng, trong chương này luận án chỉ đề cập đến các phép toán tái cấu trúc trên biểu đồ lớp (Folding, Abstraction, Composition, Factoring và Unfolding) có liên quan đến quan hệ phân cấp trong kế thừa. Và như đã đề cập, mục tiêu nghiên cứu của chương này là sự bảo tồn các bất biến sau tiến trình tái cấu trúc. Bởi vậy, luận án cũng định nghĩa sự bảo tồn bất biến trên mơ hình tái cấu trúc như sau:

Định nghĩa 3.12 (Bảo tồn bất biến trên mơ hình tái cấu trúc (Invariant Preservation of Refactored Model)). Mơ hình tái cấu trúc M0 được gọi là bảo tồn các bất biến của mơ hình M sau tiến trình tái cấu trúc nếu với mỗi phép tốn tái cấu trúc được thực thi, mơ hình M0 thỏa mãn các bất biến của mơ hình M và cơng thức bất biến F0 của mơ hình M0 khi hạn chế trên mơ hình M bằng chính cơng thức bất biến F của mơ hình M.

Một cách hình thức hóa, cho R :M7−−−−−→ MOPname 0 là tiến tình tái cấu trúc, mơ hình tái cấu trúc M0 được gọi là bảo tồn bất biến của mơ hình ban đầu

M nếu:    F ⇒ F0 F0|M=F (3.1)

Trong đó, F và F0 tương ứng là các biểu thức logic vị từ biểu diễn bất biến của các mơ hình M và mơ hình M0. OPname là phép tốn tái cấu trúc được áp dụng. Trong trường hợp này, nếu F ⇒ F0 thì miền giá trị của F0 rộng hơn miền giá trị của F và F0|M= F đủ để đảm bảo rằng mơ hình sau tái cấu trúc bảo tồn các bất biến của mơ hình ban đầu.

3.4.3 Khn mẫu biễu diễn các phép tốn tái cấu trúc

Trước khi trình bày chi tiết từng phép tốn tái cấu trúc áp dụng đối với biểu đồ lớp, luận án mô tả chi tiết khn mẫu (template) của từng phép

tốn. Cụ thể, mỗi phép tốn được mơ tả bởi năm thành phần: (1) Tên, (2) Tình huống áp dụng, (3) Mơ hình khởi đầu, (4) Mơ hình tiến hóa và

(5) Biểu diễn bằng ký pháp UML, cấu trúc này được minh họa như trong

Bảng 3.1.

Bảng 3.1: Khn mẫu biểu diễn phép tốn tái cấu trúc

Định danh Diễn giải

Tên Tên của phép tốn tái cấu trúc

Tình huống áp dụng Tình huống phổ biến nên áp dụng phép tốn tái cấu trúc Mơ hình khởi đầu Thơng tin về mơ hình trước tái cấu trúc

Mơ hình tiến hóa Thơng tin về mơ hình sau khi thực hiện tái cấu trúc Biểu diễn bằng UML Minh họa phép toán bằng các ký pháp của UML

Việc mô tả khuôn mẫu của các phép toán tái cấu trúc giúp người phát triển hệ thống có một cái nhìn chi tiết và chính xác về q trình tái cấu trúc cũng như đưa ra những gợi ý ban đầu về khả năng áp dụng các phép toán tái cấu trúc vào trong những ngữ cảnh đặc biệt.

3.4.4 Xây dựng các luật tái cấu trúc

Trong khuôn khổ nghiên cứu của Chương3, luận án tập trung giải quyết bài toán bảo tồn bất biến của các lớp trong tiến trình tái cấu trúc (vấn đề bảo tồn hành vi sẽ được trình bày trong Chương 4). Do đó, trong chương này luận án giả định rằng tất cả các phép toán tái cấu trúc đều đáp ứng các yêu cầu về bảo tồn hành vi, nói cách khác tiền và hậu điều kiện của các phương thức đều được bảo tồn sau tiến trình tái cấu trúc của Chương 3.

Như đã trình bày, các phép tái cấu trúc phức hợp được xây dựng từ sự kết hợp một cách có thứ tự các phép tái cấu trúc nguyên thủy. Hơn nữa, việc chứng minh các phép tái cấu trúc nguyên thủy bảo toàn về mặt ngữ nghĩa đã được thực hiện bởi Slavisa Markovic trong luận án tiến sĩ của chính tác giả [40]. Bởi vậy, bất kỳ phép toán tái cấu trúc nguyên thủy nào được sử dụng trong luận án này đều coi sự chứng minh nhất quán về mặt ngữ nghĩa là điều tầm thường. Ngồi ra, chúng tơi cũng giả định một số yêu cầu sau trong quá trình thực hiện tái cấu trúc trên biểu đồ lớp của UML:

– Các phương thức trong các lớp khác nhau nhưng lại có chức năng giống nhau thì sẽ có tên trùng nhau (nếu các phương thức có các chức năng giống nhau nhưng tên khác nhau thì sẽ áp dụng phép tái cấu trúc nguyên thủy RenameMethod để chúng trở nên trùng nhau);

– Các thuộc tính trong các lớp khác nhau mà có cùng ngữ nghĩa thì sẽ có tên giống nhau (nếu các thuộc tính có ngữ nghĩa giống nhau nhưng tên khác nhau thì sẽ áp dụng phép tái cấu trúc nguyên thủy

RenameAttribute để chúng trở nên giống nhau).

Tái cấu trúc được biết đến là một công việc phức hợp bao gồm trong nó nhiều tác vụ khác nhau. Tái cấu trúc thực hiện trên biểu đồ lớp được phân loại thành các hoạt động cơ bản sau: thêm (addition)/loại bỏ (removal)/di

chuyển (move) các đặc trưng của mơ hình (thuộc tính (attributes), phương thức (methods) hay các liên kết trong quan hệ kết tập (associations)), tổng quát hóa (generalization) và chuyên biệt hóa (specialization) [64]. Trong khuôn khổ chương này, luận án chỉ quan tâm đến các hoạt động tái cấu trúc liên quan đến biểu đồ lớp, cụ thể là Folding, Abstraction, Composition, Factoring và Unfolding. Mục tiêu của chương này là đề xuất phương pháp

bảo toàn bất biến của lớp. Để đạt mục tiêu này, luận án sẽ đề xuất các luật tái cấu trúc (refactoring rules), chính là các cơng thức tốn học xác định các ràng buộc bất biến của mơ hình tái cấu trúc từ các ràng buộc bất biến của mơ hình ban đầu. Tính đúng đắn của các luật tái cấu trúc này áp dụng trong tiến trình tái cấu trúc sẽ được chứng minh trong tiểu mục tiếp theo.

3.4.4.1 Phép tốn: Folding

• Tên gọi: Folding

• Tình huống áp dụng:

– Thành phần: 2 lớp C và D có mối quan hệ kế thừa trực tiếp; – Mục đích: giảm mức độ phân cấp trong mơ hình;

– Thực thi: kết hợp 2 lớp C và D để thành lớp mới E, lớp này chứa đựng hành vi và thuộc tính của cả hai lớp ban đầu.

• Mơ hình khởi đầu M bao gồm hai lớp C và D như sau: – lớp cơ sở C = hNC,MC,ACi;

Hình 3.5: Phép toán tái cấu trúc Folding∗ MC =m1

Một phần của tài liệu (LUẬN ÁN TIẾN SĨ) Một số phương pháp kiểm chứng tái cấu trúc phần mềm Luận án TS. Máy tính 624801 (Trang 52 - 58)

Tải bản đầy đủ (PDF)

(132 trang)