Tải bản đầy đủ (.docx) (31 trang)

tiêu chuẩn xây dựng framework

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (350.3 KB, 31 trang )

Đại học Công nghiệp Hà Nội

BỘ 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

Hà Nội - 2016

Page 1


Đại học Công nghiệp Hà Nội
MỤC LỤC

Nhập môn Công nghệ phần mềm

Page 2


Đại học Công nghiệp Hà Nội
LỜ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ũng
như giúp cho những người lập trình viên phát triển ứng dụng một cách nhanh
chó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ần
mề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ện
lậ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át
triể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) cho
mộ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ừu

tượ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.

Nhập môn Công nghệ phần mềm

Page 3



Phản ánh

Đại học Công nghiệp Hà Nội

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:
k
ển
Tri
ha
i

ai
kh
ển
Tri

Th ừ
a kế

Các tài liệu thiết kế

Các giao diện

Các lớp trừ t

Các thành phần
phần
Là một


Các lớp

Nhập môn Công nghệ phần mềm

Page 4

của


Đại học Công nghiệp Hà Nội
Cá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
Nhập môn Công nghệ phần mềm

Page 5


Đại học Công nghiệp Hà Nội
khô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ờ

Nhập môn Công nghệ phần mềm

Page 6


Đại học Công nghiệp Hà Nội
nhữ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ển
qua. 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.
Nhập môn Công nghệ phần mềm

Page 7


Đại học Công nghiệp Hà Nội
• 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
Nhập môn Công nghệ phần mềm

Page 8


Đại học Công nghiệp Hà Nội
ứ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 được
yê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 áp
dụ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
Nhập môn Công nghệ phần mềm


Page 9


Đại học Công nghiệp Hà Nội
thiế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

1.6 Phân loại.
Có nhiều cách phân loại framework khác nhau. Cụ thể :

Về mặt mục đích sử dụng thì có thể phân loại
-

Application-specific framework kiểu như mô hình component và plugin của
Joomla, mô hình module và template overriden của Drupal. Chúng đều tạo
là một mô hình phát triển với một số cấp độ hỗ trợ dùng lại code ở mức thư

-

viện của ứng dụng chủ.
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)

Nhập môn Công nghệ phần mềm

Page 10


Đại học Công nghiệp Hà Nội
Phâ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ó.
2. Ngắn gọn và dễ hiểu:
Đây là một tiêu chí cơ bản để đảm bảo đáp ứng được nhu cầu của người sử dụng cũng
như nhà phát triển. Một framework ngắn gọn, dễ hiểu mới được coi là một framework tốt
và được đông đảo người dùng chấp nhận.
3. TÍnh bền vững:
Framework phải phát triển được và theo kip thời đại, nó giúp đơn giản hóa bảo trì và
nâng cấp.
4. Hỗ trợ:
Dễ dàng tìm kiếm câu trả lời từ câu hỏi của người sử dụng. Điều này rất cơ bản để đáp
ứng nhu cầu của người sử dụng. Xác định sự hỗ trợ đó : từ nhà xuất bản. Từ một cộng
đồng (danh sách gửi thư, IRC, ...)? Từ Công ty Dịch vụ (phát triển, hỗ trợ, đào tạo)?
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.

Nhập môn Công nghệ phần mềm

Page 11


Đại học Công nghiệp Hà Nội
8. 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.


Nhập môn Công nghệ phần mềm

Page 12


Đại học Công nghiệp Hà Nội
Tiê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 ước


Quan đ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ụ…

Nhập môn Công nghệ phần mềm

Page 13


Đại học Công nghiệp Hà Nội
3. 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.

2. Một số framework

2.1 Framework Hibernate.
2.1.1 Persistence Layer
- “Tier” và “Layer”
-

Kiến trúc ứng dụng dụng phần mềm có nhiều loại. Có loại chỉ chạy trên một
máy là đủ. Có chương trình muốn chạy được phải kết nối sang một máy
khác (client-server). Một máy đóng vai trò như là người yêu cầu (client) và
máy khác đóng vai trò kẻ phục vụ (server). Người ta sử dụng thuật ngữ
"tier" để chỉ mỗi loại máy có vai trò khác nhau đó


