Dựa trên mong muốn của nhóm khách hàng này là muốn sở hữu một phầnmềm có khả năng giao tiếp trong mạng của Openfire cho máy điện thoại Android,như vậy người dùng vừa có thể di chuyển khỏ
Trang 1LỜI CẢM ƠN
Trước hết, em xin chân thành cảm ơn Trường đại học Công nghệ thôngtin và truyền thông, Khoa công nghệ thông tin, Bộ môn Công nghệ phần mềm
đã tạo điều kiện thuận lợi cho em hoàn thành đồ án tốt nghiệp này
Em xin chân thành cảm ơn cô Ngô Thị Lan đã tận tình hướng dẫn chỉ bảo
em trong suốt thời gian thực hiện đồ án tốt nghiệp
Mặc dù đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phépnhưng chắc chắn sẽ không thể tránh khỏi những thiếu xót Em kính mong nhậnđược sự chỉ bảo từ phía thầy cô và các bạn
Em xin chân thành cảm ơn!
Sinh viên
Lã Thị Hường
Tháng 6/2012
Trang 2LỜI CAM ĐOAN
Em xin cam đoan những kết quả trong đồ án “Xây dựng và phát triển ứngdụng Chat Instant Messages sử dụng giao thức XMPP (Extensible Messagingand Presence Protocol) cho hệ điều hành Android” là sự nghiên cứu của em,không sao chép của ai Nội dung đồ án có tham khảo, sử dụng tài liệu, thông tin
từ một số nguồn khác được trích dẫn trong phần tài liệu tham khảo, và một sốwebsite Nếu có gì giả dối em xin hoàn toàn chịu trách nhiệm
Tác giả đồ án
Lã Thị Hường
Trang 3MỤC LỤC
MỤC LỤC 3
DANH MỤC HÌNH VẼ 5
DANH MỤC BẢNG BIỂU 7
LỜI MỞ ĐẦU 8
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 10
1.1 Tổng quan về phát triển phần mềm 10
1.2 Phát triển phần mềm hướng chức năng 10
1.3 Phát triển phần mềm hướng đối tượng 11
1.4 Lý do lựa chọn phương pháp phát triển phần mềm hướng đối tượng cho đồ án tốt nghiệp 12
1.5 Các giai đoạn của chu trình phát triển phần mềm với mô hình hướng đối tượng 12
1.6 Ngôn ngữ mô hình hóa thống nhất - UML (Unifield Modeling Language) 15
1.7 Quy trình RUP(Rational Unified Process) 16
1.8 Kiến trúc phần mềm MVC 17
1.9 Giới thiệu hệ điều hành Android và lập trình Android 18
1.9.1 Sự phát triển của điện thoại di động 18
1.9.2 Smartphone 19
1.9.3 Hệ điều hành Android 21
2.1.4 Lập trình Android 27
2.2 Extensible Messaging and Presence Protocol (XMPP - Giao thức mở nhắn tin và hiện diện trực tuyến) 39
2.3 Sơ lược về Openfire Server – Một XMPP Server 43
2.4 Hệ quản trị cơ sở dữ liệu MySQL 45
2.5 Máy Spark Client 46
2.6 Smack API 47
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 48
3.1 Bài toán 48
3.2 Phân tích yêu cầu 48
3.2.1 Các UC chính 48
3.2.2 Đặc tả Usecase 48
3.1.3 Biểu đồ UC 51
Trang 43.1.4 Phân tích các thành phần xử lý 52
3.1.5 Mô hình lớp khái niệm 58
3.1.6 Thiết kế các lớp xử lý 59
3.2 Thiết kế dữ liệu 65
3.2.1 Chuẩn hóa dữ liệu 65
3.2.2 Mô hình dữ liệu mức vật lý 65
3.2.3 Thiết kế dữ liệu 65
3.2.4 Mô tả các ràng buộc toàn vẹn 67
3.3 Cài đặt 67
3.4 Kết quả cài đặt 68
KẾT LUẬN 79
KẾT QUẢ ĐẠT ĐƯỢC 79
ƯU ĐIỂM 80
KHUYẾT ĐIỂM 80
HƯỚNG PHÁT TRIỂN 80
TÀI LIỆU THAM KHẢO 81
Trang 5DANH MỤC HÌNH VẼ
Hình 2-0 Biểu đồ tỷ lệ sở hữu Smartphone
Hình 2-1 Biểu tượng của hệ điều hành Android
Hình 2-2 Kiến trúc của HĐH Android
Hình 2-3 Các loại thiết bị sử dụng hệ điều hành AndroidHình 2-4 Thị phần theo phiên bản của Android
Hình 2-5 Thị phần theo phiên bản và thời gian của AndroidHình 2-6 Kiến trúc Android
Hình 2-7 Vòng đời của Activity
Hình 2-8 Giao diện Openfire trên Window7
Hình 2-9 Giao diện Admin Openfire trên Window7
Hình 2-10 Giao diện hệ quản trị cơ sở dữ liệu MySQLHình 2-11 Giao diện máy khách Spark
Hình 3-0 Mô hình dữ liệu quan niệm
Hình 3-2 Mô hình xử lý đăng nhập
Hình 3-3 Mô hình xử lý đăng xuất
Hình 3-4 Mô hình luồng xử lý gửi tin nhắn online
Hình 3-5 Mô hình luồng xử lý gửi tin nhắn offline
Hình 3-6 Mô hình xử lý thêm Friend
Hình 3-7 Mô hình xử lý xóa Friend
Trang 6Hình 3-17 Giao diện màn hình Login
Hình 3-18 Tùy chọn menu
Hình 3-19 Cấu hình kết nối Server
Hình 3-20 Thông báo đã cấu hình server
Hình 3-21 Giao diện màn hình đăng ký
Hình 3-22 Giao diện màn hình khi đang chờ kết nối
Hình 3-23 Giao diện màn hình danh sách bạn bè
Hình 3-24 Giao diện màn hình Chat giữa máy Android và máy
SparkHình 3-25 Giao diện màn hình khi có tin nhắn đến
Hình 3-26 Giao diện màn hình thêm bạn
Hình 3-27 Giao diện màn hình chọn group
Trang 8LỜI MỞ ĐẦU
“Xây dựng và phát triển ứng dụng Chat Instant Messages sử dụng giao thứcXMPP (Extensible Messaging and Presence Protocol – Giao thức mở nhắn tin vàhiện diện trực tuyến) cho hệ điều hành Android.”
Đây là phần mềm nhằm mục đích truyền thông, nhắn tin tức thời sử dụng choMobile Client chạy hệ điều hành Android 2.2, dựa trên việc kết nối với máy chủcũng sử dụng giao thức XMPP (XMPP Server – Hay chính là Jabber Server).XMPP (Extensible Messaging and Presence Protocol – Giao thức mở nhắn tin vàhiện diện trực tuyến), trước đây là Jabber, là giao thức mở dựa trên nền tảng XMLdùng trong nhắn tin nhanh (Instant Messages) và thông tin hiện diện trực tuyến(Presense information) do tổ chức XMPP Standard Foundation (trước đây là JabberSoftware Foundation JSP) quản lý
Xuất phát từ nhu cầu mở rộng truyền thông liên lạc mạnh mẽ diễn ra sau sựbùng nổ của Internet ngày nay, cùng với sự phát triển rầm rộ của các giao thức mởđược cộng đồng công nghệ và rất nhiều các tập đoàn công nghệ lớn trên thế giới sửdụng và phát triển Đồng thời cũng xuất phát từ nhu cầu sử dụng điện thoại di độngAndroid đang phát triển như vũ bão trong thời gian gần đây Đề tài này của emmong muốn sẽ tiếp cận được với công nghệ mới này và xây dựng được một phầnmềm Chat sử dụng giao thức mở XMPP hay chính là một XMPP Client sử dụngcho điện thoại di động dùng hệ điều hành Android Và em mong muốn rằng sau khithực hiện xong đề tài này em sẽ có thể hoàn thiện hơn một số tính năng khác màtrong phạm vi đồ án em chưa thể hoàn thành để phần mềm có thể đi vào thực tếhoạt động
Phần mềm của em xây dựng dựa trên nhu cầu của bộ phận đối tượng kháchhàng là những công ty, cơ quan phòng ban sử dụng Openfire server (Một loại máychủ XMPP - em sẽ trình bày trong Chương 2 của đồ án) trong việc truyền thônggiao tiếp mạng cục bộ intranet Vốn hiện tại, để sử dụng truyền thông giao tiếptrong mạng Openfire, người dùng sẽ phải sử dụng phần mềm là Spark Client, đây làmột phần mềm chỉ sử dụng cho máy destop và laptop, notebook…, không thể chạytrên hệ điều hành Android
Trang 9Dựa trên mong muốn của nhóm khách hàng này là muốn sở hữu một phầnmềm có khả năng giao tiếp trong mạng của Openfire cho máy điện thoại Android,như vậy người dùng vừa có thể di chuyển khỏi bàn làm việc với một chiếc điệnthoại Android mà vẫn truyền tải được các thông điệp trong mạng.
Nhiệm vụ đồ án của em là xây dựng một phần mềm Chat Client cho hệ điềuhành Android sử dụng giao thức XMPP kết nối với một XMPP Server là Openfire,người dùng sau khi đăng ký sẽ được lưu vào cơ sở dữ liệu và sẽ được quản trị bởiAdministrator của Openfire Server Khi đã có tài khoản trên Server thì người dùng
có thể đăng nhập và Chat, nhắn tin với những người dùng khác cùng kết nối vàoServer
Điểm mới và khác biệt của phần mềm này với những phần mềm thương mạiAndroid khác đó là: Khi cùng kết nối vào Openfire server thì người dùng sử dụngphần mềm này có thể Chat với người kết nối vào Openfire server nhưng không sửdụng phần mềm này mà là phần mềm khác (trong đề tài em nghiên cứu là cùng vớiSpark client)
Trang 10CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tổng quan về phát triển phần mềm
Phát triển phần mềm là việc chuyển nhu cầu của người dùng hoặc mục tiêu tiếp thị
thành một sản phẩm phần mềm Phát triển phần mềm đôi khi được hiểu là sự bao gồm cácquá trình của kỹ nghệ phần mềm cộng với sự nghiên cứu và các mục tiêu tiếp thị phầnmềm để phát triển những sản phẩm phần mềm máy tính
Quy trình phát triển phần mềm là một cấu trúc bao gồm tập hợp các thao tác và
các kết quả tương quan sử dụng trong việc phát triển để sản xuất ra một sản phẩm phầnmềm Các thuật ngữ tương tự là vòng đời phần mềm và quy trình phần mềm Đây được coi
là một thành phần tập con của vòng đời phát triển hệ thống Có một số mô hình cho việcxây dựng các quy trình này, mỗi mô hình mô tả các phương thức cũng như các nhiệm vụ
hoặc thao tác cần được thực hiện trong cả quá trình Nhiều người coi mô hình vòng đời là một thuật ngữ phạm vi rộng và quy trình phát triển phần mềm là một thuật ngữ ở mức chi
tiết cụ thể hơn Ví dụ, có rất nhiều quy trình phát triển phần mềm tuân theo mô hình vòngđời xoắn ốc ISO/IEC 12207 là một tiêu chuẩn quốc tế cho các quy trình vòng đời phầnmềm, mục đích là trở thành một tiêu chuẩn định nghĩa tất cả các công việc cần thực hiện đểxây dựng và bảo trì sản phẩm phần mềm
1.2 Phát triển phần mềm hướng chức năng
Đây là lối tiếp cận truyền thống của ngành Công nghệ phần mềm Theo lốitiếp cận này, chúng ta quan tâm chủ yếu tới những thông tin mà hệ thống sẽ giữ gìn.Chúng ta hỏi người dùng xem họ sẽ cần những thông tin nào, rồi chúng ta thiết kếngân hàng dữ liệu để chứa những thông tin đó, cung cấp Forms để nhập thông tin và
in báo cáo để trình bày các thông tin Nói một cách khác, chúng ta tập trung vàothông tin và không mấy để ý đến những gì có thể xảy ra với những hệ thống đó và
Trang 11cách hoạt động (ứng xử) của hệ thống là ra sao Đây là lối tiệm cận xoay quanh dữliệu và đã được áp dụng để tạo nên hàng ngàn hệ thống trong suốt nhiều năm trời Lối tiếp cận xoay quanh dữ liệu là phương pháp tốt cho việc thiết kế ngânhàng dữ liệu và nắm bắt thông tin, nhưng nếu áp dụng cho việc thiết kế ứng dụng lại
có thể khiến phát sinh nhiều khó khăn Một trong những thách thức lớn là yêu cầuđối với các hệ thống thường xuyên thay đổi Một hệ thống xoay quanh dữ liệu cóthể dể dàng xử lý việc thay đổi ngân hàng dữ liệu, nhưng lại khó thực thi nhữngthay đổi trong nguyên tắc nghiệp vụ hay cách hoạt động của hệ thống
Phương pháp hướng đối tượng đã được phát triển để trả lời cho vấn đề đó
Với lối tiếp cận hướng đối tượng, chúng ta tập trung vào cả hai mặt của vấn đề : thông tin và cách hoạt động.
1.3 Phát triển phần mềm hướng đối tượng
Hướng đối tượng là thuật ngữ thông dụng hiện thời của ngành công nghiệp
phần mềm Các công ty đang nhanh chóng tìm cách áp dụng và tích hợp công nghệmới này vào các ứng dụng của họ Thật sự là đa phần các ứng dụng hiện thời đềumang tính hướng đối tượng Nhưng hướng đối tượng có nghĩa là gì?
Lối tiếp cận hướng đối tượng là một lối tư duy về vấn đề theo lối ánh xạ cácthành phần trong bài toán vào các đối tượng ngoài đời thực Với lối tiếp cận này,chúng ta chia ứng dụng thành các thành phần nhỏ, gọi là các đối tượng, chúngtương đối độc lập với nhau Sau đó ta có thể xây dựng ứng dụng bằng cách chắp cácđối tượng đó lại với nhau Hãy nghĩ đến trò chơi xây lâu đài bằng các mẫu gỗ Bướcđầu tiên là tạo hay mua một vài loại mẫu gỗ căn bản, từ đó tạo nên các khối xâydựng căn bản của mình Một khi đã có các khối xây dựng đó, bạn có thể chắp rápchúng lại với nhau để tạo lâu đài Tương tự như vậy một khi đã xây dựng một số đốitượng căn bản trong thế giới máy tính, bạn có thể chắp chúng lại với nhau để tạoứng dụng của mình Và ứng dụng sẽ được sẽ được nhận diện cũng như giải đápxoay quanh các đối tượng đó
Ví dụ: vấn đề rút tiền mặt tại nhà băng Các “mẫu gỗ“ thành phần ở đây sẽ làánh xạ của các đối tượng ngoài đời thực như tài khoản, nhân viên, khách hàng
Trang 121.4 Lý do lựa chọn phương pháp phát triển phần mềm hướng đối tượng cho
Phương pháp hướng đối tượng đã được phát triển để trả lời cho vấn đề đó
Với lối tiếp cận hướng đối tượng, chúng ta tập trung vào cả hai mặt của vấn đề : thông tin và cách hoạt động.
Tính tái sử dụng: bạn có thể tạo các thành phần (đối tượng) một lần và dùngchúng nhiều lần sau đó Giống như việc bạn có thể tái sử dụng các khối xây dựng(hay bản sao của nó ) trong một toà lâu đài, một ngôi nhà ở, một con tàu vũ trụ, bạncũng có thể tái sử dụng các thành phần (đối tượng) căn bản trong các thiết kế hướngđối tượng cũng như code của một hệ thống kế toán, hệ thống kiểm kê, hoặc một hệthống đặt hàng
Vì các đối tượng đã được thử nghiệm kỹ càng trong lần dùng trước đó, nênkhả năng tái sử dụng đối tượng có tác dụng giảm thiểu lỗi và các khó khăn trongviệc bảo trì, giúp tăng tốc độ thiết kế và phát triển phần mềm
Phương pháp hướng đối tượng giúp chúng ta xử lý các vấn đề phức tạp trongphát triển phần mềm và tạo ra các thế hệ phần mềm có khả năng thích ứng và bềnchắc
1.5 Các giai đoạn của chu trình phát triển phần mềm với mô hình hướng đối tượng
Phân tích hướng đối tượng (Object Oriented Analysis - OOA):
Là giai đọan phát triển một mô hình chính xác và súc tích của vấn đề, cóthành phần là các đối tượng và khái niệm đời thực, dễ hiểu đối với người sử dụng Trong giai đoạn OOA, vấn đề được trình bày bằng các thuật ngữ tương ứngvới các đối tượng có thực Thêm vào đó, hệ thống cần phải được định nghĩa sao chongười không chuyên Tin học có thể dễ dàng hiểu được
Trang 13Dựa trên một vấn đề có sẵn, nhà phân tích cần ánh xạ các đối tượng hay thựcthể có thực như khách hàng, ô tô, người bán hàng, … vào thiết kế để tạo ra đượcbản thiết kế gần cận với tình huống thực Mô hình thiết kế sẽ chứa các thực thểtrong một vấn đề có thực và giữ nguyên các mẫu hình về cấu trúc, quan hệ cũngnhư hành vi của chúng Nói một cách khác, sử dụng phương pháp hướng đối tượngchúng ta có thể mô hình hóa các thực thể thuộc một vấn đề có thực mà vẫn giữ đượccấu trúc, quan hệ cũng như hành vi của chúng
Đối với ví dụ một phòng bán ô tô, giai đoạn OOA sẽ nhận biết được các thực thểnhư:
Tương tác và quan hệ giữa các đối tượng trên là:
- Người bán hàng dẫn khách hàng tham quan phòng trưng bày xe
- Khách hàng chọn một chiếc xe
- Khách hàng viết phiếu đặt xe
- Khách hàng trả tiền xe
- Xe ô tô được giao đến cho khách hàng
Đối với ví dụ nhà băng lẻ, giai đoạn OOA sẽ nhận biết được các thực thể như:
- Loại tài khoản: ATM (rút tiền tự động), Savings (tiết kiệm), Current (bìnhthường), Fixed (đầu tư),
- Khách hàng
- Nhân viên
- Phòng máy tính
Tương tác và quan hệ giữa các đối tượng trên:
- Một khách hàng mới mở một tài khoản tiết kiệm
- Chuyển tiền từ tài khoản tiết kiệm sang tài khoản đầu tư
- Chuyển tiền từ tài khoản tiết kiệm sang tài khoản ATM
Trang 14Xin chú ý là ở đây, như đã nói, ta chú ý đến cả hai khía cạnh: thông tin và cách hoạt
động của hệ thống (tức là những gì có thể xảy ra với những thông tin đó)
Lối phân tích bằng kiểu ánh xạ "đời thực” vào máy tính như thế thật sự là ưu điểmlớn của phương pháp hướng đối tượng
Thiết kế hướng đối tượng (Object Oriented Design - OOD):
Là giai đoạn tổ chức chương trình thành các tập hợp đối tượng cộng tác, mỗiđối tượng trong đó là thực thể của một lớp Các lớp là thành viên của một cây cấutrúc với mối quan hệ thừa kế
Mục đích của giai đoạn OOD là tạo thiết kế dựa trên kết quả của giai đoạnOOA, dựa trên những quy định phi chức năng, những yêu cầu về môi trường, nhữngyêu cầu về khả năng thực thi, OOD tập trung vào việc cải thiện kết quả củaOOA, tối ưu hóa giải pháp đã được cung cấp trong khi vẫn đảm bảo thoả mãn tất cảcác yêu cầu đã được xác lập
Trong giai đoạn OOD, nhà thiết kế định nghĩa các chức năng, thủ tục(operations), thuộc tính (attributes) cũng như mối quan hệ của một hay nhiều lớp(class) và quyết định chúng cần phải được điều chỉnh sao cho phù hợp với môitrường phát triển Đây cũng là giai đoạn để thiết kế ngân hàng dữ liệu và áp dụngcác kỹ thuật tiêu chuẩn hóa
Về cuối giai đoạn OOD, nhà thiết kế đưa ra một loạt các biểu đồ (diagram)khác nhau Các biểu đồ này có thể được chia thành hai nhóm chính là Tĩnh và động.Các biểu đồ tĩnh biểu thị các lớp và đối tượng, trong khi biểu đồ động biểu thịtương tác giữa các lớp và phương thức hoạt động chính xác của chúng Các lớp đósau này có thể được nhóm thành các gói (Packages) tức là các đơn vị thành phầnnhỏ hơn của ứng dụng
Lập trình hướng đối tượng (Object Oriented Programming - OOP):
Giai đoạn xây dựng phần mềm có thể được thực hiện sử dụng kỹ thuật lậptrình hướng đối tượng Đó là phương thức thực hiện thiết kế hướng đối tượng quaviệc sử dụng một ngôn ngữ lập trình có hỗ trợ các tính năng hướng đối tượng Mộtvài ngôn ngữ hướng đối tượng thường được nhắc tới là C++ và Java Kết quả chungcuộc của giai đoạn này là một loạt các code chạy được, nó chỉ được đưa vào sửdụng sau khi đã trải qua nhiều vòng quay của nhiều bước thử nghiệm khác nhau
Trang 151.6 Ngôn ngữ mô hình hóa thống nhất - UML (Unifield Modeling Language)
Ngôn ngữ mô hình hóa thống nhất (Unifield Modeling Language – UML) làmột ngôn ngữ để biểu diễn mô hình theo hướng đối tượng được xây dựng bởi ba tácgiả trên với chủ đích là:
- Mô hình hoá các hệ thống sử dụng các khái niệm hướng đối tượng
- Thiết lập một kết nối từ nhận thức của con người đến các sự kiện cần môhình hoá
- Giải quyết vấn đề về mức độ thừa kế trong các hệ thống phức tạp, có nhiềuràng buộc khác nhau
- Tạo một ngôn ngữ mô hình hoá có thể sử dụng được bởi người và máy
Phương pháp và các ngôn ngữ mô hình hoá:
Phương pháp hay phương thức (method) là một cách trực tiếp cấu trúc hoá sựsuy nghĩ và hành động của con người Phương pháp cho người sử dụng biết phảilàm gì, làm như thế nào, khi nào và tại sao (mục đích của hành động) Phương phápchứa các mô hình (model), các mô hình được dùng để mô tả những gì sử dụng choviệc truyền đạt kết quả trong quá trình sử dụng phương pháp Điểm khác nhau chínhgiữa một phương pháp và một ngôn ngữ mô hình hoá (modeling language) là ngônngữ mô hình hoá không có một tiến trình (process) hay các câu lệnh (instruction)
mô tả những công việc người sử dụng cần làm
Một mô hình được biểu diễn theo một ngôn ngữ mô hình hoá Ngôn ngữ môhình hoá bao gồm các ký hiệu – những biểu tượng được dùng trong mô hình – vàmột tập các quy tắc chỉ cách sử dụng chúng Các quy tắc này bao gồm:
- Syntactic (Cú pháp): cho biết hình dạng các biểu tượng và cách kết hợpchúng trong ngôn ngữ
- Semantic (Ngữ nghĩa): cho biết ý nghĩa của mỗi biểu tượng, chúng đượchiểu thế nào khi nằm trong hoặc không nằm trong ngữ cảnh của các biểutượng khác
- Pragmatic : định nghĩa ý nghĩa của biểu tượng để sao cho mục đích của môhình được thể hiện và mọi người có thể hiểu được
Trang 161.7 Quy trình RUP(Rational Unified Process)
RUP (Rational Unified Process) là framework qui trình phát triển phần mềmmang tính lặp được tạo bởi Công ty Rational Software (được IBM mua năm 2003).IBM Rational Method Composer (RMC) được tích hợp vào RUP với mục đích cóthể chỉnh sửa qui trình theo mục đích riêng (customization)
Dựa trên 6 kinh nghiệm thực tiễn của công nghệ phần mềm hiện đại:
- Phát triển lặp với “rủi ro” là nhân tố dẫn dắt chính
- Quản lý yêu cầu
- Sử dụng kiến trúc thành phần (component)
- Mô hình phần mềm một cách trực quan
- Kiểm tra chất lượng liên tục
- Kiểm soát sự thay đổi
RUP ra đời trở thành chiến lược vững vàn của Rational:
- Một qui trình hướng dẫn phát triển phần mềm
- Công cụ tạo tự động ứng dụng theo qui trình
- Dịch vụ làm cho Qui trình và Tool được hiệu quả hơn
Các Giai đoạn và các vòng lặp trong vòng đời phát triển (Phases andIterations)
Mỗi vòng đời phần mềm được chia thành nhiều vòng (cycles), mỗi vòng(cycle) làm việc trên một phiên bản mới của sản phẩm RUP chia 1 vòng phát triền(development cycle) thành 4 giai đoạn (phase) liên tiếp: Inception phase,Elaboration phase, Construction phase, Transition phase
Cấu trúc tĩnh của qui trình
Một qui trình mô tả ai (who) đang làm gì (what), làm như thế nào (how) vàlàm khi nào (when) RUP sử dụng 4 yếu tố chính trong mô hình
- Workers – Who
- Activities – How
- Artifacts – What
- Workflows – When
Trang 17a) Worker định nghĩa các hành vi, trách nhiệm của một cá nhân hoặc một nhóm làmviệc với nhau còn gọi là team.
b) Activity của một worker là một đơn vị công việc được giao cho một cá nhân thựchiện Activity có mục đích rõ ràng, thường là yêu cầu tạo mới hoặc update một sốartifacts như là model, class, hoặc plan Mỗi một activity được phân công cho mộtworkder rõ ràng
c) Artifact là một mẫu thông tin được tạo, chỉnh sửa hoặc được sử dụng bởi quitrình Artifact là những sản phẩm hữu hình của dự án, là vật mà dự án tạo ra hoặc sửdụng để đạt đến sản phẩm cuối cùng Artifact thường được nhập bởi worker để thựchiện một activity, hoặc là kết quả của các activities
Artifact có thể có rất nhiều dạng:
-Mô hình: use-case model, design model
-Yếu tố mô hình: class, use-case hoặc subsystem
-Tài liệu: Business case hoặc tài liệu kiến trúc phần mềm
-Source code
-Các file thực thi (Executables)
d) Workflow :Chỉ là một bản liệt kê các workers, activities và artifact thì không thểtạo thành qui trình Chúng ta cần một cách mô tả tuần tự đầy ý nghĩa các activities
để tạo ra kết quả có giá trị và chỉ rõ sự tương tác giữa các worker.Workflow là một chuỗi các hành động diễn ra liên tiếp nhằm tạo ra kết quả có giátrị rõ ràng
Trong UML, workflow có thể diễn đạt bằng sequence diagram, collaboraiondiagram hoặc activity diagram
1.8 Kiến trúc phần mềm MVC
MVC hay Model-View-Controller là một mẫu kiến trúc phần mềm trong kỹthuật kỹ sư phần mềm Khi sử đúng cách, mẫu MVC giúp cho người phát triển phầnmềm cô lập các nguyên tắc nghiệp vụ và giao diện người dùng một cách rõ rànghơn Phần mềm phát triển theo mẫu MVC tạo nhiều thuận lợi cho việc bảo trì vì cácnguyên tắc nghề nghiệp và giao diện ít liên quan với nhau
Trang 18Trong mẫu Model-View-Controller, mô hình (model) tượng trưng cho dữ liệucủa chương trình phần mềm Tầm nhìn hay khung nhìn (view) bao gồm các thànhphần của giao diện người dùng Bộ kiểm tra hay bộ điều chỉnh (controller) quản lý
sự trao đổi giữa dữ liệu và các nguyên tắc nghề nghiệp trong các thao tác liên quanđến mô hình
1.9 Giới thiệu hệ điều hành Android và lập trình Android
1.9.1 Sự phát triển của điện thoại di động
Trong khoảng những năm gần đây (từ năm 2000), điện thoại di động ngàycàng trở nên quen thuộc với cuộc sống của con người (thế giới nói chung và ViệtNam nói riêng)
Tại Việt Nam, với sự đa dạng các nhà cung cấp, sóng điện thoại được phủ sóng toànquốc, việc sử dụng điện thoại di động để liên lạc trong kinh doanh, hoạt động hằngngày đã trở nên phổ biến Điện thoại di động với ưu điểm gọn nhẹ, dễ sử dụng đãtrở thành công cụ thiết yếu của mọi người, nhất là giới trẻ và danh nhân
Theo số liệu thống kê của Tổng cục thống kê, trong năm 2010, cả nước có 170,1triệu thuê bao điện thoại, trong đó thuê bao cố định chỉ có 16,4 triệu, còn lại là 154
(90.5%) triệu thuê bao di động, với tỉ lệ tăng trưởng là 35% Đây là một con số rất ấn
tượng và theo dự đoán, con số này sẽ tăng trưởng nhanh trong những năm tới
Một cuộc khảo sát về tỉ lệ người Việt Nam sử dụng điện thoại di động thựchiện bởi công ty nghiên cứu thị trường Nielsen, kết quả cho thấy Việt Nam có tỷ lệngười sử dụng điện thoại di động cao hơn cả Trung Quốc và Ấn Độ Trong 5.000người tại các thành phố và ngoại thành của Việt Nam có 58% dân thành thị và 37%dân khu vực ngoại thành có điện thoại di động riêng Tại TP.HCM và Hà Nội, tỷ lệnày lên đến 74% Những con số này còn cao hơn Trung Quốc và Ấn Độ với tỷ lệdân số sở hữu ĐTDĐ lần lượt là 46% và 30% Kết quả khảo sát cho thấy đa sốngười Việt Nam trong độ tuổi từ thanh thiếu niên đến 60 tuổi đều có một thậm chíhai chiếc ĐTDĐ
Trang 19Với mức độ tăng trưởng kinh ngạc như vậy, không còn lạ gì khi Việt Namđứng thứ 27 trong danh sách các quốc gia có số lượng người sử dụng điện thoại diđộng nhiều nhất trên thế giới.
1.9.2 Smartphone
Trước năm 2007, tỉ lệ sử dụng smartphone (điện thoại di động thông minh) tạiViệt Nam hầu như rất thấp và smartphone được sử dụng hầu hết bởi danh nhân vàđược coi là sản phẩm cao cấp
Nhưng từ khi Apple tung iPhone ra thị trường, thế giới gần như bị ảnh hưởng bởilàn sóng smartphone mới, đa ứng dụng và có thể kết nối Internet Sự xuất hiện củaiPhone như một sự thức tỉnh với các hãng sản xuất điện thoại di động khác Cáchãng sản xuất đua nhau đưa các dòng sản phẩm smartphone khác nhau, làm chosmartphone dần trở thành một sản phẩm công nghệ thông dụng, thay thế dần dòngđiện thoại di động truyền thống, vốn chỉ sử dụng để gọi, nhắn tin là chủ yếu
Với dòng smartphone hiện đại kết hợp với sự phát triển vũ bão của Internet và mạng
xã hội, điện thoai di động không còn chủ yếu để gọi và nhắn tin nữa, mà còn đảmnhiệm nhiều nhiệm vụ khác như soạn văn bản, lưu trữ hình ảnh, video, chống trộm,máy chơi game,…và nhất là dùng để truy cập Internet
Dưới đây là một vài con số ấn tượng về tình trạng sử dụng điện thoại di động trênthế giới:
- Hiện nay, toàn thế giới có khoảng 4 tỉ người sử dụng điện thoại di động Trong đó
có 1,08 tỉ người sử dụng smartphone, còn 3,05 tỉ người sử dụng các loại điện thoại
cơ bản (nghe, gọi và nhắn tin) Trong đó, có đến khoản 950 triệu người sử dụng cácloại điện thoại không có chức năng nhắn tin
- 86% người sử dụng điện thoại di động truy cập Internet trong khi đang xem TV
- Hiện nay, có đến 91% lượng truy cập vào các mạng xã hội đến từ các thiết bị diđộng, nhiều hơn so với 79% lượng truy cập đến từ máy tính cá nhân
- Theo thống kê, 61% người sử dụng điện thoại di động để chơi game, 55% để theodõi tình hình thời tiết, 50% sử dụng để tìm kiếm và dò bản đồ, 49% sử dụng để truy
Trang 20cập mạng xã hội, 42% dùng để nghe nhạc, 36% theo dõi tin tức, 33% dùng để xemphim…
- 30% số người sử dụng smartphone truy cập các mạng xã hội thông qua trình duyệtmặc định của di động Còn lại cài đặt thêm các trình duyệt khác để sử dụng
- Mỗi ngày, có đến hơn 200 triệu lượt xem video từ các thiết bị di động
Tại Việt Nam, số lượng người sử dụng mobile Internet (sử dụng điện thoại di động
để truy cập và sử dụng các ứng dụng trực tuyến) với tỉ lệ còn thấp Kết quả khảo sátgần đây nhất cho thấy chỉ 2 trong số 5 người Việt Nam là sử dụng mobile Internet.Tuy nhiên con số này sẽ bùng phát nhanh chóng trong vòng 12 tháng tới Nhận địnhnày được hãng nghiên cứu thị trường Nielsen đưa ra trong báo cáo mang tên Ngườitiêu dùng công nghệ số khu vực Đông Nam Á
Theo Nielsen, phải mất thời gian khá dài mobile Internet mới có thể tiếp cận đượcViệt Nam nhưng tới đây, lượng người dùng sẽ gia tăng nhanh chóng Hiện tại, chỉ41% người dùng Internet vào mạng qua điện thoại di động, tỷ lệ thấp nhất trong khuvực Đông Nam Á Nhưng do xu hướng thích ứng nhanh với công nghệ mới củangười Việt Nam, tỷ lệ này trong vòng 12 tháng tới sẽ là 75%
Hình 2-0 Biểu đồ tỷ lệ sở hữu Smartphone
Theo đó 96% người dùng Internet đều đã truy cập vào ít nhất một trang mạng
xã hội 79% trong số họ từng bày tỏ thái độ yêu thích (like) hoặc dõi theo một nhãnhiệu, một công ty hoặc người nổi tiếng nào đó trên mạng Tỷ lệ này cao hơn 10% sovới mức bình quân của khu vực Đông Nam Á
Trang 21Người dùng Internet Việt Nam cũng dễ bị ảnh hưởng bởi những thông tin tìmthấy trên mạng xã hội 58% những ý kiến đăng tải được cho là tin cậy và 81% sửdụng mạng xã hội như một nguồn lực để ra các quyết định mua sắm.
Với những con số đầy hứa hẹn như trên, có thể thấy một tương lại rộng mở cho thị trường ứng dụng cho smartphone tại Việt Nam Với sự phát triển của công
nghệ và Internet, một ngày không xa, smartphone sẽ hoàn toàn thay thế cho máytính cá nhân trong việc liên lạc, làm việc của người dân Việt Nam cũng như thếgiới
1.9.3 Hệ điều hành Android
Hình 2-1 Biểu tượng của hệ điều hành Android
Giới thiệu hệ điều hành Android
Android là một hệ điều hành mã nguồn mở dành cho các thiết bị di động như
smartphone, tablet, Được phát triển bởi Open Handset Alliance (đứng đầu bởiGoogle) Android được phát triển dựa trên nhân Linux, kết hợp với các thư viện,middleware và API được viết bằng ngôn ngữ C, ứng dụng trên Android được thực thitrên một Application Framework, trong đó có hỗ trợ các ứng dụng Java Android sửdụng một Java Virtual Machine, Dalvik, để chạy các ứng dụng được viết bằng Java.Android là hệ điều hành dành cho các thiết bị di động như smartphones haytablet, được phát triển bởi Open Handset Alliance (OHA) OHA là một liên minh
Trang 22doanh nghiệp gồm 83 thành viên tập trung phát triển các tiêu chuẩn cho thiết bị diđộng Các thành viên bao gồm: Google, HTC, Sony, Dell, Intel, Motorola,Qualcomm, Texas Intruments, Samsung, LG, T-Mobile, Nvidia và Wind RiverSystems.
Android được xây dựng dựa trên Linux kernel với middleware, libraries, các APIđược viết bằng C và phần mềm chạy trên một application framework bao gồmnhững thư viện tương thích với Java dựa trên Apache Harmony Android sử dụngDalvik virtual machine với phương pháp biên dịch just-in-time để chạy code Java
đã thừa nhận kết hoạch tấn công vào thị trường điện thoại cầm tay của Google
Các phiên bản Android
Android đã cập nhật liên tục từ phiên bản đầu tiên Những cập nhật cho hệđìêu hành và thêm những đặc tính mới Mỗi phiên bản của hệ điều hành Androidđược phát triển với một tên gọi dựa trên những món tráng miệng Code name củachúng được sắp theo thứ tự alphabet: Cupcake, Donut, Éclair, Froyo, Gingerbread,Honeycomb và sắp tới là Ice cream sandwhich Dưới đây là danh sách các phiênbản gần đây nhất:
+ 2.0 ( Eclair) nâng cấp lên web browser và giao diện mới, hỗ trợ HTML5 vàW3C geolocation API Bản này được cài thêm ứng dụng camera với những đặc tínhzoom, flash, color effects và nhiều thứ khác
Trang 23+ 2.1 (Eclair) hỗ trợ điều khiển giọng nói, new laucher, 5 homescreen thay vì
3 như trước, background động, một nút để mở menu Bản này được cài thêm ứngdụng thời tiết, nâng cấp email và phonebook
+ 2.2 (Froyo) đưa ra sự cải thiệt tốc độ với giải pháp tối ưu JIT và ChromeV8 Javascript engine, thêm vào Wifi hotspot tethering và hỗ trợ Flash
+ 2.3 (Gingerbread) điều chỉnh lại giao diện, nâng cấp bàn phím mềm, đặctính copy/paste và hỗ trợ Near Field Communication
+ 3.0 (Honeycomb) là phiên bản dùng cho tablet, hỗ trợ cho các thiết bị cómàn hình lớn hơn và đưa ra nhiều đặc tính giao diện mới, hỗ trợ xử lý đa nhân vàtăng tốc phần cứng đồ họa Thiết bị đầu tiên dùng Honeycomb là Motorola Xoom,được bày bán vào 2/2011
+ 3.1 (Honeycomb) được thông báo tại Google I/O vào 10/2011, cho phépcác thiết bị Honeycomb truyền dữ liệu trực tiếp từ các USB
+ 3.2 (Honeycomb) là phiên bản cài thêm, có những khả năng mới cho ngườidùng và developer Nổi bật gồm có tối ưu làm tăng kích thước màn hình, khả năng
“zoom-to-fill”, load media file trực tiếp từ SD card và màn hình mở rộng hỗ trợdeveloper điều chỉnh giao diện chính xác hơn
+ 4.0 (Ice Cream Sandwhich) sẽ là sự kết hợp của Gingerbread vàHoneycomb
4/2010, Google thông báo thằng họ sẽ thuê hai công nhân làm việc cho cộngđồng Linux kernel Greg Kroah-Hartman, hiện tại là người bảo trì Linux kernel ở
Trang 24nhánh đảm bảo sự ổn định, vào 20/2010 đã phát biểu rằng ông ta lo ngại Google sẽkhông còn cố gắng thay đổi code trong Linux Một số Google Android developergợi ý “Nhóm Android ko còn muốn làm việc đó” bởi vì họ là một nhóm nhỏ và cònnhiều công việc cấp bách hơn phải làm trên Android.
Android không có một X Windows System, cũng ko hỗ trợ GN libraries vàđiều này làm cho khó khăn trong việc đem các ứng dụng hay các thư viện củaGNU/Linux vào Android
- Các tính năng: Handset layouts, storage, connectivity, messaging, multiplelanguage, web browser, Java support, media support, streaming media support,additional hardware support, multi-touch, bluetooth, video calling, multitasking,voice based feature, Wifi hotspot tethering, screen capture
Hình 2-2 Kiến trúc của HĐH Android
Trang 25 Ưu điểm của hệ điều hành Android
Android được cung cấp dưới dạng một phần mềm mã nguồn mở, hoàn toànmiễn phí Điều này có nghĩa các nhà sàn xuất thiết bị di động (smartphone, tablet)
có thể sử dụng android và tùy chỉnh theo ý thích
Nếu như trước đây, mỗi một nhà sản xuất thiết bị di động sử dụng hệ điềuhành của riêng mình, kho ứng dụng cũng chỉ phục vụ cho riêng hệ điều hành đó,làm giới hạn khả năng lựa chọn linh hoạt của người sử dụng thì nay người sử dụng
có thể lựa chọn sử dụng smartphone với nhiều model, giá cả hợp túi tiền và điều haynhất là có thể tận dụng được số lượng lớn ứng dụng dành cho Android trên Internet
mà không cần quan tâm tới hãng sản xuất Tất cả là nhờ Android Đây có thể coi làthế mạnh của Andoird so với iOS của Apple
Sự bùng nổ Android trên thị trường
- Ngày 15/12/2009: số lượng ứng dụng dành cho Android đã đạt mốc 20.000 Chỉ
10 tháng kể từ khi Android lần đầu tiên xuất hiện (2008) và và 3 tháng từ khiđạt mốc 10.000 ứng dụng (9/2009) Ứng dụng dành cho Android đang pháttriển với tốc độ rất nhanh Tại thời điểm 7/2011, tổng số lượng ứng dụng củaAndroid là 250.000, một con số khổng lồ
- Hệ điều hành Android được hơn 36 nhà sản xuất thiết bị di động sử dụng, trong
đó có các ông lớn như HTC, ASUS, Acer, Samsung, LG, Nokia, DELL,
- Tại thời điểm hiện tại, có hơn 310 mẫu thiết bị đang được lưu hành toàn cầu sửdụng hệ điều hành Android
- Google đã kích hoạt hơn 100 triệu thiết bị sử dụng hệ điều hành Android trêntoàn cầu
Hướng phát triển của Android
Do thế mạnh là một phần mềm mã nguồn mở, hệ điều hành Android có thểđược sử dụng trên nhiều loại thiết bị khác chứ không chỉ riêng Smartphone Ngoài smartphone ra, trên thị trường thế giới đã xuất hiện các thiết bị dành cho giađình sử dụng Android
Trang 26- Android TV: Google đã thông báo chính thức sẽ phát triển TV sử dụng hệ
điều hành Android (Google TV) Sản phẩm này có thể tương tác với ngườidùng, kết nối Internet và sử dụng ứng dụng của Android như smartphone
- Android Tablet: Máy tính bảng sử dụng Android không còn lạ lẫm khi các hãng
sản xuất laptop lớn như Dell, Acer, ASUS, LG đều đã tung ra các mẫu sản phẩm
để cạnh trang với iPad của Apple
- Android Home Phone System: hệ thống điện thoại cố định sử dụng Android
được trang bị trong nhà Các điện thoại này được kết nối Internet và thực hiệncác cuộc gọi VoIP với nhau
- Android Appliances: không chỉ xuất hiện ở thiết bị giải trí, di động Một số hãng
sản xuất đã sử dụng Android lên các thiết bị gia dụng bao gồm máy giặt, máysấy và kể cả lò vi sóng được điểu khiển bằng hệ điều hành Android
Hình 2-3 Các loại thiết bị sử dụng hệ điều hành Android
Phát triển ứng dụng Android ngày càng dễ dàng
Với thế mạnh hỗ trợ ứng dụng Java, việc phát triển ứng dụng Android trở nên rất dễdàng khi mà đã có sẵn một lượng lớn library mã nguồn mở dành cho Java có rấtnhiều trên Internet Developers có thể rút ngắn rất nhiều thời gian để phát triển ứngdụng trên nền Android
Trang 27 Thị phần Android
Công ty nghiên cứu Canalys đánh giá trong Quý 2 2009 rằng Android có 2.8%thị phần trên toàn thế giới ở lĩnh vực smartphone Theo Quý 4 2010, tỉ lệ này tăng 33%,trở thành hệ điều hành bán chạy nhất dành cho smartphone 6/2011, Google phát biểurằng 550.000 thiết bị Android được kích hoạt mỗi ngày, 440.000 mỗi ngày trong haitháng tiếp theo vào 5/2011 và hơn 100 triệu thiết bị đã được kích hoạt
Hình 2-4 Thị phần theo phiên bản của Android
(Biểu đồ trên dựa trên số thiết bị Android đã truy xuất Android Market trong chu kỳ
14 ngày kết thúc vào ngày 2/9/2011.)
Hình 2-5 Thị phần theo phiên bản và thời gian của Android
Đặc tính
Trang 28- Application framework cho phép tái sử dụng và thay thế uyển chuyển các
bộ phận
- Dalvik virtual machine được tối ưu cho các thiết bị mobile.
- Trình duyệt được tích hợp dựa trên web engine mã nguồn mở là WebKit.
- Đồ họa tối ưu được cung cấp bởi thư viện đồ họa 2D và đồ họa 3D dựa trên
OpenGL ES 1.0
- -SQLite cho việc lưu trữ dữ liệu trên điện thoại.
- Hỗ trợ media cho những định dạng ảnh thông dụng (MPEG4, H.264, MP3,
Aac, AMR, JPG, PNG, GIF
- Hệ thống gọi điện GSM (phụ thuộc phần cứng)
- Bluetooth, EDGE, 3G và WiFi (phụ thuộc phần cứng)
- Camera, GPS, la bàn, dụng cụ đo gia tốc (phụ thuộc phần cứng)
- Môi trường phát triển màu mỡ gồm một bộ mô phỏng, công cụ debug,
phân tích tốc độ và bộ nhớ, và một plugin dành cho Eclipse
Kiến trúc
Hình 2-6 Kiến trúc Android
Trang 29Android sẽ được đóng gói kèm với một tập hợp ứng dụng cốt lõi gồm emailclient, ứng dụng gửi SMS, lịch, bản đồ, trình duyện, ứng dụng quản lý contact vànhững thứ khác Tât cả ứng dụng được viết bằng ngôn ngữ lập trình Java
Application framework
Bằng cách cung cấp một môi trường phát triển mở, Android cho phépdeveloper xây dựng những ứng dụng đầy sáng tạo và phong phú Các developerđược tự do tận dụng phần cứng của thiết bị, truy xuất vào thông tin vị trí, dịch vụchạy ngầm, cài đặt báo động, thêm thông báo vào thanh trạng thái, nhiều và nhiềuthứ nữa
Developer có toàn quyền truy cập vào framework API được sử dụng bởinhững ứng dụng cốt lõi Kiến trúc ứng dụng được thiết kế để đơn giản hóa việc tái
sử dụng các bộ phận, bất kỳ ứng dụng nào cũng có thể công bố khả năng của nó vàbất kỳ ứng dụng khác sau đó có thể sử dụng khả năng đó (chủ thể đối với ràng buộc
an toàn là bắt buộc bởi framework) Cơ chế này cho phép những bộ phận được thaythế bởi người dùng
Bên dưới tất cả ứng dụng là một tập hợp dịch vụ và hệ thống, bao gồm:
- Một bộ Views có thể được dùng để xây dựng ứng dụng, gồm list, grid,
text box, button và ngay cả những web browser có thể nhúng
- Content provider cho phép ứng dụng truy xuất dữ liệu từ những ứng
dụng khác như Contacts, hoặc chia sẻ dữ liệu của riêng chúng
- Resource Manager cung cấp sự truy xuất đến những tài nguyên không
phải là code, ví dụ như chuỗi, hình ảnh hay các file layout
- Notification Manager cho phép tất cả ứng dụng thể hiện những báo
động trên thanh trạng thái
- Activity Manager quản lý vòng đời của các ứng dụng và cung cấp một
backstack cho phép chuyển đổi giữa các ứng dụng
Trang 30Android bao gồm một bộ thư việc C/C++ được dùng bởi những bộ phận của
hệ thống Android Những khả năng này được bộ lộ thông qua Android applicationframework Một số những thư viện cốt lõi được liệt kê dưới đây:
- System C library: một implementation dẫn xuất từ BSD của thư viện hệ
thống chuẩn C (libc), được điều chỉnh cho những thiết bị nhúng dựa trênLinux
- Media libraries: dựa trên OpenCORE của PacketVideo, những thư viện này
hỗ trợ playback vào thâu những định dạng
- Surface Manager: quản lý sự truy cập tới các hệ thống con và kết hợp những
lớp đồ họa 2D và 3D từ nhiều ứng dụng
- LibWebCore: một web browser engine có thể vận hành cả Android browser
và những WebView nhúng
- SGL: một graphics engine 2D nằm bên dưới.
- 3D libraries: một implementation dựa trên OpenGL ES 1.0 APIs; những thư
viện này sử dụng hardware 3D acceleration (khi có thể) hoặc những bộ quét 3D được tối ưu
- FreeType: cách vẽ font vector và font bitmap.
- SQLite: một lightweight relational database engine mạnh mẽ tồn tại cho tất
cả ứng dụng
Android Runtime
Android gồm một bộ thư viện cốt lõi nhằm cung cấp hầu hết những tính năng
có sẵn trên những thư viện cốt lõi của ngôn ngữ lập trình Java
Mỗi ứng dụng Android chạy trên những process của riêng nó trên những thểhiện của Dalvik virtual machien Dalvik được viết để một thiết bị có thể chạy nhiềuVMs một cách hiệu quả Dalvik VM thực thi file có định dạng Dalvik Executable(.dex) nhằm tối ưu cho những hoạt động đòi hỏi bộ nhớ VM này sẽ được đăng
ký, chuyển đổi những class file được biên dịch bởi Java compiler thành những file
Trang 31có định dạng dex, và cuối cùng thực thi chúng Dalvik VM trông cậy vào Linuxkernel vì những tính năng như đa luồng hay quản lý bộ nhớ cấp thấp.
Linux kernel
Android trông cậy vào những dịch vụ của Linux phiên bản 2.6 như security,quản lý bộ nhớ, quản lý tiến trình, network stack, driver model Kernel này cũnghành động như một lớp trừu tượng giữa phần cứng và phần còn lại của softwarestack
Kiến thức lập trình Android
Ứng dụng Android được viết bằng ngôn ngữ lập trình Java Android SDKbiên dịch code cùng với dữ liệu và resource files, đặt vào một gói gọi là Androidpackage, một file nén với đuôi “.apk” Tất cả code trong file apk được xem như mộtứng dụng và dùng để cài vào thiết bị Một khi được cài trên thiết bị, mỗi ứng dụngAndroid chạy như một security sandbox:
- Hệ điều hành Android là một hệ thống multi-user, nơi mà mỗi ứng dụng làmột user khác nhau
- Mặc định, hệ thống sẽ gán mỗi ứng dụng một Linux user ID (ID chỉ được sửdụng bởi hệ thống và ứng dụng sẽ không biết) Hệ thống cài đặt quyền cho tất
cả files trong ứng dụng để cho chỉ duy nhất user có ID được gán cho ứngdụng mới có quyền truy xuất chúng
- Mỗi process có máy ảo riêng của chúng, nên code của một ứng dụng sẽ chạytách biệt với ứng dụng khác
- Mặc định, mỗi ứng dụng chạy trong một Linux process Android sẽ khởiđộng process khi bất kỳ bộ phận nào cần được thực thi, sau đó sẽ shut downprocess đó khi không cần nó nữa, hoặc khi hệ thống phải khôi phục bộ nhớ đểcấp phát cho ứng dụng khác
Như đã thấy, hệ thống Android thực hiện theo nguyên tắc đặc quyền tối thiểu(principle of least privilege) Đó là, mỗi ứng dụng mặc định sẽ truy xuất chỉ những
Trang 32bộ phận mà nó yêu cầu Điều này tạo ra một môi trường an toàn, ngăn một ứngdụng truy xuất vào những phần của hệ thống khi không được phép.
Tuy nhiên, có nhiều cách để một ứng dụng chia sẽ dữ liệu với ứng dụng khác
và một ứng dụng truy xuất những dịch vụ của hệ thống
- Có thể sắp xếp để hai ứng dụng chia sẻ cùng Linux user ID để chúng có thểtruy xuất file của nhau Để bảo toàn tài nguyên hệ thống, những ứng dụng vớicùng user ID có thể chạy trên cùng Linux process và chia sẻ cùng VM (nhữngứng dụng phải được sign với cùng certificate)
- Một ứng dụng có thể yêu cầu quyền để truy xuất dữ liệu của thiết bị nhưuser’s contacts, SMS messages, SD card, camera, Bluetooth, và hơn thế nữa.Người dùng phải cài đặt quyền cho ứng dụng ở thời điểm cài đặt
Những điều trên đã mô tả khái quát làm thế nào mà một ứng dụng Androidtồn tại được trong hệ thống
Application components
Application components được xem như những “trụ cột” chính để xây dựngnên một ứng dụng Android Mỗi component là một ngõ để hệ thống có thể vào ứngdụng Không phải tất cả component đều là ngõ chính cho người dùng và một số phụthuộc vào nhau, nhưng mỗi cái tồn tại và đóng vai trò riêng của nó, giúp định hìnhhành vi tổng thể của một ứng dụng
Có 4 loại application component Mỗi loại phục vụ một mục đích khác nhau
và có vòng đời khác nhau
Activities
Một activity đại diên cho một màn hình tương tác với người dùng Ví dụ,một ứng dụng email có thể có một activity thể hiện một danh sách email, mộtactivity khác để soạn email, và một cái khác để đọc email Mặc dùng các activityhoạt động cùng nhau để định hình một ứng dụng, nhưng mỗi cái độc lập với nhau.Với cách này, một ứng dụng khác có thể chạy bất kỳ activity nào trong số này (nếuứng dụng email cho phép điều đó) Ví dụ, một camera application có thể chạyactivity trong ứng dụng email để soạn mail và chia sẻ hình ảnh
Trang 33Content providers
Một content provider quản lý tập hợp dữ liệu có thể chia sẻ giữa các ứngdụng Bạn có thể lưu dữ liệu trên một file system, một SQLite database, tên web,hay trên bất kỳ persistent storage location nào mà bạn có thể truy xuất Với contentprovider, những ứng dụng khác có thể truy vấn hoặc thay đổi dữ liệu (nếu contentprovider cho phép) Ví dụ, hệ thống Android với những quyền phù hợp có thể truyvấn những phần của content provider như contacts để đọc và ghi thông tin về mộtngười nào đó Content provider cũng hữu dụng khi đọc và ghi dữ liệu private vớiứng dụng và không được chi sẻ
Broadcast receivers
Broadcast receiver là một component trả lời những broadcast announcementsrộng khắp ứng dụng Nhiều broadcast bắt nguồn từ hệ thống như broadcast thôngbáo rằng màn hình bị tắt, pin yếu, hay ảnh được chụp Các ứng dụng có thể tạobroadcast, ví dụ để cho ứng dụng biết một số dữ liệu được download về thiết bị và
có sẵn để sử dụng Mặc dù broadcasts receiver không hiện một giao diện nhưngchúng có thể tạo notification để hiển thị lên status bar, thông báo cho người dùngkhi một broadcast xảy ra Nói chung, broadcast receiver chỉ là một “gateway” đốivới những component khác và làm những cô việc nhỏ Ví dụ như khởi tạo một dịch
vụ để thực hiện một số công việc dựa trên sự kiện
Một khía cạnh duy nhất của thiết kế hệ thống Android là bất kỳ ứng dụngnào cũng có thể start một component của ứng dụng khác Ví dụ, nếu bạn muốn userchụp ảnh với camera của thiết bị, ứng dụng của bạn có thể dùng chức năng chụpảnh của ứng dụng camera để làm điều đó, không cần phải kết hợp hay link đến code
Trang 34của ứng dụng camera Đơn giản là start một activity trong camera application đểchụp ảnh, khi hoàn tất thì ảnh sẽ đc trả về cho ứng dụng của bạn
Khi hệ thống start component, nó sẽ start process dành cho ứng dụng đó (nếu
nó chưa chạy) và thể hiện những lớp cần thiết cho component này Ví dụ, nếu ứngdụng của bạn start activity trong ứng dụng camera để chụp ảnh, activity đó sẽ chạytrong process thuộc về ứng dụng camera, không phải là process trong ứng dụng củabạn Do đó, không giống những ứng dụng trên hầu hết hệ thống, ứng dụng Androidkhông có điểm bắt đầu chính (nghĩa là không có hàm main())
Vì hệ thống chạy mỗi ứng dụng trên một process riêng biệt với quyền truyxuất file giới hạn với ứng dụng khác nên ứng dụng của bạn không thể trực tiếp kíchhoạt một component từ ứng dụng khác Tuy nhiên, hệ thống Android có thể, để kíchhoạt một component trong ứng dụng khác, bạn phải gởi thông điệp cho hệ thống đó
để chỉ định mục đích (intent) để start component đó Thệ thống sau đó kích hoạtcomponent đó cho bạn
Activating components
Ba trong bốn loại component là activity, service và broadcast receiver đượckích hoạt bởi một thông điệp bất đồng bộ (asynchronous message) được gọi là mộtintent Intent cột những component với nhau ở thời gian thực thi (bạn có thể nghĩ vềchúng như những sứ giả yêu cầu một hành động từ những component), cho dùcomponent có thuộc ứng dụng của bạn hay không
Một intent được tạo với một Intent object, cái định nghĩa một thông điệp để kíchhoạt một component chỉ định hay một kiểu component
Đối với activity và service, một intent định nghĩa hành động thực hiện (ví dụxem hoặc gởi một cái gì đó) và có thể chỉ định URI của dữ liệu Ví dụ, một intent cóthể mang một yêu cầu đến một activity để hiển thị một bức ảnh hoặc mở một trangweb Trong một số trường hợp, bạn có thể start một activity để nhận kết quả.Activity cũng có thể trả về kết quả trong một Intent (ví dụ, bạn có thể tạo ra mộtintent để người dùng chọn một contact và trả về cho bạn, intent được trả về sẽ baogồm URI trỏ đến contact đó)
Trang 35Đối với broadcast receiver, intent đơn giản là định nghĩa thông báo được gởi
đi Ví dụ một broadcast để báo hiệu pin yếu bao gồm một chuỗi như “Pin yếu Làm
The manifest file
Trước khi hệ thống Android có thể start component của ứng dụng, hệ thốngphải biết component đang tồn tại bằng cách đọc AndroidManifest.xml (manifestfile) Ứng dụng của bạn phải khai báo tất cả component trong file này
Ngoài việc khai báo component, manifest file làm một số việc như sau:
- Nhận dạng user permission mà ứng dụng yêu cầu, ví dụ như Internet accesshay quyền đọc đối với user’s contacts
- Khai báo API level tối thiểu được yêu cầu bởi ứng dụng, dựa trên APIs màứng dụng dùng
- Khai báo các đặc tính software và hardware được yêu cầu bởi ứng dụng, ví
dụ như camera, bluetooth hay multitouch
- Những API libraries mà ứng dụng cần được liên kết đến, ví dụ như GoogleMaps library
Trang 36ứng dụng đối với những thiết lập thiết bị khác nhau (ví dụ như ngôn ngữ và kíchthước màn hình khác nhau).
Đối với mỗi resource bạn include trong project, SDK build tools sẽ địnhnghĩa một ID duy nhất để có thể tham chiếu đến resources đó trong code ứng dụnghoặc từ những resource khắc được định nghĩa trong XML Ví dụ, nếu ứng dụngchứa một file ảnh tên là logo.png (lưu trong thư mục res/drawable/), SDK tools sẽsinh ra resource ID là R.drawable.log để bạn có thể dùng để tham chiếu đến bức ảnh
và chèn nó vào giao diện
Một trong số những khía cạnh quan trọng trong việc cung cấp resources táchbiệt với code là bạn có thể cung cấp một resource thay thế cho những cấu hình thiết
bị khác nhau Ví dụ, có thể tạo ra những file chuỗi với những ngôn ngữ khác nhau
để thay thế cho nhau Sau đó dựa trên ngôn ngữ được chọn trong hệ thống, Android
sẽ áp dụng ngôn ngữ phù hợp cho UI
Android hỗ trợ nhiều qualifiers cho những resources thay thế Qualifier làmột chuỗi ngắn được gắn trong tên của thư mục resources để xác định resource nàonên được dùng để phù hợp với cấu hình của thiết bị Ví dụ, bạn thường tạo ra nhữnglayout khác nhau cho những activity khác nhau phụ thuộc vào orientation của mànhình và kích thước Ví dụ khi màn hình ở chết độ chân dung (portrait orientation),bạn muốn layout sẽ có button theo chiều dọc, trong khi màn hình trong chế độphong cảnh (landscape orientation) thì button sẽ theo chiều ngang Để thay đổilayout phụ thuộc vào orientation, bạn có thể định nghĩa những layout khác nhau và
áp dụng qualifier phù hợp cho mỗi tên thư mục Sau đó, hệ thống sẽ tự động ápdụng layout phù hợp phụ thuộc vào orientation của thiết bị
Vòng đời của Activity:
Lập trình Android chủ yếu xoay quanh sự vận hành của Activity Activity làmột màn hình cung cấp giao diện tương tác cho người sử dụng Một ứng dụng cóthể gồm nhiều activity nhưng chỉ có duy nhất một main Activity Main Activityxuất hiện khi người dùng khởi động ứng dựng
Mỗi lần một activity start thì activity hiện hành sẽ stop, nhưng hệ thống vẫnbảo quản activity đó trong một stack, gọi là “back stack”
Trang 37Khi một activity start, nó được push vào stack và người dùng có thể focus trên đó.Khi một activity stop do một activity khác start, nó được thông báo về sự thay đổitrạng thái này thông bao những hàm callback
Có nhiều hàm callback mà một activity có thể nhận và người dùng sẽ có cơhội thực hiện những việc cần thiết phù hợp với trạng thái đó Ví dụ, khi activitystop, bạn có thể giải phóng những đối tượng lớn như network hay databaseconnection Khi activity resume, bạn có thể đạt lại những resource cần thiết vàresume lại hành động đã bị ngắt Chuyển trạng thái là một phần quan trọng trongvòng đời của Activity
Trang 38Hình 2-7 Vòng đời của Activity
Trang 392.2 Extensible Messaging and Presence Protocol (XMPP - Giao thức mở nhắn tin và hiện diện trực tuyến)
Extensible Messaging and Presence Protocol (XMPP), trước đây là Jabber, làgiao thức mở và dựa trên nền tảng XML dùng trong nhắn tin nhanh (instantmessaging) và thông tin hiện diện trực tuyến (presence information) Theo Hội Tiêuchuẩn XMPP (XMPP Standards Foundation, trước đây là Jabber SoftwareFoundation, JSF), phần mềm dựa trên Jabber được triển khai tại hàng ngàn máyphục vụ trên Internet và được hơn 10 triệu người trên khắp thế giới sử dụng
Jeremie Miller khởi đầu dự án vào năm 1998; phiên bản đầu tiên được công
bố vào tháng năm 2000 Sản phẩm chính của dự án là jabberd, một trình phục vụ(server) để từ đó các trình khách (client) kết nối đến và trao đổi tin nhắn Trình phục
vụ này có thể tạo mạng Jabber riêng tư (như sau tường lửa) hoặc có thể tham giavào mạng Jabber công cộng toàn cầu Đặc tính cốt lõi của Jabber là bản chất của hệthống tin nhắn nhanh phân tán và việc sử dụng streaming XML
Điểm đặc trưng của hệ thống Jabber là nó có các transport, còn được gọi làgateway (cổng), cho phép người dùng truy cập mạng với các giao thức khác - nhưAIM và ICQ (dùng OSCAR), MSN Messenger và Windows Messenger (dùng Dịch
vụ nhắn tin NET - NET Messenger Service), Yahoo! Messenger, SMS hay E-mail.Không như các trình khách đa giao thức như Trillian hay Gaim, việc truy cập đếncác giao thức khác được Jabber cung cấp ở cấp độ trình phục vụ bằng cách truyềnthông tin qua các dịch vụ cổng đặc biệt chạy trên một máy tính ở xa Bất cứ ngườidùng nào cũng có thể 'đăng kí' với một trong các cổng này bằng cách cung cấpthông tin cần thiết để đăng nhập vào mạng đó, và từ đó có thể liên lạc với ngườidùng của mạng khác như thể họ là người dùng Jabber Điều này có nghĩa là bất cứtrình khách nào hỗ trợ đầy đủ giao thức Jabber đều có thể được dùng để truy cập bất
cứ mạng nào có cổng kết nối, mà không cần thêm dòng mã lệnh nào từ trình khách
Trang 40Nền tảng của giao thức Jabber, hiện được Tổ chức Phần mềm Jabber quản lí,
đã được IETF chấp nhận làm giao thức standards-track dưới tên XMPP, với RFC
3920 Nó thường được xem là đối thủ cạnh tranh với SIMPLE, dựa trên giao thứcSIP, để làm giao thức chuẩn cho nhắn tin nhanh và thông báo hiện diện; tuy nhiên,thiết kế của XMPP được nhắm đến việc cung cấp các tiện ích trình trung gian(middleware) liên ứng dụng và mục đích tổng quát
Người dùng Jabber được xác định bằng tên người dùng và tên máy phục vụ,cách nhau bằng dấu @ Căn cước này được gọi là Jabber ID hay JID
ID có dạng thức tên_người_dùng@tên_miền/tài_nguyên, tương tự như một địa chỉemail
Người dùng Jabber có thể truy cập vào tài khoản của mình cùng lúc tại nhiềuđiểm truy cập khác nhau, được xác định qua phần tài_nguyên, ví dụtên_người_dùng@tên_miền.com/cơ_quan và tên_người_dùng@tên_miền.com/nhà.Không cần thiết chỉ định phần tài nguyên khi liên lạc với người dùng khác
Tương tự như Sendmail, người dùng Jabber có thể truy cập vào các giao thứckhác qua cổng giao tiếp Jabber (Jabber Transport), ví dụ JID của một địa chỉ MSNMessenger là tên_người_dùng%msn.com@msn.jabberserver.com
Tên người dùng trong JID dài tối đa 1023 ký tự và không được chứa @, :, ', ", <, >,
&, khoảng trắng và ký tự điều khiển
Tổng quan về công nghệ XMPP:
XMPP một tập hợp các công nghệ mở cho tin nhắn tức thời, sự hiện diện,chat đa đảng, các cuộc gọi thoại và video, hợp tác, trung gian nhẹ, cung cấp nộidung, và tổng quát định tuyến dữ liệu XML
XMPP đã được phát triển trong cộng đồng mã nguồn mở Jabber để cung cấpmột mở, an toàn, thư rác, thay thế phân cấp cho các dịch vụ nhắn tin tức thời đóngcửa tại thời điểm đó XMPP cung cấp một số lợi thế quan trọng đối với các dịch vụnhư: