CHƯƠNG 1. Khảo sát hiện trạng Trong thời kỳ công nghệ thông tin đóng vai trò vô cùng quan trọng, hầu như không thể thiếu trong cuộc sống hàng ngày của con người. Với sự phát triển của Internet, công nghệ thông tin càng được áp dụng mạnh nhằm thúc đẩy quá trình đổi mới và hiện đại hóa nhiều lĩnh vực như kinh tế và giáo dục. Qua đó tạo ra được nhiều ứng dụng để đáp ứng các nhu cầu về giải trí, thương mại, quản lý, y tế , giáo dục… Đặc biệt trong tình hình dịch bệnh căng thẳng như hiện nay, mọi công việc gần như phải chuyển sang xử lý trực tuyến.
Đối với việc quản lý thông tin thì càng vô cùng cần thiết, việc số hóa mọi dữ liệu và xử lý tài liệu trên mạng thông qua các ứng dụng web giúp giảm tải lượng lớn tài liệu và có thể lưu trữ, tìm kiếm chúng dễ dàng hơn. Trong lĩnh vực giáo dục cũng được áp dụng công nghệ thông tin vào nhiều vấn đề như dạy học và kiểm tra trực tuyến, hệ thống quản lý đăng ký môn học trực tuyến. Đặc biệt trong giai đoạn dịch bệnh ngày càng căng thẳng thì việc quản lý và giải quyết các vấn đề học vụ cũng được chuyển lên hệ thống trực tuyến. Bằng cách này thì lẫn sinh viên và các thầy cô, cán bộ nhân viên đều có thể yêu cầu và xử lý công việc ngay tại nhà, tránh được các nguy cơ bệnh dịch.
Việc đăng ký, xét duyệt và chấm điểm cho các đề tài nghiên cứu khoa học ở trường đại học hằng năm vô cùng quan trọng. Các đề tài nghiên cứu khoa học của nghiên cứu sinh và chủ nhiệm đề tài được thông qua các hội đồng kiểm duyệt và nghiệm thu từ đó có được nhiều sản phẩm hữu ích. Tuy nhiên việc đăng ký, xét duyệt và chấm điểm cho các đề tài nghiên cứu khoa học vẫn còn nhiều hạn chế bởi các nguyên nhân sau: ● Số lượng đề tài mỗi năm được đăng ký khá lớn, khó quản lý và sắp xếp thời gian quy trình hợp lý, đặc biệt trong thời gian dịch bệnh căng thẳng hiện nay thì việc để đăng ký đề tài nghiên cứu khá khó khăn ● Phải thông qua nhiều mốc thời gian quy trình để xử lý các vấn đề liên quan đến đề tài. Thiếu linh hoạt trong thay đổi bất ngờ nếu gặp các sự cố ngoài ý 1 muốn làm ảnh hưởng thời gian quy trình.
● Lưu trữ và tìm kiếm các biên bản, hợp đồng còn bất tiện khi có quá nhiều đề tài cần quản lý. ● Thiếu linh động trong việc tạo biên bản, biểu mẫu hợp đồng đề tài, phiếu chấm điểm cho các hội đồng. ● Để giải quyết những hạn chế đó thì cần đưa hệ thống quản lý và đăng ký đề tài nghiên cứu khoa học lên hệ thống xử lý trực tuyến. Tính cấp thiết của đề tài Trong tình hình hiện tại thì việc đăng ký và quản lý đề tài nghiên cứu khoa học nhất định phải được thực hiện trực tuyến nhằm giúp đảm bảo hỗ trợ cán bộ nhân viên và chủ nhiệm đề tài có thể thực hiện việc đăng ký và xét duyệt xử lý đề tài thuận tiện hơn.
Nhờ việc thực hiện được các quy trình nhanh chóng góp phần giúp cho đề tài được thực hiện một cách nhanh chóng và kết quả nghiệm thu được sẽ đạt tốt hơn. Hệ thống này sẽ được vận hành thông qua ba nhân tố chính: chủ nhiệm đề tài, quản trị viên (Phòng Khoa Học và Công Nghệ), trưởng đơn vị (đơn vị thuộc đề tài xử lý). Mục tiêu và nhiệm vụ 1. Mục tiêu ● Xây dựng ứng dụng web quản lý bằng công nghệ Java Spring Boot và Angular.
● Hoàn thiện giao diện và các chức năng theo yêu cầu của phòng Khoa Học và Công Nghệ. ● Hỗ trợ tạo và quản lý các biên bản, phiếu điểm theo các biểu mẫu do phòng Khoa Học và Công Nghệ cung cấp. ● Cho phép đăng các bài viết, thông báo ở trang chủ ứng dụng để người dùng có thể xem. Nhiệm vụ ● Tìm hiểu và tích hợp hệ thống quản lý nhân sự vào hệ thống hiện tại.
● Tìm hiểu và tích hợp dịch vụ nhập xuất file word, hỗ trợ chức năng xem file trên ứng dụng web. 2 ● Cho phép người dùng đăng nhập bằng gmail trường. ● Cho phép quản lý và xem lại các file minh chứng thuộc đề tài và các hội đồng. ● Nghiên cứu và deploy ứng dụng lên nền tảng Google cloud.
Công nghệ sử dụng Hệ thống gồm hai phần: Back-End và Front-End Phía Back-End: Sử dụng framework Java Spring Boot và service Hrm (hệ thống quản lý nhân sự của trường) để tạo server. Phía Front-End: Sử dụng công nghệ Angular và NG-ZORRO (thư viện thành phần giao diện hỗ trợ Angular dưa trên thiết kế Ant Design). Phương pháp nghiên cứu Phương pháp tổng hợp lý thuyết: ● Nghiên cứu và tìm hiểu các tài liệu, website liên quan đến các công nghệ đang tìm hiểu. Phương pháp chuyên gia: ● Tham khảo ý kiến của giảng viên hướng dẫn và mọi người ở Trung tâm Công nghệ phần mềm.
Đồng thời kết hợp với tài liệu yêu cầu chức năng để hoàn thành phần mềm. Phương pháp mô hình hóa: ● Mô phỏng ứng dụng từ bước thiết kế cài đặt cho đến kết quả thành phẩm của ứng dụng. Java Spring Boot 2. Giới thiệu Hình 2.1 Spring boot Spring Boot là một micro-framework quan trọng thuộc hệ sinh thái Spring Framework được phát triển bởi JAVA.
Spring Boot được ra đời nhằm cải tiến việc tạo một ứng dụng web trên Spring Framework. Thay vì phải qua ít nhất 5 công đoạn để tạo được một ứng dụng web thì khi Spring Boot được ra đời với những cải tiến để hỗ trợ các lập trình viên: ● Auto config: tự động cấu hình thay lập trình viên, bạn chỉ cần viết code và tiến hành chạy hệ thống là được. ● Dựa trên các Annotation để tạo lập các bean thay vì XML. ● Server Tomcat có thể được nhúng ngay trong file JAR build ra và có thể chạy ở bất kì đâu mà java chạy được.
● Có thể sử dụng nhiều module có sẵn thuộc hệ sinh thái Spring Framework, tránh tình trạng lỗi do bất đồng bộ ● Cho phép quản lý và cài đặt thêm các thư viện bên ngoài thông qua Package Manager 4 2. Kiến trúc ứng dụng Spring Boot hỗ trợ tạo ứng dụng kết hợp cả hai mô hình: mô hình MVC và mô hình ba lớp (three tier) 2. Mô hình ba lớp (Three tier) Hình 2.2 Mô hình Three Tier Đây là mô hình tổ chức source code rất phổ biến trong Spring Boot. Cụ thể, ứng dụng được chia làm 3 tầng (tier hoặc layer) như sau: ● Presentation layer: tầng này tương tác với người dùng, bằng View, Controller (trong MVC) hoặc API (nếu có).
● Business logic layer: Chứa toàn bộ logic của chương trình, các đa số code nằm ở đây ● Data access layer: Tương tác với database, trả về kết quả cho tầng business logic Trong Spring Boot, thì có một số thành phần đại diện cho từng lớp: 5 ● Service: chứa các business logic code ● Repository: đại diện cho tầng data access 2. Mô hình MVC Hình 2.3 Mô hình MVC Do Spring Boot chỉ là wrapper cho Spring, chúng ta vẫn sử dụng ngầm các module Spring khác Mô hình MVC quá là phổ biến rồi nên mình không nhắc nhiều. Cụ thể, nó chia tầng presentation làm 3 phần: ● Model: các cấu trúc dữ liệu của toàn chương trình, có thể đại diện cho trạng thái của ứng dụng ● View: lớp giao diện, dùng để hiển thị dữ liệu ra cho user xem và tương tác ● Controller: kết nối giữa Model và View, điều khiển dòng dữ liệu Dữ liệu từ Model qua Controller sau đó được gửi cho View hiển thị ra. Và ngược lại, khi có yêu cầu mới từ View, thì sẽ qua Controller thực hiện thay đổi dữ liệu của Model.
6 Tuy nhiên, MVC chỉ mô tả luồng đi của dữ liệu, nó không nói rõ như code đặt ở đâu (ở Model, View hay Controller), rồi lưu trữ Model vào database kiểu gì,. Do đó, đối với ứng dụng hoàn chỉnh như Spring Boot thì cần kết hợp cả mô hình MVC và ba lớp lại với nhau.4 Sơ đồ kiến trúc tạo ứng dụng rest api sử dụng Spring Boot 2. Ưu điểm - Hạn chế 2. Ưu điểm ● Giảm thời gian dành cho phát triển và tăng hiệu quả chung của nhóm phát triển.
● Giúp tự động cấu hình tất cả các thành phần cho ứng dụng Spring cấp sản xuất. ● Tạo điều kiện thuận lợi cho việc tạo và thử nghiệm các ứng dụng dựa trên Java bằng cách cung cấp thiết lập mặc định cho các thử nghiệm đơn vị và tích hợp. ● Giúp tránh tất cả các thao tác viết mã soạn sẵn, chú thích và cấu hình XML phức tạp theo cách thủ công. ● Đi kèm với các máy chủ HTTP nhúng như Jetty và Tomcat để kiểm tra các ứng dụng web.
● Việc tích hợp Spring Boot với hệ sinh thái Spring bao gồm Spring Data, Spring Security, Spring ORM và Spring JDBC rất dễ dàng. ● Cung cấp nhiều plugin mà các nhà phát triển có thể sử dụng để làm việc với cơ sở dữ liệu nhúng và trong bộ nhớ một cách trơn tru và dễ dàng. 7 ● Cho phép dễ dàng kết nối với cơ sở dữ liệu và các dịch vụ hàng đợi như Oracle, PostgreSQL, MySQL, MongoDB, Redis, Solr, ElasticSearch, Rabbit MQ, ActiveMQ, và nhiều hơn nữa. ● Cung cấp hỗ trợ quản trị - bạn có thể quản lý thông qua quyền truy cập từ xa vào ứng dụng.
● Giảm bớt sự phụ thuộc và đi kèm với Bộ chứa Servlet được nhúng. ● Mang lại sự linh hoạt trong việc định cấu hình XML, Java Beans và Giao dịch cơ sở dữ liệu. ● Cung cấp khả năng truy cập dễ dàng vào Giao diện dòng lệnh giúp phát triển và thử nghiệm các ứng dụng Spring Boot được xây dựng bằng Java hoặc Groovy nhanh nhẹn. Hạn chế ● Khó kiểm soát và cài đặt thêm nhiều dependencies dẫn đến tăng kích thước của ứng dụng.
● Chưa hỗ trợ nhiều công cụ giám sát ứng dụng, giúp phát hiện các truy vấn chậm và báo cáo hiệu suất CPU. ● Cần phải có hiểu biết trước về Spring framework trước khi bắt đầu với Spring Boot. ● Hệ thống báo lỗi còn chưa rõ ràng, việc tìm hiểu và sửa lỗi khá khó khăn với người mới bắt đầu. Lý do sử dụng ● Spring Boot là mã nguồn mở, hoàn toàn miễn phí để sử dụng, tiết kiệm nhiều chi phí.
● Phù hợp với phát triển ứng dụng microservices. 8 ● Tính modules mạnh mẽ vì Spring framework cung cấp một hệ sinh thái các module có thể giao tiếp tốt với nhau ● Kiến trúc ứng dụng được thiết kế tốt, dễ quản lý và thay đổi.