Nhập môn Công nghệ phần mềm

Page 14


Đại học Công nghiệp Hà Nội
-

“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
Nhập môn Công nghệ phần mềm

Page 15


Đại học Công nghiệp Hà Nội
nhiều hơn, thông qua các chú giải được định nghĩa, làm cho việc thao tác CSDL
hướng đối tượng hoàn toàn
Hibernate được cấp giấy phép theo LGPL (Lesser GNU Public License). Theo đó, có
thể sử dụng rộng rãi trong các dự án thương mại hoặc các dự án mã nguồn mở.
Đặc điểm :
-


Hibernate: là một dịch vụ lưu trữ và truy vấn dữ liệu quan hệ mạnh mẽ và

-

nhanh.
Hibernate là một trong những ORM Framework (Object Relational Mapping
framewrok là một cơ chế cho phép người lập trình thao tác với database một
cách hoàn toàn tự nhiên thông qua các đối tượng. Lập trình viên hoàn toàn

-

không quan tâm đến loại database sử dụng, SQL, …)
Hibernate framework là một framework cho persistence layer nhờ có
Hibernate framework nên khi phát triển một ứng dụng ta chỉ cần chú tâm vào

-

những layer khác mà không phải bận tâm nhiều về persistence layer nữa.
Hibernate giúp phát triển các class dùng để lưu trữ dữ liệu theo cách thức
hướng đối tượng: association, inheritance, polymorphism, composition và

-

collections.
Hibernate cho phép thực hiện các câu truy vấn dữ liệu bằng cách sử dụng ngôn
ngữ SQL mở rộng của Hibernate (HQL) hoặc ngôn ngữ SQL nguyên thuỷ

-

cũng như là sử dụng các API.

Hibernate đảm bảo cho người phát triền sử dụng cơ sở dữ liệu luôn chính xác

2.1.3 Các tính năng của Hibernate.
-

Hibernate 3.0 cung cấp ba đầy đủ tính năng tiện truy vấn: Hibernate Query

-

Language, Hibernate Criteria Query API và các truy vấn tự nhiên.
Bộ lọc để làm việc với dữ liệu tạm thời ,vùng dữ liệu hoặc các dữ liệu được

-

phân quyền
Nâng cao khả năng truy vấn với API: với sự hỗ trợ đầy đủ cho các phép chiếu

-

,phép kết hợp và phép chọn.
Kiểm soát được thời gian chạy: thông qua JMX hoặc Java API, bao gồm cả bộ
đệm trình duyệt ở mức thứ cấp.

Nhập môn Công nghệ phần mềm

Page 16


Đại học Công nghiệp Hà Nội
-


Hỗ trợ IDE Eclipse, bao gồm một bộ Eclipse plug-in để làm việc với Hibernate
3.0, bao gồm biên tập liên kết, tương tác với mẫu truy vấn, công cụ nhận lại

-

cấu trúc cơ sở dữ liệu.
Hibernate là miễn phí theo LGPL: Hibernate có thể được dùng để phát triển

-

phân phối các ứng dụng miễn phí.
Hibernate có thể mở rộng: Hibernate mang lại hiệu năng cao và kiến trúc 2 lớp

-

của nó có thể được sử dụng trong môi trường tập trung.
Giảm thời gian phát triển ứng dụng: Hibernate làm giảm thời gian phát triển
các ứng dụng vì nó hỗ trợ thừa kế, đa hình, thành phần và các framework trong

-

java.
Hibernate XML cho phép liên kết dữ liệu được biểu diễn như XML và POJOs
thay thế cho nhau.

Nhập môn Công nghệ phần mềm

Page 17



Đại học Công nghiệp Hà Nội

2.1.4 Kiến trúc Hibernate

Kiến trúc Hibernate
Ứng dụng
Đối tượng Persistence

