1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế hướng đối tượng và xây dựng hệ thống thông tin phức tạp

27 424 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế hướng đối tượng và xây dựng hệ thống thông tin phức tạp
Tác giả Nguyễn Mạnh Đức, Nguyễn Văn Vỵ, Đặng Văn Đức
Người hướng dẫn PGS.TS. Nguyễn Văn Vỵ, PGS.TS. Đặng Văn Đức
Trường học Đại học Bách Khoa Hà Nội
Chuyên ngành Bảo đảm toán học cho máy tính và hệ thống tính toán
Thể loại Luận án tiến sĩ
Năm xuất bản 2007
Thành phố Hà Nội
Định dạng
Số trang 27
Dung lượng 0,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thiết kế hướng đối tượng và xây dựng hệ thống thông tin phức tạp

Trang 1

Bé Gi¸o dôc vµ §µo t¹o ViÖn KHoa häc vµ C«ng NghÖ ViÖt nam

M· sè: 62 46 35 01

Tãm t¾t LuËn ¸n tiÕn sÜ to¸n häc

Hµ Néi – 2007

Trang 2

Luận án được hoàn thành tại Viện Công nghệ thông tin,

Viện Khoa học và Công nghệ Việt Nam

PGS.TS Nguyễn Ngọc Bình

Trường ĐHCN – ĐHQG Hà Nội Phản biện 3:

PGS.TS Đỗ Trung Tuấn Trường ĐHKHTN – ĐHQG Hà Nội

Luận án sẽ được bảo vệ trước Hội đồng chấm luận án cấp Nhà nước tại Hội trường Viện Công nghệ thông tin, Viện Khoa học và Công nghệ Việt Nam vào hồi 15 giờ ngày12 tháng 09 năm 2007

Có thể tìm hiểu luận án tại:

Thư viện Quốc gia Việt Nam

Thư viện Viện Công nghệ thông tin

Thư viện Trường Đại học Sư phạm-Đại học Thái Nguyên

Trang 3

DANH MụC CáC CÔNG TRìNH Đã CÔNG Bố CủA TáC GIả

Và CáC CộNG Sự LIÊN QUAN ĐếN LUậN áN

[1] Nguyễn Mạnh Đức, Nguyễn Văn Vỵ (2004), Tái thiết kế hệ thống phần mềm bằng UML, Báo cáo Hội thảo Quốc gia “Một số vấn đề

chọn lọc của công nghệ thông tin”, Đà Nẵng 8/2004

[2] Nguyễn Mạnh Đức (2005), “Mô hình hoá ứng dụng trên nền Web với

UML”, Tạp chí khoa học và công nghệ, Đại học Thái Nguyên, 2 (34),

tr 47-53

[3] Nguyễn Mạnh Đức (2005), Thiết kế và cài đặt hệ thống phần mềm xử

lý số liệu thống kờ và thực nghiệm, Hội thảo Khoa học toàn quốc

“Phỏt triển cụng cụ tin học trợ giỳp cho giảng dạy, nghiờn cứu và ứng dụng toỏn học”, Hà Nội 4/2005, tr 117-124

[4] Nguyễn Mạnh Đức, Nguyễn Văn Vỵ, Đặng Văn Đức (2005), “Mô hình đại số quan hệ của hệ thống hướng đối tượng”, Tạp chí Tin học

và Điều khiển học, Viện Khoa học và Công nghệ Việt Nam, Hà Nội,

21 (3), tr.261-270

[5] Nguyễn Văn Vỵ, Đặng Văn Đức, Nguyễn Mạnh Đức (2006), Phương pháp hình thức phát triển hệ thống hướng đối tượng dựa trên quan hệ

đại số, Báo cáo Hội thảo Quốc gia “Một số vấn đề chọn lọc của công

nghệ thông tin và truyền thông”, Đà Lạt 6/2006

[6] Nguyễn Mạnh Đức, Đặng Văn Đức (2006), “Về một cách tinh chế mô hình lớp UML”, Tạp chí Tin học và Điều khiển học, Viện Khoa học

và Công nghệ Việt Nam, Hà Nội, 22 (1), tr.63-74

[7] Nguyễn Mạnh Đức, Đặng Văn Đức (2006), “ứng dụng phương pháp

