Mô hình hóa giao diện của các thành phần trong các hệ thống dựa trên thành phần

48 412 0
Mô hình hóa giao diện của các thành phần trong các hệ thống dựa trên thành phần

Đ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

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM ĐÌNH CHINH MƠ HÌNH HĨA GIAO DIỆN CỦA CÁC THÀNH PHẦN TRONG CÁC HỆ THỐNG DỰA TRÊN THÀNH PHẦN LUẬN VĂN THẠC SĨ Hà Nội - 2011 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM ĐÌNH CHINH MƠ HÌNH HĨA GIAO DIỆN CỦA CÁC THÀNH PHẦN TRONG CÁC HỆ THỐNG DỰA TRÊN THÀNH PHẦN Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã số: 60.48.10 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS ĐẶNG VĂN HƯNG Hà Nội – 2011 MỤC LỤC PHẦN MỞ ĐẦU CHƯƠNG 1: KIẾN TRÚC VÀ PHƯƠNG PHÁP LUẬN PHÁT TRIỂN PHẦN MỀM HƯỚNG THÀNH PHẦN 1.1 Giới thiệu 1.2 Thành phần, giao diện mơ hình kiến trúc 10 1.2.1 Thành phần 10 1.2.2 Giao diện 12 1.2.3 Mơ hình kiến trúc 13 1.2.4 Thống khái niệm phát triển phần mềm hướng thành phần 14 1.3 Các lý thuyết hình thức 15 1.3.1 Mơ hình kiến trúc 15 1.3.2 Sự cần thiết phải liên kết phương pháp lý thuyết 16 1.4 Giới thiệu mơ hình rCOS 17 1.5 Kết luận 18 CHƯƠNG 2: ĐỀ XUẤT MƠ HÌNH GIAO DIỆN THÀNH PHẦN VÀ PHƯƠNG PHÁP LUẬN PHÁT TRIỂN CHO CÁC HỆ THỐNG THỜI GIAN THỰC 19 2.1 Giới thiệu 19 2.2 Mơ hình hóa đặc tả giao diện thành phần .20 2.2.1 Làm mịn thiết kế xét đến yếu tố thời gian 21 2.2.2 Thành phần 22 2.2.3 Kết nối thành phần song song 22 2.2.4 Thành phần thụ động .25 2.2.5 Sự kết hợp thành phần 27 2.2.6 Thành phần chủ động 29 2.2.7 Ví dụ minh họa 30 2.3 Kiến trúc phương pháp phát triển cho hệ thành phần thời gian thực .32 2.4 Kết luận hướng nghiên cứu 33 CHƯƠNG 3: ÁP DỤNG MƠ HÌNH ĐỀ XUẤT ĐỂ XÂY DỰNG HỆ THỐNG XUẤT HÓA ĐƠN BÁN HÀNG 35 3.1 Phát biểu toán 35 3.2 Xây dựng chương trình 35 3.2.1 Các chức hệ thống 35 3.2.2 Thành phần Client (Khách hàng) 37 3.2.3 Thành phần Product (Sản phẩm) .39 3.2.4 Thành phần Invoice (Hóa đơn) 40 3.2.5 Thành phần hệ thống xuất hoá đơn (Invoice_System) 43 3.3 Nhận xét ví dụ 43 KẾT LUẬN 44 TÀI LIỆU THAM KHẢO 45 DANH MỤC HÌNH STT Tên danh mục hình Trang Hình Sơ đồ thành phần cho hệ thống CNS 30 Hình Mơ hình kiến trúc cho hệ thống dựa thành phần 32 Hình Mơ hình thành phần cho hệ thống xuất hóa đơn bán hàng 36 DANH MỤC CÁC TỪ VIẾT TẮT Thuật ngữ ADLs CBD CBSE CNS CSP Mô tả Architecture Description Languages - Kiến trúc mô tả Ngôn ngữ Component-based development - Phát triển hướng thành phần Component-Based Software Engineering - Công nghệ phần mềm hướng thành phần Car Navigation System - Hệ thống dẫn hỗ trợ lái xe ôtô điều khiển xe qua khu vực Communicating Sequential Processes - Quá trình trao đổi EDC Extended Duration Calculus – Mở rộng tính tốn thời lượng FIFO First In, First Out – Vào trước, trước hay Đến trước phục vụ trước GPS Global Positioning System – Hệ thống định vị tồn cầu IDL Interface description language - Ngơn ngữ mơ tả giao diện OCL PVS rCOS UML UNU-IIST UTP Object Constraint Language – Ngôn ngữ ràng buộc đối tượng Prototype Verification System - Hệ thống xác minh nguyên mẫu cách chứng minh định lý Relational Calculus of Object and Component Systems – Phép tính quan hệ đối tượng thành phần Unified Modeling Language - Ngôn ngữ mơ hình hóa thống International Institute for Software Technology - The United Nations University - Viện nghiên cứu Quốc tế Công nghệ phần mềm - Đại học Liên Hiệp Quốc Macao Unifying Theories of Programming – Lý thuyết thống lập trình PHẦN MỞ ĐẦU Trong năm bảy mươi, phương pháp lập trình giới thiệu làm tăng suất lập trình đáng kể trở thành kinh điển Phương pháp gọi phương pháp lập trình cấu trúc phương pháp sử dụng ngày để viết mơđun chương trình nhỏ Trong năm tám mươi, lý luận phương pháp ngôn ngữ hướng đối tượng đời, phát triển mạnh mẽ sử dụng rộng rãi ngày Tuy nhiên, hệ thống ngày trở nên phức tạp, ý tưởng phát triển hệ thống phần mềm cách lắp ghép từ thành phần có nhiều người, nhiều nguồn khác xây dựng tương tự việc sản xuất xe ôtô lắp ráp từ hàng vạn linh kiện từ nhà máy khác tạo đặt Công nghệ phát triển phần mềm gọi công nghệ phát triển phần mềm hướng thành phần Có thể đánh giá cơng nghệ phát triển phần mềm hướng thành phần giai đoạn phát triển, nhiều tác giả đề xuất mơ hình khác cho công nghệ chưa đạt thống tiêu chuẩn công nghệ cho thiết kế, khởi tạo kết hợp thành phần Việc tìm kiếm mơ hình cho việc mơ tả thành phần, kiến trúc kết hợp thành phần phương thức để xây dựng phần mềm hướng thành phần thách thức Nhằm góp phần nhỏ vào việc xây dựng hoàn chỉnh phương pháp luận cho việc phát triển phần mềm hướng thành phần Trong phạm vi luận văn chúng tơi đặt hai mục tiêu chính: (1) Từ việc nghiên cứu phương pháp luận mơ hình phát triển phần mềm hướng thành phần nhiều tác giả khác đề xuất nhằm làm sáng tỏ khái niệm góp phần nhỏ vào việc thống nhất, tiêu chuẩn hóa mơ hình phát triển phần mềm hướng thành phần (2) Từ kết nghiên cứu trước đó, đề xuất mơ hình giao diện thành phần nhằm giải lĩnh vực mà nghiên cứu trước chưa đề cập đến có đề cập giải chưa triệt đề xuất mơ hình giao diện cho thành phần hệ thống thành phần hướng thời gian thực nhằm đóng góp phần vào việc chuẩn hóa phương pháp luận phát triển cho hệ thống thời gian thực Để giải hai mục tiêu đặt trên, luận văn chia thành chương, cụ thể: Chương 1, tập trung vào xem xét nghiên cứu phương pháp luận kiến trúc mơ hình phát triển phần mềm hướng thành phần nhiều tác giả đề xuất Từ nghiên cứu tìm điểm thống điểm khác biệt lý thuyết đồng thời nêu vấn đề mà mơ hình lý luận giải được, phần hạn chế chưa giải Chương 2, đề xuất mơ hình giao diện thành phần cho hệ thống hướng thành phần thời gian thực Trong mở rộng đặc tả phương thức với ràng buộc thời gian, mối quan hệ tài nguyên sẵn có lượng thời gian dành để thực phương thức Hợp đồng định nghĩa bao gồm đặc tả, phương thức định nghĩa thành phần thực thi hợp đồng Sự thực thi yêu cầu dịch vụ từ thành phần khác với số ràng buộc lịch cho việc sử dụng chia sẻ phương thức tài nguyên với có mặt đồng thời Mơ hình chúng tơi hỗ trợ phân chia yêu cầu hàm khơng phải hàm, cho phép xác minh tính đắn hệ thống dựa thành phần thời gian thực Chương 3, đưa minh họa xây dựng hệ thống xuất hóa đơn cho khách hàng nhằm minh họa cho mơ hình giao diện thành phần đề xuất Chương Đồng thời từ minh họa giúp cho khái niệm đưa Chương sáng tỏ Tiếp theo phần tổng kết luận văn đề hướng phát triển luận văn Cuối luận văn phần thuật ngữ liên quan tài liệu tham khảo CHƯƠNG 1: KIẾN TRÚC VÀ PHƯƠNG PHÁP LUẬN PHÁT TRIỂN PHẦN MỀM HƯỚNG THÀNH PHẦN Công nghệ phần mềm hướng thành phần (Component-based Software Engineering - CBSE) hướng tới làm để tạo chương trình cách ghép nối thành phần làm sẵn với chương trình mà kết dính thành phần chức mới[10] Trước tìm hiểu lý thuyết cơng nghệ phần mềm hướng thành phần, xin đưa thuộc tính sau đa số học thuyết thừa nhận: - Nguyên tắc hộp đen tính lắp ghép, thay sử dụng lại: lắp ghép thành phần với phần khác hệ thống, thay thành phần thành phần khác sử dụng lại ứng dụng khác khơng phải quan tâm đến thiết kế mã lệnh - Phát triển độc lập: thành phần thiết kế, thực hiện, thẩm tra, kiểm tra triển khai cách độc lập - Khả hoạt động: thành phần thực ngơn ngữ lập trình mơ hình khác chúng lắp ghép, kết dính phối hợp hoạt động với Trong chương bàn số khó khăn vấn đề quan trọng mà cần phải xem xét phát triển phương pháp hình thức cho cơng nghệ phần mềm dựa thành phần Trong trình bày kết nghiên cứu nhằm liên kết lý thuyết phương pháp lập trình có nhằm hỗ trợ hiệu cho công nghệ phần mềm dựa thành phần 1.1 Giới thiệu Trong năm bảy mươi, phương pháp lập trình giới thiệu làm tăng suất lập trình đáng kể trở thành kinh điển Phương pháp gọi phương pháp lập trình cấu trúc phương pháp cịn sử dụng ngày để viết mơđun chương trình nhỏ Trong năm 80 lý luận phương pháp ngôn ngữ hướng đối tượng đời, phát triển mạnh mẽ sử dụng rộng rãi ngày Tuy nhiên, hệ thống ngày trở nên phức tạp đặt ý tưởng khai thác sử dụng lại thành phần có để phát triển hệ thống phần mềm [20] Trong phát triển phần mềm dựa thành phần hiểu yêu cầu thành phần tái sử dụng tương tác với phù hợp với kiến trúc hệ thống, chưa đạt thống tiêu chuẩn công nghệ cho thiết kế, khởi tạo kết hợp thành phần Tìm cách tiếp cận theo mơ hình cho việc mơ tả thành phần, kiến trúc kết hợp thành phần phương thức để xây dựng phần mềm 10 hướng thành phần thách thức Có vẻ phát triển phần mềm dựa thành phần tình trạng tương tự lập trình hướng đối tượng năm 80: “Tơi dự đốn lập trình hướng đối tượng năm 1980 giống lập trình cấu trúc năm 1970 Mọi người ủng hộ Mỗi nhà sản xuất quảng bá sản phẩm hỗ trợ Mỗi nhà quản lý trả phí dịch vụ với Mọi lập trình thực hành Và khơng biết đến đâu[40]” – Phát biểu T Rentsch vào tháng 12 năm 1982 Trong chương này, thảo luận số khái niệm số vấn đề cần thiết cho phương pháp hình thức để hỗ trợ công nghệ phần mềm dựa thành phần (CBSE) Chúng tơi cho cần có tích hợp lý thuyết phương pháp lập trình hướng thành phần Mối quan tâm khác mô tả quan điểm khác hệ thống cấp độ trừu tượng khác nhau, bao gồm phụ thuộc cú pháp, hành vi tĩnh, hành vi động tương tác thành phần Liên kết lý thuyết làm sáng tỏ tích hợp cơng cụ, chẳng hạn mơ hình kiểm chứng, chứng minh định lý công cụ kiểm thử để xác minh hệ thống Do chưa có tiêu chuẩn thống cho phương pháp phát triển phần mềm dựa thành phần lựa chọn cách tiếp cận tổng hợp lý thuyết hướng thành phần có Từ giúp chia sẻ kiến thức cho nhiều người khác hệ thống phát triển dựa thành phần như: người xây dựng yêu cầu, người phân tích, người chịu trách nhiệm tích hợp hệ thống, người thiết kế thành phần, người kiểm định thành phần người kiểm định toàn hệ thống Những người khác đóng vai trị khác quan tâm đến mơ hình liên quan đến cơng việc họ Trong mục (mục 1.2) xin giới thiệu khái niệm thành phần, giao diện kiến trúc Đây ba khái niệm mà chưa đạt đồng thuận Trong mục 1.3, chúng tơi cung cấp nhìn tổng quan phương pháp mơ hình hóa hệ thống dựa thành phần Trong mục 1.4 nêu tóm tắt phương pháp đề xuất rCOS 1.2 Thành phần, giao diện mơ hình kiến trúc Các khái niệm thành phần, giao diện mô kiến trúc quan trọng mơ hình phát triển dựa thành phần (CBSE) Trong phần trình bày ba khái niệm 1.2.1 Thành phần Theo từ điển Oxford, tìm thấy định nghĩa: “Thành phần phận làm ra” 34 liên lạc cách giới thiệu kiện truyền thông phương thức thành phần chủ động Hiện nhiều việc để làm cho mơ hình chúng tơi chi tiết Ngồi ra, có câu hỏi xác minh chúng tơi kỹ thuật phân tích hỗ trợ công cụ tự động khơng Câu trả lời có cách cho việc xác minh cách chứng minh định lý PVS Điều nghiên cứu Chúng muốn đề cập đến số nội dung nghiên cứu liên quan vấn đề Trong [42, 51] logic định thời giới thiệu để xác định thuộc tính thời gian thực đặc tả lớp Mở rộng sơ đồ lớp sơ đồ trạng thái sử dụng với sơ đồ lớp UML Trong đề nghị sử dụng XTG để mơ tả hành vi hệ thống thời gian thực đề xuất kỹ thuật để chuyển đổi UML thời gian thực với biến số đồng hồ vào XTG Trong [15], OCL mở rộng để xác định thuộc tính thời gian thực Trong [44], thuộc tính thời gian đưa để bảo vệ trình chuyển đổi, biểu đồ trạng thái xác định hành vi thời gian thực Trong đề xuất kiến " SIP view" để xác định thứ tự thời gian tương tác cho khách hàng khác để đơn giản hóa tương tác Cách tiếp cận tương tự đặc tả dịng đồng thời ngoại trừ việc “SIP views” khơng mang thông tin thời gian Trong [12], logic thời giới thiệu để xác định thuộc tính động tĩnh hệ thống hướng đối tượng Một tranh chuyển đổi từ OCL thành mệnh đề logic đề xuất Trong [47], đề xuất phương pháp để xây dựng mơ hình thời gian hệ thống thời gian thực cách thêm vào ràng buộc thời gian phần mềm ứng dụng Những ràng buộc tính đến thời gian thực câu lệnh nguyên tử, hành vi hệ thống bên ngồi mơi trường sách lập lịch trình Mơ hình phân tích cách sử dụng kỹ thuật phân tích thời gian để kiểm tra thuộc tính có liên quan thời gian thực So sánh với công việc này, cách tiếp cận tương tự, làm việc cấp thành phần mức độ hệ thống Ngồi ra, cơng việc chúng tơi, để tăng tính sử dụng lại thành phần, định thời gian mối quan hệ tài nguyên ràng buộc thời gian 35 CHƯƠNG 3: ÁP DỤNG MƠ HÌNH ĐỀ XUẤT ĐỂ XÂY DỰNG HỆ THỐNG XUẤT HÓA ĐƠN BÁN HÀNG Nhằm minh họa đề xuất mơ hình hướng thành phần tính đến thời gian nêu Chương 2, Chương ứng dụng lý thuyết ký hiệu vào việc xây dựng hệ thống xuất hóa đơn bán hàng 3.1 Phát biểu toán Trong hệ thống quản trị nguồn lực doanh nghiệp (ERP) hệ thống quản lý siêu thị mơđun hay hệ thống có khả xử lý hoá đơn cho khách hàng khơng thể thiếu Hệ thống xử lý hố đơn cho khách hàng xây dựng yêu cầu đáp ứng nhiệm vụ sau: Mỗi khách hàng (client) ghi hệ thống với hạng khách hàng kèm với số tiền tối đa mà khách hàng khấu trừ giảm giá Ứng với loại khách hàng có tỷ lệ giảm giá áp dụng cho hoá đơn Mỗi sản phẩm (product) ghi với giá nó, tình trạng (có sẵn, bán hết) sản phẩm thay cho nhằm đảm bảo đáp ứng nhu cầu khách hàng sản phẩm bị bán hết Mỗi số hoá đơn (invoice) cụ thể phải đảm bảo phát hành lần cho khách hàng Một hóa đơn phải thể số tiền giảm tổng số tiền hóa đơn Cuối cùng, có đặc trưng số lượng tiền tối đa cho phép hóa đơn Hai thuộc tính cuối đưa tương tự thuộc tính khách hàng Mỗi hóa đơn phải xử lý khoảng thời gian khơng q phút Mỗi dịng (line) hóa đơn có liên quan với mục định, số lượng giá mục Giá mục lấy từ bảng giá sản phẩm 3.2 Xây dựng chương trình 3.2.1 Các chức hệ thống Từ phát biểu toàn trên, chúng tơi xây dựng hệ thống xử lý hố đơn có chức cụ thể sau đây: Tạo chỉnh sửa khách hàng Tạo chỉnh sửa hàng hóa Tạo hủy bỏ hóa đơn Tạo dịng hóa đơn 36 Các u cầu phi hình thức hệ thống (R1) - Một sản phẩm bán hết khơng xuất bán hóa đơn (R2) - Nếu có thay cho sản phẩm bán hết, hệ thống phải thay hóa đơn sản phẩm yêu cầu sản phẩm mà thay (R3) - Khơng có hai dịng hố đơn sản phẩm (R4) - Khơng xuất hố đơn cho khách hàng không khai báo trước (R5) - Tổng số tiền giảm giá hố đơn khơng lớn giá trị lớn cho phép (R6) – Khách hàng thân thiết giảm giá 20%, khách hàng khác không giảm giá Xử lý lỗi Hệ thống thông báo cáo lỗi nhập vào sản phẩm hóa đơn trường hợp: (1) Sản phẩm đã bán hết khơng có sản phẩm thay tương ứng (xem (R1) (R2)) (2) Sản phẩm, thay có hóa đơn khơng có thêm dịng nhập vào hóa đơn ((R2) (R3)) (3) Số tiền giảm trừ hóa đơn vượt giá trị cho phép đưa thêm hàng hóa sản phẩm thay vào ((R2), (R5) (R6)) Mơ hình thành phần Hình Mơ hình thành phần cho hệ thống xuất hóa đơn bán hàng 37 3.2.2 Thành phần Client (Khách hàng) Theo mơ hình thành phần (Hình 3), thấy thành phần Client (khách hàng) thành phần thụ động, có dạng Client = Ctr , Dep, SDep, Mcode, SInv , cụ thể: • Hợp đồng Ctr = Fd , Md , Rd , Mspec, Init , Inv • Tập Dep chứa tên thành phần, phần tử Dep tên thành phần mà Client phụ thuộc vào • SDep tập biến Π (biểu thị tương tác với lịch trình) • SInv vị từ biến v ∈ SDep • Mcode gán cho phương thức op Md thiết kế xây dựng từ hoạt động phương thức gọi có mẫu call ( Comp, C , op1 ) , op1 phương thức thành phần C nằm Dep • Rd – khai báo tài nguyên, tập RES • Init giá trị khởi tạo, kết hợp biến Fd biến địa phương có giá trị loại, biến Rd với số nguyên • Mspec đặc tả phương thức kết hợp phương thức op(in, out) Md với thiết kế có tính tới yếu tố thời gian α , FP, FR , (α \ ( in ∪ out ) ) ⊆ Fd • Inv vị từ thuộc tính hợp đồng (được gọi tính bất biến hợp đồng) Mơ tả chi tiết thuộc tính thành phần Client Tập Dep = {Invoice, Invoice_System} chứa tên thành phần Invoice Invoice_System mà Client phụ thuộc vào Rd - Sử dụng tập (1) Tập CLIENT tập biểu thị tất khách hàng (hiện tương lai) (2) Tập CATEGORY viết tắt loại khác khách hàng C ATEGORY = {friend, dubious, normal} Md - Tập hợp phương thức thành phần Client {discount(), create_client(a), modify_allowance(c,a)} Tập Fd chứa biến thành phần client, category, allowance read_client(), modify_category(c,k), 38 Vị từ Inv thuộc tính hợp đồng client ⊆ C LI ENT ∧ category ∈ client → C ATEGORY ∧ allowance ∈ client → NAT Giá trị khởi tạo Init client, category, allowance := ∅, ∅, ∅ Tính tỷ lệ giảm giá Discount Hàm discount chức liên kết loại khách hàng với tỷ lệ giảm giá tương ứng áp dụng cho tổng hoá đơn họ c ← discount() = discount ∈ CATEGORY → (0 100) ∧ ˆ discount = {friend → 80, dubious → 100, normal → 100} Chức create_client Chức tạo khách hàng create_client() có biết đầu vào a : NAT đại diện cho mức giảm giá khách hàng đăng ký Khách gán hạng mặc định normal c ← create_client(a) = ˆ Với tiền điều kiện a ∈ NAT ∧ client ≠ CLIENT Thì Với ∀ cc cho cc ∈ CLIENT − client Thì ta có client := client ∪{cc}║category(cc) := normal║ Các chức khác allowance(cc) := a║c := cc c ← read_client = ˆ Với tiền điều kiện client = ∅ Thì c :∈ client modify_category(c,k) = ˆ Với tiền điều kiện c ∈ client ∧ k ∈ CATEGORY Thì category(c) := k 39 modify_allowance(c,a) = … ˆ 3.2.3 Thành phần Product (Sản phẩm) Thành phần Product dùng để thể sản phẩm, sau chi tiết thuộc tính Product Tập Dep = {Invoice, Invoice_System} chứa tên thành phần Invoice Invoice_System mà Product phụ thuộc vào Rd - Sử dụng tập (1) Tập PRODUCT tập biểu thị tất sản phẩm (hiện tương lai) (2) Tập STATUS tập chứa tình trạng sản phẩm STATUS = {available, sold_out} Md - Tập hợp phương thức thành phần Product {create_product(c), make_unavailable(p), assign_substitute(p, q), modify_price(p,c), read_product() } Tập Fd chứa biến thành phần product, price, status, substitute Vị từ Inv thuộc tính hợp đồng product ⊆ PRODUCT ∧ price ∈ product → N AT ∧ status ∈ product → STATUS ∧ substitute ∈ product  status−1 [{available}] Giá trị khởi tạo Init product, price, status, substitute := ∅, ∅, ∅, ∅ Chức create_product Hàm tạo sản phẩm: Cho tham số c thể giá sản phẩm Trạng thái mặc định tạo trạng thái có sẵn p ← create product(c) = ˆ Với tiền điều kiện c ∈ NAT ∧ product = PRODUCT Thì Với ∀ pp cho pp ∈ PRODUCT - product Thì ta có price(pp) := c ∥ status(pp):= available ∥ Các chức khác ˆ make_unavailable(p) = product := product ∪ {pp} ∥ p := pp Với tiền điều kiện 40 p ∈ product Thì status(p) := sold_out∥ substitute := substitute ⊳ {p} assign_substitute(p, q) = ˆ Với tiền điều kiện p ∈ product ∧ q ∈ product ∧ status(q) = available Thì substitute(p) := q modify_price(p,c) = … ˆ p ← read_product = ˆ 3.2.4 Thành phần Invoice (Hóa đơn) Thành phần Invoice dùng để thể hóa đơn bán hàng, sau chi tiết thuộc tính Invoice Thành phần Invoice sử dụng thành phần Client Product (vì cần truy cập vào số biến hai thành phần này) Tập Dep = { Invoice_System} chứa tên thành phần Invoice_System mà Invoice phụ thuộc vào Rd - Sử dụng tập (1) Tập INVOICE tập biểu thị tất hóa đơn (hiện tương lai) (2) Tập LINE tập biểu thị tất dịng Md - Tập hợp phương thức thành phần Invoice { create_invoice_header(c), new_line(i, p), the_line(i,p), increment(l, q), remove_all_lines(i), remove_invoice_header(i) } Tập Fd chứa biến thành phần invoice, customer, percentage, allowed, total, line, origin, article, quantity, unit_cost Vị từ Inv thuộc tính hợp đồng invoice ⊆ INVOICE ∧ customer ∈ invoice → client ∧ percentage ∈ invoice → (0 100) ∧ allowed ∈ invoice → N AT ∧ total ∈ invoice → N AT ∧ ran(total ⊗ allowed) ⊆ leq ∧ 41 line ⊆ LINE ∧ origin ∈ line → invoice ∧ article ∈ line → product ∧ quantity ∈ line → NAT ∧ origin ⊗ article ∈ line ⊳ invoice × product unit_cost ∈ line → NAT ∧ Tạo hóa đơn (Invoice) Chức thiết kế để tạo hóa đơn cho khách hàng hợp lệ (R4) inv ← create_invoice_header(c) = ˆ Với tiền điều kiện Thì c ∈ client ∧ category(c) = dubious ∧ invoice = I NVOICE ∧ <  ≤ 300 Với ∀ j cho j ∈ INVOICE − invoice invoice := invoice ∪ {j }∥customer(j) := c ∥ Thì ta có percentage(j) := discount(category(c))∥ allowed(j) := allowance(c) ∥ inv := j Thêm dịng vào hốn đơn Chức làm nhiệm vụ thêm dịng vào hóa đơn sản chưa có hóa đơn l ← new_line(i, p) = ˆ Với tiền điều kiện (i, p) ∉ ran(origin ⊗ article) ∧ line = LI N E i ∈ invoice ∧ p ∈ product ∧ status(p) = available ∧ Thì Với ∀m cho m ∈ LI N E − line l := m ∥ line := line ∪ {m}∥ origin(m) := i ∥ article(m) := p ∥ Thì ta có Lấy dịng quantity(m) := ∥ unit_cost(m) := price(p) Chức để lấy dịng sản phẩm có sẵn mà xuất dịng hóa đơn l ← the_line(i,p) = ˆ Với tiền điều kiện i ∈ invoice ∧ p ∈ product ∧ status(p) = available ∧ (i,p) ∈ ran(origin ⊗ article) Thì 42 l := (origin ⊗ article)-1 (i, p) Tăng thêm dòng Chức thực nhiệm vụ tăng số lượng sản phẩm dịng, tương ứng với trường hợp sản có dịng chứa sản phẩm hóa đơn Trong trường hợp thơng tin số lượng tăng lên tương ứng increment(l, q) = ˆ Với tiền điều kiện l ∈ line ∧ q ∈ NAT ∧ status(article(l)) = available ∧ quantity(l) + q ∈ N AT ∧ total(origin(l)) + (q × unit_cost(l) × percentage(origin(l))/100) ≤ allowed(origin(l))) Thì quantity(l) := quantity(l) + q ∥ total(origin(l)) := total(origin(l))+ (q × unit_cost(l) × percentage(origin(l))/100) Xóa tất dịng hóa đơn remove_all_lines(i) = ˆ Với tiền điều kiện i ∈ invoice Thì line := line - origin-1[{i}] ∥ origin := (origin-1 [{i}] ⊲ origin) ∥ article := (origin-1 [{i}] ⊲ article) ∥ quantity := (origin-1 [{i}] ⊲ quantity) ∥ unit_cost := (origin-1 [{i}] ⊲ unit_cost) dom(S ⊲ f ) = dom(f ) – S ˆ Trong với hàm f tập S ta định nghĩa (S ⊲ f )(x) = f (x) ˆ Xóa hóa đơn Chức remove_invoice_header() dung để xóa phần header hốn đơn remove_invoice_header(i) = ˆ Với tiền điều kiện i ∉ ran(origin) i ∈ invoice ∧ Thì invoice := invoice − {i}∥ 43 customer := {i} ⊲ customer ∥ percentage := {i}⊲ percentage ∥ allowed := {i}⊲ allowed ∥ total := {i}⊲ total Hóa đơn bị xóa sau xóa tất dòng chức remove_all_lines(), tức i ∉ ran(origin) 3.2.5 Thành phần hệ thống xuất hoá đơn (Invoice_System) Thành phần Invoice_System làm nhiệm vụ kết nối tất thành phần khác Chúng thêm số chức để giúp việc xác định báo cáo lỗi tốt Sau chi tiết thuộc tính Invoice_System: Thành phần Invoice_System sử dụng đến chức thành phần Client, Product Invoice Tập Dep = ∅ Md - Tập hợp phương thức thành phần Invoice_System { some_client_exists, clients_not_saturated, client_not_dubious(c), some_product_exists, products_not_saturated, product_avaliable(p), product_has_substitute(p), invoices_not_saturated, new_product_in_invoice(i,p)} Trong đó: b ← some_client_exists = … ; ˆ b ← clients_not_saturated = … ; ˆ b ← client_not_dubious(c) = … ; ˆ b ← some_product_exists = … ; ˆ b ← products_not_saturated = … ; ˆ b ←product_avaliable(p) = … ; ˆ b ← product_has_substitute(p) = … ; ˆ b ← invoices_not_saturated = … ; ˆ b ← new_product_in_invoice(i; p) = … ; ˆ 3.3 Nhận xét ví dụ Trong chương minh họa ví dụ xây dựng hệ thống xuất hóa đơn bán hàng nhằm làm rõ nội dung lý luận cho mơ hình phát triển hướng thành phần đề xuất Chương Tuy nhiên minh họa mơ tả cịn nhiều điểm phải dùng ngôn ngữ tự nhiên để mô tả phạm vi luận văn chưa đưa ngôn ngữ cụ thể cho mô hình chúng tơi Cơng việc xây dựng đề xuất ngơn ngữ cho mơ hình đề xuất thực nghiên cứu của 44 KẾT LUẬN Luận văn cố gắng đóng góp phần nhỏ vào việc hoàn chỉnh phương pháp luận cho kỹ thuật phát triển phần mềm hướng thành phần Trong phần đầu luận văn tập trung vào xem xét nghiên cứu phương pháp luận kiến trúc mơ hình phát triển phần mềm hướng thành phần nhiều tác giả đề xuất Trong phần luận văn đưa mô hình giao diện thành phần cho hệ thống hướng thành phần thời gian thực Trong mở rộng đặc tả phương thức với ràng buộc thời gian, mối quan hệ nguyên sẵn có lượng thời gian dành để thực phương thức Mơ hình hỗ trợ đặc tả làm mịn thành phần kiểm chứng thuộc tính thời gian thực Trong luận văn đưa minh họa xây dựng hệ thống xuất hóa đơn cho khách hàng nhằm minh họa cho mơ hình phương pháp luận đề xuất Từ việc nghiên cứu phương pháp luận việc phát triển phần mềm hướng thành phần, luận văn đưa số điểm thống khác biệt lý thuyết đồng thời rút khái niệm chung nhiều lý thuyết thừa nhận Từ mở rộng đề xuất mơ hình giao diện cho thành phần hệ thống thành phần hướng thời gian, hy vọng đóng góp phần vào việc chuẩn hóa phương pháp luận phát triển cho hệ thống thời gian thực Hiện nhiều việc để làm cho mơ hình đề xuất chi tiết như: phần đề xuất ngôn ngữ tương ứng với mơ hình chưa đề cập đến; kỹ thuật phân tích xác minh cụ thể chưa đề cập đến, có cách cho việc xác minh cách chứng minh định lý PVS Trong nghiên cứu tập trung đề xuất mơ hình đầy đủ tập trung giải các vấn đề thiếu sót đề cập 45 TÀI LIỆU THAM KHẢO Tài liệu tiếng Anh: R Allen (1997), A Formal Approach to Software Architecture, PhD thesis, Carnegie Mellon, School of Computer Science R Allen and D Garlan (1997), “A formal basis for architectural connection”, ACM Transactions on Software Engineering and Methodology, 6(3), pp 213 – 249 F Arbab (2004), “Reo: A channeled based coordination model for components composition”, Mathematical Structures in Computer Science, 14(3), pp 329–366 L Bass, P Clements, and R Kazman (1999), Software Architecture in Practice, Addison-Wesley G Beneken and U Hammerschall et al (2003), “Componentware - Sate of the art 2003”, Background Paper for Understanding Components Workshop of the CUE Initiative M Broy (2003), Multi-view modeling of software systems, Report No.284, UNUIIST, P.O.Box 3058, Macau M Broy and K Stølen (2001), Specification and Development of Interactive Systems: FOCUS on Streams, Interfaces, and Refinement, Springer Zhou Chaochen, Anders P Ravn, and Michael R.Hansen (1993), “An Extended Duration Calculus for Real-time Systems”, Hybrid Systems, LNCS 736 M.R.V Chaudron and E de Jong (2000), “Components are from Mars”, Proc 15 IPDPS 2000 Workshops on Parallel and Distributed Processing, LNCS 1800, pp 727 – 733 10 Xin Chen, He Jifeng, Zhiming Liu and Naijun Zhan (2006), A Model of Component-Based Programming, Report No.350, UNU-IIST, P.O Box 3058, Macau 11 Zhenbang Chen, Abdel Hakim Hannousse, Dang Van Hung et al (2007), Modelling with Relational Calculus of Object and Component Systems - rCOS, Report No.382, UNU-IIST, P.O Box 3058, Macau 12 Dino Distefano, Joost-Pierter Katoen, and Arend Rensink (2000), On a Temporal Logic for Object-based Systems, Faculty of Computer Science, University of Twente, P.O Box 217, 7500 AE Enschede, The Netherlands 13 Steve Dunne, Bill Stoddart (2006), Unifying Theories of Programming, First International Symposium, UTP 2006, Springer, UK 14 Hartmut Ehrig et al (2004), Integration of Software Specification Techniques for Applications in Engineering, Priority Program SoftSpez of the German Research Foundation (DFG), LNCS 3147, Springer 15 Stephan Flake and Wolfgang Mueller (2002), “ A UML Profile for Real-Time Constraints with OCL” UML 2003, LNCS 2460, Springer-Verlag 16 Dimitar P Guelev, Dang Van Hung (2007), Reasoning about QoS Contracts in the Probabilistic Duration Calculus, Report No.384, UNU-IIST, P.O Box 3058, Macau 46 17 G Go ssler and J Sifakis (2005), Composition for component-based modeling, ă Science of Computer Programming, 55(1-3) 18 Dieter K Hammer (2002), Software Architectures and Component Technology (Editor: Mehmet Aksit), chapter Component-based Architecting for Distributed Realtime Systems, Kluwer 19 He Jifeng, Zhiming Liu, and Li Xiaoshan (2004), Contract-Oriented Development of Component Software, Report No.298, UNU-IIST, P.O.Box 3058, Macau 20 He Jifeng, Xiaoshan Li, and Zhiming Liu (2005), Component-Based Software Engineering - the Need to Link Methods and their Theories, Report No.330, UNUIIST, P.O.Box 3058, Macau 21 J He, Z Liu, and X Li (2005), rCOS: A refinement calculus for object systems, Report No.322, UNU-IIST, P.O Box 3058, Macau 22 J He, Z Liu, and X Li (2005), Reactive Components, Report No.327, UNU-IIST, P.O Box 3058, Macau 23 J He, Z Liu, X Li, and S Qin (2004), “A relational model of object oriented programs”, Proceedings of the Second ASIAN Symposium on Programming Languages and Systems (APLAS04), LNCS 3302, pp 415–436, Springer 24 C.A.R Hoare and He Jifeng (1998), Unifying Theories of Programming, Prentice Hall Series in Computer Science, Prentice Hall 25 Tony Hoare (2003), “ The verifying compiler: A grand challenge for computing research”, Computer Science 2003, LNCS 2622, pp 262–272, Springer-Verlag 26 J.P Holmegaard, J Knudsen, P Makowski, and A.P Ravn (2006), “Formalization in component based development”, Mathematical Frameworks for Component Software: Models for Analysis and Synthesis, World Scientific, pp 271-295 27 Dang Van Hung (2004), Toward a Formal Model for Component Interfaces for Realtime Systems, Report No.296, UNU-IIST, P.O.Box 3058, Macau 28 Le Dang Hung, Dang Van Hung (2007), “Timing and Concurrency Specification in Component-based Real-Time Embedded Systems Development”, TASE '07 Proceedings of the First Joint IEEE/IFIP Symposium on Theoretical Aspects of Software Engineering 29 Dang Van Hung, Pham Hong Thai (2007), Towards a Template Language for Component-based Programming, Report No.354, UNU-IIST, P.O.Box 3058, Macau 30 D Hybertson (2001), “A uniform component modeling space”, Informatica, 25, pp 475–482 31 He Jifeng, Zhiming Liu, and Li Xiaoshan (2003), Contract-Oriented Component Software Development, Report No 276, UNU-IIST, P.O.Box 3058, Macau 32 He Jifeng, Liu Zhiming, and Li Xiaoshan (2003), Modelling Object-oriented Programming with Reference Type and Dynamic Binding Report No.280, UNUIIST, P.O.Box 3058, Macau 47 33 Z Liu, J He, and X Li (2005), “rCOS: Refinement of component and object systems”, 3rd International Symposium on Formal Methods for Component and Object Systems, LNCS 3657, pp 183-221 34 Z Liu and M Joseph (1999), “Specification and verification of fault-tolerance, timing and scheduling”, ACM Transactions on Languages and Systems, 21(1), pp 46– 89 35 D.C Luckham and J Vera (1995), “An event-based architecture definition language”, IEEE Transactions on Software Engineering, 21(9), pp 717–734 36 J Magee, N Dulay, S Eisenbach, and J Kramer (1995), “Specifying distributed software architectures”, In Proc of 5th European Software Engineering Conference (ESEC95), pp 137–153, Springer-Verlag 37 Z Manna and A Pnueli (1992), The Temporal Logic of Reactive and Concurrent Systems: Specification, Springer-Verlag, New York 38 N Medvidovic and R.N Taylor (2000), “A classification and comparison framework for software architecture description languages”, IEEE Transactions on Software Engineering, 26(1), pp 70–93 39 A Pnueli (2005), “Looking ahead”, Workshop on The Verification Grand Challenge February 21–23, 2005 SRI International, Menlo Park, CA 40 T Rentsch (1982), Object-oriented programming, SIGPLAN Notices, 17(2), pp 51 41 R Roshandel, B Schmerl, N Medvidovic, D Garlan, and D Zhang (2004), “Understanding tradeoffs among different architectural modeling approaches”, Proceedings of the Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA04) 42 E.E Roubtsova, J van Katwijk, W.J.Toetenel, and R.C.M.de Rooij (2001), “Real-Time Systems: Specification of Properties in UML”, In ASCI 2001 conference, pp 188–195 43 J.-G Schneider and O Nierstrasz (1999), “Components, scripts and glue”, Software Architectures Advances and Applications, pp 13 – 25, Springer 44 Shane Sendall and Alfred Strohmeier (2001), “Specifying concurrent system behavior and timing constraints using OCL and UML”, UML 2001 - The Unified Modeling Language Modeling Languages, Concepts, and Tools 4th International Conference, Toronto, Canada, October 2001, Proceedings, LNCS 2185, pp 391–405 Springer 45 M Shaw and D Garlan (1996), Software Architectures: Perspectives on an Emerging Discipline, Prentice Hall cois Siewe and Dang Van Hung (2001), “Deriving Real-Time Programs from 46 Fran¸ Duration Calculus Specifications”, Published in the proceedings of the 11th Advanced Research Working Conference on Correct Hardware Design and Verification Methods (CHARME 2001), LNSC 2144, Springer-Verlag, pp 92–97 48 47 J Sifakis, S Tripakis, and S Yovine (2003), “Building models of real-time systems from application software”, In Special issue on modeling and design of embedded systems of Proceedings of the IEEE, 91(1), pp 100–111 48 I Sommerville (2001), Software Engineering (6th Edition), Addison-Wesley 49 C Szyperski (1997), Component Software: Beyond Object-Oriented Programming, Addison-Wesley 50 R.N Taylor, N Medvidovic, K.M Anderson et al (1996), “A component and message-based architectural style for gui software”, IEEE Transactions on Software Engineering, 22(6), pp 390 – 406 51 Hans Toetenel, Ella Roubtsova, and Jan van Katwijk (2001), “A Timed Automata Semantics for Real-Time UML Specifications”, In IEEE Symposia on Human-Centric Computing Languages and Environments (HCC’01), Visual Languages and Formal Methods (VLFM’01), pp 88–95, IEEE Computer Society 52 A van de Hoek, M Rakic, R Roshandel, and N Medvidovic (2001), “Taming architecture evolution”, In Proceedings of the 6th European Software Engineering Conference (ESEC) and the 9th ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE-9) 53 Wikipedia.org (2010), Component-based software engineering, http://en.wikipedia.org/wiki/Component-based_software_engineering 54 M Wirsing and M Broy (2000), “Algebraic state machines”, Proc 8th Internat.Conf Algebraic Methodology and Software Technology, AMAST 2000, LNCS 1816, pp 89–118, Springer ... 45 DANH MỤC HÌNH STT Tên danh mục hình Trang Hình Sơ đồ thành phần cho hệ thống CNS 30 Hình Mơ hình kiến trúc cho hệ thống dựa thành phần 32 Hình Mơ hình thành phần cho hệ thống xuất hóa đơn bán... 1.2 Thành phần, giao diện mô hình kiến trúc Các khái niệm thành phần, giao diện mô kiến trúc quan trọng mơ hình phát triển dựa thành phần (CBSE) Trong phần trình bày ba khái niệm 1.2.1 Thành phần. .. TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHẠM ĐÌNH CHINH MƠ HÌNH HĨA GIAO DIỆN CỦA CÁC THÀNH PHẦN TRONG CÁC HỆ THỐNG DỰA TRÊN THÀNH PHẦN Ngành: Công nghệ thông tin Chuyên ngành: Công nghệ phần mềm Mã số: 60.48.10