Hibernate
Các thuộc tính của Hibernate

XML Mapping

Cơ sở dữ liệu

Sơ đồ trên cho thấy rằng Hibernate là sử dụng cơ sở dữ liệu và file cấu hình để cung
cấp các dịch vụ lâu dài cho ứng dụng.

Nhập môn Công nghệ phần mềm

Page 18


Đại học Công nghiệp Hà Nội
Hibernate tạo ra các đối tượng liên tục đồng bộ hóa dữ liệu giữa các ứng dụng và cơ
sở dữ liệu.

Để sử dụng Hibernate, sự cần thiết phải tạo ra các lớp Java biểu diễn cho bảng tương
ứng trong cơ sở dữ liệu và sau đó ánh xạ các thuộc tính của lớp với các cột của bảng

trong cơ sở dữ liệu. Sau đó, Hibernate có thể được sử dụng để thực hiện các thao tác
trên cơ sở dữ liệu như chèn, chọn, cập nhật và xóa các bản ghi trong bảng. Hibernate
tự động tạo ra các truy vấn để thực hiện các thao tác này.
Kiến trúc Hibernate có ba thành phần chính:
-

Quản lý kết nối: Hibernate cung cấp dịch vụ quản lý kết nối cơ sở dữ liệu hiệu
quả. Kết nối cơ sở dữ liệu là phần tốn kém tài nguyên và hiệu năng nhất trong
việc tương tác với cơ sở dữ liệu vì nó đòi hỏi nhiều tài nguyên phải mở và đóng

-

kết nối cơ sở dữ liệu.
Quản lý giao dịch: Quản lý dịch vụ giao dịch cung cấp khả năng người sử dụng
để thực hiện nhiều hơn một câu lệnh tại một thời điểm.

Nhập môn Công nghệ phần mềm

Page 19


Đại học Công nghiệp Hà Nội
-

Đối tượng bản đồ quan hệ: Đối tượng bản đồ quan hệ là kỹ thuật lập ánh xạ
biểu diễn dữ liệu từ một mô hình đối tượng cho đến một mô hình dữ liệu quan
hệ. Đối tượng này được sử dụng đê thực hiện các thao tác như truy vấn ,thêm
mới, cập nhật và xóa các bản ghi dạng bảng bên dưới.Hibernate là rất tốt công
cụ như xa như là đối tượng bản đồ quan hệ là mối quan tâm, nhưng về mặt
quản lý kết nối và quản lý giao dịch, đó là thiếu hiệu năng và khả năng. Vì vậy,

thường Hibernate được sử dụng để quản lý kết nối khác và các công cụ quản lý
giao dịch. Ví dụ apache DBCP được sử dụng để kết nối tổng hợp với
Hibernate.

Hibernate cung cấp rất nhiều tính linh hoạt trong sử dụng. Nó được gọi là kiến trúc
"Lite" khi chúng ta chỉ sử dụng các thành phần đối tượng bản đồ quan hệ. Trong
khi kiến trúc "Full Cream" tất cả trong ba thành phần đối tượng quan hệ lập bản
đồ, quản lý kết nối và Quản lý giao dịch được sử dụng.
2.1.5 Các thành phần của ứng dụng Hibernate.
Các ORM framework mang đến cho các developer những tư duy trong khái niệm
về quan hệ trong khi vẫn làm việc với các lớp. Có nhiều framework mang mục
đích này. Những gì làm cho Hibernate khác với những framework khác chính là
tính đơn giản và khả chuyển của nó. Để tạo nên ứng dụng Hibernate, có ba điều
cần phải có, đó là:
2.1.6 Persistence Class
Persistence class là một Plain Old Java Object hay POJO model. Một POJO là
tương tự như một JavaBean, có những getter và setter để truy câp các thuộc
tính của nó là những instance variable (biến thực thể). Persistence class có
những đặc điểm dưới đây:
 Nó là thay thế hướng đối tượng cho bảng ở cơ sở dữ liệu
 Các thuộc tính của bảng trở thành những instance variable của