hướng đối tượng và ngôn ngữ UML mô hình hoá hệ thống

E-Learning”, Tạp chí Khoa học và Công nghệ, Viện Khoa học và Công

nghệ Việt nam, Hà Nội, 44 (3), tr.33- 42

Trang 4

Mở đầu

1 Lý do và mục đớch nghiờn cứu

Ngày nay, do sự tiến bộ nhanh chóng về công nghệ phần cứng, các tính năng của máy tính tăng nhanh sau mỗi khoảng thời gian Cùng với sự phát triển đó, yêu cầu phát triển phần mềm có qui mô lớn phức tạp trở nên cấp bách và vấn đề bảo trì các hệ thống trở thành vấn đề nghiêm trọng Trước những thách thức to lớn như vậy, công nghệ phát triển phần mềm hướng đối tượng cùng với các công cụ tự động hoá đi theo nó đã trở thành một giải pháp công nghệ hữu hiệu cho các vấn đề đặt ra Phát triển phần mềm theo tiếp cận hướng đối tượng đã trở thành một vấn đề tất yếu trong công nghệ phần mềm

Thiết kế và phỏt triển hệ thống phần mềm với ngụn ngữ hướng đối tượng đó được nhiều chuyờn gia thừa nhận là rất phức tạp Nhiều nhà nghiờn cứu chỉ ra sự cần thiết phải phỏt triển cụng cụ hỡnh thức hoỏ làm nền tảng cho việc phỏt triển cỏc phần mềm hướng đối tượng Phỏt triển những phần mềm lớn và phức tạp khụng thể làm theo kiểu một lần là xong, mà phải “tinh chế dần từng bước”, sự phỏt triển từ bước này sang bước kia phải đỳng đắn

Một cỏch thức phỏt triển bảo đảm chất lượng hệ thống phần mềm là thực hiện theo chiến lược tinh chế từng bước một (step-by-step refinement) Để thực hiện sự phỏt triển theo cỏch thức đú cần phải bảo đảm rằng: bước sau thực sự là một sự phỏt triển của bước trước (bảo đảm tớnh đỳng đắn, bảo đảm mọi điều đỳng trong bước trước phải đỳng trong bước sau)

Một trong cỏc phương phỏp rất quan trọng là phương phỏp hỡnh thức, vừa cho khả năng kiểm chứng tớnh đỳng đắn, lại vừa cú khả năng tự động hoỏ việc kiểm chứng đú; chẳng hạn như cụng cụ RAISE, cho ta khả năng tự động hoỏ việc kiểm chứng tớnh đỳng đắn cho từng bước; Nhưng RAISE cú những hạn chế: khụng đặc tả được hết cỏc

hệ thống như UML, việc tinh chế từ bước này sang bước do người dựng làm theo kinh nghiệm, phải sau khi cú hệ thống sau mới kiểm tra được tớnh đỳng theo hệ thống trước Gần đõy, một nhúm nghiờn cứu dựa trờn rCOS đó đặc tả được cỏc hệ thống rộng rói hơn RAISE, đó xõy dựng và chứng minh một số luật để phỏt triển cỏc hệ thống phần mềm theo cỏc luật đú thỡ tớnh đỳng đắn được thoả món Mặt khỏc, ngụn ngữ đặc tả UML với cỏc đặc điểm như: tầm sử dụng lớn, mụ tả được hầu hết cỏc hệ thống mong

1

Trang 5

muốn; được sử dụng rất rộng rãi; có công cụ hỗ trợ rất hiệu quả là Rational Rose, có thể thực hiện được phần lớn các đặc tả của UML

Chúng ta đã có phần mềm Rational Rose, với những qui trình kinh nghiệm phát triển để thực hiện theo cách thức đó, nhưng tôi chưa thấy có công trình nào chứng minh tính đúng đắn cho những qui trình đó được công bố

Trong vài năm gần đây, He Jifeng và các cộng sự đã đề xuất một ngôn ngữ đặc tả rCOS, với ngôn ngữ đó họ đã chứng minh được một số luật tinh chế để bảo đảm tính đúng đắn của quá trình tinh chế, chỉ ra các quy tắc mà khi tinh chế hệ thống theo những qui tắc đó thì việc tinh chế ấy là đúng đắn, và như vậy không cần kiểm chứng lại cho từng bước nữa

