Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 101 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
101
Dung lượng
3,84 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trần Lệ Huyền TÌMHIỂUVỀTIẾPCẬNTHEMEVÀỨNGDỤNGCỦACÁCHTIẾPCẬNVÀOXÂYDỰNGHỆTHỐNGĐIỆNTHOẠI KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Thông Tin HÀ NỘI - 2010 2 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Trần Lệ Huyền TÌMHIỂUVỀTIẾPCẬNTHEMEVÀỨNGDỤNGCỦACÁCHTIẾPCẬNVÀOXÂYDỰNGHỆTHỐNGĐIỆNTHOẠI KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Thông Tin Cán bộ hướng dẫn: TS. Đặng Văn Hưng HÀ NỘI - 2010 3 Lời cảm ơn Lời đầu tiên, em xin được bày tỏ lòng biết ơn sâu sắc tới thầy Đặng Văn Hưng- Người đã trực tiếp hướng dẫn, tận tình giúp đỡ em trong thời gian thực hiện khóa luận. Em xin được bày tỏ lòng biết ơn tới các thầy, cô trong khoa Công Nghệ Thông Tin, trường Đại Học Công Nghệ, ĐHQGHN. Các thầy cô đã nhiệt tình dạy bảo và tạo mọi điều kiện học tập tốt nhất cho chúng em trong những năm học tập tại ĐHCN Tôi xin cảm ơn các bạn sinh viên lớp K51CC và K51CNPM Trường Đại học Công nghệ, những người bạn đã cùng tôi học tập và rèn luyện trong suốt những năm học đại học. Hà Nội, ngày 19 tháng 5 năm 2010 Trần Lệ Huyền 4 Tóm tắt Lập trình hướng khía cạnh (Aspect Oriented Programming - AOP) là một kiểu lập trình mới nhanh chóng thu hút được các nhà phát triển trong giới công nghệ thông tin. AOP là một mô hình lập trình tách biệt các chức năng phụ với logic nghiệp vụ của chương trình chính. Các chức năng phụ rải rác nằm xuyên suốt trong hệthống được tách thành các đơn vị duy nhất, gọi là aspect( khía cạnh). Một aspect là một đơn vị mô- đun cho sự thi hành cắt ngang chương trình. Nó đóng gói các hành vi mà ảnh hưởng đến nhiều lớp vào các mô-đun có khả năng sử dụng lại. Đây là một phương pháp lập trình phát triển dựa trên lập trình hướng đối tượng. Bài luậntìmhiểuvềcáchxâydựnghệthống với phương pháp AOP. Vàứngdụng AOP vàoxâydựng thiết kế một hệthốngđiệnthoại với các chức năng cơ bản. 5 Danh sách chữ viết tắt STT Từ viết tắt Giải nghĩa 1 AOP Aspect Oriented Programming 2 OOP Object Oriented Programming 6 Mục lục Chương 1 Tiếpcận AOP 2 1.1 Giới thiệu: 2 1.2 Đặc điểm của AOP 3 1.2.1 Aspect là gì? 3 1.2.2 Nguyên tắc: 4 1.2.3 Những lợi ích “separate of concerns” 4 1.2.4 Tiếpcận aspect 5 1.3 Giới thiệu sơ qua vềTheme 7 1.3.1 Định nghĩa vềTheme 7 1.3.2 Mối quan hệ giữa các theme : 8 1.3.3 Áp dụngcáchtiếpcận theme: 9 Chương 2 Phân tích 11 2.1 Các khung nhìn Theme/Doc 11 2.1.1 Khung nhìn relationship củatheme 11 2.1.2 Khung nhìn crosscutting củaTheme 12 2.1.3 Khung nhìn individual 14 2.2 Quá trình xử lý Theme/Doc 14 2.3 Quyết định trên theme 16 2.3.1 Chọn các theme ban đầu 16 2.3.2 Các hoạt động trên theme 19 2.3.3 Hoạt động trên Requirements 21 2.4 Quyết định Theme trách nhiệm 22 2.4.1 Xác định Theme aspect 23 2.4.2 Trì hoãn một số quyết định 25 2.5 Kế hoạch cho thiết kế 25 2.5.1 Xác định các đối tượng 25 2.5.2 Khung nhìn theme base 26 2.5.3 Khung nhìn theme aspect 26 Chương 3 Thiết kế theme 28 3.1 Thiết kế theme base 28 3.2 Thiết kế Theme crosscutting 29 3.2.1 Tổng quan về thiết kế Theme crosscutting 29 3.2.2 Thay đổi với UML 32 Chương 4 Tổng hợp theme 36 4.1 Pick Theme 36 4.2 Xác định các phần tử thiết kế so khớp 37 7 4.2.1 So khớp tường minh 38 4.2.2 So khớp ngầm định 38 4.2.3 Các nguyên tắc cho so khớp khái niệm chung với relationship tổng hợp 38 4.3 Kiểu tích hợp- Integration 39 4.3.1 Tích hợp merge 39 4.3.2 Tích hợp override 42 4.3.3 Kết hợp các phương pháp tích hợp 43 4.4 Giải quyết xung đột 43 4.4.1 Explicit values 44 4.4.2 Giá trị mặc định 44 4.4.3 Theme Precedence 45 4.5 Chỉ ra binding cho Theme aspect 46 Chương 5 Xâydựnghệthốngđiệnthoại với phương pháp Theme 52 5.1 Tóm tắt về dự án: 52 5.2 Phân tích yêu cầu dự án 52 5.2.1 Xác định các theme ban đầu 54 5.2.2 Làm mịn tập theme 55 5.3 Thiết kế các theme 60 5.3.1 Phân tích UseCase 60 5.3.2 Thiết kế theme 61 5.4 Tổng hợp theme 79 1 Mở đầu Lập trình hướng đối tượng (Object Oriented Programming - OOP) là mô hình phát triển được lựa chọn cho hầu hết các dự án phần mềm. OOP rất hữu hiệu trong việc lập mô hình hành vi chung của các đối tượng, tuy nhiên nó không giải quyết thỏa đáng những hành vi liên quan đến nhiều đối tượng. AOP giải quyết được vấn đề này, và rất có thể sẽ là bước phát triển lớn kế tiếp trong phương pháp lập trình. Vấn đề cốt lõi của AOP là cho phép chúng ta thực hiện các vấn đề riêng biệt một cách linh hoạt và kết hợp chúng lại để tạo nên hệthống sau cùng. AOP bổ sung cho kỹ thuật lập trình hướng đối tượng bằng việc hỗ trợ một dạng mô-đun khác, cho phép kéo thể hiện chung của vấn đề đan nhau vào một khối. Khối này được gọi là ‘aspect’ (khía cạnh), từ chữ ‘aspect’ này chúng ta có tên của phương pháp phát triển phần mềm mới: aspect-oriented programming. Nhờ mã được tách riêng, vấn đề đan nhau trở nên dễ kiểm soát hơn. Các aspect củahệthống có thể thay đổi, thêm hoặc xóa lúc biên dịch và có thể tái sử dụng. Aspect-orientation là một hướng tiếpcận mạnh mẽ cho lập trình hệthống phức tạp. Áp dụng phương pháp aspect vào mô hình và thiết kế hệthống có nhiều ưu điểm so với OOP. CáchtiếpcậnTheme (chủ đề) là một ưu điểm quan trọng trong AOP, cung cấp phương tiện để ứngdụng aspect-orientation. Bài luậncủa em tìmhiểuvề AOP dựa trên tài liệu “Aspect-Oriented Analysis and Design: The Theme Approach “ của tác giả Siobhán Clarke và Elisa Baniassad. Bài luận trình bày về phân tích xâydựng một hệthống bằng phương pháp AOP. Bài luận gồm năm chương: Chương 1: Giới thiệu và trình bày các đặc điểm về AOP. Chương 2: Phân tích yêu cầu hệthống để tìm ra tập theme . Chương 3: Thiết kế riêng biệt các theme sử dụng UML, với một số mở rộng của UML chuẩn. Chương 4: Tổng hợp các thiết kế theme riêng biệt thành một hệthống hoàn chỉnh mạch lạc. Chương 5: Ứngdụng AOP với phương pháp themevàoxâydụng các đặc điểm cơ bản cho hệthốngđiện thoại. 2 Chương 1 Tiếpcận AOP 1.1 Giới thiệu: Vào những ngày đầu của ngành khoa học máy tính, các thảo chương viên lập trình trực tiếp bằng mã máy. Những nhà phát triển phần mềm thời đó đã phải tốn nhiều thời gian suy nghĩ về tập lệnh riêng của từng phần cứng máy tính cụ thể hơn là tập trung để giải quyết các yêu cầu của bài toán đặt ra. Dần dần, người ta chuyển sang các ngôn ngữ lập trình cấp cao hơn, cho phép khái quát hoá ở mức độ nào đó mã máy chạy bên dưới. Rồi kế đến là các ngôn ngữ lập trình có cấu trúc cho phép phân tích bài toán thành các thủ tục thực hiện những tác vụ cần thiết. Phương pháp lập trình này thực hiện theo cáchtiếpcận hướng chức năng chủ yếu dựa vào phân rã các chức năng chính của bài toán thành các chức năng đơn giản hơn và thực hiện làm mịn dần từ trên xuống để tạo ra cấu trúc phân cấp. Chương trình theo hướng tiếpcận này thực chất là một tập các chương trình con (các hàm) mà máy tính cần thực hiện để hoàn thành nhiệm vụ củahệ thống. Trong đó dữ liệu và các hàm là tách rời nhau, các hàm muốn liên kết trao đổi với nhau thì phải thông các biến chung (global). Nếu phải sửa đổi dữ liệu thì sẽ phải sửa đổi mọi nơi mà sử dụng dữ liệu đó, và như vậy sẽ ảnh hưởng tới tất cả mọi người tham gia lập trình. Khi độ phức tạp của các bài toán tăng lên, chúng ta cần có những kỹ thuật tốt hơn là lập trình hướng thủ tục. Lập trình hướng đối tượng OOP đã trở thành sự lựa chọn chính khi phát triển vàxâydựnghệthống phần mềm trong nhiều năm qua, mà thay thế hoàn toàn cho cáchtiếpcận hướng thủ tục. Một trong những ưu điểm lớn nhất của hướng đối tượng là hệthống phần mềm có thể được xem như là việc xâydựng một tuyển tập các lớp riêng biệt. Mỗi một class (lớp) trong tuyển tập các lớp đó chịu trách nhiệm cho một tác vụ nào đó trong hệ thống. Trong ứngdụng hướng đối tượng, các lớp này sẽ hợp tác lại với nhau để hoàn thành mục tiêu chung củaứng dụng. Kỹ thuật OOP thực hiện tốt việc đóng gói các hành vi và chủ thể , miễn là chúng hoàn toàn riêng biệt. Tuy nhiên, các bài toán thực tế thường có những hành vi đan nhau liên quan đến nhiều lớp, không thể được xem như là trách nhiệm riêng của một lớp. Ví dụ như là việc tiến hành locking (khóa) trong các ứngdụng phân tán, xử lí ngoại lệ, hoặc việc ghi log…Tất nhiên code để mà xử lý các phần này có thể được thêm vào mỗi lớp một cách riêng biệt, nhưng điều này sẽ dẫn tới sự vi phạm trách nhiệm chính của mỗi lớp mà ta đã định nghĩa. Theo truyền thống, hầu hết ngôn ngữ 3 lập trình hướng đối tượng như C++ và Java đều không hỗ trợ đóng gói những hành vi đan nhau, dẫn đến mã chương trình có thể nằm lẫn lộn, rải rác và khó quản lý. AOP là kỹ thuật lập trình mới cho phép đóng gói những hành vi có liên quan đến nhiều lớp. Nó tập trung vào các khái niệm cắt ngang hoặc các khía cạnh - phần mã sử dụng chung cho các đối tượng khác nhau. Nhờ mã được tách riêng, vấn đề đan nhau trở nên dễ kiểm soát hơn. AOP tách riêng các đặc điểm mà rải rác, đan xen trong hệthống thành một mô-đun riêng để xử lý, nhưng nó không phải là sự kết hợp của lập trình hướng thủ tục và lập trình hướng đối tượng. AOP có thể xem là một sự bổ sung cho OOP, OOP là cách thức mô-đun hoá các mối quan tâm nói chung và AOP là cách mô-đun hoá các mối quan tâm đặc biệt chạy xuyên suốt và cắt ngang các đơn vị môđun hoá tự nhiên (là các class trong OOP truyền thống). AOP cho phép chúng ta giải quyết các bài toán phức tạp tốt hơn vàhiệu quả hơn. AOP tổng hợp hệthống đi từ các vấn đề đan nhau đến vấn đề chính, còn OOP đi theo hướng ngược lại. Tuy nhiên, OOP và AOP không phủ định nhau mà bổ sung cho nhau. 1.2 Đặc điểm của AOP 1.2.1 Aspect là gì? Concern (mối quan tâm) có thể là bất kì một đoạn code nào mà có liên quan đến mục tiêu, đặc điểm, khái niệm hoặc một loại chức năng củaứng dụng. Aspect là một concern mà các chức năng của nó sẽ được kích hoạt bởi những concern khác, và trong nhiều tình huống khác nhau. Nếu một concern không được tách riêng biệt trong một aspect, chức năng của nó sẽ phải được kích hoạt một cách tường minh trong các đoạn code có liên quan tới những concern khác và do đó sẽ dẫn tới sự rối, lẫn lộn trong hai concern có liên quan tới nhau, và giải rác code trong nhiều nơi củahệ thống. Ví dụ, nếu một hệthống phần mềm cần ghi log tới các method được gọi thực thi (như constructor để tìm vết khi tạo ra đối tượng). Ở đây, việc thêm một method log() là cần thiết và method này cần phải được gọi trong một vị trí cụ thể trong code . Chắc chắn rằng không một ai sẽ lãng phí, lạm dụng sự liên kết thừa kế của những lớp hoàn toàn khác nhau (thực hiện các tác vụ khác nhau, không có cùng điểm tương đồng trong cấu trúc kế thừa) mà chỉ để giới thiệu method log() trong các lớp hệ thống. AOP có thể giúp bạn bằng cách tạo ra một aspect mà cung cấp một method log() tới các lớp mà cần nó ghi lại, và bằng cách gọi method này bất kì đâu mà nó được yêu cầu. Một ví dụ khác mà aspect sẽ được sử dụng là trường hợp xử lí ngoại lệ, aspect có thể định nghĩa [...]... base kích hoạt theme aspect 1.3.3 Áp dụngcáchtiếpcận theme: Có hai quá trình khi bạn áp dụng phương pháp theme: sử dụng Theme/ Doc, giúp phân tích tài liệu yêu cầu về phần mềm, và sử dụng Theme/ UML giúp thiết kế các theme Hình 1-2 sẽ mô tả các hoạt động ở mức tổng quan khi bạn ứng dụng cách tiếpcậntheme Hình 1-2 Các hoạt động tiếpcậnTheme 1.3.3.1 Phân tích yêu cầu với Theme/ Doc Dùng Theme/ Doc để... nên một chức năng củahệthống 1.3 Giới thiệu sơ qua vềTheme Approach Theme (tiếp cận chủ đề) là cách để bạn sử dụng AOP trong quá trình phân tích và thiết kế một dự án phần mềm Chúng ta dùngtheme chủ yếu là để xác định các aspect trong hệ thống, sử dụng các mẫu phân tách Asymmetric hoặc Symmetric 1.3.1 Định nghĩa vềThemeTheme sẽ không được coi như là tương đồng với từ aspect Theme được định nghĩa... aspect, và đâu là theme base” Nếu theme Theme1 có khả năng chịu trách nhiệm cho hành vi mà được kích hoạt trong theme Theme2 thì Theme1 là một aspect của Theme2 Hoạt động này dựa vào khung nhìn crosscutting, để xác định trách nhiệm củatheme Cuối cùng là hoạt động Plan for Design: sẽ xem xét cấu trúc và hành vi củatheme mà sẽ được mô-đun hóa sử dụng Theme/ UML Khung nhìn individual được sử dụng để... với tất cả Cách này sẽ chọn tất cả các động từ, hoặc các từ chỉ hành động được viết trong requirement để tìm tập theme ban đầu Cáchtiếpcận này tiếp kiệm thời gian trong bước đầu đọc qua các requirement và lựa chọn theme Tuy nhiên , với cáchtiếpcận này sẽ có rất nhiều theme tiềm năng vì thế mà quá trình làm mịn theme sẽ xem những theme nào thực sự sẽ tồn tại và phù hợp trong ứng dụng của mình để... Mối quan hệ đó sẽ giúp tìm ra các concern là rối lẫn với các concern khác để xác định các theme aspect -Design: Thiết kế các Theme sử dụng Theme/ UML Sử dụng các theme đã tìm thấy trong Theme/ Doc để xác định các class và method tiềm năng -Composition: chỉ ra cách mà mô hình Theme/ UML sẽ được kết hợp Trong nhiều trường hợp một vài khung nhìn của Theme/ Doc giúp bạn xác định được cách thức các theme có... lý theme Có ba hoạt động chính khi áp dụngcáchtiếpcận theme: analysis (phân tích), design (thiết kế), composition (tổng hợp) -Analysis: Đây là bước đầu tiên trong cáchtiếp cận, cần phải phân tích các requirement để xác định được các theme Bước này bao gồm mapping (ánh xạ) các requiemernt tới các concern củahệthống Theme/ Doc chỉ ra mối quan hệ giữa các hành vi, chính là mối quan hệ giữa các theme. .. phải được quản lý về việc phân phối, đồng bộ hóa, và giao dịch Chức năng chính sẽ chứa đựng cấu trúc và hành vi phù hợp tới các chức năng miền củahệthống Việc phân tách các aspect khỏi chức năng chính củahệthống giống như là việc phân phối các đối tượng trong hệ thống, sự sắp xếp hệthống đồng bộ hóa được giao kết với các method thuộc các đối tượng đó, và bao bọc tập hợp các thao tác vào trong một... tế qua sử dụng, chúng ta có thể dùng hai hoạt động chính ở trên để lên kế hoạch thiết kế các thay đổi củahệthống 1.3.3.2 Thiết kế các theme với Theme/ UML Theme/ UML cho phép thiết kế riêng các mô-đun cho mỗi theme xác định trong requirement Nó là một trong những cơ sở quan trọng của AOSD để: mô-đun hóa theme, chỉ ra mối quan hệ giữa các theme liên quan, và tổng hợp các theme thành một hệthống mạch... vi khác Theme base là những theme mà kích hoạt các theme aspect Các theme base này phải là các theme mà có mối quan hệ chia sẻ khái niệm với những theme khác, trong mối quan hệ chia sẻ khái niệm này sẽ phải lựa chọn ra đâu là theme aspect và đâu là theme base Đôi khi chúng ta nói một theme base là kết quả của sự tổng hợp các các theme khác nhau thành, và nó kích hoạt một aspect 8 Hình 1-1 Theme base... chức năng của các đối tượng cơ bản với các chức năng phân phối, chức năng đồng bộ hóa và các chức năng giao dịch Thoáng nhìn qua, sự trùng lặp trình bày trong cáchtiếpcận symmetric như thể nó làm cho việc giải rác code trở nên tồi tệ và rắc rối hơn Sự trùng lặp được yêu cầu trong cáchtiếpcận hướng symmetric để cung cấp một cách nhìn toàn vẹn vềhệthống từ góc nhìn của concern cụ thể Cách nhìn . CÔNG NGHỆ Trần Lệ Huyền TÌM HIỂU VỀ TIẾP CẬN THEME VÀ ỨNG DỤNG CỦA CÁCH TIẾP CẬN VÀO XÂY DỰNG HỆ THỐNG ĐIỆN THOẠI KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ. CÔNG NGHỆ Trần Lệ Huyền TÌM HIỂU VỀ TIẾP CẬN THEME VÀ ỨNG DỤNG CỦA CÁCH TIẾP CẬN VÀO XÂY DỰNG HỆ THỐNG ĐIỆN THOẠI KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ. vào các mô-đun có khả năng sử dụng lại. Đây là một phương pháp lập trình phát triển dựa trên lập trình hướng đối tượng. Bài luận tìm hiểu về cách xây dựng hệ thống với phương pháp AOP. Và ứng