persistence class.
Nhập môn Công nghệ phần mềm

Page 20


Đại học Công nghiệp Hà Nội
 Kiểu dữ liệu của các instance variable là domain của các thuộc tính.


Đối tượng của persistence class thay hế cho hàng của bảng.
2.1.6 Mapping file
Mapping file là một file XML chứa ánh xạ chi tiết giữa persistence class và
bảng nó thay thế. Các thành phần bắt buộc của file XML này là:
-

Hibernate-mapping: Đây là thành phần gốc bao tất cả các thành phần

-

khác
Class: được sử dụng để ánh xạ tên bản thành persistence class. Tên
thuộc tính được sử dụng để xác định tên lớp, và thuộc tính bản được sử
dụng để xác định bảng mà lớp thay thế. Ví dụ để ánh xạ một bản mang
tên ORDERS thành một persistence class với tên đầy đủ là
com.someorg.persist.Order sẽ như dưới đây:
<class name=”com.someorg.persist.Order” table=”ORDERS”>…

-

</class>
ID: Thành phần này sử dụng để ánh xạ khóa chíh của table thành một
instance variable của class. Thành phần cột con của id có thể sử dụng để
ánh xạ thành biến tương ứng. Giá trị của khóa chính có thể tự động tạo
ra được công bố ở đây. Thành phần generator có thể được sử dụng để
nói cho Hibernate một lớp sẽ được sử dụng ở đâu để tự động tạo id, hoặc
id được gán bởi ứng dụng.
<id name="id" type="string" unsaved-value="null">
<column name="id" sql-type="char(32)" not-null="true"/>

<generator class="assigned"/>
</id>
Ví dụ trên nói cho Hibernate rằng, tên của khóa chính là id mà nó đã
được ánh xạ thành instance variable "id". Kiểu dữ liệu của nó là "string"

Nhập môn Công nghệ phần mềm

Page 21


Đại học Công nghiệp Hà Nội
được ánh xạ cho cột "id" có kiểu "char(32)" thay thế bởi thuộc tính sqltype. Thuộc ính lớp của generator chứa giá trị "assigned" nghĩa là ứng
-