Mục tiêu của luận án là: Sử dụng các luật của rCOS xây dựng các thuật toán tinh chế, để phát triển các hệ thống đối tượng bảo đảm tính đúng đắn Các vấn đề liên quan bao gồm:

1 Tìm hiểu mô hình quan hệ của hệ thống hướng đối tượng, mô hình tính toán rCOS để xây dựng các đặc tả khai báo và làm mịn các lớp

2 Xây dựng các thuật toán tinh chế trên cơ sở các luật tinh chế của rCOS Với mục tiêu trên, luận án đi sâu nghiên cứu các nội dung:

1 Nghiên cứu cơ sở lý thuyết để tiến tới xây dựng một công cụ phục vụ cho việc phát triển các hệ thống đối tượng Cụ thể là đặc tả một công cụ để xây dựng các hệ thống đối tượng, xây dựng các thuật toán dùng trong công cụ đó

để thiết kế các hệ thống, cho phép hỗ trợ từng bước tiến trình làm mịn các lớp trong quá trình phát triển phần mềm theo tiếp cận hướng đối tượng

2 Trên cơ sở xây dựng các đặc tả lớp cho hệ thống đối tượng, xây dựng các thuật toán tinh chế biến đổi và làm mịn các lớp trong hệ thống

3 Cài đặt chương trình ứng với mỗi cách đặc tả đó để kiểm tra tính đúng đắn

4 Bằng thực nghiệm chỉ ra rằng, phương pháp này là rất đáng tin tưởng, có thể

mở rộng phát triển tiếp cho các hệ thống khác

2 Ph−¬ng ph¸p tiÕp cËn

Luận án khai thác và mở rộng các kết quả nghiên cứu của nhóm tác giả trên, sử dụng các kết quả đó phục vụ cho việc thiết kế và phát triển các hệ thống phần mềm theo chiến lược tinh chế dần từng bước Cụ thể là đề xuất các thuật toán để tinh chế và làm mịn đặc tả hệ thống theo các luật của mô hình rCOS, nhằm một mặt cho người sử dụng ngôn ngữ mô hình hoá UML một loạt các qui tắc tinh chế và làm mịn bảo đảm

2

Trang 6

tính đúng đắn, mặt khác nghiên cứu xây dựng một công cụ đặc tả tuân theo các luật tính chế và làm mịn nói trên

3 Bố cục của luận án

Luận án bao gồm phần mở đầu, ba chương nội dung, phần kết luận, tài liệu tham khảo và phần phụ lục

Chương 1 - Tổng quan về phương pháp hướng đối tượng và quá trình thống nhất

Chương này trình bày chung về mẫu hình phát triển phần mềm hướng đối tượng; Các đặc trưng cơ bản của tiến trình thống nhất trong quá trình phát triển hệ thống phần mềm

Những kết quả trong chương này được dùng để mở rộng cho các nghiên cứu trong các chương sau Đặc biệt là tiến trình RUP được chú trọng tìm hiểu làm cơ sở cho quá trình làm mịn mô hình UML sau này

Chương 2 – Làm mịn hệ thống các lớp của chương trình hướng đối tượng

Chương này sẽ trình bày ngữ nghĩa của hệ thống hướng đối tượng với việc đặc tả hình thức các lớp, các liên kết động và các phương thức đệ qui; Mô hình tính toán rCOS; Các đặc tả lớp trong hệ thống cùng với các thuật toán làm mịn hệ thống các lớp ứng với các cách đã đặc tả

Chương 3 – Phát triển đặc tả hệ thống hướng đối tượng theo mô hình quan hệ

Chương này trình bày việc sử dụng ngôn ngữ hướng đối tượng hình thức và các luật làm mịn kết hợp một số mô hình UML, xây dựng các thuật toán và qui trình cho phép làm mịn dần quá trình thiết kế hệ thống phần mềm trên UML Qua quá trình làm mịn

sẽ thu được mô hình thiết kế cuối cùng tương đối gần với mã có thể thực hiện được

