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
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
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êngbiệ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
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ộtmẫ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áclớ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 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.”
Trang 6Hì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 đó
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
Trang 7Framework 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ữ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ĩacá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ácdị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
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ươngtá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ụngthự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ư
Trang 8việ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ụnghơn các thành phần Ví dụ, một ứ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ớicá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 Đặc điểm của framework
Một framework hướng đối tượng có 4 đặc điểm chính sau:
Khả năng modun hóa
Khả năng sử dụng lại
Khả năng mở rộng
Sự đổi chiều
Khả năng modun hóa: 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ó
Trang 9Khả 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 ccs 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ể trongsả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 mở rộng: 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 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
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
Trang 10Full-fledged framework: NET, Java (vừa là ngôn ngữ, đặc tả, framework và
platform), Zend (somewhat)
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:
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
Bảo mật:
Trang 11Bấ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.
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àihạ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ở
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
Với PHP framework
Trang 12php 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
Khi setup dùng PHP framework thì nó đã chưa một cấu trúc nhất định, nó giúp ta đi theo một tiêu chuẩn giống nhau và giữ cho mọi thứ được tổ chức theo một cách nhất định Một khi đã quen với mô hình này, ta sẽ không muốn quay trở lại cách viết code ban đầu
Thật không may đối với một số người dùng command line, điều này có thể là một thách thức đối với họ Họ cần làm quen với nhiều tập tin với kích thước nhỏ hơn, nhưng khi bạn sử dụng một trình soạn thảo hay một IDE, nó sẽ là một làn gió cho các
Trang 13ứng dụng của bạn và bạn sẽ tìm thấy những thứ mình cần 1 cách nhanh chóng vì chúng được tổ chức 1 cách rất là khoa học.
Thư viện và các tiện ích
PHP là một ngôn ngữ tuyệt vời để phát triển web và cung cấp vô số các công cụ và thư viện Tuy nhiên nếu bạn đã từng cố gắng xây dựng một trang web với PHP một mình thì bạn sẽ thấy rằng mình viết rất nhiều đoạn mã và thư viện của bên thứ 3 hoặc
là chính mình viết
Hầu hết các PHP Framework hàng đầu chúng đều chứa các thư viện có sẵn và các Helpers, chúng sẽ giúp cho bạn:
Kiểm tra form ( Form Validation)
Lọc dữ liệu đầu ra và đầu vào ( Input/Output Filtering)
Lớp trừu tượng database ( Database Abstraction)
Xử lý Session và Cookie ( Session and Cookie Handling)
Gởi mail, lịch biểu, phân trang v.v
Bên cạnh đó có rấ nhiều plugin được cung cấp bởi cộng đồng mà bạn có thể thêm vào framework của bạn
Mô hình MVC (Pattern MVC
Mô hình View Controller Model ( MVC) nổi tiếng từ năm 1979 trở lại đây, khi một nhà khoa học người Na Uy tên là Trygve Reenskaug lần đầu tiên miêu tả nó Mô hìnhMVC nó hoạt động như một template engine, tuy nhiên khi sử dụng nó một cách vô trách nhiệm, nó dẫn đến mã code xấu và rất khó duy trì
Cách mà mô hình MVC được áp dụng cho tất cả các ứng dụng PHP của bạn như sau:Model: đại diện cho cấu trúc dữ liệu của bạn, thường giao tiếp với cơ sở dữ liệu.View: chứa trang mẫu để hiển thị dữ liệu cho người dùng
Controller: nhiệm vụ chính là điều hướng các yêu cầu của người dùng đến trang web