dụng bản thân nó sẽ cung cấp giá trị cho khóa chính.
Property: thành phần này, thuộc về các cột thành phần con của nó, ánh
xạ những thuộc tính khác (hoặc các côt thành những instance variable
của persistence class. Thuộc tính name của property chứa tên của biến
như một giá trị. Thuộc tính name của thành phần column chứa tên của
cột mà instance variable được ánh xạ. Các thuộc tính length và sql-type
trỏ đến độ dài và kiểu dữ liệu của cột

<column name="name" sql-type="char(255)" not-null="true"/>
</property>

2.1.7 Hibernate Configuration file
File này có thể được gọi trỏ đến ứng dụng sử dụng Hibernate. Nguyên nhân là
nó chứa cấu hình điều khiển giao tiếp với database ở phía dưới. Ở đây, tất cả
các file mapping được sử dụn bởi ứng dụng được công bố. Địnn dạng thành
phần của hibernate-configuration là thành phần gốc. Hầu hết các thành phần

thông dụng sử dụng trong file XML là:
-

Property: Thuộc tính name của thành phần property có thể được sử dụng
để cấu hình những tham số khác nhau. Trong công nghệ Hibernate,
những tham số này được biết như là những tham số property. Kiểu
database server (MySQL, Oracle...), dialect class, URL của database,
username/password... là những tham số property khác nhau. Để đặt
chúng vào trong mã:
<session-factory>
<!-- Database connection settings -->

Nhập môn Công nghệ phần mềm

Page 22


Đại học Công nghiệp Hà Nội
name="connection.driver_class">org.hsqldb.jdbcDriver</property>
name="connection.url">jdbc:hsqldb:data/tutorial</property>
sa</property>
:
:
</session-factory>
-

Mapping: Nó là thành phần kết nối tất cả các file mapping,, cũng gọi là
các file hbm, được sử dụng bởi ứng dụng đã công bố. Thuộc tính

resource được cho giá trị của đường dẫn file hbm.
<mapping resource="Event.hbm.xml"/>

2.1.8 Đánh giá Hibernate framework
Ưu điểm của Hibernate
-

Ứng dụng cơ sở dữ liệu độc lập : Hibernate tốt hơn và đơn giản hơn
JDBC: Bạn có thể sử dụng Hibernate tạo ra các SQL trên bay và sau đó tự động
thực thi các câu lệnh SQL cần thiết. Điều này giúp tiết kiệm rất nhiều thời gian
phát triển và gỡ lỗi của nhà phát triển. Sử dụng JDBC để diễn đạt, thiết lập các
thông số, thực hiện truy vấn và xử lý kết quả bằng tay là công việc rất vất

-

vả. Hibernate giải quyết vấn đề đó nhanh chóng và hiệu quả hơn
Hiệu suất cao, lập bản đổ định nghĩa: Hibernate lập bản đồ của đối tượng
tên miền với cơ sở dữ liệu quan hệ. Nên có thể tập trung vào business logic

-

hơn là quản lý các dữ liệu trong cơ sở dữ liệu.
Lớp kiến trúc: Hibernate tuân theo mô hính MVC nên có thể sử dụng các

-

thành phần theo nhu cầu của từng ứng dụng
Nhà cung cấp JPA: Hibernate có thể làm việc như nhà cung cấp dịch vụ JPA

-


trong các ứng dụng dựa trên JPA.
Tiêu chuẩn ORM: Hibernate là giải pháp ORM tiêu chuẩn và nó cũng hỗ trợ
JPA.

Nhập môn Công nghệ phần mềm

Page 23


Đại học Công nghiệp Hà Nội
-

Cơ sở dữ liệu độc lập: Hibernate là cơ sở dữ liệu độc lập và bạn có thể sử

-

dụng bất kỳ cơ sở dữ liệu của sự lựa chọn của bạn.
Bộ nhớ đệm Framework: Có rất nhiều bộ nhớ đệm khuôn khổ làm việc với
Hibernate. Bạn có thể sử dụng bất kỳ một trong ứng dụng của bạn để cải thiện
hiệu suất của các ứng dụng của bạn.

Nhược điểm của Hibernate
-

Rất nhiều các API để tìm hiểu: Rất nhiều nỗ lực cần thiết để tìm hiểu

-

Hibernate. Vì vậy, không dễ dàng để tìm hiểu chế độ Hibernate

Debugging: Đôi khi gỡ lỗi và hiệu chỉnh trở nên khó khăn.
Chậm hơn so với JDBC: Hibernate l chậm hơn so với JDBC đơn thuần ,nó

-

tạo ra rất nhiều các câu lệnh SQL trong thời gian chạy.
Không thích hợp để xử lý hàng loạt: khuyến khích sử dụng JDBC đơn thuần
cho hoàng loạt các quá trình

Nhập môn Công nghệ phần mềm

Page 24


Đại học Công nghiệp Hà Nội

2.2 PHP framework
Với PHP framework

php framework
Khi nhắc tới php thì không thể ko nhắc tới PHP framework là một mảnh ghép không
thể thiếu để giúp hoàn thiện PHP, nó giúp PHP trở nên trơn tru hơn bằng cách cung
cấp 1 cấu trúc cơ bản để xây dựng ứng dụng
PHP Framework hiện nay khá đầy đủ và đáp ứng hầu hết các điều kiện cần và đủ cho
việc xây dựng một dự án. Nói tới Framework thì nổi bật nhất vẫn là: Zend
Framework, CodeiGniter Framework, CakePHP Framework,….
Các framework trên phổ biến vì tính năng mà chúng mang lại được lập trình viên ưa
thích, thỏa mãn các yêu cầu của họ. Dưới đây là 10 lý do chọn PHP framework
 Cách tổ chức file và code
Nhập môn Công nghệ phần mềm


Page 25


×