Phần phụ lục bao gồm: Phụ lục 1 trình bầy mô hình quan hệ hướng đối tượng của

hệ thống rCOS, một số luật làm mịn, tinh chế và chế tác lại; Phụ lục 2 sẽ xây dựng các

hệ thống quản lý các đặc tả và các thuật toán làm mịn theo ba cách đã đặc tả bằng C++, xây dựng các dữ liệu để kiểm thử các hệ thống quản lý đặc tả và các thuật toán làm mịn đã đề xuất; Phụ lục 3 sẽ trình bày một số hệ thống ứng dụng thực tiễn mà chúng tôi đã xây dựng theo các thuật toán làm mịn đã đề xuất bằng công cụ Rational Rose trên, để kiểm chứng tính đúng đắn của các thuật toán đó và phương pháp tinh chế từng bước mà chúng tôi đưa ra

4 Các đóng góp chính của luận án

1 Xây dựng ba phương pháp đặc tả hệ thống và những thuật toán phát triển các hệ thống đó theo đúng các luật tinh chế của nhóm nghiên cứu rCOS Những kết

3

Trang 7

quả này cú thể được sử dụng để xõy dựng cụng cụ phỏt triển cỏc hệ thống (theo nghĩa đặc tả) bảo đảm tớnh đỳng đắn

2 Xõy dựng cỏc thuật toỏn để tinh chế cỏc hệ thống (một số lớp hạn chế) trờn UML theo kiểu cỏc luật tinh chế của rCOS

3 Bằng thực nghiệm trờn Rational Rose chỉ ra rằng, phương phỏp này là rất đỏng tin tưởng, mọi kiểm chứng đều cho kết quả đỳng theo tớnh toỏn Cú thể mở rộng phỏt triển tiếp cho cỏc hệ thống khỏc…

Chương 1 Tổng quan về phương pháp hướng đối tượng và

Quá trình thống nhất Chương này trình bày chung về mô hình phát triển phần mềm hướng đối tượng,

cùng với các đặc trưng chính của nó Trong chương này cũng trình bày các đặc trưng cơ bản của quá trình thống nhất trong tiến trình phát triển hệ thống phần mềm

1.1 Hệ thống thông tin lớn và phức tạp

Một hệ thống thông tin gọi là lớn và phức tạp khi nó có qui mô lớn cả về số phần

tử và mối quan hệ, cũng như tính đa dạng của chúng Sự đa dạng về mối quan hệ thể hiện ở sự khác nhau về số lượng, cường độ, chiều hướng và tính chất của mối quan hệ giữa các phần tử Đó thường là hệ có nhiều mục tiêu, nhiều ràng buộc trên các quan hệ

1.2 Mẫu hình phát triển phần mềm hướng đối tượng

1.2.1 Giới thiệu chung

Cách tiếp cận hướng đối tượng đặt trọng tâm vào việc xây dựng lý thuyết các hệ thống tổng quát như là khái niệm cơ sở Hệ thống được xem như là một tập hợp các thực thể tác động qua lại với nhau để thực hiện một số mục đích nào đó Thực thể có thể là đối tượng vật lý như các thiết bị và con người hoặc có thể là các khái niệm trừu tượng như các tệp dữ liệu và các hàm Các thực thể của thế giới thực được biểu diễn trong mô hình hệ thống là các đối tượng Những đối tượng này trao đổi thông tin với nhau thông qua các giao diện sao cho những cặp bộ giữa chúng là tối thiểu nhưng cố kết hệ thống lại ở mức tối đa

1.2.2 Phát triển phần mềm theo phương pháp hướng đối tượng

Xây dựng hệ thống phần mềm theo phương pháp hướng đối tượng bao gồm: phân tích, thiết kế và lập trình hướng đối tượng Phương pháp hướng đối tượng giải quyết

được hố ngăn cách giữa phân tích và thiết kế hệ thống

Phân tích hướng đối tượng làm nhiệm vụ xác định các đối tượng để xây dựng

các module của hệ thống phần mềm Nhiệm vụ của giai đoạn này là tìm hiểu kỹ bài

4

Trang 8

toán, phân tách nó thành các phần nhỏ hơn, xây dựng mô hình logic mô tả chức năng của toàn hệ thống