Ngày đăng: 25/03/2015, 09:47

Từ khóa liên quan

Mục lục

  • DANH MỤC HÌNH

  • DANH MỤC CÁC TỪ VIẾT TẮT

  • PHẦN MỞ ĐẦU

  • 1.1 Giới thiệu

  • 1.2 Thành phần, giao diện và mô hình kiến trúc

  • 1.2.1 Thành phần

  • 1.2.2 Giao diện

  • 1.2.3 Mô hình kiến trúc

  • 1.2.4 Thống nhất khái niệm về phát triển phần mềm hướng thành phần

  • 1.3 Các lý thuyết hình thức mới nhất

  • 1.3.1 Mô hình kiến trúc

  • 1.3.2 Sự cần thiết phải liên kết các phương pháp và lý thuyết

  • 1.4 Giới thiệu mô hình rCOS

  • 1.5 Kết luận

  • 2.1 Giới thiệu

  • 2.2 Mô hình hóa đặc tả giao diện của thành phần

  • 2.2.1 Làm mịn của các thiết kế xét đến yếu tố thời gian

  • 2.2.2 Thành phần tuần tự

  • 2.2.3 Kết nối các thành phần song song

  • 2.2.4 Thành phần thụ động

Tài liệu cùng người dùng

Tài liệu liên quan