Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 75 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
75
Dung lượng
0,93 MB
Nội dung
-i- LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Nghiên cứu mẫu thiết kế kiến trúc phần mềm Java” công trình nghiên cứu hướng dẫn khoa học PGS.TS Đặng Văn Đức, tham khảo nguồn tài liệu rõ trích dẫn danh mục tài liệu tham khảo Các nội dung công bố kết trình bày luận văn trung thực chưa công bố công trình Thái Nguyên, tháng 10 năm 2010 Nguyễn Quang Huy - ii - Lời cảm ơn Tôi xin gửi lời cảm ơn sâu sắc tới PGS.TS Đặng Văn Đức – Viện Công nghệ thông tin, người tận tình có bảo cần thiết để giúp đỡ suốt trình nghiên cứu phát triển luận văn Xin chân thành cảm ơn quý Thầy cô khoa Sau đại học trường Đại học Thái Nguyên nhiệt tình giảng dạy, trang bị cho kiến thức quý báu suốt thời gian học tập trường Xin chân thành cảm ơn bạn lớp, đồng nghiệp đơn vị nơi công tác tạo điều kiện cho hoàn thành luận văn Xin gửi lời cảm ơn tới gia đình động viên suốt trình học hoàn thành luận văn - iii - MỤC LỤC LỜI CAM ĐOAN i MỤC LỤC iii DANH MỤC CÁC TỪ VIẾT TẮT v MỞ ĐẦU CHƯƠNG I TỔNG QUAN VỀ MẪU THIẾT KẾ VÀ NGÔN NGỮ MÔ HÌNH HÓA THỐNG NHẤT UML 1.1 Tổng quan mẫu thiết kế 1.1.1 Vấn đề thiết kế phần mềm hướng đối tượng 1.1.2 Lịch sử Mẫu thiết kế 1.1.3 Mẫu thiết kế ? 1.1.4 Một số vấn đề mẫu thiết kế 1.2 Ngôn ngữ mô hình hóa thống UML 1.2.1 Khái quát UML .7 1.2.2 Biểu đồ lớp (Class Diagrams) 1.2.3 Lược đồ trình tự (Sequence Diagrams) 14 Chương II CÁC MẪU THIẾT KẾ KIẾN TRÚC PHẦN MỀM TRONG JAVA .16 2.1 Mẫu khởi tạo .16 2.1.1 Factory Method 16 2.1.2 Singleton 18 2.1.3 Abstract Factory .18 2.1.4 Prototype 21 2.1.5 Builder .21 2.2 Mẫu cấu trúc .23 2.2.1 Decorator 23 2.2.2 Adapter .24 2.2.3 Façade 25 2.2.4 Proxy 26 2.2.5 Bridge .27 - iv - 2.2.6 Composite 28 2.2.7 Flyweight 31 2.3 Mẫu hành vi 32 2.3.1 Mẫu Chain of Responsibility 33 2.3.2 Command 36 2.3.3 Interperter 38 2.3.4 Iterator 39 2.3.5 Mediator 41 2.3.6 Memento 42 2.3.7 Observer 43 2.3.8 Sate 44 2.3.9 Strategy 44 2.3.10 Template Method 45 2.3.11 Visitor 46 2.4 Mẫu tương tranh 48 2.4.1 Critical Section .48 2.4.2 Consistent Lock Order .50 2.4.3 Guarded Suspension 52 2.4.4 Read-Write Lock 54 Chương III PHÁT TRIỂN CHƯƠNG TRÌNH THỬ NGHIỆM .56 3.1 Cơ sở lý thuyết 56 3.1.1 Giao dịch phân tán 56 3.1.2 Các vấn đề xung đột liệu số giải thuật điều khiển .58 3.2 Xây dựng chương trình thử nghiệm 62 3.2.1 Sơ đồ UML 62 3.2.2 Lập trình mođun demo .63 65 3.2.3 Đánh giá kết thu .65 KẾT LUẬN 66 HƯỚNG PHÁT TRIỂN 67 TÀI LIỆU THAM KHẢO 68 -v- DANH MỤC CÁC TỪ VIẾT TẮT UML Unified Modeling Language CSDL Cơ sở liệu DBMS Database Management System (Hệ quản trị CSDL) V Validation (Thẩm tra) R Read (Đọc) C Computation (Tính toán) W Write (Ghi) - vi - -1- MỞ ĐẦU Ngôn ngữ lập trình Java Sun Microsystems giới thiệu vào tháng năm 1995 Từ đó, trở thành công cụ lập trình lập trình viên chuyên nghiệp Java sử dụng rộng rãi để viết chương trình chạy Internet Nó ngôn ngữ lập trình hướng đối tượng độc lập thiết bị, không phụ thuộc vào hệ điều hành Nó không dùng để viết ứng dụng chạy đơn lẻ hay mạng mà để xây dựng trình điều khiển thiết bị cho điện thoại di động, PDA, … Các phương pháp phân tích thiết kế hướng đối tượng phát triển mạnh mẽ góp phần đáng kể vào việc cải tiến chất lượng phần mềm nhờ vào khả xây dựng lớp đối tượng có tính tái sử dụng cao, dễ bảo trì mở rộng Ngôn ngữ UML (Unified Modeling Language) đề xuất để sử dụng ngôn ngữ chuẩn để mô hình hóa thành tố phần mềm trình phân tích thiết kế hướng đối tượng Tuy nhiên, phương pháp hướng đối tượng tập trung chủ yếu vào hoạt động tổng thể tiến trình phát triển phần mềm hướng đối tượng Những phương pháp thường không giải vấn đề chi tiết nảy sinh trình thiết kế phần mềm Để bổ sung cho phương pháp hướng đối tượng, mẫu thiết hướng đối tượng tiếp cận độc đáo, đề xuất để giải vấn đề nảy sinh trình thiết kế phần mềm hướng đối tượng Các mẫu GoF có tầm quan trọng ảnh hưởng lớn giới nghiên cứu giới công nghiệp phần mềm Rất nhiều công trình đặc sắc khác mẫu thiết kế hướng đối tượng đề xuất để giải nhiều vấn đề đặc thù cho lĩnh vực ứng dụng phần mềm Trong đó, quan tâm đến việc nghiên cứu mẫu thiết kế để áp dụng trình phát triển phần mềm hướng đối tượng, đặc biệt giải vấn đề cài đặt giao diện người dùng vấn đề liên quan đến ứng dụng Java Vì thế, thực đề tài luận văn: “Nghiên cứu mẫu thiết kế kiến trúc phần mềm Java” -2- Mục tiêu đề tài nghiên cứu, nắm vững phương pháp phân tích thiết kế hướng đối tượng ngôn ngữ mô hình hóa thống UML (Unified Modeling Language) Đồng thời sử dụng số mẫu thiết kế vào công đoạn xây dựng kiến trúc phần mềm ngôn ngữ Java Bố cục luận văn bao gồm phần mở đầu, phần kết luận ba chương nội dung tổ chức sau: Chương I Tổng quan mẫu thiết kế ngôn ngữ mô hình hóa thống UML Chương trình bày tổng quan mẫu thiết kế kiến trúc phần mềm hướng đối tượng, lịch sử phát triển, định nghĩa mẫu thiết kế số vấn đề mẫu Khái quát ngôn ngữ mô hình hóa thống UML, biểu đồ cấu trúc, biểu đồ hành vi, biểu đồ quản lý mô hình, ký pháp UML… Chương II Các mẫu thiết kế kiến trúc phần mềm Java Trong chương tập trung vào trình bày mẫu thiết kế kiến trúc phần mềm Java bao gồm mẫu khởi tạo, mẫu cấu trúc, mẫu hành vi, mẫu tương tranh Các mẫu mô tả, định nghĩa đưa mô hình UML sau ví dụ áp dụng Chương III Phát triển chương trình thử nghiệm Trong chương phát triển ứng dụng sử dụng mẫu thiết kế, chủ yếu tập trung minh họa việc sử dụng mẫu tương tranh để giải xung đột môi trường mạng, môi trường đa tiến trình Chương trình phân tích thiết kế UML lập trình mô-đun demo Java -3- CHƯƠNG I TỔNG QUAN VỀ MẪU THIẾT KẾ VÀ NGÔN NGỮ MÔ HÌNH HÓA THỐNG NHẤT UML 1.1 Tổng quan mẫu thiết kế 1.1.1 Vấn đề thiết kế phần mềm hướng đối tượng Việc thiết kế phần mềm hướng đối tượng công việc khó, việc thiết kế một phần mềm hướng đối tượng phục vụ cho mục đích dùng lại khó Chúng ta phải tìm đối tượng phù hợp, đại diện cho lớp đối tượng Sau thiết kế giao diện kế thừa cho chúng, thiết lập mối quan hệ chúng Thiết kế phải đảm bảo giải vấn đề tại, tiến hành mở rộng tương lai mà tránh phải thiết kế lại phần mềm Và tiêu trí quan trọng phải nhỏ gọn Thiết kế phần mềm hướng đối tượng phục vụ cho mục đích dùng lại công việc khó, phức tạp mong chờ thiết kế đúng, đảm bảo tiêu trí Thực tế cần phải thử nghiệm sau vài lần sau sửa chữa lại Đứng trước vấn đề, người phân tích thiết kế tốt đưa nhiều phương án giải quyết, phải duyệt qua tất phương án chọn cho phương án tốt Phương án tốt dùng dùng lại nhiều lần, dùng gặp vấn đề tương tự Mà phân tích thiết kế phần mềm hướng đối tượng ta gặp lại vấn đề tương tự 1.1.2 Lịch sử Mẫu thiết kế Ý tưởng dùng mẫu xuất phát từ ngành kiến trúc, Alexander, Ishikawa, Silverstein, Jacobson, Fiksdahl-King Angel (1977) lần đưa ý tưởng dùng mẫu chuẩn thiết kế xây dựng truyền thông Họ xác định lập sưu liệu mẫu có liên quan để dùng để giải vấn đề thường xảy thiết kế cao ốc Mỗi mẫu cách thiết kế, chúng phát triển hàng trăm năm giải pháp cho vấn đề mà người ta làm lĩnh vực xây dựng thường gặp Các giải pháp tốt có ngày hôm qua trình sàng lọc tự nhiên Mặc dù nghành công nghệ phần mềm lịch sử -4- phát triển lâu dài nghành kiến trúc, xây dựng Công nghệ phần mềm nghành công nghiệp tiên tiến, tiếp thu tất tốt đẹp từ nghành khác Mẫu xem giải pháp tốt để giải vấn đề xây dựng hệ thống phần mềm Suốt năm đầu 1990, thiết kế mẫu thảo luận hội thảo workshop, sau người ta nỗ lực để đưa danh sách mẫu lập sưu liệu chúng Những người tham gia bị dồn vào việc cần thiết phải cung cấp số kiểu cấu trúc mức quan niệm cao đối tượng lớp để cấu trúc dùng để tổ chức lớp Đây kết nhận thức việc dùng kỹ thuật hướng đối tượng độc lập không mang lại cải tiến đáng kể chất lượng hiệu công việc phát triển phần mềm Mẫu xem cách tổ chức việc phát triển hướng đối tượng, cách đóng gói kinh nghiệm ngưòi trước hiệu thực hành Năm 1994 hội nghị PloP (Pattern Language of Programming Design) tổ chức Cũng năm sách Design Patterns: Elements of Reusable Object Oriented Software (Gamma, Johnson, Helm Vhissdes, 1995) xuất vào thời điểm diễn hội nghị OOPSLA’94 Đây tài liệu phôi thai việc làm nỗi bật ảnh hưởng mẫu việc phát triển phần mềm, đóng góp xây dựng mẫu thành danh mục (catalogue) với định dạng chuẩn dùng làm tài liệu cho mẫu tiếng với tên Gang of Four (bộ tứ), mẫu thường gọi mẫu Gang of Four Còn nhiều sách khác xuất hai năm sau, định dạng chuẩn khác đưa Năm 2000 Evitts có tổng kết cách mẫu xâm nhập vào giới phần mềm (sách ông lúc nói mẫu sử dụng UML chưa đưa khái niệm mẫu thiết kế cách tổng quát) Ông công nhận Kent Beck Ward Cunningham người phát triển mẫu với SmallTalk công việc họ báo cáo hội nghị OOPSLA’87 Có mẫu mà Kent Beck Ward Cunningham tìm việc kết hợp - 55 - giá trị tài nguyên Nói cách khác, khoá đọc cần chia sẻ Nếu tiến trình phép đọc liệu tài nguyên tiến trình khác cập nhật tài nguyên đó, tiến trình đọc liệu nhận phản ánh trái ngược Việc cho phép tiến trình cập nhật giá trị tài nguyên dẫn đến kết không đoán trước Khi số tiến trình đọc giá trị tài nguyên, số tiến trình khác truy cập vào tài nguyên để đọc cập nhật giá trị Để loại bỏ vấn đề xảy này, tiến trình cần truy cập vào tài nguyên để đọc cập nhật giá trị, phải nhận khoá ghi lên đối tượng đại diện cho tài nguyên Một khoá ghi khoá riêng lên đối tượng tránh không cho tất tiến trình khác truy cập vào tài nguyên lúc Hơn nữa, khoá đọc ghi yêu cầu lên đối tượng lúc, khoá ghi ưu tiên trước Khoá ghi đưa không tiến trình giữ khoá đọc lên đối tượng Bảng đưa tiêu chí để đưa khoá đọc – ghi Khoá Nguyên tắc Khóa đọc Một khóa đọc cấp khóa ghi thời cấp không tiến trình đợi khoá ghi Một khoá ghi đưa không tiến trình thời cấp khoá (đọc ghi) lên đối tượng Khóa ghi Trong Java, sẵn tính thực thi khoá đọc - ghi Nhưng lớp tạo với khả cấp khoá đọc - ghi lên đối tượng đến tiến trình khác ứng dụng Thiết kế bật lớp ReadWriteLock Lock Statistics (Thống kê khóa) ReadWriteLock trì kiện khoá biến lớp sau: totalReadLocksGiven – để lưu số khoá đọc cấp đối tượng writeLockIssued – để xem khoá ghi đưa chưa threatsWaitingForWriteLock – để theo dõi số tiến trình thời đợi khoá ghi - 56 - Giá trị đến lượt sử dụng phương thức đưa khoá – getReadLock getWriteLock Lock Methods (Phương thức khoá ) ReadWriteLock cung cấp hai phương thức getReadLock getWriteLock mà sử dụng đối tượng khách để nhận khoá đọc ghi lên đối tượng cách Như phần việc thực thi hai phương thức này, phương thức ReadWriteLock đưa khoá đọc-ghi theo quy tắc liệt kê bảng Lock Release (Nhả khoá) Một đối tượng khách thời giữ khoá nhả khoá việc gọi phương thức done Phương thức done cập nhật kiện khoá thích hợp cho phép khoá đưa cho tiến trình đợi theo quy tắc nêu bảng Lớp ReadWriteLock thực thi chung cho việc đưa khoá đọc - ghi sẵn sàng sử dụng ứng dụng Chương III PHÁT TRIỂN CHƯƠNG TRÌNH THỬ NGHIỆM 3.1 Cơ sở lý thuyết 3.1.1 Giao dịch phân tán - Định nghĩa giao dịch • Định nghĩa giao dịch Giao dịch (transaction) đơn vị nguyên tố truy xuất CSDL bao gồm dãy thao tác đọc ghi bước tính toán CSDL Kết thúc giao dịch, thao tác thực đầy đủ không thực • Tình kết thúc giao dịch - 57 - Một giao dịch phải kết thúc có xảy cố Nếu giao dịch hoàn tất thành công tác vụ nó, ta nói giao dịch có uỷ thác (commit) Ngược lại giao dịch phải ngừng lại chưa hoàn tất công việc, ta nói bị huỷ bỏ (abort) Khi giao dịch bị huỷ bỏ, trình thực thi ngừng tất hành động thực phải phục hồi lại, đưa CSDL trạng thái trước thực giao dịch - Các tính chất giao dịch • Tính nguyên tử Tính nguyên tử (automicity) liên quan đến kiện giao dịch xử lý đơn vị hoạt tác Chính mà hành động giao dịch, tất hoàn tất không hành động hoàn tất Tính nguyên tử đòi hỏi việc thực thi giao dịch bị cắt ngang loại cố DBMS chịu trách nhiệm xác định công việc cần thực giao dịch để khôi phục lại sau cố Có hai chiều hướng hành động: kết thúc cách hoàn tất hành động lại, kết thúc cách hồi phục lại tất hành động thực • Tính quán Tính quán (consistency) giao dịch đơn giản phản ánh tính đắn Nói cách khác, giao dịch chương trình đắn ánh xạ CSDL từ trạng thái quán sang trạng thái quán khác • Tính biệt lập Biệt lập (isolation) tính chất giao dịch, đòi hỏi giao dịch phải nhìn thấy CSDL quán Nói cách khác, giao dịch thực thi làm lộ kết cho giao dịch khác hoạt động trước uỷ thác • Tính bền vững Tính bền vững (durability) muốn nói đến tính chất giao dịch, bảo đảm giao dịch uỷ thác, kết trì cố định không bị xoá - 58 - khỏi CSDL Vì DBMS bảo đảm kết giao dịch tồn dù có xảy cố hệ thống 3.1.2 Các vấn đề xung đột liệu số giải thuật điều khiển - Lý thuyết khả Hai giao tác Oij Okl (i k không thiết phải phân biệt) truy cập đến thực thể CSDL x gọi có tương tranh chúng thao tác ghi (write) Có hai vấn đề mà cần lưu ý là, trước tiên hai giao tác đọc không tương tranh với Vì nói hai loại tương tranh: đọc - ghi (read - write) ghi - ghi (write - write) Thứ hai, hai giao tác thuộc giao dịch thuộc hai giao dịch khác Trong trường hợp sau, hai giao dịch gọi có tương tranh Về trực quan, tồn tương tranh hai giao tác cho thấy thứ tự thực chúng quan trọng Việc thứ tự cho hai giao tác đọc không cần thiết - Phân loại chế điều khiển đồng thời Chúng ta xếp chế điều khiển đồng thời làm hai nhóm lớn: phương pháp điều khiển đồng thời lạc quan phương pháp điều khiển đồng thời bi quan Các thuật toán bi quan đồng hoá việc thực đồng thời giao dịch trước thực thi chúng, thuật toán lạc quan để việc đồng hoá giao dịch đến chúng kết thúc Nhóm lạc quan gồm có thuật toán dựa theo khóa chốt (locking-based algorithm), thuật toán dựa theo thứ tự giao dịch thuật toán lai (hybrid algorithm) Tương tự, nhóm lạc quan phân loại thành thuật toán dựa khoá chốt thuật toán theo thứ tự thời gian Trong cách tiếp cận dùng khoá chốt, việc đồng hoá giao dịch có cách sử dụng khoá chốt vật lý logic phần CSDL Lớp chế chia nhỏ tuỳ theo vị trí thực hoạt động quản lý khoá: Trong lối khoá tập quyền, vị trí mạng định làm vị trí chính, lưu trữ bảng khoá cho toàn CSDL chịu trách nhiệm trao khóa cho giao dịch - 59 - Theo lối khoá ngược lại (nếu có nhiều bản) đơn vị khoá định làm (primary copy) bị khoá giao dịch truy xuất đến đơn vị Nếu CSDL không nhân (nghĩa đơn vị khoá có nhất), chế khoá phân phối trách nhiệm quản lý khoá cho số vị trí Theo lối khoá phi tập trung, nhiệm vụ quản lý khoá tất vị trí mạng Trong trường hợp này, thực giao dịch có tham gia điều phối xếp lịch nhiều vị trí Mỗi xếp lịch cục chịu trách nhiệm đơn vị khoá nằm cục vị trí Lớp chế theo thứ tự thời dấu (timestamp ordering, TO) phải tổ chức thứ tự thực giao dịch nhằm trì tính quán lẫn tương hỗ vị trí (liên quán) Việc xếp thứ tự trì cách gán thời dấu cho giao dịch lẫn mục liệu lưu CSDL Những thuật toán thuộc loại (basic TO), đa (multiversion TO), bảo toàn (conservative TO) - Các thuật toán điều khiển đồng thời khóa chốt Ý tưởng việc điều khiển đồng thời khoá chốt đảm bảo liệu dùng chung cho thao tác tương tranh truy xuất lần giao dịch Điều thực cách liên kết khoá chốt (lock) với đơn vị khoá Khoá giao dịch đặt trước truy xuất điều chỉnh lại vào lúc hết sử dụng Một đơn vị khoá truy xuất bị khoá giao dịch khác Vì vậy, yêu cầu khoá giao dịch trao khoá kèm không bị giao dịch giữ Có hai loại khoá chốt (thường gọi thể thức khoá, lock mode) kèm với đơn vị khoá: khoá đọc (read lock) khoá ghi (write lock) Một giao dịch Ti muốn đọc mục liệu chứa đơn vị khoá x nhận khoá đọc x [ký hiệu rli(x)] tương tự thao tác ghi Hai thể thức khoá tương thích (compatibility) hai giao dịch truy xuất đến mục liệu nhận khoá mục liệu lúc Các khoá đọc tương thích với khoá đọc - ghi, ghi - ghi - 60 - không Vì vậy, hai giao dịch đồng thời đọc mục liệu - Các thuật toán điều khiển đồng thời thời dấu Không giống thuật toán dựa vào khoá, thuật toán điều khiển đồng thời thời đấu không cố gắng trì tính khả phương pháp độc quyền truy xuất Thay vào đó, chúng chọn trước thứ tự hoá thực giao dịch theo thứ tự Để làm điều này, quản lý giao dịch gán cho giao dịch Ti thời dấu (timestamp) ts(Ti) vào lúc khởi Thời dấu định danh đơn giản dùng để nhận giao dịch cách xếp thứ tự chúng Thời dấu hai có dạng - Các thuật toán điều khiển đồng thời lạc quan Các thuật toán biết phần trước chất thuộc loại bi quan (pesimistic) Nói cách khác, giả định tương tranh giao dịch hay xảy không cho phép giao dịch truy xuất mục liệu có giao dịch tương tranh truy xuất mục liệu Vì việc thực thao tác giao dịch trải qua dãy pha: thẩm tra (validation, V), đọc (read, R), tính toán (computation, C), ghi (write, W) Nói chung dãy thao tác có giá trị giao dịch cập nhật thao tác Ngược lại, giao dịch lạc quan (optimistic) trì hoãn pha thẩm tra trước pha ghi Vì thao tác trao cho xếp lịch lạc quan không bị trì hoãn Các thao tác đọc, tính toán, ghi thực tự mà không cập nhật vào CSDL thực Mỗi giao dịch lúc đầu cập nhật cục mục liệu Pha thẩm tra bao gồm việc kiểm xem cập nhật có trì tính quán CSDL hay không Nếu có, thay đổi thực thực (nghĩa ghi vào CSDL thực tế) Ngược lại, giao dịch bị huỷ bỏ phải khởi động lại - Quản lý khóa • Khoá chốt (lock) - 61 - Khoá chốt đặc quyền truy xuất mục liệu mà quản lý khoá chốt trao cho giao tác hay thu hồi lại Một giao tác muốn truy xuất tới mục liệu yêu cầu khoá chốt cho mục liệu đó, sau trao khoá hoàn thành thao tác cần thiết phải mở khoá (unlock) để giao tác khác lại truy xuất tới mục liệu • Khoá sống (life lock) Khoá sống tượng giao tác T yêu cầu khoá mục liệu đồng thời có giao tác T yêu cầu khoá đó, hệ thống trao khoá cho giao tác T2, giao tác T2 thực xong thao tác mục liệu mở khoá lại có giao tác T3 khác yêu cầu khoá, hệ thống lại trao khoá cho giao tác này… trình tiếp tục xảy ra, T phải chờ đợi cách hoài vọng Hiện tượng khoá sống khắc phục cách sử dụng chiến lược “đến trước phục vụ trước”, chiến lược lại gây hiệu trái ngược • Khoá chết (deadlock) Khoá chết tình mà thành viên tập S gồm hai hay nhiều giao tác đợi nhận khoá mục liệu bị khoá giao tác khác tập S Bởi giao tác tập S đợi, nên mở khoá cho mục liệu mà giao tác khác cần, tất giao tác tiếp tục phải đợi mãi Việc khắc phục tượng khoá gài vấn đề nghiên cứu, có số giải pháp cho vấn đề - 62 - 3.2 Xây dựng chương trình thử nghiệm 3.2.1 Sơ đồ UML - Sơ đồ UML ứng dụng truyền file Remote FileLock UnicastRemoteObject NLS_NAME LOCK_NAME isLocked() lock() unlock() FileTransferImpl SharedFileLock file lockFile locks getLockFor() isLocked() lock() reallyLock() unlock() FileTransfer nameObj Id input output locked getID() downloadFileSimple() beginDownload() downloadFile() endDownload() deleteFile() renameFile() fileInfo() checkFile() beginSaveFile() saveFile() endSaveFile() getSharedLockFor() isFileLocked() lock() unlock() - 63 - - Sơ đồ UML ứng dụng Bán sách qua mạng Serializable UnicastRemoteObject Remote RsSerializable java.sql.ResultSet() DatabaseImpl databaseName userName passName RsServer conn Stmt DBDriver url Id locked getID() connectDatabase() closeDatabase() Begin_Transaction() End_Transaction() COMMIT() ROLLBACK() getAUTOCOMMIT() getResultSet() querySQL() setTRANSACTION() getTRANSACTION() isLocked() Lock() Unlock() Database getID() connectDatabase() closeDatabase() Begin_Transaction() End_Transaction() COMMIT() COMMIT() getAUTOCOMMIT() getResultSet() querySQL() setTRANSACTION() getTRANSACTION() isLocked() Lock() Unlock() 3.2.2 Lập trình mođun demo Trong ví dụ có sử dụng mẫu tương tranh (Concurrency Patterns) như: Critical Section, Consistent Lock Order, Guarded Suspension, Read-Write Lock Chương trình Truyền file xây dựng mô hình Client – Server - Giao diện chương trình bên phía trình chủ đăng ký tên máy chủ số hiệu cổng - 64 - - Giao diện chương trình bên phía trình khách Chương trình cho phép truy cập vào trình chủ để Download, Upload liệu, đổi tên, xóa file, nén – giải nén file, … bên phía trình chủ khách Chương trình có nhiều tuyến đoạn chạy độc lập chiếm dụng tài nguyên bên phía trình chủ Chương trình Bán sách qua mạng xây dựng mô hình Client – Server, CSDL tập trung xử lý phân tán - Giao diện chương trình bên phía trình chủ - 65 - - Chương trình bên phía trình khách truy cập vào trình chủ truy xuất CSDL Trong trình thực giao dịch chiếm dụng toàn CSDL thao tác ghi, cập nhật, xóa, … 3.2.3 Đánh giá kết thu Chương trình minh họa phần nhỏ việc sử dụng mẫu hướng đối tượng để xây dựng phần mềm Hai ví dụ thể rõ việc sử dụng - 66 - mẫu tương tranh để giải xung đột trình truy cập truy xuất tài nguyên mạng KẾT LUẬN Như vậy, để bổ sung cho phương pháp hướng đối tượng, mẫu thiết hướng đối tượng tiếp cận độc đáo, đề xuất để giải vấn đề nảy sinh trình thiết kế phần mềm hướng đối tượng Các mẫu GoF có tầm quan trọng ảnh hưởng lớn giới nghiên cứu giới công nghiệp phần mềm Rất nhiều công trình đặc sắc khác mẫu thiết kế hướng đối tượng đề xuất để giải nhiều vấn đề đặc thù cho lĩnh vực ứng dụng phần mềm Do đặc điểm công nghệ, việc xây dựng phần mềm Java đối diện với nhiều vấn đề nảy sinh khác Trong luận văn, giới hạn vấn đề xoay quanh ứng dụng mẫu thiết kế trình phát triển phần mềm Java Trong thực tế nhiều vấn đề quan trọng thách thức khác kể mặt công nghệ mặt nghiên cứu phương pháp luận Trong khuôn khổ luận văn thu số kết sau đây: • Trình bày tổng quan mẫu thiết kế ngôn ngữ mô hình hóa thống UML • Tìm hiểu trình bày số mẫu thiết kế mẫu khởi tạo, mẫu cấu trúc, mẫu hành vi, mẫu tương tranh Java • Tìm hiểu ngôn ngữ lập trình Java, ngôn ngữ mô hình hóa thống UML, phương pháp phân tích thiết kế lập trình hướng đối tượng - 67 - • Xây dựng chương trình thử nghiệm ngôn ngữ lập trình Java sử dụng mẫu thiết kế mà bật sử dụng mẫu tương tranh để giải vấn đề xung đột môi trường mạng, môi trường đa tiến trình HƯỚNG PHÁT TRIỂN Để phát triển hướng nghiên cứu này, định hướng vào công việc sau: • Nghiên cứu tiếp mẫu thiết kế giải vấn đề khác phát triển ứng dụng Java, hệ thống hóa phân loại để định hướng áp dụng; • Áp dụng cách hệ thống mẫu thiết kế vào việc triển khai thử nghiệm hệ thống phần mềm Java để rút nguyên tắc phương pháp luận cần thiết cho việc vận dụng mẫu này; • Xây dựng công cụ cần thiết nhằm tích hợp hỗ trợ việc sử dụng mẫu thiết kế trình phát triển phần mềm Java Mặc dù cố gắng, nỗ lực thời gian trình độ có hạn chế định nên luận văn không tránh khỏi thiếu sót Trong tương lai, cố gắng hoàn thiện hạn chế phát triển vấn đề nêu trên, để mang lại kết khả quan Rất mong nhận đóng góp ý kiến thầy cô bạn để luận văn ngày hoàn thiện - 68 - TÀI LIỆU THAM KHẢO Tiếng Việt [1] Đặng Văn Đức, Phân tích thiết kế hướng đối tượng UML, NXB Giáo dục, 2002 [2] Phương Lan số tác giả, Design Patterns, Nhà Xuất Bản Phương Đông [3] Phương Lan, Hoàng Đức Hải, Java, Nhà xuất thống kê, 2004 [4] Nguyễn Phương Lan, Java lập trình mạng, Nhà xuất Lao động xã hội, 2006 Tiếng Anh [5] Craig Larman, Applying UML and Pattterns, Amazon, 2004 [6] Kuchana, Partha, Software Architecture Design Patterns in Java, CRC Press LLC, 2004 [7] KevinZhang, Design Patterns Elements of Reusable Object-Oriented Software, [8] D Bonura, R Culmone, E Merelli, Patterns for web applications, ACM International Conference Proceeding Series, Vol 27, p 739 - 746, (2002) [9] F Buschmann, Pattern-oriented Software Architecture - A System of Patterns, John Wiley & Sons, (1996) [10] J W Cooper, The design patterns Java companion, Addison-Wesley, (1998) [11] P Eeles, K Houston, W Kozaczynski, Building J2EE Applications with the Rational Unified Process, Addison-Wesley, (2002) - 69 - [12] M Ewiss, ‘Patterns for Web Applications’, Pattern Languages of Programs conference 2003 (PLoP 2003) Website http://www.sqlsecurity.com/faq-inj.asp http://www.objectmentor.com/mentoring/OOPrinciples http://www.object-arts.com/EducationCentre/Patterns/AccessorMethods.htm http://www.object-arts.com/OldStuff/Patterns/PrivateMethods.htm http://java.sun.com http://www.javaworld.com/javaworld/jw-10-2001/jw-1012-deadlock.html http://www.research.ibm.com/designpatterns/pubs/7habits.html http://www.w3.org/TR/REC-html40/present/frames.html ... II Các mẫu thiết kế kiến trúc phần mềm Java Trong chương tập trung vào trình bày mẫu thiết kế kiến trúc phần mềm Java bao gồm mẫu khởi tạo, mẫu cấu trúc, mẫu hành vi, mẫu tương tranh Các mẫu mô... sử dụng nhiều lần đem lại kết tốt trìu tượng hóa thành mẫu mẫu thiết kế kinh nghiệm thiết kế đúc kết lại thành mẫu chuẩn mực Sử dụng mẫu thiết kế người thiết kế thiết kế hệ thống từ đầu, giải... Java Vì thế, thực đề tài luận văn: Nghiên cứu mẫu thiết kế kiến trúc phần mềm Java -2- Mục tiêu đề tài nghiên cứu, nắm vững phương pháp phân tích thiết kế hướng đối tượng ngôn ngữ mô hình