\s 3 SEQ Hình \* ARABIC \s 1 2 Hình 3-2 Logo Flutter
- Bạn chỉ cần tốn một ít thời gian và cơng sức để viết code một bộ mã máy duy nhất, xây dựng và chạy code đó trên nhiều nền tảng khác nhau. - Tính tái sử dụng: Các đoạn mã trong Cross platform có thể được tái sử dụng lại một cách dễ dàng và chia sẻ cho các ứng dụng hoặc phần mềm khác cho dù nó khơng phải là Cross platform.
- Bảo trì và mở rộng: Việc kiến trúc mạch lạc đã góp phần hỗ trợ điều tra và sửa lỗi trở nên dễ dàng hơn. Từ đó, việc bảo trì hay mở rộng cũng sẽ khơng gặp nhiều khó khăn nữa.
3.2. Flutter
3.2.1. Flutter là gì?
- Flutter là một nền tảng hỗ trợ phát triển cho các ứng dụng đa nền cho hệ iOS
và Android do tập đồn Google phát triển. Nó được sử dụng vơ cùng phổ biến cho nhiệm vụ tạo ra các ứng dụng gốc dành cho Google.
- Flutter thường bao gồm 2 thành phần chính quan trọng như sau:
● Một SDK (Software Development Kit): Đây là một bộ sưu tập bao gồm
các cơng cụ có thể hỗ trợ cho người dùng có thể phát triển được các ứng dụng nền của mình. Những điều này thường bao gồm các cơng cụ có trình để biên dịch mã thành các mã gốc dành riêng cho hệ điều hành iOS và Android.
● Một Framework (UI Library based on widgets): Mỗi một tập hợp những
thành phần giao diện của người dùng đều có thể thực hiện tái sử dụng vô cùng dễ dàng nên người sử dụng có thể cá nhân hóa tùy theo nhu cầu riêng của bản thân mình.
12
3.2.2. Ưu điểm nổi bật của Flutter
- Flutter được đánh giá cao nhờ khả năng mạnh về hiệu ứng cũng như hiệu suất ứng dụng cao.
- Sở hữu khả năng giao tiếp gần như được xem là trực tiếp với hệ thống.
- Là dạng ngôn ngữ kiểu tĩnh với các cú pháp hiện đại tương tự như JS, Python, Java, ... Ngồi ra, compiler cịn được đánh giá là linh động ngay khi dùng AOT (dành cho các sản phẩm cuối) và JIT (dành cho các quá trình này phát triển với các hot reload).
- Flutter có thể chạy được trên các giả lập mobile ngay trên trang web có thể tiện cho việc phát triển. Các bộ đo lường thường chỉ các hiệu suất được hỗ trợ giúp cho lập trình viên có thể kiểm sốt tốt hơn các hiệu suất của ứng dụng. - Ngồi ra, nó cịn thể sử dụng để xây dựng được các nền tảng gắn với ứng dụng
native để có thể gia tăng hiệu suất.
3.2.3. Tại sao lại chọn Flutter?
- Tính năng phát triển nhanh chóng các ứng dụng: Hầu hết, mọi tính năng hot reload của Flutter giúp cho người dùng có thể sử dụng thử nghiệm nhanh chóng và dễ dàng hơn rất nhiều. Với khả năng xây dựng giao diện cho người dùng cộng thêm các tính năng về sửa lỗi nhanh chóng nên Flutter đang thu hút khơng ít người sử dụng lựa chọn. Ngồi ra, các trải nghiệm về thực hiện tải lại lần thứ hai đều rất dễ dàng mà không làm mất đi trạng thái ở trên emulator, simulator và device cho cả iOS và Android.
- UI đẹp mắt và có tính biểu cảm: Flutter thỏa mãn người sử dụng nhờ các widget built-in vô cùng đẹp mắt dựa theo Material Design và Cupertino (iOS- flavor), thì các API sẽ thực hiện chuyển động theo nhiều hướng phong phú, scroll tự nhiên và mượt mà nên có thể tự động nhận thức được các nền tảng cần thiết.
- Q trình truy cập với nhiều tính năng và SDK native: Nhờ vậy, các ứng dụng của bạn sẽ trở nên sống động hơn rất nhiều nhờ vào API của platform, SDK
13
của các bên thứ ba và native code. Từ đó, nó sẽ cho phép lập trình viên sử dụng lại được mã Java, Swift và ObjC hiện tại của mình. Nhờ vậy, các truy cập sẽ thực hiện được mọi tính năng mà SDK native dựa trên iOS và Android. - Có khả năng phát triển các ứng dụng thống nhất: Nhờ sở hữu các công cụ cũng như thư viện nên người sử dụng có thể dễ dàng đưa ra được ý tưởng của mình vào chính trong cuộc sống trên hệ điều hành iOS và Android. Chính vì thế, nếu bạn là người chưa có nhiều kinh nghiệm cho mục đích phát triển các thiết bị di động thì việc lựa chọn Flutter được xem là một phương pháp dễ dàng và rất nhanh chóng trong việc xây dựng ra một ứng dụng di động tuyệt đẹp.
3.3. Dart 3.3.1. Dart là gì?
Hình 3-3 Logo Dart
- Dart là một ngôn ngữ mã nguồn mở được phát triển tại Google với mục đích cho phép các nhà phát triển sử dụng ngơn ngữ hướng đối tượng với phân tích kiểu tĩnh.
- Kể từ bản phát hành ổn định đầu tiên vào năm 2011, Dart đã thay đổi khá nhiều, cả về ngơn ngữ và mục tiêu chính của nó. Với phiên bản 2.0, hệ thống kiểu của Dart chuyển từ tùy chọn sang tĩnh, và kể từ khi xuất hiện, Flutter đã trở thành mục tiêu chính của ngơn ngữ này.
14
3.3.2. Ưu điểm của Dart?
- Dễ làm quen: vì cơ bản ngơn ngữ Dart được xây dựng trên nền tảng của C++ và các ngơn ngữ lập trình “thân thuộc” khác. Nên việc làm quen với Dart sẽ vơ cùng dễ dàng nếu đã có nền tảng lập trình từ trước.
- Tài liệu sẳn có: vì được phát triển trực tiếp bởi Google, nên trong các câu hỏi lập trình sẽ được trả lời nhanh chóng và bộ tài liệu dành cho Dart cũng rất phong phú.
- Hiệu năng tốt: đã được kiểm chứng khi so sánh với các ứng dụng được viết bằng JavaScript.
- Tính ổn đinh: Dart rất ổn định và nó có thể được sử dụng để xây dựng các ứng dụng thời gian thực chất lượng sản xuất. Nó là một ngơn ngữ lập trình hướng đối tượng với hỗ trợ kế thừa, giao diện và các tính năng gõ tùy chọn.
- AOT and JIT compilation.
- Dart có khả năng duy nhất để xử lý cả biên dịch Trước thời gian và Đúng lúc. Trong AOT, mã Dart có thể được chuyển đổi trực tiếp thành mã máy gốc. Khi ở chế độ JIT, nó có thể được biên dịch cho các chu kỳ phát triển đặc biệt nhanh và quy trình làm việc thay đổi trị chơi.
3.3.3. Tại sao lại chọn Dart?
- Không giống như nhiều ngôn ngữ khác, Dart được thiết kế với mục tiêu làm cho quá trình phát triển trở nên thoải mái và nhanh chóng nhất có thể cho các nhà phát triển. Vì vậy, nó đi kèm với một bộ cơng cụ tích hợp khá phong phú như trình quản lý gói của riêng nó, các trình biên dịch / chuyển mã khác nhau, trình phân tích cú pháp và trình định dạng. Ngồi ra, máy ảo Dart và bản dựng Just-in-Time thực hiện các thay đổi mã ngay lập tức.
- Sau khi được sản xuất, mã có thể được biên dịch bằng ngơn ngữ mẹ đẻ, vì vậy khơng cần mơi trường đặc biệt để chạy. Trong trường hợp phát triển web, Dart được chuyển sang JavaScript.
15
- Về cú pháp, Dart's rất giống với các ngôn ngữ như JavaScript, Java và C ++, vì vậy việc học Dart bằng cách biết một trong những ngôn ngữ này là vấn đề mất hàng giờ.
- Ngồi ra, Dart có hỗ trợ tuyệt vời cho tính khơng đồng bộ và làm việc với trình tạo và tệp lặp cực kỳ dễ dàng.
3.4. Java
3.4.1. Java là gì?
Hình 3-4 Logo Java
Theo trang chủ của Oracle, Java là ngôn ngữ số 1 cho việc phát triển phần mềm. Nó giúp giảm chi phí, thời gian phát triển ứng dụng cũng như cải thiện dịch vụ. Với cộng đồng rất đông với việc chạy hơn 51 tỉ Java Virtual Machines trên thời giới, Java vẫn là nền tảng phát triển cho doanh nghiệp và các lập trình viên.
Quay về lịch sử của Java, nó là ngơn ngữ lập trình được tạo ra bởi James Gosling của Sun Microsystems ( Sun) vào năm 1991. Mục tiêu mà Java hướng tới là chỉ cần viết 1 lần và sau đó chương trình có thể chạy trên mọi nơi. Vì vậy, khi nói về Java ta có slogan WORA ( Write Once Run Anywhere). Phiên bản đầu tiên Java được phát hành vào năm 1995.
16
Bởi vì được sự thịnh hành của nó, Java thường dùng để phát triển server-side trong dự án thậm chí cịn liên quan đến Big Data và phát triển ứng dụng Android. Java cũng được dùng để phát triển phần mềm desktop, games và về tính tốn số liệu.
Vì vậy, nhóm em quyết định sử dụng ngơn ngữ lập trình Java cho Khóa luận.
3.4.2. Đặc điểm và ứng dụng của Java
● Đặc điểm của Java
- Hướng đối tượng – Vì Java là ngơn thuần hướng đối tượng nên chỉ cần nắm
rõ các khái niệm về hướng đối tượng như Lớp, đối tượng, đóng gói, trừu tượng, kế thừa, đa hình thì sẽ dễ dàng tiếp cận.
- Đơn giản – Cú phát Java khá đơn giản và dễ hiểu. Nó khơng gây nhiều phiền
phức như C++. Ví dụ: Khái niệm con trỏ và nạp chồng toán tử khơng có trong Java nhưng lại rất quan trọng trong C++.
- Robust ( Mạnh mẽ) – Java giúp phát hiện lỗi ở 2 thời điểm lúc biên dịch code
xong và thực thi code.
- Bảo mật – Java luôn là lưa chọn đầu tiên cho việc bảo mật. Chương trình Java
ln chạy dưới Java Runtime Environment với sự tương tác giữa null với hệ điều hành giúp chương trình an tồn hơn.
- Nền tảng độc lập – Để dể hình dung, Java với slogan write-once, run- anywhere thì những thiết bị nào có cài đặt Java Runtime Environment thì có thể chạy được ứng dụng Java.
17
Hình 3-5 Sơ đồ mơ tả cách chương trình Java chạy
3.4.3. Tại sao lại chọn Java?
- Với những đặc điểm nổi bật ở trên thì Java có 1 điểm cộng.
- Java có cộng đồng hỗ trợ rất đơng cũng như là 1 môn học đại trà nên việc tiếp cận tài liệu là khơng q khó.
- Java có những framework mạnh mẽ như Spring giúp phát triển ứng dụng rất nhanh trong thời gian cho phép.
3.5. Spring 3.5.1. Spring là gì?
Hình 3-6 Logo Spring Framework
● Spring là một trong những frameword nổi tiếng nhất dựa trên Java. ● Spring được phát triển bởi Rod Johnson vào năm 2003.
● Spring là mã nguồn mở do đó chúng ta có thể phát triển ứng dụng Java rất dễ dàng và nhanh chóng.
18
3.5.2. Ý tưởng của Spring
● Dependency Injection (DI): Đây là một cách để hiện thực Inversion of Control Pattern. Các module phụ thuộc (dependency) sẽ được inject vào module cấp cao.
● Inversion of Control (IoC): Đây là một design pattern được tạo ra để code có thể tuân thủ nguyên lý Dependency Inversion.
● Aspect Oriented Programming (AOP): là một kỹ thuật lập trình (kiểu như lập trình hướng đối tượng) nhằm phân tách chương trình thành cách moudule riêng rẽ, phân biệt, khơng phụ thuộc nhau.
● Model View Controller (MVC):
● Transaction Management: Transaction quản lý những thay đổi mà người dùng thực hiện trong hệ thống. Mục tiêu để đảm bảo tính nhất quán của dữ liệu.
3.5.3. Tại sao lại sử dụng Spring Framework?
- Để hồn thành Khóa luận, nhóm đã quyết định sử dụng Spring boot vì nó giúp cấu hình rất nhanh chóng.
Hình 3-7 Các module trong Spring boot
- Dễ phát triển ứng dụng spring cũng như tiết kiệm thời gian phát triển. - Tránh việc phải cấu hình bằng XML.
3.6. PostgreSQL
19
Hình 3-8 Logo PostgreSQL - PostgreSQL là cơ sở dữ liệu quan hệ.
- PostgreSQL còn là cơ sở dữ liệu mã nguồn mở, miễn phí, có tính ổn định cao. - Với việc tải thêm pgAdmin4 giúp ta dễ dàng quản lý cơ sở dữ liệu với giao
diện trực quan và thân thiện.
- Vì vậy, ta cũng có thể dùng SQL để thực truy vấn giống MS SQL Server, Oracle nhưng cú pháp có gọn và dễ dàng hơn.
3.6.2. Tại sao lại sử dụng PostgreSQL
- Là mã nguồn mở, nhẹ cũng như miễn phí. - Dễ sử dụng, có tính ổn định cao.
- Tương thích với nhiều nền tảng công nghệ.
- Postgres được giám sát bởi một cộng đồng các nhà phát triển sơi động, những người có động lực cao để vừa sử dụng sản phẩm vừa giúp những người khác khám phá nó và giữ cho nó hoạt động trơn tru.
- Postgres được thiết kế cho các hệ thống cực lớn và nó khơng hạn chế kích thước cơ sở dữ liệu của cơng ty, vì vậy khả năng mở rộng không phải là một vấn đề.
20
3.7. ORM, Hibernate và Spring Data JPA 3.7.1. ORM
- Còn được biết đến là (Object Relational Mapping) một kỹ thuật hay cơ chế lập trình thực hiện ánh xạ CSDL sang các đối tượng trong các ngôn ngữ lập trình hướng đối tượng như Java, C#, …
- Các bảng, cột trong database được ánh xạ sang các đối tượng và các thuộc tính tương ứng trong Java vì chúng ta có thể thao tac với database thơng qua các đối tượng.
Hình 3-9 Mơ tả ORM hoạt động
3.7.2. Hibernate
- Là một thư viện ORM mã nguồn mở giúp lập trình viên viết ứng dụng Java có thể map các objects với bảng trong hệ quản trị cơ sở dữ liệu quan hệ.
- Giúp thực hiện giao tiếp giữa tầng ứng dụng với tầng dữ liệu (kết nối, truy xuất, lưu trữ).
- Giúp giảm thiểu công sức để thay đổi từ hệ quản trị cơ sở dữ liệu này sang một hệ quản trị cơ sở dữ liệu khác.
- Giúp lập trình viên đỡ vất cả khi map giữa object Java với các table tương ứng trong database.
21
3.7.3. Spring Data JPA
- Spring Data JPA là một module trong Spring Data project.
- Giúp giảm thiểu các đoạn code lặp đi lặp lại nhiều lần khi tương tác với cơ sở dữ liệu.
- Được cung cấp những interface cần thiết cho nên dễ tái sử dụng cũng như mở rộng tùy mục đích.
3.7.4. Tại sao lại chọn phương pháp tiếp cận bằng ORM
- Phương pháp xây dựng database trước có thể giúp tối ưu hệ thống hơn nhưng đòi hỏi kỹ năng về database phải thực sự giỏi và rất tốn thời gian.
- Thời gian tìm hiểu nghiệp vụ và cơng nghệ đã rất nhiều nên tiếp cận bằng ORM là hiệu quả nhất trong trường hợp hiện tại.
- Với tính năng được trình bày ở trên, nhóm sẽ sử dụng Hibernate cho mục đích tạo ra các bảng dưới database bằng object Java.
- Sử dụng Spring Data JPA để thực hiện truy vấn dữ liệu nhằm tiết kiệm thời gian.
22
Chương 4. PHÂN TÍCH THIẾT KẾ HỆ THỐNG 4.1. Sơ đồ nghiệp vụ
Hình 4-1 Sơ đồ nghiệp vụ giám định phần 1
23