1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án tốt NGHIỆP NGÀNH kỹ THUẬT PHẦN mềm xây DỰNG ỨNG DỤNG NHẮC NHỞ TRÊN nền TẢNG IOS

77 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ Án Tốt Nghiệp Ngành Kỹ Thuật Phần Mềm Xây Dựng Ứng Dụng Nhắc Nhở Trên Nền Tảng iOS
Tác giả Đinh Thị Huyền
Người hướng dẫn ThS. Nguyễn Thái Cường
Trường học Trường Đại học Công nghiệp Hà Nội
Chuyên ngành Kỹ Thuật Phần Mềm
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 77
Dung lượng 1,21 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • 1.1. Giớithiệuchung (11)
  • 1.2. Cơsở lý thuyết (11)
    • 1.2.1. Tổngquanvềlập trình di động (11)
    • 1.2.2. Giớithiệucông cụlậptrìnhXcode (13)
    • 1.2.3. Ngônngữ lập trình Swift (14)
    • 1.2.4. Mộtsốframework tronglập trình Swift (16)
    • 1.2.5. NoSQL Database vàRealmMobileDatabase (17)
    • 1.2.6. Tổngquanvềmô hìnhMVVM (24)
  • 2.1. Khảosát người dùng (28)
  • 2.2. Giớithiệuvềhệ thống (29)
  • 2.3. Phântíchyêu cầu (29)
    • 2.3.1. Về hệthống (29)
    • 2.3.2. Về người sửdụng (30)
    • 2.3.3. Yêu cầu vềchứcnăng (30)
  • 2.4. Thiết kếhệ thống (31)
    • 2.4.1. Mô hìnhhóaUsecase (31)
    • 2.4.2. Mô tảchi tiết cácUsecase (35)
    • 2.4.3. Biểuđồ lớp hệthống (56)
  • 2.5. Thiết kế giaodiện (57)
    • 2.5.1. GiaodiệnQuảnlý nhắcnhở (57)
    • 2.5.2. GiaodiệnQuảnlý loạinhắcnhở (63)
    • 2.5.3. GiaodiệnThống kê (65)
    • 2.5.4. GiaodiệnĐăngnhập (66)
    • 2.5.5. GiaodiệnĐồng bộ (67)
    • 2.5.6. GiaodiệnThông báo (68)
  • 2.6. Thiếtkếcơ sở dữliệu (69)
  • 3.1. Càiđặt môi trường (70)
  • 3.2. Càiđặt chươngtrình (71)
  • 3.3. Kếtquảthuđược (73)
  • 3.4. Kếtquảkiểm thử (73)

Nội dung

Nhờ vàosựphát triển các ứng dụng vô cùng phong phú và hiệu quả của điện thoạithôngminh đã tạo ra những tiện ích của nó giúp con người giải quyết nhữngkhókhăn, dần trở thành một công cụ k

Trang 1

-ĐỒ ÁN TỐT NGHIỆPNGÀNHKỸTHUẬTPHẦNMỀM

XÂYDỰNG ỨNGDỤNGNHẮC NHỞTRÊN NỀNTẢNGIOS

GVHD:ThS.NguyễnTháiCường

HàNội–Năm 2022

Trang 3

DANHMỤCCÁCKÝHIỆU,CÁC CHỮ VIẾT TẮT i

DANHMỤCHÌNH VẼ ii

DANHMỤCBẢNG BIỂU iii

LỜI CẢMƠN iv

MỞĐẦU 1

CHƯƠNG1.TỔNGQUANVỀNỘI DUNGNGHIÊNCỨU 3

1.1 Giớithiệuchung 3

1.2 Cơsở lý thuyết 3

1.2.1 Tổngquanvềlập trình di động 3

1.2.2 Giớithiệucông cụlậptrìnhXcode 5

1.2.3 Ngônngữ lập trình Swift 6

1.2.4 Mộtsốframework tronglập trình Swift 8

1.2.5 NoSQL Database vàRealmMobileDatabase 9

1.2.6 Tổngquanvềmô hìnhMVVM 16

CHƯƠNG2 PHÂNTÍCHVÀTHIẾTKẾHỆ THỐNG 20

2.1 Khảosát người dùng 20

2.2 Giớithiệuvềhệ thống 21

2.3 Phântíchyêu cầu 21

2.3.1 Về hệthống 21

2.3.2 Về người sửdụng 22

2.3.3 Yêu cầu vềchứcnăng 22

2.4 Thiết kếhệ thống 23

2.4.1 Mô hìnhhóaUsecase 23

2.4.2 Mô tảchi tiết cácUsecase 27

2.4.3 Biểuđồ lớp hệthống 46

2.5 Thiết kế giaodiện 47

2.5.1 GiaodiệnQuảnlý nhắcnhở 47

2.5.2 GiaodiệnQuảnlý loạinhắcnhở 53

2.5.3 GiaodiệnThống kê 55

2.5.4 GiaodiệnĐăngnhập 56

Trang 4

2.5.5 GiaodiệnĐồng bộ 57

2.5.6 GiaodiệnThông báo 58

2.6 Thiếtkếcơ sở dữliệu 59

