Các tài liệu thiết kếCác lớp Các thành phần Các lớp trừ tượng Các giao diện Là một phần của Thừa kế Triể n khai Triể n kh ai Mối quan hệ giữa các thành phần khác nhau trong một framework
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CNTT
- -BÀI TẬP LỚN
MÔN HỌC: NHẬP MÔN CÔNG NGHỆ PHẦN MỀM
ĐỀ TÀI: TIÊU CHUẨN XÂY DỰNG FRAMEWORK
Nh p môn Công ngh ph n m mậ ệ ầ ề Page 1
Trang 2Đ i h c Công nghi p Hà N i ạ ọ ệ ộ
MỤC LỤC
Trang 3LỜI NÓI ĐẦU
1 Tổng quan về framework.
1.1 Framework là gì?
Ngày nay, trong quá trình xây dựng một ứng dụng có rất nhiều khung làm việc(framework) đã được xây dựng sẵn nhằm phục vụ cho mục đích chung nhất cũngnhư giúp cho những người lập trình viên phát triển ứng dụng một cách nhanhchóng và hiệu quả Vậy, bản chất framework là gì, và nó có những đặc tính gì ? Theo cộng đồng Wikepedia, framework là một khái niệm trong phát triển phầnmềm dùng để chỉ những “cấu trúc hỗ trợ được định nghĩa”mà trong đó những dự
án phần mềm khác có thể được sắp xếp vào đó và phát triển
Thông thường, một framework bao gồm những chương trình hỗ trợ, các thư việnlập trình và một ngôn ngữ scripting nằm giữa các phần mềm khác để giúp pháttriển và gắn những thành phần khác nhau trong dự án phần mềm lại với nhau.Một framework có 3 đặc tính sau :
1 Một framework xây dựng sẵn các lớp (class) hoặc các thành phần(component), mỗi loại đó sẽ cung cấp một mức trừu tượng (abstraction) chomột vài khái niệm riêng biệt
2 Một framework sẽ định nghĩa ra tập hợp các cách thức để các mức trừutượng đó cùng nhau giải quyết một vấn đề
3 Các thành phần trong một framework phải có tính sử dụng lại được
Trang 4Các tài liệu thiết kế
Các lớp
Các thành phần
Các lớp trừ tượng Các giao diện
Là một phần của
Thừa kế
Triể
n khai
Triể
n kh ai
Mối quan hệ giữa các thành phần khác nhau trong một framework được mô tả như
hình vẽ sau:
Trang 5Các thành phần của một framework được mô tả như sau:
- Các tài liệu thiết kế: Thiết kế của một framework có thể bao gồm các lược đồ lớp,
viết bằng văn bản hoặc là một ý tưởng của nhà phát triển
- Các giao diện :Miêu tả đáp ứng bên ngoài của các lớp Các giao diện có thể được
sử dụng để mô hình các vai trò khác nhau trong hệ thống, ví dụ như các vai trò trong một mẫu thiết kế Một vai trò đại diện cho một nhóm của các phương pháp trong giao diện mà liên quan tới các phương pháp khác
- Các lớ trừ tượng: Một lớp trừu tượng là một sự thực hiện chưa đầy đủ của một
hoặc nhiều giao diện Nó có thể được sử dụng để định nghĩa cách đối xử mà sẽ là chung cho một nhóm các thành phần thực hiện nhóm các giao diện
- Các thành phần: Giống như các lớp, các thành phần có thể được tích hợp với các
lớp khác Nếu bản thân các lớp có một API được định nghĩa đầy đủ thì tập kết quảcủa các lớp sẽ được biểu hiện như là một tổ hợp các thành phần Một thành phần được định nghĩa như sau:” Một thành phần phần mềm là một đơn vị kết cấu với các giao diện được ghi rõ theo hợp đồng và các phụ thuộc ngữ cảnh rõ ràng Một thành phần phần mềm có thể được triển khai không phụ thuộc và được tổ hợp bằng các hãng thứ ba”
- Các lớp: Mức thấp nhất của một framework Các lớp chỉ khác các thành phần là
trong thực tế, các API được công khaci của nó không được đưa ra trong các giao diện của một framework Một các điển hình khác là các lớ được sử dụng bời các thành phần để đại diện cho chức năng, ví dụ một người dùng framework thường không nhìn thấy các lớp này trừ khi họ làm việc với các thành phần
1.2 Cái nhìn sơ qua về frameworks
- Các frameworks có vai trò rất lớn đối với sự phát triển của công nghệ phần mềm Chúng cung cấp các cách giải quyết vấn đề, nâng cao chất lượng sản phẩm phần mềm, đem lại lợi ích to lớn cho các doanh nghiệp
- Sự phát triển các thế hệ mã lập trình, ở một khía cạnh nào đó đồng nghĩa với việc frameworks phát triển
- Một phần mềm được xây dựng dựa trên một framework có thể bao gồm các mẫu thiết kế và các thành phần dựa trên khung xương của framework đó Một định nghĩa về frameworks được phát biểu như sau: “Frameworks
Trang 6không chỉ bao gồm các lớp Thay vào đó, frameworks đi kèm với các chức năng phong phú và mạnh mẽ, mối liên kết giữa các lớp đối tượng cung cấp một cơ sở hạ tầng cho các phát triển.”.
Hình 1 Mối quan hệ giữa ứng dụng và frameworks
Khi quyết định lựa chọn frameworks để phát triển ứng dụng thì lập trình viên bắt buộc phải tuân theo cái khung mà frameworks tạo ra Các thành phần được sử dụng cũng phải được framework cung cấp Các mẫu thiết kế là cố định, lập trình viên chỉ có thể phát triển ứng dụng của mình dựa trên các mẫu đó
1.3 Một số frameworks phổ biến
Dưới đây là danh sách các frameworks rất phổ biến trong giới phát triển phần mềm như sau:
- Microsoft Foundation Classes - MFC
- Java's Abstract Window Tool-kit – AWT
- ACE, an OO framework
- Reusable Objects (ORO) is an open-source framework
- Webridge Private Exchange is a horizontal framework designed for building B2B
applications
- Medical Business Object framework is a vertical framework designed for medical domain.
Cách thức làm việc của một framework
- Framework làm việc bằng cách cung cấp một đặc tả rõ ràng của các tương tác được mong đợi giữa các thành phần Ví dụ, một thành phần có thể trông chờ
Trang 7những gì từ các thành hần khác và cái gì nên được cung cấp tới chúng? Một framework định nghĩa các dịch vụ lựa chọn, và cung cấp một giải thích cho việc định nghĩa thành phần nào là thành phần cung cấp Như thế mootjj thành phần sẽ
có khả năng được mở rộng rất lớn và các thành phần mới có thể tương tác mạnh
mẽ với thành phần đã có
- Các thành phần cộng tác với các chi tiết, khía cạnh cụ thể của các vấn đề được cân nhắc bởi framework Các thành phần ứng dụng có thể vẫn còn chứng minh tính tương thích với các vấn đề khác, như ngữ nghĩa của dữ liệu mà chúng chuyểnqua Các bộ phận phụ thuộc có thể được giới thiệu như là các thành phần của framework Sự thi hành các thành phần này có thể cùng framework xác định một dịch vụ và cung cấp các dịch vụ này cho các thành phần khác
1.4 Phân biệt framework với các khái niệm khác
•Một mẫu thiết kế khác với một framework ở ba điểm Thứ nhất, một mẫu thiết
kế là trừu tượng hơn một framework, bởi vì một framework được bao gồm cả
mã, trong khi đó chỉ có các ví dụ của các mẫu thiết kế mới được mã hóa Các mẫu thiết kế thậm chí mô tả mục đích, việc cân bằng các yếu tố khác để đạt được sự kết hợp tốt nhất và các kết quả của một thiết kế Điều này không là
một trường hợp cho các framework Thứ hai, các mẫu thiết kế là những kiến
trúc nhỏ hơn so với các framework Do vậy, một framework có thể chứa một sốcác mẫu thiết kế, nhưng điều ngược lại là không thể Do vậy, các mẫu thiết kế
không có ảnh hưởng lớn tới kiến trúc của ứng dụng Cuối cùng, các framework
được chuyên môn hóa hơn so với các mẫu thiết kế Các framework luôn luôn liên quan đến một miền ứng dụng cụ thể, trong khi đó các mẫu thiết kế là chung và có thể được ứng dụng trong bất kỳ miền ứng dụng nào
•Các ngôn ngữ mẫu khác với framework theo cách mà một ngôn ngữ mẫu miêu tả: làm như thế nào để tạo ra một thiết kế Trong khi đó, một framework hướng đối tượng là một thiết kế Các ngôn ngữ mẫu bổ sung cho một framework, do chúng có thể hướng dẫn các kỹ sư phần mềm sử dụng framework như thế nào,
và mô tả tại sao nó lại được thiết kế như vậy
Trang 8•Một ứng dụng hướng đối tượng khác với một framework ở chỗ, một ứng dụng
mô tả một chương trình thực hiện phức tạp mà thỏa mãn một yêu cầu cụ thể Framework đạt được các tính năng của một ứng dụng nhưng nó không thể thi hành bởi vì nó không bao gồm các tương tác trong trường hợp ứng dụng cụ thể
•Các framework khác với các thư viện lớp ở chỗ: chúng nhắm tới các miền ứng dụng cụ thể Trong khi đó, các thư viện lớp cung cấp cho người sử dụng các sự thực hiện trước của thuật toán Các thư viện lớp là thụ động, người sử dụng gọi các phương pháp trong thư viện lớp để thực hiện một số hoạt động Trong khi
đó các framework định nghĩa khung cho một ứng dụng thực tế và điều khiển luồng điều khiển trong ứng dụng Các framework có thể khác so với thư viện lớp, nhưng chúng có thể sử dụng các thư viện lớp đã có sẵn để thực hiện các thuật toán chung và các cấu trúc dữ liệu
•Các thành phần phần mềm ban đầu đã được dự định là các thành phần chức năng riêng lẻ mà có thể được đầu tư từ nhà cung cấp và tích hợp vào trong các ứng dụng Các framework dường như là những thành phần mà có thể được đầu
tư từ nhà cung cấp và nhiều hơn một framework có thể được sử dụng trong mộtứng dụng Tuy nhiên, một điểm khác dễ nhận thấy giữa chúng là các
framework cung cấp một bộ rộng hơn các dịch vụ so với các thành phần phần mềm Chúng có khả năng tùy biến nhiều hơn, có các giao diện phức tạp hơn và điều quan trọng hơn là chúng thực sự định nghĩa cho một họ ứng dụng hoặc một diện rộng của các ứng dụng Do vậy, các framework là khó học hơn đối với các nhà phát triển, nhưng một khi đã hiểu được hết framework thì sẽ có được sự linh động cao hơn và với một framework được thiết kế tốt thì có thể giảm được các nỗ lực cần bỏ ra để xây dựng một ứng dụng đã được tùy biến rõ rệt hơn
•Trong khi các framework và các thành phần là các kỹ thuật khác nhau, chúng nên được xem và được sử dụng như các kỹ thuật cộng tác với nhau Với các framework có thể sử dụng các thành phần và các ứng dụng được phát triển sử dụng các framework thậm chí có thể tiện dụng hơn các thành phần Ví dụ, một
Trang 9ứng dụng Visual C++ được tạo với MFC framework, thậm chí có thể sử dụng các thành phần ActiveX trong giao diện của nó giống như việc trao đổi với các thành phần ActiveX được đóng gói trong MFC framework Một ví dụ khác cho
sự phụ thuộc lẫn nhau giữa các framework và thành phần là việc sử dụng các framework để tạo các thành phần mới, ví dụ, framework Active Template Library (ATL) của Microsoft được sử dụng rộng rãi trong việc tạo các thành phần ActiveX
1.5 Bản chất của framework
Một framework hướng đối tượng có 4 đặc điểm chính sau:
- Khả năng tích hợp (modul hóa)
- Khả năng sử dụng lại
- Khả năng kế thừa (mở rộng)
- Triển khai nhanh(sự đổi chiều)
Khả năng tích hợp: Các framework tăng cường khả năng modun hóa bằng cách đóng gói
các chi tiết thực hiện không chắc chắn đằng sau các giao diện chắc chắn Khả năng này giúp cho việc tăng cường chất lượng của phần mềm bằng cách cục bộ hóa các tác động của những thay đổi về kiến trúc và sự thực hiện Sự cục bộ hóa này giảm các nỗ lực đượcyêu cầu để hiểu và duy trì phần mềm hiện có
Khả năng sử dụng lại: Các giao diện chắc chắn được cung cấp bời các framework còn
tăng khả năng sử dụng lại bằng cách định nghĩa các thành phần chung mà có thể được ápdụng để tạo ra các ứng dụng mới Khả năng sử dụng lại của framework thúc đẩy kiến thức của miền ứng dụng và ưu tiên nỗ lực của các nhà phát triển kinh nghiệm để tránh việc tạo và làm hợp lệ lại các giải pháp chung cho các yêu cầu của ứng dụng lặp lại và các thách thức trong thiết kế phần mềm Việc sử dụng lại các thành phần thiết kế có thể
là một sự cải tiến đáng kể trong sản xuất chương trình, cũng như tốt cho việc nâng cao chất lượng, tính hiệu quả, độ tin cậy và tính sẵn sàng của phần mềm
Khả năng kế thừa: Một framework tăng cường khả năng mở rộng bằng cách cung cấp
các điểm nóng tường minh mà cho phép các ứng dụng mở rộng các giao diện chắc chắn
và cách ứng xử của vùng ứng dụng với các sự thay đổi được yêu cầu bởi các trường hợp của ứng dụng trong một số ngữ cảnh cụ thể Khả năng mở rộng của framework là cần
Trang 10thiết để đảm bảo các sự điều chỉnh có tính thời gian của các dịch vụ và tính năng ứng dụng mới
Triển khai nhanh (sự đổi chiều): Là một đặc điểm của kiến trúc thời gian chạy của môt
framework, thường được gọi là “Nguyên tắc Hollywood” – Đừng gọi cho chúng tôi, chúng tôi sẽ gọi cho bạn Kiến trúc này cho phép ứng dụng hợp với các quy tắc tiêu chuẩn bằng cách điều chỉnh từng bước xử lý, bằng các đối tượng quản lý sựu kiện mà được viện dẫn thông qua cơ chế gửi kích hoạt lại của framework Khi các sự kiện xảy ra, framework gửi lại kích hoạt bằng cách viện dẫn phương pháp móc nối trên dụng cụ thể trên các sự kiện Đổi chiều điều khiển cho phép framework định nghĩa một tập các phương pháp ứng dung cụ thể để đáp ứng với các sự kiện ở bên ngoài
- General purpose framework: Như Symfony, Zend, SolarPHP, Cake, Fuse
Nó không có một ứng dụng chủ Chỉ là tư duy thiết kế, quản lý chu kì sống
và cấu trúc ứng dụng ở mức file systetem hay naming convention và tất nhiên là số thư viện hỗ trợ phát triển ứng dụng là phong phú
Phân loại ở miền vấn đề của ứng dụng thì
- Web framework: CakePHP, Fuse, SolarPHP (Zend lớn hơn nên khó mà xếp vào dạng chỉ web vì nó còn các gọi I/O, webservice và ORM), Grails, RoR
- Full-fledged framework: NET, Java (vừa là ngôn ngữ, đặc tả, framework
và platform), Zend (somewhat)
Trang 11Phân loại ở mức cách thức sử dụng
- Glue framework như Zend Gói liên quan trực tiếp đến web là MVC tách rời khỏi các gói khác Các gói khác thì không can thiệp vào chu kì sống của ứng dụng nên có thể gọi Zend ra như là một thư viện hoặc như là một framework nếu dùng MVC
- Application framework như Cake, Akelos nơi có sự liên kết chặt giữa các lớp
1.7 Các tiêu chí đánh giá framework
Không có bất kỳ tài liệu nào đề cập đến tiêu chuẩn để có thể xây dựng một framework Yếu tố quyết định một framework có tồn tại được hay không chính là chất lượng của framework đó Một framework được đánh giá tốt và có thể sử dụng phải đáp ứng được
10 tiêu chứ sau đây:
1 Tính phổ biến và cộng đồng:
Một framework phải đảm được tính phổ biến của nó Một framework mà chỉ có thể sử dụng trong một số trường hợp không tổng quát thì không được đánh giá cao Hơn nữa, một framework được nhiều người sử dụng thì rất dễ để phát triển và hoàn thiện chính nó.
5 Kỹ thuật:
Framework được coi là xương sống cho ứng dụng nhưng vẫn phải tuân theo các quy tắc thiết kế chung.
6 Bảo mật:
Bất kỳ ứng dụng nào cũng có khả năng bị tấn công Để giảm thiếu rủi ro, một framework
có các chức năng đảm bảo an ninh sẽ được ưu tiên.
7 Tài liệu:
Việc đánh giá tính chất, khối lượng và chất lượng tài liệu hiện có về một framework là tuyệt đối cần thiết: một công cụ tài liệu tốt là cả hai dễ dàng hơn để sử dụng và nâng cấp.
Trang 128 Giấy phép:
Các giấy phép rất quan trọng, đơn giản chỉ vì chúng có thể có một tác động đáng kể các ứng dụng của bạn Ví dụ, một ứng dụng được phát triển dựa trên framework sử dụng giấy phép GPL thì nhất thiết sẽ phải phụ thuộc vào GPL Mặt khác, đây không phải là trường hợp cho một framework MIT cấp phép.
9 Nguồn lực sẵn có trên thị trường:
Có lẽ bạn sẽ muốn có một đội ngũ kỹ thuật vây quanh bạn trong giai đoạn phát triển trong dài hạn, cho cả hai việc là duy trì và nâng cấp Nói cách khác, hãy chắc chắn rằng các kỹ năng cần thiết cho các công cụ mà bạn đang sử dụng có sẵn trên thị trường mở.
10 Kiểm thử thực tế:
Đây là chìa khóa quyết định Một framework tốt phải nhận được sự đánh giá cao từ những người từng sử dụng.
1.8 Tiêu chuẩn thiết kế kiến trúc framework
Tiêu chuẩn quan trọng đầu tiên của framework là IEEE 1471, tiêu chuẩn IEEE cho việc mô tả kiến trúc framework đã được phê duyệt vào năm 2000 Tiêu chuẩn này được áp dụng bởi International Organization for Standardization (ISO) và đã đưa ra các tiêu chuẩn ISO/IEC 42010:2007 và IEEE 1471:2000 Và ngày nay đã đưa ra phiên bản mới nhất là ISO / IEC / IEEE 42010:2011
Trang 13Tiêu chuẩn ISO / IEC / IEEE 42010:2011 thiết lập ngôn ngữ chung cho các khuôn khổ kiến trúc và quy định các yêu cầu về tiêu chuẩn của các khuôn khổ.
Nội dung của tiêu chuẩn ISO/IEC/IEEE42010:2011
1 Kiến trúc mô tả
Một framework phù hợp với tiêu chuẩn này sẽ bao gồm:
• Nhận dạng và tổng quan về thông tin của các kiến trúc được thể hiện
• Xác định các vấn đề liên quan và những yếu tố ảnh hưởng
• Định nghĩa cho mỗi kiến trúc framework được sử dụng để mô tả kiến trúc và tạo các sơ đồ của các yếu tố liên quan tới vấn đề
• Quy tắc từ ngữ
• Kiến trúc lý do
2 Kiến trúc quan điểm
ISO / IEC / IEEE 42.010 một quan điểm kiến trúc dự kiến:
• Khung hình một hoặc nhiều mối quan tâm được tổ chức bởi các bên liên quan về các hệ thống quan tâm
• Thiết lập các quy ướcQuan điểm quy ước bao gồm các ngôn ngữ mô hình hóa, ký hiệu, các loại mô hình, quy tắc thiết kế
ISO / IEC / IEEE 42.010 đòi hỏi một quan điểm kiến trúc bao gồm:
• Mối quan tâm của các bên liên quan
• Một bộ xác định của các yếu tố ảnh hưởng
• Các loại mô hình được sử dụng
• Ngôn ngữ, ký hiệu, công ước, kỹ thuật mô hình, các hoạt động được sử dụng trên các mô hình
Một quan điểm kiến trúc bao gồm:
• kỹ thuật được sử dụng để tạo ra, giải thích và phân tích
• Quy tắc tương ứng và các quy tắc kiểm tra tính nhất quán
• chẩn đoán, số liệu, mô hình, ví dụ…
Trang 143 Kiến trúc chung.
Một khuôn khổ kiến trúc thiết lập một thực tế phổ biến để sử dụng, tạo ra, phiên dịch, và phân tích mô tả kiến trúc trong một lĩnh vực cụ thể của ứng dụng hoặc cộng đồng ISO / IEC / IEEE 42.010 chính thức hóa một khuôn khổ như là một tập hợp các quan điểm được xác định trước, kết nối với nhau
Một framewok phù hợp điều kiện bao gồm:
• Xác định các yêu tố liên quan có trong phạm vi
• Những ảnh hưởng phát sinh từ các yếu tố liên quan đó
• Sự tích hợp các yếu tố
4 Kiến trúc mô tả ngôn ngữ
ISO / IEC 42.010 yêu cầu một ngôn ngữ mô tả kiến trúc (ADL) phù hợp với các tiêu chuẩn để xác định:
• Những yếu tố liên quan được đóng gói bởi ADL
• Các loại mô hình được thực hiện bở các ADL
• Bất kỳ quy tắc liên kết các loại mô hình
"tier" để chỉ mỗi loại máy có vai trò khác nhau đó
Trang 15- “Tier” thường gắn với phần cứng máy tính (về mặt vật lý) còn "layer" thì gắn với vấn đề cách thức tổ chức bên trong của ứng dụng
- Việc phân chia tier là “trong suốt” (transparent) đối với ứng dụng về mặt luận lý (logical) Điều này có nghĩa là khi ta phát triển một ứng dụng, chúng
ta không bận tâm đến các thành phần (component) sẽ triển khai (deploy) ra sao mà chỉ chú ý là chúng ta sẽ tổ chức ứng dụng thành những layer như thếnào
-Persistence layer
Một ứng dụng có thể chia làm 3 phần như sau:
- phần giao diện người dùng (UI layer)
- phần xử lý nghiệp vụ (business layer)
- phần chứa dữ liệu (data layer)
Cụ thể, business layer sẽ có thể chia nhỏ thành 2 layer con là:
- business logic layer (chỉ quan tâm đến ý nghĩa của các nghiệp vụ, các tính toán mang nhằm thoả mãn yêu cầu của người dùng)
- persitence layer chịu trách nhiệm giao tiếp với data layer (thường là một hệ quản trị cơ sở dữ liệu quan hệ - Relational DBMS)
Persistence layer sẽ đảm nhiệm các nhiệm vụ mở kết nối, truy xuất
và lưu trữ dữ liệu vào các Relational DBMS
2.1.2 Hibernate
Hibernate là một framework được một sinh viên nghĩ ra để đơn giản hóa , tự động hóa quá trình kết nối và thao tác trên CSDL ,dựa vào những cấu trúc định nghĩa bằng file xml để thực hiện việc tạo CSDL, bảng, các ràng buộc trên bảng, các quan hệ tham chiếu Có nghĩa là việc kết nối tới csdl khi dùng hibernate giúp người lập trình
ít quan tâm hơn tới việc thao tác trên dữ liệu mà quan tâm tới những ràng buộc dữ liệu