2.3.1. Back-end
2.3.1.1. Biểu đồ mức ngữ cảnh
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 34
2.3.1.2. Biểu đồ mức 0
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 35
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 36
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 37
2.3.1.3. Biểu đồ mức 1
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 38
Hình 2.16 Biểu đồ luồng dữ liệu mức 1 của quá trình 6.0 (Back-end)
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 39
Hình 2.18 Biểu đồ luồng dữ liệu mức 1 của quá trình 8.0 (Back-end)
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 40
Hình 2.20 Biểu đồ luồng dữ liệu mức 1 của quá trình 10.0 (Back-end)
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 41
Hình 2.22 Biểu đồ luồng dữ liệu mức 1 của quá trình 18.0 (Back-end)
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 42
Hình 2.24 Biểu đồ luồng dữ liệu mức 1 của quá trình 20.0 (Back-end)
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 43
Hình 2.26 Biểu đồ luồng dữ liệu mức 1 của quá trình 22.0 (Back-end)
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 44
Hình 2.28 Biểu đồ luồng dữ liệu mức 1 của quá trình 24.0 (Back-end)
2.3.2. Front-end
2.3.2.1. Biểu đồ mức ngữ cảnh
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 45
2.3.2.2. Biểu đồ mức 0
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 46
2.3.2.3. Biểu đồ mức 1
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 47
2.4. Biểu đồ quan hệ thực thể
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 48
2.5. Mô hình dữ liệu vật lý
1. Bảng kingdom
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã giới int Khóa chính
idCreater Mã người tạo int Khóa ngoại
vietnamesename Tên tiếng việt nvarchar sciencename Tên khoa học nvarchar
notation Ký hiệu nvarchar
discoverername Người phát hiện nvarchar yeardiscover Thời gian phát hiện date
Bảng 2.1 Mô tả dữ liệu bảng kingdom trong cơ sở dữ liệu 2. Bảng phylum
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã ngành int Khóa chính
idKingdom Mã giới int Khóa ngoại
idCreater Mã người tạo int Khóa ngoại
vietnamesename Tên tiếng việt nvarchar sciencename Tên khoa học nvarchar
notation Ký hiệu nvarchar
discoverername Người phát hiện nvarchar yeardiscover Thời gian phát hiện date
Bảng 2.2 Mô tả dữ liệu bảng phylum trong cơ sở dữ liệu 3. Bảng class
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã lớp int Khóa chính
idPhylum Mã ngành int Khóa ngoại
idCreater Mã người tạo int Khóa ngoại
vietnamesename Tên tiếng việt nvarchar sciencename Tên khoa học nvarchar
notation Ký hiệu nvarchar
discoverername Người phát hiện nvarchar yeardiscover Thời gian phát hiện date
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 49
4. Bảng order
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã bộ int Khóa chính
idClass Mã lớp int Khóa ngoại
idCreater Mã người tạo int Khóa ngoại
idChecker Mã người phê duyệt int Khóa ngoại
vietnamesename Tên tiếng việt nvarchar sciencename Tên khoa học nvarchar
notation Ký hiệu nvarchar
discoverername Người phát hiện nvarchar yeardiscover Thời gian phát hiện date
status Trạng thái nvarchar
dateupdate Ngày cập nhật date
datecreate Ngày tạo date
Bảng 2.4 Mô tả dữ liệu bảng order trong cơ sở dữ liệu 5. Bảng family
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã lớp int Khóa chính
IdOrder Mã bộ int Khóa ngoại
idCreater Mã người tạo int Khóa ngoại
idChecker Mã người phê duyệt int Khóa ngoại
vietnamesename Tên tiếng việt nvarchar sciencename Tên khoa học nvarchar
notation Ký hiệu nvarchar
discoverername Người phát hiện nvarchar yeardiscover Thời gian phát hiện date
status Trạng thái nvarchar
dateupdate Ngày cập nhật date
datecreate Ngày tạo date
Bảng 2.5 Mô tả dữ liệu bảng family trong cơ sở dữ liệu 6. Bảng genus
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã chi int Khóa chính
idFamily Mã họ int Khóa ngoại
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 50
idChecker Mã người phê duyệt int Khóa ngoại
vietnamesename Tên tiếng việt nvarchar sciencename Tên khoa học nvarchar
notation Ký hiệu nvarchar
discoverername Người phát hiện nvarchar yeardiscover Thời gian phát hiện date
status Trạng thái nvarchar
dateupdate Ngày cập nhật date
datecreate Ngày tạo date
Bảng 2.6 Mô tả dữ liệu bảng genus trong cơ sở dữ liệu 7. Bảng species
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã loài int Khóa chính
idGenus Mã chi int Khóa ngoại
idCreater Mã người tạo int Khóa ngoại
idChecker Mã người phê duyệt int Khóa ngoại
vietnamesename Tên tiếng việt nvarchar
sciencename Tên khoa học nvarchar
othername Tên khác nvarchar
notation Ký hiệu nvarchar
individualquantity Số lượng cá thể int reproductiontraits Đặc điểm sinh sản nvarchar sexualtraits Đặc điểm giới tính nvarchar orthertraits Đặc điểm khác nvarchar alertlevel Mức độ báo động nvarchar biologicalbehavior Tập tính sinh học nvarchar discoverername Người phát hiện nvarchar yeardiscover Thời gian phát hiện date mediumsize Kích thước trung bình nvarchar
food Thức ăn nvarchar
origin Xuất xử nvarchar
image Hình ảnh nvarchar
status Trạng thái nvarchar
dateupdate Ngày cập nhật date
datecreate Ngày tạo date
type Loại nvarchar
color Màu sắc nvarchar
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 51
8. Bảng Habitat
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã địa điểm phân bố int Khóa chính
idCreater Mã người tạo int Khóa ngoại
idChecker Mã người phê duyệt int Khóa ngoại
location Địa điểm nvarchar
latitude Vỹ độ double
longitude Kinh độ double
Attribute name nvarchar
geom nvarchar
Bảng 2.8 Mô tả dữ liệu bảng habitat trong cơ sở dữ liệu 9. Bảng distribution
Tên cột Giải thích Kiểu dữ liệu Ghi chú
idSpecies Mã loài int Khóa chính
idHabitat Mã địa điểm phân bố int Khóa chính
distributionratio Phân bố nvarchar desitydistribution Mật độ phân bố nvarchar individualquantity Số lượng cá thể int
Bảng 2.9 Mô tả dữ liệu bảng distribution trong cơ sở dữ liệu 10. Bảng roles
Tên cột Giải thích Kiểu dữ liệu Ghi chú
Id Mã loại người dùng int Khóa chính
Rolename Tên loại người dùng nvarchar
Detail Chi tiết nvarchar
Bảng 2.10 Mô tả dữ liệu bảng roles trong cơ sở dữ liệu 11. Bảng member
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã thành viên int Khóa chính
fullname Họ tên nvarchar
birthday Ngày sinh date
address Địa chỉ nvarchar
phonenumber Số điện thoại nvarchar
detail Chi tiết nvarchar
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 52
12. Bảng account
Tên cột Giải thích Kiểu dữ liệu Ghi chú
id Mã giới int Khóa chính
idRole Mã loại người dùng int Khóa ngoại
idMember Mã thành viên int Khóa ngoại
status Trạng thái nvarchar
attribute name Tên thuộc tính nvarchar activationcode Mã kích hoạt nvarchar activationdate Ngày kích hoạt date dateupdate Ngày cập nhật date
detail Chi tiết nvarchar
username Tên đăng nhập nvarchar
password Mật khẩu nvarchar
email Địa chỉ email nvarchar
Bảng 2.12 Mô tả dữ liệu bảng account trong cơ sở dữ liệu 13. Bảng login
Tên cột Giải thích Kiểu dữ liệu Ghi chú
idlogin Mã giới int Khóa chính
idrole Mã loại người dùng int
rolename Tên loại người dùng nvarchar
idmember Mã thành viên int
status Trạng thái nvarchar
username Tên đăng nhập nvarchar
password Mật khẩu nvarchar
email Địa chỉ email nvarchar
Bảng 2.13 Mô tả dữ liệu bảng login trong cơ sở dữ liệu
2.6. Kết chương
Phân tích và thiết kế hệ thống là điều kiện tiên quyết để bắt đầu cho việc xây dựng hệ thống. Trên đây là phân tích thiết kế hệ thống theo phương pháp hướng chức năng, các phân tích và thiết kế đi từ đối tượng, chức năng cụ thể để phát triển hoàn thiện hệ thống lớn.
Đề tài được phân tích và thiết kế theo những yêu cầu căn bản và thiết yếu - Xác định mục tiêu và các yêu cầu cơ bản của hệ thống.
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 53
- Phân rã chức năng của từng loại người dùng.
- Biểu đồ luồng dữ liệu từ mức ngữ cảnh đến các mức chi tiết hơn (mức 0, mức 1, …).
- Thiết kế mô hình dữ liệu logic. - Thiết kế mô hình dữ liệu vật lý.
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 54
CHƯƠNG 3: THỬ NGHIỆM VÀ ĐÁNH GIÁ
3.1. Mục tiêu và yêu cầu cơ bản của hệ thống 3.1.1. Về đề tài 3.1.1. Về đề tài
Đề tại mang lại một hệ thống hỗ trợ người dùng quản lý đa dạng động vật tại thành phố Đà Nẵng. Đề tài không những giúp người dùng nâng cao hiểu biết về đa dạng sinh học của thành phố mà còn là một ứng dụng hữu ích. Kết quả đạt được:
- Xây dựng ra một hệ thống back-end server tạo ra các API để lập trình viên, hoặc nhà phát triển phần mềm có thể lấy dữ liệu từ server một cách dễ dàng thông qua việc gọi API tương ứng với yêu cầu của ứng dụng. Hệ thống gồm các API tương ứng với tất cả các chức năng được nêu ra trong sơ đồ phân rã chức năng và được bảo mật với phương thức chứng thực Oauth 2.0.
- Ngoài ra, còn xây dựng ra một hệ thống front-end web server hỗ trợ người dùng có thể dễ dàng tương tác với hệ thống back-end server được nêu ra phía trên, nhưng chỉ mới hỗ trợ được cho hai loại người dùng là khách vãng lai và thành viên.
3.1.2. Về kiến thức
Sau thời gian thực hiện đề tài, nhóm nghiên cứu đã phát triển về cả kỹ năng tìm kiếm, nghiên cứu thông tin kiến thức lẫn kỹ năng lập trình. Những kết quả thu được cho thấy sự tiến bộ về:
- Kỹ năng lập trình Java và phát triển phần mềm với Spring Framework. - Thành thạo hơn với phương pháp phân tích thiết kế hướng chức năng. - Tiếp cận với nhiều công nghệ mới đang phổ biến hiện nay (phương
pháp chứng thực Oauth 2.0, sử dụng các ứng dụng của bên thứ ba như Microsoft Cognitive Service …).
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 55
- Hiểu hơn về nền đa dạng sinh học ở thành phố Đà Nẵng mà đặc biệt là về đa dạng động vật và các động vật quý hiếm cần được bảo tồn. - Thực hành được phương pháp phát triển phần mềm theo mô hình
Scrum, tăng hiệu quả hoạt động của nhóm phát triển.
- Sau thời gian thực tập, sinh viên được tiếp xúc với môi trường doanh nghiệp hoạt động chuyên nghiệp thực tế.
3.2. Trình diễn ứng dụng 3.2.1. Back-end
Backend được thể hiện thông qua các API trao đổi dữ liệu, đáp ứng yêu cầu thông tin cho các ứng dụng frontend. Các API là cầu nối giữa yêu cầu người dùng với việc tương tác cơ sở dữ liệu. Hoạt động chính của backend server là tạo ra các API và thực hiện xử lý khi được gọi đến.
API trao đổi thông tin qua định dạng JSON
Hình 3.1 Mô hình truyền và nhận API
Dang sách API trong backend server
STT Tên Chức năng Mô tả Url
1 Lấy tất cả các loài Api sẽ trả lại tất cả các loài có trong cơ sở dữ liệu sử dụng phương thức GET
localhost:8081/a pi/species
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 56
2 Danh sách tất cả các loài có trong cơ sở dữ liệu theo bước nhảy
Api trả lại danh sách tất cả các loài động vật có trong cơ sở dữ liệu theo bước nhảy (offset) sử dụng phương thức GET localhost:8081/a pi/species/all?off set={value} 3 Danh sách các loài động vật quý hiếm
Api trả lại danh sách các loài động vật quý hiếm có trong cơ sở dữ liệu theo bước nhảy (offset) sử dụng phương thức GET localhost:8081/a pi/species/rare?o ffset={value} 4 Danh sách các loài động vật thường
Api trả lại danh sách các loài động vật thường có trong cơ sở dữ liệu theo bước nhảy (offset) sử dụng phưng thức GET
localhost:8081/a pi/species/norma l?offset={value} 5 Danh sách nơi cư
trú của các loài động vật
Api lấy địa điểm phân bố của các loài trên địa bàn Đà Nẵng sử dụng phương thức GET
localhost:8081/a pi/habitats 6 Phân bố môi trường
sống của loài
Api lấy phân bố của một loài cụ thể theo id loài sử dụng phương thức GET
localhost:8081/a pi/species/habita t/{id}
7 Tìm kiếm loài theo tên thường gọi và tên khoa học
Api trả về danh sách loài theo từ khóa gửi từ trình duyệt so sánh với tên thường gọi và tên khoa học của loài trong danh sách sử dụng phương thức GET
localhost:8081/a pi/species/search /?key={value}
8 Đồng bộ dữ liệu loài theo ngày cập nhật mới nhất
Api trả về danh sách các loài được cập nhật mới từ sau ngày được gửi lên bởi trình duyệt, từ đó danh sách dữ liệu được cập nhật không tốn nhiều dung lượng thiết bị, sử dụng phương thức GET
localhost:8081/a pi/species/date/? date-
update={value}
9 Lấy thông tin chi tiết loài
Api lấy thông tin chi tiết loài theo id của loài sử dụng phương thức GET
localhost:8081/a pi/species/{id}
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 57
10 Thêm một loài mới Api thêm một loài mới, chỉ có chuyên gia và nhà quản lý mới gọi được sử dụng phương thức POST localhost:8081/a pi/species/?acces s-token={value} 11 Cập nhật thông tin một loài
Api cập nhật thông tin một loài, chỉ có chuyên gia và nhà quản lý mới gọi được sử dụng phương thức PUT
localhost:8081/a pi/species/{id}?a ccess-
token={value} 12 Danh sách loài theo
ID của ngành
Api lấy tất cả các loài có trong cơ sở dữ liệu theo ID của ngành sử dụng phương thức GET
localhost:8081/a pi/species/phylu m/{id}
13 Danh sách loài theo ID của lớp
Api lấy tất cả các loài có trong cơ sở dữ liệu theo ID của lớp sử dụng phương thức GET
localhost:8081/a pi/species/class/ {id}
14 Danh sách loài theo ID của bộ
Api lấy tất cả các loài có trong cơ sở dữ liệu theo ID của bộ sử dụng phương thức GET
localhost:8081/a pi/species/order/ {id}
14 Danh sách loài theo ID của họ
Api lấy tất cả các loài có trong cơ sở dữ liệu theo ID của họ sử dụng phương thức GET
localhost:8081/a pi/species/family /{id}
15 Danh sách loài theo ID của chi
Api lấy tất cả các loài có trong cơ sở dữ liệu theo ID của chi sử dụng phương thức GET localhost:8081/a pi/species/genus/ {id} 16 Danh sách các loài do người dùng chia sẻ
Api lấy lại tất cả các loài mà người dùng đã chia sẻ chỉ có thành viên gọi được API sử dụng phương thức GET localhost:8081/a pi/species/list/sh are?id={value} &access_token= {value} 17 Thành viên chia sẻ loài
Api chia sẻ thông tin của một loài cụ thể từ thành viên, server lưu trữ thông tin ở trang thái chờ phê duyệt từ chuyên gia sử dụng phương thức POST
localhost:8081/a pi/species/share? access-
Lê Ngọc Duy – lớp 13CNTT (2013 - 2017) 58
18 Danh sách loài chưa được phê duyệt
Api trả về danh sách loài chưa được phê duyệt cho chuyên gia sử dụng phương thức GET
localhost:8081/a pi/species/list/ap prove
19 Phê duyệt một loài từ chuyên gia
Api cho phép chuyên gia phê duyệt một loài từ danh sách đợi, trạng thái của loài sẽ được kích hoạt sử dụng phương thức PUT
localhost:8081/a pi/species/appro ve/{idSpecies}?i dCreator={value }&&access- token={value} 20 Danh sách tất cả các ngành Api trả về danh sách tất cả các ngành có trong cơ sở dữ liệu sử dụng phương thức GET
localhost:8081/a pi/phylums 21 Lấy ngành theo ID Api trả lại ngành theo ID sử
dụng phương thức GET
localhost:8081/a pi/phylums/{id} 22 Tạo một ngành mới Api tạo một ngành mới chỉ có
chuyên gia và nhà quản lý mới gọi được sử dụng phương thức POST
localhost:8081/a pi/phylums?acce ss-
token={value} 23 Cập nhật một ngành Api cập nhật thông tin của một
ngành chỉ có chuyên gia và nhà