CHƯƠNG3 KẾTQUẢ 60

3.1 Càiđặt môi trường 60

3.2 Càiđặt chươngtrình 61

3.3 Kếtquảthuđược 63

3.4 Kếtquảkiểm thử 63

KẾTLUẬN 66

TÀI LIỆUTHAMKHẢO 67

Trang 6

Hình1.1:Biểuđồcáccôngnghệcơsởdữliệumớigiai đoạn1994-2014 14

Hình1.2:Bảngsosánhtốc độcủaRealmso với các CSDLkhác 15

Hình1.3: MôhìnhMVVM 19

Hình2.1: Biểuđồ Usecasechính 24

Hình2.2: UsecaseQuản lýnhắcnhở 25

Hình2.3: UsecaseQuản lýloại nhắcnhở 25

Hình2.4: UsecaseThốngkê 26

Hình2.5: UsecaseĐồng bộ 26

Hình2.6: Biểuđồ trình tự Quản lý nhắcnhở 31

Hình2.7: Biểuđồ trình tự Quảnlý loạinhắcnhở 35

Hình2.8: Biểuđồ trình tự Thốngkê 38

Hình2.9: Biểuđồ trình tự Đăngnhập 41

Hình2.10: Biểuđồ trìnhtự Đồng bộdữ liệu 44

Hình2.11: Biểuđồ lớp hệthống 46

Hình2.12: Giaodiệnmàn hìnhTrangchủ 47

Hình2.13: GiaodiệnHiển thị tất cả danhsáchnhắcnhở 48

Hình2.14: GiaodiệnHiển thị danh sách nhắcnhởtheo ngày 49

Hình2.15: GiaodiệnThêm nhắcnhở 50

Hình2.16: GiaodiệnChitiết nhắcnhở,Sửa,Xóanhắcnhở 51

Hình2.17: GiaodiệnTìm kiếm nhắcnhở 52

Hình2.18: GiaodiệnHiện thị nhắcnhởtheoloại 53

Hình2.19: GiaodiệnThêm,Sửaloại nhắc nhở 54

Hình2.20: GiaodiệnHiện thị thống kê 55

Hình2.21: GiaodiệnĐăng nhập 56

Hình2.22: GiaodiệnĐồng bộ dữ liệu 57

Hình2.23: GiaodiệnThông báo 58

Hình2.24:Cơ sởdữ liệu 59

Hình3.1: Phầnmềm Xcode trênAppstore 60

Hình3.2: Cửasổterminalkhi đangcàiđặthomebrew 61

Hình3.3: Generate file.xcodeproj thànhcông 61

Hình3.4: Giao diệnprojecttrênXcode 62

Hình3.5: Ứngdụng đượcbuild thành côngtrênthiết bịsimulator 63

Trang 7

Bảng2.1:MôtảusecaseQuản lýnhắc nhở 27

Bảng2.2:MôtảusecaseQuản lýloạinhắcnhở 31

Bảng2.3:Mô tảusecaseThốngkê 36

Bảng2.4:Mô tảusecase Đăng nhập 39

Bảng2.5:Mô tảusecase Đồngbộ 42

Bảng2.6:Mô tảusecaseThôngbáo 45

Bảng3.1: Kiểmthửcác chứcnăng củaứng dụng 63

Trang 8

Trong suốt thời gian học tập và thực hiện đồ án tốt nghiệp em luônnhậnđược sự hướng dẫn nhiệt tình từ phía nhà trường và các thầy cô giáo Vìthế,lời đầu tiên em xin chân thành cảm ơn trường Đại học Công nghiệp HàNội,thầycôgiáokhoaCôngnghệthôngtinđãtạođiềukiện thuậnlợivàtruyềndạykiếnthứcchoemtrongthờigianquađểemhoànthànhđềtàimộtcác

htốt nhất Và hơn hết em xin bày tỏ lòng biết ơn sâu sắc nhất tới thầy giáohướng dẫnThS Nguyễn Thái Cườngđã tận tình giúp đỡ, định hướng em

rấtnhiềut r o n g s u ố t q u á t r ì n h t ì m h i ể u n g h i ê n c ứ u v à h o à n t h à

n h đ ồ á n t ố t nghiệp

Khi thực hiện nghiên cứu đề tài, em đã cố gắng hoàn thành tốt nhấtbáocáo đồ án tốt nghiệp Tuy nhiên kiến thức chuyên ngành của bản thâncònnhiều hạn chế Vì vậy trong báo cáo không tránh khỏi những thiếu sót,

em rấtmong nhận được sự đóng góp của tất cả các thầy cô giáo để đồ án củaemđượcđầyđủ vàhoànchỉnhhơn

Emxinchânthànhcảmơn!

Trang 9

để nhắc việc là một giải pháp thiết yếu của mỗi cá nhân giúp choviệcquảnlýcôngviệchàngngày củachúngtađượctốtvàhiệuquảhơn.

Từ nhu cầu thực tế trên nên em đã thực hiện đề tài “Xây dựng ứngdụngquản lý chi tiêu trên nền tảng Android”, giúp người dùng lên kế hoạchcôngviệcvà đặt thông báo nhắcnhởđểthựchiện cáccôngviệc đó đúng hẹn