Nhiệm vụ của thiết kế hướng đối tượng là xác định các đối tượng trong không

gian bài toán, chuyển chúng sang không gian lời giải, xây dựng mô hình kiến trúc và mô hình tính toán cho hệ thống phần mềm

Lập trình hướng đối tượng cho phép chúng ta kết hợp những tri thức bao quát về

các quá trình với các khái niệm trừu tượng được sử dụng trong máy tính Chương trình hướng đối tượng xác định chính xác các đặc trưng và hành vi của các kiểu dữ liệu, trong đó có thể tạo ra những đối tượng mới được xây dựng từ những khuôn khổ có sẵn hay tổ hợp để tạo ra những đặc trưng mới

1.3 Quỏ trỡnh thống nhất

1.3.1 Khỏi niệm về quỏ trỡnh thống nhất

Quỏ trỡnh thống nhất dựa trờn cỏc thành phần, điều đú cú nghĩa là hệ thống phần mềm được xõy dựng dựa trờn cỏc thành phần phần mềm kết nối với nhau thụng qua giao diện đó được định nghĩa trước

Quỏ trỡnh thống nhất sử dụng ngụn ngữ mụ hỡnh hoỏ thống nhất UML để thiết kế cỏc hệ thống phần mềm Trờn thực tế UML là một phần tớch hợp của quỏ trỡnh thống nhất Chỳng được phỏt triển liờn kết với nhau Như vậy ta thấy quỏ trỡnh thống nhất là quỏ trỡnh phỏt triển phần mềm hướng đối tượng với cụng cụ UML Quỏ trỡnh này cú 3 đặc trưng sau: Ca sử dụng (Use Case) điều khiển quỏ trỡnh phỏt triển; Lấy kiến trỳc làm trung tõm; Tiến trỡnh phỏt triển là lặp và tăng dần

1.3.2 Cỏc đặc trưng của quỏ trỡnh thống nhất

1.3.2.1 Use Case điều khiển quỏ trỡnh phỏt triển

Use Case là một phần chức năng của hệ thống cung cấp cho người dựng để mang lại một kết quả nào đú khi sử dụng nú Cỏc Use Case dựng để nắm bắt cỏc yờu cầu chức năng Tập hợp tất cả cỏc ca sử dụng lập thành mụ hỡnh ca sử dụng mụ tả đầy đủ chức năng của hệ thống Mụ hỡnh này sẽ thay thế cho cỏc đặc tả chức năng hệ thống bằng phương phỏp truyền thống

1.3.2.2 Quỏ trỡnh thống nhất lấy kiến trỳc làm trung tõm

Vai trũ của kiến trỳc hệ thống phần mềm giống như khung nền, dựa trờn đú phần mềm được xõy dựng và phỏt triển đến hoàn thiện Khỏi niệm kiến trỳc phần mềm chứa đựng cỏc khớa cạnh tĩnh và động cú ý nghĩa nhất đối với hệ thống Nú được phỏt triển dựa theo yờu cầu của tổ chức, theo cảm nhận của người dựng và cỏc tổ chức cú liờn quan khỏc được phản ỏnh qua cỏc Use Case Mặt khỏc, nú cũng chịu ảnh hưởng của

5

Trang 9

rất nhiều nhõn tố, chẳng hạn như mụi trường nền của hệ thống, cỏc khối xõy dựng dựng lại cú sẵn, cỏc điều cõn nhắc triển khai và cỏc yờu cầu phi chức năng (như tớnh thể hiện, độ tin cậy ) Kiến trỳc là một khung nhỡn thiết kế tổng thể về những đặc điểm quan trọng nhất của hệ thống và tạm bỏ qua cỏc chi tiết

1.3.2.3 Quỏ trỡnh thống nhất là lặp và tăng dần

Việc phỏt triển một phần mềm núi chung đũi hỏi một số lớn cụng việc và cú thể diễn ra trong một khoảng thời gian nhất định Việc chia nhỏ toàn bộ cụng việc thành cỏc phần nhỏ hoặc cỏc dự ỏn con là yờu cầu thiết thực Mỗi dự ỏn con là một bước lặp

