MỤC LỤC
Lịi nói đầu............................................................................................................. 8
CHƯƠNG 1. TĨNG QUAN VẺ ĐÈ TÀI......................................................... 1
1.1
Tổng quan về lĩnh vực nhận dạng chữ số.............................................. 1
1.2
Giới thiệu các cơng nghệ sử dụng.......................................................... 2
1.2.1
ASP.NET............................................................................................. 2
1.2.2
Mơ hình kiến trác N-tier.................................................................... 4
1.2.3
Android.............................................................................................. 10
1.3
Khái quát về xử lý ánh............................................................................24
1.3.1
Khái quát về ảnh số........................................................................... 24
1.3.2
Khái quát về xử lý ảnh..................................................................... 26
1.3.3
Các giai đoạn của một quá trình xứ lý ảnh..................................... 27
1.3.4
Mô tã ảnh.......................................................................................... 29
CHƯƠNG 2. MỘT SỐ PHƯƠNG PHÁP NHẬN DẠNG HIỆN CÓ...... 31
2.1
Một số phương pháp nhận dạng chữ số............................................... 31
2.1.1
Mơ hình SVM:.................................................................................. 31
2.1.2
Mơ hình HMM:................................................................................. 31
2.1.3
Mạng Neural:.................................................................................... 32
2.2
Khái niệm mạng neural.......................................................................... 33
2.2.1
Sơ lược về mạng neural sinh học.................................................... 33
2.2.2
Mạng neural nhân tạo...................................................................... 34
2.2.3
Kiến trúc và huấn luyện mạng neural............................................. 36
2.2.4
Huấn luyện mạng neural.................................................................. 37
2.3
ứng dụng mạng neural trong nhận dạng ký tự................................... 42
2.4
Giới thiệu về Support Vector Machine................................................ 44
2.5
ứng dụng Support Vector Machine trong nhận dạng ký tự............... 47
CHƯƠNG 3. PHÂN TÍCH VÀ THIÉT KÉ HỆ THĨNG.......................... 49
3.1
Phát biểu bài toán.....................................................................................49
3.2
Các tác nhân hệ thống.............................................................................50
3.3
Biếu đồ chức năng (Use case Diagrams)..............................................51
3.4
Biểu đồ hoạt động (Activity Diagrams)............................................... 55
3.5
Thiết kế cơ sở dữ liệu..............................................................................59
3.6
Đặc tả chi tiết các bảng........................................................................ 60
CHƯƠNG 4. KẾT QUẢ THỤC HIỆN.......................................................... 64
4.1
Tiền xử lý và tách ánh............................................................................. 64
4.1.1
Tiền xử lý........................................................................................... 64
4.1.2
Phân tách hình ánh............................................................................66
4.2
Phía server................................................................................................ 67
4.2.1 Kết q hệ thống nhận dạng sử dụng mạng neural đa lớp và SVM
(Support Vector Machine).............................................................................68
4.3
Phía Client................................................................................................ 70
CHƯƠNG 5. KÉT LUẬN................................................................................. 76
5.1
Kct quả đạt được......................................................................................76
5.2
Những phần chưa đạt được.................................................................... 76
5.3
Hướng phát triền..................................................................................... 77
TÀI LIỆU THAM KHẢO................................................................................ 78
DANH MỤC HÌNH VẼ
Hình 1.1 Mơ hình kiến trúc N-tier..................................................................... 5
Hình 1.2 Các giai đoạn của quá trình xử lý ảnh.............................................. 27
Hình 2.1 Cầu trúc một neural trong bộ não người [5].................................... 33
Hình 2.2 Mơ hình mạng neural nhân tạo [5]..................................................... 35
Hình 2.3 Mạng neural đa tầng [5]...................................................................... 36
Hình 2.4 Cơng thức và cấu trúc cùa một neural................................................39
Hình 2.5 Đầu vào và đầu ra cho bài tốn XOR.................................................39
Hình 2.6 Hình minh họa quá trình thứ nhất...................................................... 40
Hình 2.7 Kêt quả minh họa hàm tơng................................................................ 40
Hình 2.8 Hàm sigmoidfunction......................................................................... 41
Hình 2.9 Kết quả sau khi thực hiện hàm sigmoid............................................. 41
Hình 2.10 Ket quà đầu ra của mạng..................................................................42
Hình 2.11 Sơ đồ bài tốn nhận dạng ký tự....................................................... 44
Hình 2.12 Vector H2 là tốt nhất...................................................................... 45
Hình 2.13 Hệ thống nhận dạng 1 đấu 1 (Multi class Support Vector
Machines).............................................................................................................. 47
Hình 2.14 Lựa chọn class được xác định nhiều nhất........................................ 48
Hình 3.1 Biểu đồ tác nhân cùa hệ thống............................................................ 50
Hình 3.2 Biếu đồ use case tống the cùa hệ thong............................................. 51
Hình 3.3 Biểu do use case quản lý tỉnh tiền hóa đom........................................ 52
Hình 3.4 Biểu do use case quản lý client........................................................... 52
Hình 3.5 Biểu đồ use case qn lý thơng tin người dùng................................. 53
Hình 3.6 Biểu đồ quản lý đóng góp ý kiến......................................................... 53
Hình 3.7 Biểu đồ use case quản lý huấn luyện, nhận dạng.............................. 54
Hình 3.8 Biểu đồ use case quán lý huấn luyện hệ thống.................................. 54
Hình 3.9 Biểu đồ hoạt động tinh tiền hóa đơn................................................... 55
Hình 3.10 Biểu đồ hoạt động sửa hóa đơn......................................................55
Hình 3.11 Biểu đồ hoạt động lưu hóa đơn....................................................... 56
Hình 3.12 Biếu đồ hoạt động xóa hóa đơn..................................................... 56
Hình 3.13 Biểu đồ hoạt động đóng góp ý kiến................................................ 5 7
Hình 3.14 Biểu đồ hoạt động huấn luyện mơ hình.......................................... 57
Hình 3.15 Biểu đồ hoạt động lưu mơ hình........................................................ 58
Hình 3.16 Biểu đồ hoạt động xem thơng tin.....................................................58
Hình 3.17 Cơ sở dữ liệu..................................................................................... 59
Hình 4. ỉ Ảnh gốc.................................................................................................. 65
Hình 4.2 Anh sau khi được chuyển xám............................................................. 65
Hình 4.3 Cơng thức lọc nhiêu Gussian Blur...................................................... 65
Hình 4.4 Anh nhị phân sau khi được chuyến đối...............................................66
Hình 4.5 Anh gốc cần tách.............................................................................. 66
Hình 4.6 Tập các ánh con sau khi tách thành các dịng................................... 66
Hình 4.7 Cơ sở dữ liệu trên SQL Server............................................................ 67
Hình 4.8 Ti lệ nhận dạng hằng ANN trên tập dữ liệu MNIST..........................68
Hình 4.9 Ket quả thử nghiệm trên dừ liệu thực tể.............................................69
Hình 4.10 Tì lệ nhận dạng trên tập mẫu của SVM............................................69
Hình 4.1 ỉ Kết quả thứ nghiệm trên dữ liệu thực tế........................................... 70
Hình 4.12 Menu lựa chọn chức năng chụp, chọn ảnh.......................................70
Hình 4.13 Chức năng chụp ãnh.......................................................................... 71
Hình 4.14 Chức năng cắt ảnh............................................................................. 71
Hình 4.15 Chức năng chọn ảnh từ thư viện....................................................... 72
Hình 4.16 Kết quả tách kí tự theo dịng..............................................................72
Hình 4.17 Kết quả tách ki tự từ một dịng.......................................................... 73
Hình 4.18 Chức năng tính tổng tiền hóa đơn..................................................... 73
Hình 4.19 Chức năng sửa một so tiền trên hóa đơn.......................................... 74
Hình 4.20 Chức năng xóa một so tiền trên hóa đơn..........................................74
Hình 4.21 Chức năng góp ý.................................................................................75
Hình 4.22 Chức năng thong kê........................................................................... 75
DANH MỤC BẢNG BIẾU
Bảng 3.1 tblTrainingModel
Bảng 3.2 iblTrainingModelDetail
Bâng 3.3 íbiciient
Bảng 3.4 tblCỉientRating
Bâng 3.5 tbiciientFeedback
Bâng 3.6 tblClientFeedbackDetail
Bàng 3.7 tbIModelDownload
60
60
61
61
62
62
63
DANH MỤC CÁC CHŨ VIẾT TẮT
Tên đầy đủ
STT
Tên viết tắt
1
SVM
Support Vector Machine
2
HMM
Fliddcn Markov Model
3
ANN
Artificial Neural Network
4
BFD
Bidirectional Forwarding Detection
5
DFD
Data flow diagram
6
MSVM
Multi-class Support Vector Machines
Lịi nói đầu
Thị giác máy tính là một lĩnh vực đã và đang phát triển mạnh mẽ trên thế
giới hiện nay. Khái niệm về thị giác máy tính - Computer Vison có liên quan
tới nhiêu ngành học và cỏ nhiều hướng nghiên cứu khác nhau. Ke từ những
năm 70 cùa thế kỹ 20 khi mà khâ năng tính tốn cùa máy tính trở nên mạnh
mẽ, nó có thế giải quyết được những công việc cần tới tốc độ cao như xử lý
các tập ảnh hay các đoạn video thì thị giác máy tính được nhắc đến, nghiên
cứu và phát triển cho đến ngày nay. Thị giác máy tính là một lĩnh vực rất mới
mé đối với các nhà nghiên cứ ờ Việt Nam, nó chỉ mới xuất hiện gần đây trong
các tố chức quân đội và một số viện nghiên cứu khác. Việc áp dụng thị giác
máy tính vào các ứng dụng nghiên cứu khoa học được coi là một khởi đầu
cho chặng đường phát triển của thị giác máy tính ớ các trường đại học hiện
nay.
Lĩnh vực nghiên cứu cùa thị giác máy tính rất rộng, và đặc diem chung là
các bài tốn về thị giác máy tính đều khơng có một đề bài chung và cách giái
duy nhất. Mỗi giải pháp giái quyết vấn đề đều được một kết quả nhất định cho
những trường hợp cụ thê.
Đe tài đồ án sau áp dụng kĩ thuật nhận dạng chừ số qua hình ảnh là một
phần trong lĩnh vực thị giác máy tính.
Sau thời gian học tập tại trường, được sự chi báo tận tình của thầy cơ giáo
trong khoa Công nghệ Thông tin - Viện Đại học Mờ Hà Nội, em đã kết thúc
khóa học và tích lũy được vốn kiến thức nhất định. Được sự đồng ý cùa Khoa
Công nghệ Thông tin - Viện Đại học Mờ Hà Nội và sự đồng ý của giáo viên
hướng dẫn ThS. Lê Hữu Dũng, em đã thực hiện đề tài “Xây dựng hệ thống
nhận dạng chữ số và tính tiền trên hóa đơn”.
Đe hoàn thành đồ án này, em xin chân thành cảm on quý thầy cô, và đặc
biệt cám ơn thầy giáo hướng dẫn ThS. Lê Hữu Dũng đã tận tình chi báo và
hướng dẫn em thực hiện đồ án này. Qua đây em cũng xin gửi lời cám ơn đến
anh chị em trong trung tâm Công nghệ và Dịch vụ Trực tuyến (OTSC) đã
luôn giúp đỡ em trong thời gian qua.
Mặc dù có nhiều cố gắng đế thực hiện đề tài được hoàn chỉnh nhất. Song
do những hạn chế về kiến thức chuyên môn và kinh nghiệm thực tế trong vấn
đề này nên em không the tránh khỏi những sai sót. Em rất mong sẽ nhận được
sự đóng góp cùa các thầy cô giáo và các bạn đế đề tài của em được hoàn thiện
hơn.
Hà Nội,
tháng
năm 2017
Sinh viên thực hiện
Nguyền Mạnh Đức
CHƯƠNG 1. TÓNG QUAN VÈ ĐÈ TÀI
1.1 Tổng quan về lĩnh vực nhận dạng chữ số
Tống quan về lĩnh vực nhận dạng chừ số:
Ngày nay, khái niệm ảnh số đã trớ nên thông dụng với hầu hết mọi người
trong xã hội và việc thu nhận ảnh số đế đưa vào, lưu trữ trên các thiết bị điện
tứ như máy tính, điện thoại, smart TV đã trớ nên rất đon giản. Các lĩnh vực
liên quan đến xử lý ánh số rất phố biến, sơi nối, được phát triến rộng rãi, trong
đó có lĩnh vực nhận dạng chữ số.
Nhận dạng chừ số là một lĩnh vực đã được quan tâm nghiên cứu và đã có
những ứng dụng thưc tiễn trong những năm gần đây. Chúng ta có thế dề dàng
nhận thấy lợi ích của nhận dạng chữ số như số hóa tài liệu giấy, tính tốn dựa
vào tài liệu giấy, truy vấn bằng hình ảnh (image based information
retrieval...).
Ớ Việt Nam cũng như trên thế giới, các ứng dụng về xứ lý và nhận dạng
ảnh đã bước đầu được triển khai trên một sổ lĩnh vực, mang lại hiệu quà như
ứng dụng nạp thẻ điện thoại thơng minh, ứng dụng chuyển đối hình ánh văn
bản thành text.
Tuy nhiên số lượng các ứng dụng được triển khai trên thực tế cịn ít, lĩnh
vực này sẽ phát triển mạnh mẽ trong tương lai nếu như được quan tâm một
cách nghiêm túc.
Ý tưởng đề tài nhận dạng và tính tiền trên hóa đơn:
Trong cuộc song hiện nay, khi chúng ta đi ăn nhà hàng, khi đi chơi hay khi
mua sắm, chủng ta nhận được một phiếu hóa đơn thanh tốn rất dài chứa danh
sách các món ăn, dịch vụ hay những món đồ đã mua. Trước khi thanh toán, ta
2
thắc mắc về tổng số tiền trên hóa đơn đã đúng chưa nhưng lại ngại tính tốn
lại danh sách dài như vậy? Hệ thống nhận dạng và tính tiền trên hóa đơn được
phát triển đế phục vụ cho những nhu cầu như vậy. Hệ thống sẽ nhận dạng lại
danh sách số tiền dựa vào hình ảnh ta cung cấp và sẽ đưa ra tồng số tiền trên
hóa đơn.
1.2 Giói thiệu các công nghệ sử dụng
ỉ.2.1 ASP.NET
Từ khoảng cuối thập niên 90, ASP (Active Server Page) đã được nhiều
lập trình viên lựa chọn đê xây dựng và phát triên ứng dụng web động trên
máy chủ sử dụng hệ điều hành Windows. ASP đã the hiện được những ưu
điếm cúa minh với mơ hình lập trình thú tục đơn giản , sử dụng hiệu quá đối
tượng COM: ADO (ActiveX Data Object) - xử lý dữ liệu, FSO (File System
Object) - làm việc với hệ thống tập tin, ... đồng thời, ASP cũng hồ trợ nhiều
loại ngơn ngữ: VBScript, Java Script. Chính những ưu điểm đó, ASP đã được
u thích trong một thời gian dài.
Tuy nhiên ASP vần cịn tồn động mơt số khó khăn như mã ASP và HTML
lần lộn, điều này làm cho q trình viết mã khó khăn, thê hiện và trình bày mã
khơng trong sáng, hạn che khả năng sử dụng lại mã. Bên cạnh đó, khi triển
khai cài đặt, do không được biên dịch trước nên dề bị mất mã nguồn và phần
nào hạn chế về mặt tốc độ thực hiện.
Đầu năm 2002, Microsoft giới thiệu một số kĩ thuật lập trình Web khá
mới mè với tên gọi ban đầu ASP+, tên chính thức sau này là ASP.Nct. Với
ASP.Net, khơng những khơng cần địi hói bạn phái biết các tag HTML, thiết
kế web, mà nó cịn hồ trợ mạnh lập trình hướng đối tượng trong quá trình xây
dựng và phát triển ứng dụng Web.
3
ASP.Net là kĩ thuật lập trinh và phát triền ứng dụng web ở phía Server
(Server - side) dựa trên nền tảng Microsoft .Net Framework.
Hầu hết, những người mới đến với lập trình web đều bat đầu tìm hiểu
những kĩ thuật phía Client (Client - side) như: HTML, JavaScript,
css
(Cascading Style Sheets). Khi Web Browser yêu cầu một trang web (trang
web sử dụng kĩ thuật Client - side), Web server tìm trang web mà client yêu
cầu, sau đó gửi về cho client. Client nhận kết quả trả về từ server và hiển thị
lên màn hình.
ASP.Net sứ dụng kĩ thuật lập trình phía server thì hồn tồn khác, mã lệnh
ờ phía server (ví dụ: mã lệnh trong trang ASP) sẽ được biên dịch và thi hành
tại Web Server. Sau khi được Server đọc, biên dịch và thi hành, kết quả tự
động được chuyển sang HTML/JavaScirpt/CSS và trả về cho client. Tất cà
các xử lý lệnh ASP.Nct đều được thực hiện tại server và do đó, gọi là kĩ thuật
lập trình ở phía server.
Nhũng ưu diem của ASP.Net:
-
ASP.Net cho phép bạn lựa chọn một trong các ngơn ngữ lập trình mà
-
Trang ASP.Net được u cầu biên dịch trước. Thay vì phái đọc và
bạn yêu thích: Visual Basic.Nct,
c#, ...
thơng dịch mồi trang khi trang Web được yêu cầu, ASP.Net biên dịch
những trang wcb động thành những tập tin DLL mà server có thế thi
hành nhanh chóng và hiệu quà. Yếu tố này là một bước nhảy vọt đáng
kể so với thông dịch cúa ASP.
-
ASP.Net hồ trợ mạnh về bộ thư viện phong phú và đa dạng cứa .Net
Framework, làm việc với XML, Web Service truy cập dữ liệu qua
ADO.Net, ...
-
ASPX và ASP có thể cùng hoạt động trong 1 ứng dụng.
4
-
Kiến trúc lập trình giống ứng dụng trên Windows.
-
Hỗ trợ quán lý trạng thái cùa các điều khiến.
-
Tự động phát sinh mã HTML cho các server control tương ứng với
từng loại browser.
-
-
Hồ trợ nhiều cơ chế ghi vào bộ đệm.
Triển khai cài đặt không cần lock, không cần đăng ký DLL và cho phép
nhiều hình thức cấu hình úng dụng khác nhau.
7.2.2 Mơ hình kiến trúc N-tier
1.2.2.1
Theo đê xt cùa Microsoft
Microsoft sau khi nghiên cứu và tống hợp từ các giài pháp ứng dụng
thương mại lớn đã đưa ra bán đề xuất mơ hình N-ticr gồm các thành phần như
sau:
N-Layer Architecture
Logic
Layers
Aspects
5
Hình ỉ.l Mơ hình kiến trúc N-tier
User Interface (UI) Components
Đa phần giải pháp cần phải cung cấp một số cách thức nào đó đề người
dùng có thể tương tác với ứng dụng. Ví dụ một website cho phép khách hàng
xem các sàn phẩm và gửi đơn hàng hay một úng dụng trên nền hệ điều hành
Microsoft Windows cho phép người bán hàng nhập thông tin đơn hàng cho
khách hàng đã gọi điện đên công ty đê đặt hàng. Giao diện người dùng có thê
sử dụng Windows Form, các trang web hoặc điều khiến ASP.Net, hay bất kì
cơng nghệ nào khác mà muốn sử dụng định dạng dữ liệu hiến thị cho người
dùng và nhận, kiếm định dữ liệu do người dùng nhập vào.
User Interface Process Components
Trong nhiều trường hợp, một người dùng tương tác với hệ thống theo một
quy trình có thế đốn trước. Ví dụ như: trong ứng dụng bán hàng, bạn có thề
thi hành một thủ tục cho phép xem dừ liệu về hàng hóa mà ờ đó người dùng
chọn một nhóm hàng từ một danh sách các nhóm hàng hiện có rồi sau đó lựa
chọn đe xem chi tiết của hàng hóa. Tương tự như vậy, khi người dùng tiến
hành đặt hàng, các hành động sẽ theo một quy trình đốn trước như sau: thu
nhập dữ liệu từ người dùng, trong đó đầu tiên người dùng sẽ phái cung cấp
thơng tin về các sản phấm/hàng hóa mà người đó muốn đặt, sau đó cung cấp
các thơng tin thanh tốn, rồi đen các thơng tin về giai nhận hàng. Đe giúp
đồng bộ và sắp xếp các hành động này, nó sẽ hữu dụng đế điều khiển q
trình sử dụng các thành phần xử lý tiến trình khác nhau. Theo cách này, dịng
xứ lý tiến trình và qn lý trạng thái logic không được code cứng trong các
6
thành phần giao diện và “bộ máy” tương tác người dùng cơ bàn sẽ có thể tái
sứ dụng cho nhiều giao diện người dùng khác nhau.
Bussiness workflows
Sau khi nhận được dừ liệu tồng hợp bời tiến trình xứ lý cùa người dùng,
những dữ liệu đó có thể được dùng để xử lý nghiệp vụ. Ví dụ: sau khi thơng
tin về hàng hóa, phương thức thanh tốn, giao nhận hàng được gửi tới ứng
dụng thi tiến trình thực hiện thanh tốn và bố trí giao nhận hàng sẽ được khới
động.
Nhiều tiến trình xử lý nghiệp vụ phải thực hiện nhiều bước theo một trật tự
được sắp đặt chính xác. Ví dụ như hệ thống bán hàng sẽ cần phải tính tốn
tong giá trị của đơn hàng, kiềm tra thông tin của thẻ tín dụng, xử lý thanh tốn
qua thè tín dụng rồi sắp xếp giao hàng. Quá trình này cần phài có thời gian
gian để được hồn thành do đó các tác vụ cần thiết cùng với dừ liệu để xử lý
cần phái được quản lý.
Dòng xử lý nghiệp vụ định nghĩa và điều hành các tiến trình nghiệp vụ dài,
nhiều bước. Chúng có the được thi hành nhờ các cơng cụ quản lý tiến trình
nghiệp vụ như BizTalk Server Orchstrantion (cũng là một sản phẩm của
Microsoft).
Business components
Cho dù tiến trình nghiệp vụ là một bước thực hiện đơn hay một dịng các
cơng việc được sắp xếp thỉ ứng dụng của bạn có thế cần đến các thành phần
đế thực thi các luật nghiệp vụ (business lilies) và thi hành các nhiệm vụ của
chúng. Ví dụ, bạn có thể cần phải thi hành các chức năng tính tổng giá trị của
hàng hóa được đặt thêm vào đó phí vận chuyển cần thiết. Các thành phần
7
business (business components) thực hiện xử lý logic các nhiệm vụ của ứng
dụng.
Service Agents
Khi thành phần nghiệp vụ cần phái sử dụng các chức năng được cung cấp
trong các dịch vụ ớ bên ngồi, bạn có thể cần phải lập trình để quán lý việc
kết nối tới các dịch vụ riêng lẻ đó. Ví dụ, thành phần xử lý nghiệp vụ cùa ứng
dụng bán hàng có the sứ dụng một Service Agent (tạm dịch là “một phần tứ
cung cấp dịch vụ”) để quán lý việc kết nối tới dịch vụ chứng thực thẻ thanh
toán rồi sử dụng service agent khác đe xử lý việc trao đối thông tin với dịch
vụ vận chuyển. Các service agent tách việc gọi dịch vụ bên ngồi ra khỏi ứng
dụng cúa bạn và có thổ hồ trợ thêm vài dịch vụ như chuyến đối cơ bán định
dạng cúa dữ liệu do dịch vụ bên ngoài cung cấp và định dạng mà ứng dụng
của bạn cần.
Service interfaces
Đe đưa các logic nghiệp vụ ra thành một dịch vụ (đổ ứng dụng cho bên
ngồi có thê sử dụng), ta phải tạo ra các giao diện dịch vụ hồ trợ các thỏa
thuận trao đổi thông tin (trao đổi thông điệp, định dạng, giao thức, bảo mật,
ngoại lệ, ...). Ví dụ: dịch vụ chứng thực thè thanh toán phái cung cấp một
giao diện dịch vụ để mô tả các chức năng mà nó cung cấp và các cách thức
cần thiết đe gọi nó. Có the hiếu các giao diện dịch vụ như là phần giao tiếp
bên ngoài của các nghiệp vụ.
Data access logic component
Đa phần các ứng dụng và dịch vụ đều cần truy xuất đến ít nhất một kho dữ
liệu nào đó trong tiến trình xử lý nghiệp vụ. Ví dụ: ứng dụng bán hàng cần lấy
8
dữ liệu về hàng hóa từ cơ sở dừ liệu để hiện thị thông tin của sản phẩm cho
người dùng, rồi nó lại cần thêm dừ liệu về đơn hàng vào cơ sớ dữ liệu khi
người dùng cần đặt một đơn hàng.
Business Entities:
Các úng dụng đều cần truyền dữ liệu giữa các thành phần bên trong nó. Ví
dụ: danh sách các sán phẩm phải được truyền từ Data access logic
components đên User interfaces đê danh sách đó có thê hiên thị ra cho người
sử dụng. Dữ liệu được dùng để đặc tả cho các thực thể nghiệp vụ thực như là
hàng hóa và đơn hàng. Các thực thê nghiệp vụ sử dụng trong ứng dụng
thường là các cấu trúc dữ liệu như Dataset, DataReader hay dòng XML
(Extensible Markup Language) hoặc có thể là một lớp (class) mơ tã thực the
dữ liệu mà ứng dụng phải làm việc như là hàng hóa hay đơn hàng.
Componentsfor security, operational management and communication
ứng dụng có thể cần đến các thành phần để thực hiện việc quản lý ngoại
lệ, xác thực người dùng, trao đối thông tin với các dịch vụ hay ứng dụng khác.
1.2.2.2 Dạng tổng quát
Trên đây là các thành phần trong mô hình N-tier do Microsoft đề xuất, đây
khơng phái là tất cả các thành phần cần có trong một ứng dụng N-tier nhưng
đồng thời một ứng dụng N-tier cũng không nhất thiết phải xây dựng đầy đủ
tất cả các thành phần này. Việc xây dựng hay không xây dựng một thành phần
nào đó cịn tùy thuộc vào thực tế ứng dụng có cần đến nó hay khơng. Tuy
nhiên một ứng dụng được viết theo kiến trúc N-tier đâm báo ít nhất các tier
dạng tống quát sau đây:
Presentation tier:
9
Tầng này, như đã nói, sẽ đàm nhiệm việc giao tiếp với người sử dụng. Tại
đây, ta sẽ thiết kế các Form (Windows), các trang web với các điều khiến đế
cho phép người dùng tương tác với người sừ dụng
Business Process tier:
Tầng này nhận dữ liệu và các yêu cầu chuyển xuống từ tầng presentation
rồi thực hiện việc kiểm định dữ liệu, xử lý nghiệp vụ, gọi các dịch vụ của tầng
data access đe thực thi truy xuất với nguồn dừ liệu (nếu can thiết). Trong
trường hợp có dữ liệu trà về từ data access, tầng buseness có thể thực hiện
việc chuyên đôi định dạng của dữ liệu này sang thành dạng mà tâng
presentation mong muốn.
Data access tier:
Tầng data access làm nhiệm vụ truy xuất để ghi dữ liệu vào nguồn dữ liệu
hoặc lấy dữ liệu ra từ nguồn dừ liệu. Nguồn dừ liệu có thế ở nhiều dạng khác
nhau như cơ sớ dữ liệu, dừ liệu từ dịch vụ hoặc các ứng dụng bên ngoài, hệ
thống flic, dừ liệu dạng XML, ... với mồi dạng nguồn dừ liệu khác nhau. Data
access cần sử dụng các phương thức truy cập thích hợp đê cung cấp các chức
năng truy xuất ở mức ứng dụng đen nguồn dữ liệu. Các chức năng này sẽ
được business process sứ dụng khi cần.
Các chức năng thường thấy ớ data access là: Tạo mới các bản ghi (create,
insert), lấy các bản ghi (read, select), cập nhật - sửa dữ liệu (update), xóa dữ
liệu (delete). Đơi khi, người ta gọi tắt nhóm các chức năng này là các chức
năng “CRUID”.
Nhìn chung, các tầng nêu trên là các tầng cốt lõi, căn bán để tạo nên một
ímg dụng theo kiến trúc N-tier. Nguyên tắc chung của N-ticr là các tầng được
10
định nghĩa về mặt logic, có tính độc lập tương đối với nhau. Các chức năng ở
tầng trên có thế gọi, sử dụng chức năng cùa các lớp cùng tầng hoặc tầng dưới
mà khơng cần biết là ở đó chúng được xứ lý như thế nào. Cái mà ta quan tâm
là phái truyền cho tầng dưới cái gì và SC nhận được kết quả gi ở định dạng nào
mà thôi.
Các tâng cùa một ứng dụng có thê triên khai trong ứng dụng đó hoặc triên
khai trong các đơn vị chứa riêng lẻ như file EXE, DLL hay có khi là triển khai
thành một ứng dụng hay hệ thống khác. Mỗi tầng, ta có the lại chia nhỏ nhiệm
vụ của chúng thành các tầng nhỏ hơn (như trong mơ hình mà Microsoft đã
nêu) đế tăng tính độc lập giữa các tầng và tăng hiệu suất xứ lý.
1.2.3 Android
Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành
cho các thiết bị di động có màn hình cám ứng như điện thoại thơng
minh và máy tính bâng. Ban đầu, Android được phát triển bởi Tồng công ty
Android, với sự hồ trợ tài chính từ Google và sau này được chính Google mua
lại vào năm 2005. Android ra mắt vào năm 2007 cùng với tuyên bố thành
lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần
cứng, phần mềm, và viễn thông với mục tiêu đấy mạnh các tiêu chuấn mớ cho
các thiết bị di động. Chiếc điện thoại đầu tiên chạy Android được bán vào
tháng 10 năm 2008.
Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép
Apache. Chính mã nguồn mớ cùng với một giấy phép khơng có nhiều ràng
buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình
viên nhiệt huyết được điều chinh và phân phối Android một cách tự do. Ngồi
ra, Android cịn có một cộng đồng lập trình viên đông đảo chuyên viết các
ứng dụng đề mở rộng chức năng của thiết bị, bàng một loại ngôn ngữ lập
11
trinh Java có sửa đổi. Vào tháng 10 năm 2012, có khống 700.000 ứng dụng
trên Android, và số lượt tái ứng dụng từ Google Play, cứa hàng ứng dụng
chính của Android, ước tính khoảng 25 tỳ lượt.
Những yếu tố này đã giúp Android trớ thành nền táng điện thoại thông
minh phổ biến nhất thế giới, vượt qua Symbian vào quý 4 năm 2010, và được
các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề,
có khả năng tinh chinh, và giá rẻ chạy trên các thiết bịcơng nghệ cao thay vì
tạo dựng từ đầu. Kết quá là mặc dù được thiết kế để chạy trên điện thoại và
máy tính bảng. Android đã xuất hiện trênTV, máy chơi game và các thiết bị
điện tử khác. Bản chất mở của Android cũng khích lệ một đội ngũ đông đảo
lập trinh viên và những người dam mê sử dụng mã nguồn mở đe tạo ra những
dự án do cộng đồng quàn lý. Những dự án này bổ sung các tính năng cao cấp
cho những người dùng thích tìm tịi hoặc đưa Android vào các thiết bị ban
đầu chạy hệ điều hành khác.
Android chiếm 75% thị phần điện thoại thơng minh trên tồn thế giới vào
thời điếm q 3 năm 2012, với tổng cộng 500 triệu thiết bị đã được kích hoạt
và 1,3 triệu lượt kích hoạt mồi ngày. Sự thành cơng của hệ điều hành cũng
khiến nó trở thành mục tiêu trong các vụ kiện liên quan đến bằng phát minh,
góp mặt trong cái gọi là "cuộc chiến điện thoại thông minh" giữa các công ty
công nghệ.
Lịch sử hệ điều hành Android
Tổng công ty Android (Android, Inc.) được thành lập tại Palo Alto,
California vào tháng 10 năm 2003 bới Andy Rubin (đồng sáng lập công ty
Danger), Rich Miner (đồng sáng lập Tổng công ty Viễn thông Wildfire), Nick
Sears (từng là Phó giám đốc T-Mobile), và Chris White (trướng thiết kế và
giao diện tại WebTV) để phát triển, theo lời của Rubin, "các thiết bị di động
12
thơng minh hơn có thể biết được vị trí và sờ thích cúa người dùng". Dừ những
người thành lập và nhân viên đều là những người có tiếng tăm, Tống công ty
Android hoạt động một cách âm thầm, chi tiết lộ rằng họ đang làm phần mềm
dành cho điện thoại di động. Trong năm đó, Rubin hết kinh phí. Stcvc
Perlman, một người bạn thân cúa Rubin, mang cho ông 10.000 USD tiền mặt
nhưng từ chối tham gia vào công ty.
Google mua lại Tổng công ty Android vào ngày 17 tháng 8 năm 2005,
biến nó thành một bộ phận trực thuộc Google. Những nhân viên cùa chú chốt
của Tổng công ty Android, gồm Rubin, Miner và White, vần tiếp tục ở lại
công ty làm việc sau thương vụ này. Vào thời điếm đó khơng có nhiều thơng
tin về Tơng cơng ty, nhưng nhiều người đồn đốn rang Google dự tính tham
gia thị trường điện thoại di động sau bước đi này. Tại Google, nhóm do Rubin
đứng đầu đã phát triên một nền tảng thiết bị di động phát triển trên nền nhân
Linux. Google quàng bá nền tảng này cho các nhà sản xuất điện thoại và
các nhà mạng với lời hứa sẽ cung cấp một hệ thống uyển chuyến và có khả
năng nâng cấp. Google đã liên hệ với hàng loạt hãng phần cứng cũng như đối
tác phần mềm, bắn tin cho các nhà mạng rằng họ sẵn sàng hợp tác với các cấp
độ khác nhau.
Ngày càng nhiều suy đoán rang Google sẽ tham gia thị trường điện thoại
di động xuất hiện trong tháng 12 năm 2006. Tin tức cúa BBC và Nhật báo
phố Wall chú thích rằng Google muốn đưa công nghệ tim kiếm và các ứng
dụng của họ vào điện thoại di động và họ đang nỗ lực làm việc để thực hiện
điều này. Các phương tiện truyền thông truyền thống lẫn online cũng viết về
tin don rang Google đang phát triến một thiết bị cầm tay mang thương hiệu
Google. Một vài tờ báo cịn nói ràng trong khi Google vẫn đang thực hiện
những bản mô tá kỹ thuật chi tiết, họ đã trình diễn sán phấm mầu cho các nhà
13
sản
xuất
điện
thoại
di
động
và
nhà
mạng.
Tháng
9
năm
2007, InfonnationWeek đăng tái một nghiên cứu cùa Evalueserve cho biết
Google đã nộp một số đon xin cấp bằng sáng chế trong lĩnh vực điện thoại di
động.
Ngày 5 tháng 11 năm 2007, Liên minh thiết bị cầm tay mở (Open Handset
Alliance), một hiệp hội bao gồm nhiều công ty trong đó có Texas
Instruments, Tập đồn Broadcom, Google, HTC, Intel,LG, Tập đoàn Marvell
Technology, Motorola, Nvidia, Qualcomm, Samsung
Electronics, Sprint
Nextel và T-Mobile được thành lập với mục đích phát triển các tiêu chuẩn
mớ cho thiết bị di động. Cùng ngày, Android cũng được ra mắt với vai trò là
sàn phàm đầu tiên cùa Liên minh, một nền tăng thiết bị di động được xây
dựng trên nhân Linux phiên bán 2.6. Chiếc điện thoại chạy Android đầu tiên
được bán ra là HTC Dream, phát hành ngày 22 tháng 10 năm 2008. Biếu
trưng cùa hệ điều hành Android mới là một con rôbốt màu xanh lá cây do
hãng thiết ke Irina Blok tại California vẽ.
Từ năm 2008, Android đã trải qua nhiều lần cập nhật để dần dần cài tiến
hệ điều hành, bố sung các tính năng mới và sửa các lỗi trong những lần phát
hành trước. Mồi bản nâng cấp được đặt tên lần lượt theo thứ tự bảng chừ cái,
theo tên cùa một món ăn tráng miệng; ví dụ như phiên băn 1.5 Cupcake (bánh
bơng lan nhỏ có kem) tiếp nối bằng phiên bản 1.6 Donut (bánh vòng). Phiên
bản mới nhất là 4.2 Jelly Bean (kẹo dẻo). Vào năm 2010, Google ra mắt loạt
thiết bị Nexus—một dòng sản phẩm bao gồm điện thoại thơng minh và máy
tính bảng chạy hệ điều hành Android, do các đối tác phần cứng sàn xuất. HTC
đã hợp tác với Google trong chiếc điện thoại thông minh Nexus đau
tiên,[36] Nexus One. Ke từ đó nhiều thiết bị mới hơn đã gia nhập vào dòng
sán phẩm này, như điện thoại Nexus 4 và máy tính bảng Nexus 10, lần lượt
14
do LG và Samsung sản xuất. Google xem điện thoại và máy tính bảng Nexus
là những thiết bị Android chú lực của mình, với những tính năng phần cứng
và phần mềm mới nhất của Android.
Giao diện hệ điểu hành Android
Giao diện người dùng của Android dựa trên nguyên tắc tác động trực
tiếp, sử dụng cám ứng chạm tương tự như những động tác ngoài đời thực như
vuốt, chạm, kéo dãn và thu lại để xử lý các đối tượng trên màn hình. Sự phàn
ứng với tác động cùa người dùng diễn ra gần như ngay lập tức, nhằm tạo ra
giao diện cám ứng mượt mà, thường dùng tính năng rung của thiết bị đế
tạo phản hồi rung cho người dùng. Những thiết bị phần cứng bên trong
như gia tốc kế, con quay hồi chuyến và cảm biến khoáng cách được một số
ímg dụng sử dụng đề phán hồi một sổ hành động khác của người dùng, ví dụ
như điều chinh màn hình từ chế độ hiến thị dọc sang chế độ hiển thị ngang tùy
theo vị trí của thiết bị, hoặc cho phép người dùng lái xe đua bằng xoay thiết
bị, giống như đang điều khiến vô-lăng.
Các thiết bị Android sau khi khởi động sẽ hiển thị màn hình chính, điểm
khởi đầu với các thơng tin chính trên thiết bị, tương tự như khái
niệm desktop (bàn làm việc) trên máy tính đế bàn. Màn hình chính Android
thường gồm nhiều biếu tượng (icon) và tiện ích (widget); biếu tượng ứng
dụng sẽ mớ ứng dụng tương ứng, cịn tiện ích hiển thị những nội dung sống
động, cập nhật tự động như dự báo thời tiết, hộp thư của người dùng, hoặc
những mấu tin thời sự ngay trên màn hình chính. Màn hình chính có thề gồm
nhiều trang xcm được bằng cách vuốt ra trước hoặc sau, mặc dù giao diện
màn hình chính cùa Android có the tùy chinh ớ mức cao, cho phép người
dùng tự do sắp đặt hình dáng cũng như hành vi của thiết bị theo sở thích.
Những ứng dụng do các hãng thứ ba có trên Google Play và các kho ứng dụng
15
khác còn cho phép người dùng thay đồi "chủ đề" của màn hình chính, thậm
chí bẳt chước hình dáng của hệ điều hành khác như Windows Phone chẳng
hạn. Phần lớn nhũng nhà sản xuất, và một số nhà mạng, thực hiện thay đồi
hình dáng và hành vi cùa các thiết bị Android của họ đe phân biệt với các
hãng cạnh tranh.
Ớ phía trên cùng màn hình là thanh trạng thái, hiến thị thơng tin về thiết bị
và tình trạng kết nối. Thanh trạng thái này có thể "kéo" xuống để xem màn
hình thơng báo gồm thơng tin quan trọng hoặc cập nhật của các ứng dụng,
như email hay tin nhan SMS mới nhận, mà không làm gián đoạn hoặc khiến
người dùng cảm thấy bất tiện. Trong các phiên bản đời đầu, người dùng có
thê nhân vào thơng báo đê mở ra ứng dụng tương ứng, vê sau này các thông
tin cập nhật được bổ sung thcoe tính năng, như có khả năng lập tức gọi ngược
lại khi có cuộc gọi nhỡ mà không cần phải mở ứng dụng gọi điện ra. Thơng
báo sẽ ln nằm đó cho đến khi người dừng đã đọc hoặc xóa nó đi.
ưng dụng
Android có lượng ứng dụng của bên thứ ba ngày càng nhiều, được chọn
lọc và đặt trên một cứa hàng ứng dụng như Google Play hay Amazon
AppStore để người dùng lấy về, hoặc bằng cách tải xuống rồi cài đặt tập
tin APK từ trang web khác. Các ứng dụng trên Cửa hàng Play cho phép người
dùng duyệt, tái về và cập nhật các ứng dụng do Google và các nhà phát triển
thứ ba phát hành. Cửa hàng Play được cài đặt sẵn trên các thiết bị thỏa mãn
điều kiện tương thích cúa Google, úng dụng sẽ tự động lọc ra một danh sách
các ứng dụng tương thích với thiết bị của người dùng, và nhà phát triển có thể
giới hạn ứng dụng của họ chi dành cho những nhà mạng cố định hoặc những
quốc gia cố định vi lý do kinh doanh. Neu người dùng mua một ứng dụng mà
họ cảm thấy không thích, họ được hồn trả tiền sau 15 phút kế từ lúc tái về, và
16
một vài nhà mạng cịn có khâ năng mua giúp các ứng dụng trên Google Play,
sau đó tính tiền vào trong hóa đơn sứ dụng hàng tháng cùa người dùng. Đến
tháng 9 năm 2012, có hơn 675.000 ứng dụng dành cho Android, và số lượng
ứng dụng tái về từ Cửa hàng Play ước tính đạt 25 tý.
Các ứng dụng cho Android được phát triển bằng ngôn ngữ Java sử
dụng Bộ phát triển phần mềm Android (SDK). SDK bao gồm một bộ đầy đù
các công cụ dùng đề phát triển, gồm có cơng cụ gỡ lỗi, thư viện phần
mềm, bộ giá lập điện thoại dựa trên QEMƯ, tài liệu hướng dần, mã nguồn
mầu, và hướng dẫn từng bước. Môi trường phát triển tích hợp (IDE) được hỗ
trợ chính thức là Eclipse sử dụng phần bố sung Android Development Tools
(ADT). Các công cụ phát triến khác cũng có sẵn, gồm có Bộ phát triên
gốc dành cho các ứng dụng hoặc phần mở rộng viết bằng c hoặc
C++, Google App Inventor, một môi trường đồ họa cho những nhà lập trình
mới bắt đầu, và nhiều nền tảng ứng dụng web di động đa nen tàng phong phú.
Để vượt qua những hạn chế khi tiếp cận các dịch vụ của Google do
sự Kiếm duyệt Internet tại Cộng hòa Nhân dân Trung Hoa, các thiết bị
Android bán tại Trung Quốc lục địa thường được điều chình chi được sử dụng
dịch vụ đã được duyệt.
Phát triển
Android được Google tự phát triến riêng cho đến khi những thay đơi và
cập nhật đã hồn thiện, khi đó mã nguồn mới được công khai. Mã nguồn này,
nếu không sửa đối, chí chạy trên một số thiết bị. thường là thiết bị thuộc
dịng Nexus. Có nhiều thiết bị có chứa những thành phần được giữ bản quyền
do nhà sản xuất đặt vào thiết bị Android cúa họ.
17
Linux
Android có một hạt nhân dựa trên nhân Linux phiên bản 2.6, kể từ
Android 4.0 Icc Cream Sandwich (bánh ngọt kẹp kem) trớ về sau, là phiên
bàn 3.X, với middleware, thư viện và API viết bang c, còn phần mềm ứng
dụng chạy trên một nền tảng ứng dụng gồm các thư viện tương thích với Java
dựa trên Apache Harmony. Android sứ dụng máy áo Dalvik với một trình
biên dịch động đề chạy 'mã dex' (Dalvik Executable) cùa Dalvik, thường được
biên dịch sang Java bytecode. Nền tảng phần cứng chính của Android là kiến
trúc ARM. Người ta cũng hỗ trợ x86 thông qua dự án Android x86, vàGoogle
TV cũng sừ dụng một phiên bàn x86 đặc biệt của Android.
Nhân Linux dùng cho Android đã được Google thực hiện nhiều thay đối
về kiến trúc so với nhân Linux gốc. Android khơng có sằn X Window
Systemcũng không hỗ trợ các thư viện GNU chuấn, nên việc chuyển các ứng
dụng hoặc thư viện Linux có sẵn sang Android rất khó khăn. Các ứng dụng
c
đơn gián và SDL cũng được hồ trợ bằng cách chèn những đoạn shim Java và
sử dụng tương tự JNI, như khi người ta chuyển Jagged Alliance 2sang
Android.
Một số tính năng cũng được Google đóng góp ngược vào nhân Linux,
đáng chú ý là tính năng qn lý nguồn điện có tên wakelock, nhưng bị những
người lâp trình chính cho nhân từ chổi vì họ cảm thấy Googlc khơng có định
sẽ tiếp tục bão trì đoạn mã do họ viết. Google thơng báo vào tháng 4 năm
2010 rằng họ sẽ thuê hai nhận viên đe làm việc với cộng đồng nhân
Linux, nhưng Greg Kroah-Hartman, người báo trì nhân Linux hiện tại cùa
nhánh ổn định, đã nói vào tháng 12 năm 2010 ràng ông ta lo ngại rang Google
không còn muốn đưa những thay đồi của mình vào Linux dịng chính