Trang 10

Ứngdụngmớixây dựngnàysẽđáp ứngcácchứcnăngnhư sau:

Trang 11

CHƯƠNG1.TỔNGQUANVỀNỘIDUNGNGHIÊN CỨU

1.1 Giớithiệuchung

Hiện nay, việc sắp xếp công việc một cách khoa học hiệu quả khôngbịchồng chéo, đúng thời gian, tiến độ là vô cùng quan trọng khi hằng ngàyphảiđối mặt với khối lượng công việc lớn Vì vậy, cần có giải pháp giúp choviệcquản lý công việc của con người được dễ dàng và hiệu quả hơn Nhờ vàosựphát triển các ứng dụng vô cùng phong phú và hiệu quả của điện thoạithôngminh đã tạo ra những tiện ích của nó giúp con người giải quyết nhữngkhókhăn, dần trở thành một công cụ không thể thiếu của con người Từ thực

1.2.1.1 HybridApp

Hybrid App là ứng dụng kết hợp của cả Mobile Web App vàNativeApp Theo đó, các phần cơ bản của ứng dụng vẫn viết bằng ngôn ngữweb,nhưngđượcđặttrongnativecontainer,nên vẫncóthểđưalêncácAppStore

Trang 12

o Hiệunăngchậm

o Không ổn định do khó debug Framework sẽ dịch code

thànhcode native sửa lỗi khá khó khăn không biết được dịch như thếnào

o Xây dựng ứng dụng cần dùng các phần mềm riêng biệt theohệđiều hành (dùng Xcode trên Mac để phát triển ứng dụngIOS,AndroidStudio đểpháttriểnứngdụngAndroid)

Trang 13

 Ưuđiểm:

o CóthểchạytrêntấtcảtrìnhduyệtcủamobilehỗtrợphiênbảnHTML vàjavascript

o Khôngcầncài đặttrênmáy miễnlàmáycótrình duyệtweb

o Mộtphiênbảnduynhấtchotấtcả,nêngiảmchiphívàthờigianchopháttriển,bảotrì,cũngnhưnângcấp saunày

Trang 14

ngày21tháng6năm2021.XcodeđượcpháthànhmiễnphíchongườidùngMac downloadthông qua chợứngdụng AppStore.

1.2.3 NgônngữlậptrìnhSwift

Swiftl à m ộ t n g ô n n g ữ l ậ p t r ì n h h ư ớ n g đ ố i t ư ợ n g d à n h c h o v i ệ c p h

á t triển iOS và macOS, watchOS, tvOSđ ư ợ c g i ớ i t h i ệ u bởi Apple tạihộinghị WWDC

2014 Swift được mong đợi sẽ tồn tại song song cùng Objective-C, ngôn ngữ lập trìnhhiện tại dành cho các hệ điều hành của Apple Swiftđược thiết kế để hoạt động với các frameworkCocoa và Cocoa Touch củaApple và phần lớn mã Objective-C Nó được biêndịch với trình biên dịchLLVM và đã được đưa vào Xcode kể từ phiên bản 6,phát hành năm 2014.Trên các nền tảng củaApple,nósửdụngthưviệnruntimeObjective-Cc h o phép mã C, Objective-C, C++ và Swift cùngchạy trongmộtchươngtrình

Appled ự đ ị n h S w i f t h ỗ t r ợ n h i ề u k h á i n i ệ m c ố t l õ i

l i ê n q u a n đến Objective-C, đángchú ýlà thuhồi động,cácràng buộcphổthông,ậ p trình mở rộng và các tính năng tương tự, nhưng theo cách "an toàn hơn",giúpdễdàngbắtlỗiphầnmềmhơn.Swiftcócáctínhnănggiảiquyếtmộtsốlỗilập trình phổ biến như con trỏ rỗng cung cấp cú pháp đặc biệt để giúp tránhkim tự tháp diệt vong Swift hỗtrợ khái niệm về khả năng mở rộng giao thức,một hệ thống mở rộng có thểđược áp dụng cho các kiểu, cấu trúc và lớp, màApple khuyến khích như một

sự thay đổi thực sự trong mô hình lập trình màhọgọi là"lậptrìnhhướnggiaothức"(tương tự nhưđặcđiểm)

Swift được giới thiệu tại Worldwide Developers Conference(WWDC)2014c ủa Apple N óđ ã trải q ua quátrình n ân g cấp l ê n ph iê nb ả

n 1.2tro ng năm 2014 và nâng cấp lớn hơn cho Swift 2 tại WWDC 2015 Ban đầu, ngônngữ độc quyền,phiên bản 2.2 được được chuyển sang phần mềm nguồn mởtheo Giấy phépApache 2.0 vào ngày 3 tháng 12 năm 2015, dành cho các nềntảng của Apple

và Linux Thông qua phiên bản 3.0, cú pháp của Swift đã trảiquaquá

Trang 15

trình phát triển quan trọng, với nhóm nòng cốt làm cho sự ổn định nguồntrởthành trọng tâm trong các phiên bản sau Trong quý đầu tiên của năm2018,Swiftđã vượt quaObjective-C về mứcđộ phổ biến.