và tạo nờn một sự tăng trưởng Điều này dễ dàng thực hiện được khi phỏt triển phần mềm hướng đối tượng, vỡ nú được cấu thành từ cỏc thành phần độc lập ghộp nối lại với nhau Để đạt hiệu quả nhất, cỏc bước lặp phải được điều khiển, nghĩa là chỳng phải được lựa chọn và tiến hành theo kế hoạch đó được định trước

1.3.2.4 Vũng đời của một quỏ trỡnh thống nhất

Quỏ trỡnh thống nhất lặp lại một chuỗi cỏc vũng đời trong việc xõy dựng một hệ thống Mỗi vũng đời bao gồm một xuất phẩm (product release) cho khỏch hàng

Mỗi vũng đời chứa 4 giai đoạn sau: Sơ bộ (inception), Chi tiết (elaboration), Xõy dựng (construction) và Chuyển giao (transtion) Mỗi giai đoạn (phase) lại được chia thành nhiều bước lặp con

1.4 Kết luận chương 1

Trong chương này chỳng ta đó xem xột khỏi quỏt về hệ thống thụng tin phức tạp, phương phỏp phỏt triển phần mềm theo tiếp cận hướng đối tượng Đú là phương phỏp dựa trờn nền tảng cỏc đối tượng, chỳng là tập cỏc thực thể được xõy dựng trờn cơ sở gắn liền dữ liệu của chỳng với cỏc phộp toỏn xử lý, tương tỏc với nhau để thực hiện cỏc yờu cầu của bài toỏn đặt ra Phỏt triển phần mềm theo tiếp cận hướng đối tượng sẽ

là một xu hướng tất yếu trong cụng nghệ phần mềm Cỏc kết quả nghiờn cứu trong chương này sẽ được vận dụng trong suốt quỏ trỡnh nghiờn cứu tiếp theo

Chương 2 LÀM MỊN hệ ThốNG CÁC LỚP CỦA CHƯƠNG TRèNH

hướnG đối tượng 2.1 Hệ thống hướng đối tượng

Một hệ thống hoặc chương trỡnh hướng đối tượng S theo mụ hỡnh rCOS (xem trong phụ lục 1) cú dạng:

6

Trang 10

cdecls●P

Ở đây:

ƒ cdecls là phần khai báo một số hữu hạn các lớp, mỗi lớp có dạng như sau:

[private] class N [extends M] {

pri: <a:U,u>; pro: <b:V,v>; pub: <c:W,w>; meth: m 1 (x 11 : T 11 , y 12 : T 12 , z 13 : T 13 ){c 1 };

…;

m ℓ (x ℓ1 : T ℓ1 , y ℓ2 : T ℓ2 , z ℓ3 : T ℓ3 ){c ℓ } }

ƒ P được gọi là phương thức chính và có dạng (glb, c), trong đó glb là tập

hữu hạn các biến chung và kiểu dữ liệu của chúng còn c là các lệnh

2 2 Làm mịn hệ thống đối tượng

2.2.1 Các khái niệm

Sau đây ta xem xét một số khái niệm liên quan tới quá trình làm mịn mô hình hệ thống:

Định nghĩa 1 (làm mịn thiết kế): Thiết kế D2 = (α, P2) là làm mịn của thiết kế

D1=(α, P1) được chỉ ra bởi D1 D2, nếu P2 dẫn tới P1, nghĩa là: x, x’, ok, ok’: (P2 P1)

Ở đây x, , z là các biến chứa trong α D1 D2 nếu và chỉ nếu D1 D2 và D2

D1

Định nghĩa 2 (làm mịn dữ liệu): Cho ρ là ánh xạ (cũng có thể được coi như là thiết kế) từ α2 tới α1 Thiết kế D2 = (α2, P2) là làm mịn của thiết kế D1 = (α1, P1) dưới ρ, được chỉ ra bởi D1⊑ρ D2, nếu (ρ; P1) (P2; ρ) Trong trường hợp này ρ được gọi là ánh xạ tinh chế

Định nghĩa 3 (làm mịn hệ thống): Cho S1 và S2 là các đối tượng chương trình

có cùng một tập các biến chung glb S2 là làm mịn của S1, được chỉ ra bởi S1 sys S2, nếu hành vi của nó có thể kiểm soát và dự đoán nhiều hơn trong S1, tức là: x, x’,

