Tải bản đầy đủ (.pdf) (89 trang)

Xây dựng hệ thống nhận dạng chữ số và tính tiền trên hoá đơn

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

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



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



×