Swift 4.0, được phát hành vào năm 2017, đã giới thiệu một số thayđổiđối với một số lớp và cấu trúc tích hợp Mã được viết bằng các phiênbảntrước của Swift có thể được cập nhật bằng chức năng di chuyển được tíchhợptrongXcode

Vào tháng 3 năm 2017, chưa đầy 3 năm sau khi chính thức ra mắt,Swiftđã đứng đầu trong bảng xếp hạng TIOBE hàng tháng về các ngôn ngữlậptrình phổ biến nhất Một tài liệu 500 trang về Swift cũng được phát hànhtạiWWDC,miễnphítrêniBooksStore

 Ưuđiểm:

- Khả năng phát triển ứng dụng di động nhanh và dễ dàng: Các lập trìnhviênkhông phải mất công chạy các chương trình compiler và các chươngtrình testmột cách thường xuyên nữa, mà thay vào đó tập trung vào các phầntích hợpvới mức độ khó hơn Điều này cũng giúp tiết kiệm sức mạnh và sựhao

mòncủap h ầ n c ứ n g c h o c á c n h à p h á t t r i ể n N g o à i r a , S w i f t l à m ộ t t r o n

g n h ữ n g ngôn ngữ lập trình mang lại nhiều tính năng quan trọng như: không xảy ra lỗiarrayouto f

-b o u n d , k h ô n g c ó -b i ế n x á c đ ị n h , q u ả n l ý -b ộ n h ớ t h e o p h ư ơ n g thức tựđộng, từ đó tiết kiệm được tối đa thờig i a n h ơ n đ ể h o à n t h à n h m ộ t dựán

- Code ngắn gọn, dễ đọc, dễ hiểu: Điều này giúp cho các lập trình viêntiếtkiệm rất nhiều thời gian hoàn thành dự án, cũng như tăng hiệu quá trongquátrình bảo trì và fix các lỗi bug trong tương lai Swift kế thừa và phát huytất cảcác sức mạnh của Objective-C để lại, nên các nhà lập trình sẽ có mộtmôitrườngruntimequenthuộctuyệt vời,dễdàngquảnlý vàpháttriển

Trang 16

- Tốc độ thực thi của các đoạn mã swift nhanh: Theo apple, Swift nhanh gấp8lần python Không những nhanh, mà Swift còn rất mạnh mẽ, giúp cho các nhàlập trình có thể viếtđược những đoạn

mã nâng cao,phức tạp hơn như:generics, closures, tuples, multiple returns,iterators, các mẫu lập trình hàm cósẵnvànhiềuhơnthếnữa

- Swift có thể dùng cho tất cả các hệ điều hành của Apple phát hànhnhưmacOS,iOS, tvOS, watchOS,…

1.2.4 MộtsốframeworktronglậptrìnhSwift

1.2.4.1 UIKit

UIKit framework cung cấp một số class để tạo các tác vụ chạm based) cho giao diện người dùng, tất cả các ứng dụng iOS đều xây dựngdựatrên UIKit, nhà phát triển không thể xây dựng ứng dụng mà không sửdụngframework này UIKit cung cấp cơ sở hạ tầng cho việc vẽ các giao diệntrênmàn hình, điều khiển các sự kiện, tạo ra các thành phần giao diện củaứngdụng UIKit cũng tổ chức các ứng dụng phức tạp bằng việc quản lý nộidungứng dụng để hiện thị lên màn hình UIDynamics là 1 phần quan trọngtrongUIKitđược apple tích hợp từ năm 2007 cùng với sựxuấth i ệ n c ủ a