ok, ok’: (S2 S1)

Định nghĩa 4 (làm mịn lớp): Cho cdecls1 và cdecls2 là hai phần khai báo

cdecls1 là làm mịn của cdecls2, được chỉ ra bởi cdecls1 class cdecls2 nếu như phần trước có thể thay thế phần sau trong bất kỳ hệ thống đối tượng: cdecls1class cdecls2

7

Trang 11

def P (cdecls1 P sys cdecls2 P) Ở đây P đóng vai trò cho phương thức chính (glb, c)

2.2.2 Các luật làm mịn

Nói chung, một luật (quy tắc) làm mịn có dạng như sau:

cdecls • P ⊑ cdecls1 • P

Trong đó, chương trình vế trái của ⊑ là một thành phần được làm mịn và vế bên phải

có một chương trình kết quả của việc làm mịn Ở đây ta thấy rằng các luật chỉ bao gồm

làm mịn các lớp, do đó chúng ta có thể không phải viết chương trình chính P

Khi viết các luật làm mịn, chúng ta sử dụng ký pháp sau để chỉ sự khai báo lớp N:

N [M, pri, pro, pub, op]

Trong đó, M là tên lớp cha của N; pri, pro và pub là các tập thuộc tính private, protected và public của N; op là tập các phương thức của N Ta có thể chỉ đưa ra các

tham số liên quan cần thiết chẳng hạn như, nếu sử dụng N[op] để chỉ lớp N với tập các

phương thức op, N[pro, op] chỉ lớp N với các thuộc tính protected là pro và các

1 Phần thứ nhất: Cung cấp các thông tin ngữ cảnh lớp và các quan hệ của chúng:

• cname: Tập các tên lớp đã được khai báo

• superclass: Là ánh xạ từ một tên lớp tới tên lớp cha của nó

2 Phần thứ hai: Mô tả chi tiết cấu trúc của mỗi lớp: với mỗi tên lớp N ∈ cname, nó

bao gồm:

• attribute(N): Là ánh xạ từ một lớp N tới tập các thuộc tính được khai báo của

nó, tập thuộc tính có dạng <a: T, d> Trong đó a là tên thuộc tính, T là kiểu và

d là giá trị khởi đầu

• Attribute là hàm mở rộng của attribue(N), với mỗi lớp N bao gồm các thuộc

tính protected và public mà N được kế thừa từ các lớp ông cha của nó

• meth(N): Là ánh xạ từ một lớp N tới tập các phương thức được khai báo của

N, tập phương thức có dạng:

Hoặc: m → (<x: T x , y: T y , z: T z > { c }) | (paras, D)

8

Trang 12

Trong đó: m là tên phương thức và có x, y và z tương ứng là tham biến giá trị, tham biến kết quả và tham biến giá trị-kết quả của nó; T x , T y và T z là các kiểu

dữ liệu Thiết kế D biểu diễn hành vi của phương thức m

• Meth(N) là hàm bao gồm các thương thức được kế thừa từ các lớp ông cha của

3 Phần thứ ba: Nhận biết các biến mà chương trình sử dụng:

• alphabet: Tập các biến chung cùng với kiểu của chúng đã biết trong chương trình, nó có dạng <x: T> Ở đây, x là tên biến, T là kiểu của x

• locvar: Tập các biến địa phương có dạng <v: T> Trong đó v là tên biến, T là

kiểu của nó

• visibleattr: Tập các thuộc tính tường minh trong lớp hiện tại, tức là tất cả thuộc

tính đã được khai báo thuộc miền private, protected và public (đã khai báo) của

lớp Nó bao gồm 3 ánh xạ:

pri: N → <a: T, d>, pro: N → <a: T, d>, pub: N → <a: T, d>

Trong đó N là tên lớp, a là tên thuộc tính, T là kiểu của thuộc tính và d là trị

khởi đầu

Ta coi hệ thống ban đầu S mà trong đó các thành phần của α đều là trống Trong

quá trình tạo thêm lớp mới, huỷ bỏ lớp, thay đổi thêm hay huỷ bỏ các biến, chuyển