(touch-i O S 7 Bằng cách sử dụng UIK(touch-it Dynam(touch-ics, lập trình v(touch-iên có thể tạo ra cácview vớinhững tương tác vật lý như trọng lực, móc nối, va chạm, nảy lên(sauvachạm), giữacácđốitượngvớicácthànhphầnchính:UIDynamicItemprotocol,Dynamicbehaviors,Dynamicanimator

1.2.4.2 Coregraphics

Core graphics là một framework cấp độ thấp, dựa trên ngôn ngữ lậptrìnhC, chịu trách nhiệm điều khiển các vector đồ họa chất lượng cao, các nét vẽpath, hình ảnh, quản lý dữliệu và nhiều tác vụ khác Tất nhiên việc đơn giảnnhất và hiệu quả nhất đểtạo đồ họa trong iOS là sử dụng các hình ảnh với khảnăng hiện thị chuẩn kết hợp với việcđiều khiển của UIKit Apple khuyếnkhích

Trang 17

các nhà phát triển nên sử dụng UIKit để vẽ, bởi vì UIKit là framework ởmứcđộ cao, UIKit cũng cung cấp các thư viện, class phục vụ việc vẽ path,pattern,gradient,images, text.

1.2.4.3 Coreanimation

Coreanimationlàmộtcôngnghệchophépbạntạocáchiệuứnganimation mứccao, và hiệu quả trực quan UIKit cung cấp các animation đểxây dựng cácCore Animation Technology Nếu cần một hiệu ứng nâng caocho ứng dụngvượt khả năng của UIKit thì đó có thể là Core Animation CoreAnimationchứa Quartz Core Framework, với việc sử dụng Core Animationbạn có thểtạo ra các phân lớp các đối tượng layer như rotate (xoay), scale ( cogiãn), … Việc

sử dụng Core Animation cũng giúp bạn thực hiện các côngviệctránhsửdụng cácAPIđồ họacấpthấpnhư OPenGL ES

1.2.5 NoSQLDatabasevàRealm MobileDatabase

1.2.5.1 NoSQLDatabase

Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998 sử dụnglàmtên gọi chung cho các lightweight open source relational database (cơ sởdữliệu quan hệ nguồn mở nhỏ) nhưng không sử dụng SQL cho truy vấn.Vàonăm 2009, Eric Evans, nhân viên của Rackspace giới thiệu lại thuậtngữNoSQL trong một hội thảo về cơ sở dữ liệu nguồn mở phân tán ThuậtngữNoSQL đánh dấu bước phát triển của thế hệ database mới: distributed(phântán) và non-relational (không ràng buộc) Đây là cũng 2 đặc tính quantrọngnhất

Trang 18

 Cómộtvàilídochứngminhchosự rađờicủa NoSQL:

- Sở dĩ người ta phát triển NoSQL suất phát từ yêu cầu cần những databasecókhả năng lưu trữ dữ liệu với lượng cực lớn, truy vấn dữ liệu với tốc độ cao màkhông đòi hỏi quá nhiều về năng lực phần cứngcũng như tài nguyên hệ thốngvàtăng khảnăngchịu lỗi

- Giảiquyếtđượcmộtsố vấnđềmàrelationaldatabase khônggiảiquyếtđược

Trang 19

a Keyvalue stores

Lưu trữ kiểu key-value là kiểu lưu trữ dữ liệu NoSQL đơn giản nhấtsửdụng từ một API Chúng ta có thể nhận được giá trị cho khóa, đặt một giátrịcho một khóa, hoặc xóa một khóa từ dữ liệu Ví dụ, giá trị là ‘blob’ đượclưutrữ thì chúng ta không cần quan tâm hoặc biết những gì ở bên trong Từcáccặp giá trị được lưu trữ luôn luôn sử dụng truy cập thông qua khóa chínhvàthườngcóhiệunăngtruy cập tốt và cóthểdễdàngthu nhỏ lại

b Columnorienteddatabase

Cơ sở dữ liệu column-family lưu trữ dữ liệu trong nhiều cột trongmỗidòng với key cho từng dòng Column families là một nhóm các dữ liệuliênquan được truy cập cùng với nhau Ví dụ, với khách hàng, chúng tathườngxuyên sử dụng thông tin cá nhân trong cùng một lúc chứ không phảihóa đơncủa họ Cassandra là một trong số cơ sở dữ liệu column-family phổbiến.Ngoài ra còn có một số cơ sở dữ liệu khác như HBase, Hypertable vàAmazonDynamoDB Cassandra có thể được miêu tả nhanh và khả năng mở rộng dễdàng với các thao tácviết thông qua các cụm Các cụm không có node master,vì thế bất kỳ việc đọc và ghi nàođểu có thể được xử lý bởi bất kỳ node nàotrongcụm

c Graph database

Kiểu đồ thị này cho phép bạn lưu trữ các thực thể và quan hệ giữacácthực thể Các đối tượng này còn được gọi là các nút, trong đó có cácthuộctính.M ỗ i n ú t l à m ộ t t h ể h i ệ n c ủ a m ộ t đ ố i t ư ợ n g t r o n g ứ n g d ụ n g

Q u a n h ệ được gọi là các cạnh, có thể có các thuộc tính Cạnh có ý nghĩa địnhhướng;cácnútđượctổchứcbởicácmốiquanhệ.Cáctổchứccủađồthịchophépcác dữ liệu được lưu trữ một lần và được giải thích theo nhiều cách khác nhaudựa trên các mối quan hệ Thông thường, khichúng ta lưu trữ một cấu trúc đồthị giống như trong RDBMS, nó là một loại duy nhất của mối quan hệ.Việctăngthêmmột

Trang 20

mối quan hệ có nghĩa là rất nhiều thay đổi sơ đồ và di chuyển dữ liệu,màkhông phải là trường hợp khó khi chúng ta đang sử dụng cơ sở dữ liệu đồthị.Trong cơ sở dữ liệu đồ thị, băng qua các thành phần tham gia hoặc cácmốiquan hệlà rấtnhanh Cácmốiquan hệ giữa cácnode khôngđượctínhv à o thời gian truy vấn nhưng thực sự tồn tại như là một mối quan hệ Đi qua cácmốiquan hệ lànhanhhơnsovớitính toán chomỗi truy vấn.

d DocumentOrienteddatabases

Tài liệu là nguyên lý chính của cơ sở dữ liệu kiểu dữ liệu Dữ liệu lưutrữvà lấy ra là các tài liệu với định dạng XML, JSON, BSON,… Tài liệu miêu tảchính nó, kế thừa từ cấutrúc dữ liệu cây Có thể nói cơ sở dữ liệu tài liệu là 1phần của key-value Cơ

sở dữ liệu kiểu tài liệu như MongoDB cung cấp ngônngữ truy vấn đa dạng vàcúc trúc như là cơ sở dữ liệu như đánh index,…MộtsốcơsởdữliệutàiliệuphổbiếnmàchúngtahaygặplàMongoDB,CouchDB,Terastore, OrientDB, RavenDB

Trang 21

độ truy vấn khá chậm khi mà dữ liệu phình to ra cũng như khi mà thựchiệnphép JOIN Hơn thế nữa, với mỗi ngôn ngữ khác nhau thì việc thiếtlậpSQLitecóthểtốn khánhiềucôngsức.

Trên cơ sở đó, Realm Mobible Database ra đời với mục đích cung cấpcholập trình viên một lựa chọn có thể thay thế cho SQLite hiện nay nhưngvẫnđảmbảomọichức năngcần thiết củamột CSDLthôngthường:

 Realm Moblie Database ( gọi tắt là RMD) là một NoSQL ( NotOnlySQL) Nó hướng tới việc xây dựng một ứng dụng theo hướngOfflinedatabase first Điều này có nghĩa là ứng dụng vẫn có thể hoạtđộng dùcho không có kết nối mạng, dữ liệu sẽ được lưu trực tiếp trênthiết bị,ngườidùng vẫncóthểtiến hànhmọiviệcmột cáchthuậnlợi

 RMD lưu trữ dữ liệu dưới dạng Object và nó cũng cung cấp các hàmvàphương thức để có thể truy vấn dữ liệu mà không cần thông qua câutruyvấnSQL

 Phần core của RMD được viết bằng C++ và là mã nguồn mở,

ngườidùngcóthểtùy chỉnh lại theoý muốncánhân

Cross-flatformvàđãcóphiênbảnchocácngônngữsau:Swift,Java,Objective– C,Xamarin, ReactNative

 Cungcấp miễnphí

Realmđơngiảnhóakiếntrúcứngdụngcủabạntrongkhicungcấpchobạn các tính năng rất mạnh mẽ Nền tảng Realm thực sự được tạo thành từhaithànhphầnchính.CơsởdữliệuRealmvàMáychủđốitượngRealm.Theot

ài liệu chính thức, hai thành phần này hoạt động cùng nhau để tự động đồngbộ hóa dữ liệu cho phép nhiềutrường hợp sử dụng khác nhau, từ ứng dụngngoạituyếnđến tích hợpphụtrợphức tạp

Một trong những yếu tố chính khiến Realm trở nên đặc biệt là thực tế lànóđượcxâydựngchonhucầupháttriểndiđộnghiệnđạicủachúngtôivàrất

Trang 22

nhiều giải pháp chúng tôi sử dụng không thực sự được thiết kế cho điệnthoại,máytính bảnghoặc thiếtbị đeođược:

Hình1.1:Biểuđồ cáccôngnghệcơsởdữliệumớigiai đoạn1994-2014

 ĐiểmmạnhcủaRealmmobiledatabase:

- Dễ cài đặt và dễ sử dụng: RMD khá dễ cài đặt và sử dụng Đối với IOS,cóthể sử dụng thư viện quản lý CocoaPods để cài đặt và sử dụng Để sửdụngRMD,l ậ p t r ì n h v i ê n c h ỉ c ầ n t ạ o m ộ t c l a s s n h ư b ì n h t h ư ờ n g , v à k ế

Trang 23

- Realm hỗ trợcustom migrating- việc cập nhật CSDL, thêm/bớt các

bảng,trường đều được hỗ trợ một cách thuận tiện, đơn giản nhất bằng cách kếthừalớpRealmMigration

- Các lớp của Realm hỗ trợ nhiều trong việc tránh lỗi Null PointerException.Khit r u y v ấ n k h ô n g c ó k ế t q u ả , đ ố i t ư ợ n g R e a l m R e s u l t s đ

ư ợ c t r ả v ề s ẽ l à rỗng,và phương thứcsize()sẽchora0

 ĐiểmyếucủaRMD:

Trang 24

sẽ không biết được các thông tin gì về các tầngtrêncủanó.

Trang 25

Mộtđịnhnghĩakhác vềViewModeltrongMVVM:

ViewModel sẽ đảm nhận công việc đồng bộ dữ liệu từ Model lênView.Mối quan hệ giữa View và View-Model là View sẽ được ánh xạ tớiViewModeln h ư n g V i e w M o d e l l ạ i k h ô n g b i ế t t h ô n g t i n g ì v ề V i e w n ó

đ ư ợ c ẩ n giấu qua cách sử dụng Data-binding và cơ chế của mô hình Observer,mộtViewModelcóthểđượcánh xạtừ nhiềuView

Lưu ý: Trong mô hình MVVM, các tầng bên dưới sẽ không biết được

cácthông tin gì về tầng bên trên nó ViewModel cũng không hề biết gì vềView,một ViewModel có thể sử dụng cho nhiều View thường được gọi làbindingdata, cóthểlà1 chiều hoặc 2 chiềutùy nhucầucủaứngdụng

ThôngthườngkhisửdụngvớiMVVMchúngtanêntạo3thưmụcchínhchứacácfilecodeliên quan

Tại đây chứa các file giao diện và mỗi file giao diện đều có class behind đi kèm Đặc biệt file code-behind ta sẽ không sử dụng đến, mọiđiềucầnl à m s ẽ c h u y ể n x u ố n g c l a s s V i e w M o d e l T ấ t n h i ê n l à b ạ n c

code-ó t h ể c o d e trong file code-behind của XAML nhưng đồng nghĩa điều đcode-ó sẽ phá vỡ quyước của MVVM.Bạn có thể khai báo thuộc tính datacontext hoặc vài thiết lậpkhác nhưng nên hạn chế tốithiểu code ở đây Views được sử dụng để kết hợpvới các mô hình MVVM, Nó dùng để cungcấp một sự chia tách gọn gàngcủa kháiniệm giữaUI vàpresentationlogicvàdata

Trongt h ư m ụ c M o d e l s t ạ o c á c t ầ n g c h ứ a d ữ l i ệ u v à b ấ t k ỳ

l i ê n k ế t validation, logic nghiệp vụ để chắc chắn tính toàn vẹn của data, bạn có thểtách

Trang 26

ra như một Repositories khác, chúng được dùng như một phần của môhìnhMVVM

Thông thường trong một file giao diện thì ta tạo ra một class ViewModelstương ứng (có đôi lúc ta tạo nhiều class phụ giúp tinh giản file code vàgọichúngtrongclassViewModelschính)

ViewModels sẽ sử dụng các models nếu cần định nghĩa dữ liệu Sự liênkếtgiữa View-ViewModel giúp chúng gửi và nhận dữ liệu, để hiểu rõ ta cầntìmhiểu các khái niệm về Binding, DataContext, Behaviors SDK, nhờ đó tatáchcode-behindcủa Viewvà đưaxuống ViewModel

Ngoài ra một lớp ViewModels chứa presentation logic và state của ứngdụng.ViewModel cần chứa các chức năng của ứng dụng ViewModels địnhnghĩaproperties, commands và events để chuyển đổi controls trong view cầndata-bind

- Databinding

Binding Data trong MVVM là điều không bắt buộc, một số implementchỉđơn giản làm ViewModel như một lớp trung gian giữa Model-View, lớpnàygiữ nhiệm vụ format data hoặc mapping trạng thái của View Tuy nhiêncáchnày theo mình khiến cho ViewModel trở thành Presenter và đưa kiếntrúc nàyvềMVP

Trang 27

+ Đối với dự án lớn hơn, nó gây khó khăn và mất thời gian để thiết kếcácViewModel

+ Việc liên kết dữ liệu cho tất cả các thành phần gây khó khăn trongviệcdebugkhi cơsởdữ liệu phứctạp

Trang 28

2.1 Khảosátngườidùng

 Câu1:Bạngặpkhókhănhayvấnđềgìtrongviệcquảnlýsắpxếpcôngviệc?

Trảlời:

o Chưabiếtsắpxếphợplý,vẫnlộnxộn,khôngliệtkêđủcôngviệccầnthựchiện

o Hãy có thói quen trì hoãn, không biết việc nào quan trọng,việcnào sắpđếndeadline

o Nhiềuviệcquásắpxếpkhôngđượchiệuquả

 Câu2:Bạncóthườngdễquênvàbỏlỡcáccôngviệcquantrọngkhông?

Trang 29

o Chưaphù hợpvới bảnthânnên khótrongviệc sử dụng

 Câu6:Bạnthíchnhấtchứcnănggìtrongmộtứngdụngnhắcnhởcôngviệc?

o Nhắc công việc khi chưa hoàn thành và sẽ không tắt thôngbáochođếnkhi hoànthành

o Có thể thay đổi linh hoạt, nhiều chức năng để tích hợp vớitừnghoàncảnh, ngườidùng khácnhau

o Thôngbáotrướcmộtkhoảngthờigiantrướckhichúngtacầnphảithựchiệncông việcđó

o Giao diện đẹp, trực quan Âm thanh thông báo tuỳ vào mứcđộquantrọng củaviệcchẳnghạn

2.2 Giớithiệuvềhệthống

Quakhảo sát vàtrêncơ sởphân tíchở các giaiđoạn trướcc ầ n x â y dựngmột hệ thống nhắc nhở hoàn chỉnh và chuyên dụng Ứng dụng sẽchophépn g ư ờ i s ử d ụ n g t ạ o n h ắ c n h ở đ ị n h k ỳ , t ạ o l o ạ i n h ắ c n h ở t ù y t h

e o đ ặ c điểm và ngành nghề khác nhau Cơ động có thể dễ dàng quản lý đượcthôngtincácngàynhắcnhở.Thôngbáonhắcnhởcôngviệckhichưahoànthànhkịp thời và đúng lúc Đồng thời có thể xem thống kê công việc:đ ã h o à n thành, quá thời hạn

và vẫn đang tiến hành Hệ thống cũng giúp ghi lại nhữngkế hoạch định làmtrong tương lai nhưng chưa định thời gian, hệ thống sẽ cóhìnhthứcgợi nhớcho người dùngnhữngcông việcnày

2.3 Phântíchyêucầu

2.3.1 Vềhệthống

Ứng dụng nhắc nhở sẽ hướng tới một hệ thống có giao diện đẹp, dễsửdụng, dễ quản lý và đem lại một sự trải nghiệm tuyệt vời nhất cho ngườisửdụng Bên cạnhđ ó , ứ n g d ụ n g c ũ n g h ư ớ n g t ớ i s ự t ố i

ư u h i ệ u s u ấ t , t i ế t k i ệ m thờigiannhấtcho người sửdụng

Trang 30

2.3.2 Vềngườisửdụng

Người dùng có thể nắm bắt được các công việc, quản lý nhắc việc.Ngoàiviệc có thể xem danh sách thông tin tất cả các công việc thì người dùng có thểxem chi tiết theo loại nhắc nhở, xem theongày, hay chỉ xem của hôm nay vàthựchiệntạo mọi lời nhắctheoý muốn trong ứng dụng

Trang 32

2.4.1.3 BiểuđồUsecase

1 BiểuđồUsecasechính

Hình2.1:BiểuđồUsecasechính

Trang 34

c PhânrãUsecase<Thốngkê>

Hình2.4:Usecase Thốngkê

d PhânrãUsecase<Đồngbộ>

Hình2.5:UsecaseĐồngbộ

Trang 35

1 Thêm nhắc nhở:

- Người dùng chọn vào button thêmnhắcnhở trên màn hình, hệ thống hiển thịlênmànhìnhthêm nhắc nhở

- Ngườidùngnhậpthôngtinvàchọn“Thêmnhắcnhở”đểhoànthành

- Người dùng nhập thiếu thông tin hệ thốngchuyểnsangluồng A1

- Hệthốngkiểmtrathôngtinvàcậpnhậtthôngtinvàocơsởdữ liệu

2.Sửa thông tin nhắcnhở

- Người dùng chọn nhắc nhở cần thay đổithôngtinvà ấnvàonó

Trang 36

- Hệthốnghiểnthịgiaodiệnchitiếtthôngtin nhắcnhở đó.

- Người dùng nhập thông tin cần thay đổivàchọn“Save”

- Hệ thống kiểm tra lại thông tin và

cậpnhậtvào cơsởdữ liệu

3.Xóanhắcnhở

- Người dùng click vào nhắc nhở muốnxóavà chọn “Delete” Hoặc vuốt nhắc nhở đósangbêntráivàchọn“Delete”

- Hệ thống thực hiện xóa và cập nhật lạicơsở dữ liệu

4.Xemdanhsách nhắcnhở

- Người dùng chọn hiển thị nhắc nhởtrênmànhình

Trang 37

4.Tìm kiếm nhắc nhở-Ngườid ù n g n h ậ p t ê n n h ắ c n h ở v à n h ấ nnútt ì m k i ế m t r ê n m à n h ì n h g i a

o d i ệ nhome

Hệt h ố n g h i ể n t h ị mành ì n h d a n h s á

-c hchứacáctừkhóatìmkiếmcủangườidùngđãnhập

 Casửdụngkếtthúckhingườidùngchọnchứcnăngkháchoặcthoátkhỏihệthống

Luồngrẽ

nhánh

 LuồngA 1 : N g ư ờ i d ù n g n h ậ p t h i

ế u thông tinnhắcnhở-

Hệt h ố n g h i ể n t h ị b u t t o n t r ạ n g t h á idisable

Trang 38

 Biểuđồ trìnhtự:

Ngày đăng: 07/12/2022, 21:24

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2].TổHTTTĐạihọcCông NghiệpHàNội–Giáotrìnhphântíchthiếtkếhệthống Sách, tạp chí
Tiêu đề: Giáo trình phân tích thiết kế hệ thống
[3].h t t p s : / / v i b l o . a s i a / p / t i m - h i e u - v e - m o - h i n h - m v v m - m a G K 7 v W 9 5 j 2 [online] Sách, tạp chí
Tiêu đề: Tim hieu ve mo hinh MVVM
Nhà XB: Viblo Asia
[4].h t t p s : / / v i . w i k i p e d i a . o r g / w i k i / S w i f t _ ( n g ô n _ n g ữ _ l ậ p _ t r ì n h ) [online] Sách, tạp chí
Tiêu đề: Swift (ngôn ngữ lập trình)
[7].h t t p s : / / www.mongodb.com/nosql-explained[online] Sách, tạp chí
Tiêu đề: NoSQL explained
[8].h t t p s : / / e n . w i k i p e d i a . o r g / w i k i / N o S Q L [online] Sách, tạp chí
Tiêu đề: NoSQL
Tác giả: Wikipedia contributors
Nhà XB: Wikipedia
[9].h t t p s : / / d e v e l o p e r . a p p l e . c o m / d o c u m e n t a t i o n / c o r e g r a p h i c s [online] Sách, tạp chí
Tiêu đề: Core Graphics
[5].h t t p s : / / d e v e l o p e r . a p p l e . c o m / d o c u m e n t a t i o n / u i k i t / [online] Link
[1].TổHTTTĐạihọcCông NghiệpHàNội–GiáotrìnhhệquảntrịcơsởdữliệuSQL Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w