thuộc tính từ lớp này sang lớp khác khi thực hiện hệ thống thì các thành phần của α

có thể sẽ thay đổi và cho hệ thống mới S’ = (α’, P’)

Ở đây ta chỉ quan tâm tới việc đưa ra một số thuật toán xử lý các lớp, tinh chế và

làm mịn các thành phần dữ liệu, các quan hệ giữa chúng trong phần khai báo cdecls, nên thành phần P của hệ thống không thay đổi

Vấn đề phải giải quyết là đưa ra các cách đặc tả các lớp và các thuật toán xử lý trên các lớp được mô tả như vậy Có ba cách mô tả các lớp trong hệ thống, đó là:

1 Mỗi lớp là một tập các file văn bản (text), tương ứng với một cách mô tả lớp theo cách này là các thuật toán làm mịn thông qua việc xử lý các file

2 Mô tả mỗi lớp là một hệ thống các biến, tương ứng với các thuật toán làm mịn thông qua việc xử lý biến đổi các biến

3 Mô tả mỗi lớp đúng như Hoare đã mô tả, theo cách này thì mỗi lớp là một file văn bản, tương ứng với các thuật toán làm mịn trên một file văn bản đó

Sau đây ta sẽ xem xét chi tiết từng cách đặc tả lớp theo đề xuất trên, xây dựng một số thuật toán cơ bản làm mịn hệ thống Việc cài đặt chương trình bằng C++ để kiểm thử theo mỗi cách đặc tả đó có thể xem trong phụ lục 2

9

Trang 13

2.4 Đặc tả lớp bằng tập các file văn bản

Trong cách mô tả hệ thống này, chúng ta sử dụng các tệp văn bản để đặc tả lớp và

biểu diễn quá trình biến đổi của hệ thống đã trình bày ở trên, nghĩa là thành phần α là

một tập các file văn bản mô tả sự biến đổi của hệ thống Ta qui định tên của các tệp đó như sau:

• cname.txt lưu trữ tên các lớp được tạo ra trong hệ thống, nó biểu diễn tập

cname

• super_C.txt lưu trữ tên lớp cha của một lớp, nó biễu diễn hàm super(C)

• meth_C.txt lưu tập các phương thức của các lớp C trong hệ thống, nó biểu

diễn hàm meth(C)

• pri_C.txt lưu tập các thuộc tính private của các lớp C trong hệ thống, nó biểu

diễn hàm pri(C)

• pro_C.txt lưu tập các thuộc tính protected của các lớp C trong hệ thống, nó

biểu diễn hàm pro(C)

• pub_C.txt lưu tập các thuộc tính public của các lớp C trong hệ thống, nó

biểu diễn hàm pub(C)

Khi một lớp mới trống được tạo ra trong hệ thống (lớp chỉ có tên mà chưa có một thuộc tính hay phương thức nào) thì tên của lớp sẽ được bổ sung vào tệp cname.txt và các tệp văn bản biểu diễn cho lớp đó: super_C.txt, meth_C.txt, pri_C.txt, pro_C.txt và pub_C.txt sẽ được tạo ra, ban đầu nội dung của các tệp đó là trống Trong quá trình thực hiện các biến đổi để làm mịn và tinh chế hệ thống như: thêm hoặc huỷ bỏ các thuộc tính trong các lớp, chuyển đổi phương thúc của các lớp thì nội dung của các tệp văn bản trên sẽ thay đổi theo phù hợp với sự thay đổi của các lớp trong hệ thống Kết quả là ta sẽ được một hệ thống mới được làm mịn từ hệ thống trước đó

Ngày đăng: 03/04/2014, 12:22

HÌNH ẢNH LIÊN QUAN

Hình 3.2. Ý tưởng cho phương pháp giải quyết vấn đề - Thiết kế hướng đối tượng và xây dựng hệ thống thông tin phức tạp
Hình 3.2. Ý tưởng cho phương pháp giải quyết vấn đề (Trang 20)
Hình 3.3.Tiến trình phát triển đặc tả hình thức hệ - Thiết kế hướng đối tượng và xây dựng hệ thống thông tin phức tạp
Hình 3.3. Tiến trình phát triển đặc tả hình thức hệ (Trang 21)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w