Đồ án Phát triển phần mềm quản lý dự án

Java là: • Hướng đối tượng – Trong Java, mọi thứ đều là một Object. Java có thể dễ dàng mở rộng và bảo trì vì nó được xây dựng dựa trên mô hình Object. • Nền tảng độc lập – Không giống nhiều ngôn ngữ lập trình khác bao gồm cả C và C ++, khi Java được biên dịch, nó không được biên dịch thành ngôn ngữ máy nền tảng cụ thể, thay vào mã byte – nền tảng độc lập. Mã byte này được thông dịch bởi máy ảo (JVM) trên nền tảng nào đó mà nó đang chạy. • Đơn giản – Java được thiết kế để dễ học. Nếu bạn hiểu khái niệm cơ bản về OOP Java, sẽ rất dễ để trở thành master về java. • Bảo mật – Với tính năng an toàn của Java, nó cho phép phát triển các hệ thống không có virut, giả mạo. Các kỹ thuật xác thực dựa trên mã hoá khóa công khai. • Kiến trúc – trung lập – Trình biên dịch Java tạo ra định dạng tệp đối tượng kiến trúc trung lập, làm cho mã biên dịch được thực thi trên nhiều bộ vi xử lý, với sự hiện diện của hệ điều hành Java. • Portable – Là kiến trúc tập trung và không có khía cạnh thực hiện phụ thuộc của đặc tả này làm cho Java khả chuyển. Trình biên dịch trong Java được viết bằng ANSI C, đó là một tập con POSIX. • Mạnh mẽ – Java làm nỗ lực để loại trừ các tình huống dễ bị lỗi bằng cách kiểm tra lỗi tại thời gian biên dịch và kiểm tra lỗi tại runtime. • Đa luồng – Với tính năng đa luồng của Java có thể viết các chương trình có thể thực hiện nhiều tác vụ đồng thời. Tính năng thiết kế này cho phép các nhà phát triển xây dựng các ứng dụng tương tác có thể chạy trơn tru hơn. • Thông dịch – Mã byte Java được dịch trực tiếp tới các máy tính gốc và không được lưu trữ ở bất cứ đâu. • Hiệu năng cao – Với việc sử dụng trình biên dịch Just-In-Time, Java cho phép thực hiện hiệu năng cao. • Phân tán – Java được thiết kế cho môi trường phân tán của Internet. • Năng động – Java là năng động hơn C hoặc C++ vì nó được thiết kế để thích nghi với môi trường đang phát triển. Các chương trình Java có thể mang một lượng lớn thông tin tại runtime mà có thể được sử dụng để xác minh và giải quyết các truy cập vào các đối tượng tại runtime. Nơi Java được sử dụng Theo tập đoàn SUN, hiện nay có khoảng 3 tỷ thiết bị đang chạy java. Ví dụ: • Desktop App như acrobat reader, media player, antivirus, • Web App như irctc.co.in, javatpoint.com, • Enterprise App như các ứng dụng về xử lý nghiệp vụ ngân hàng, • Thiết bị Mobile • Hệ thống nhúng • Smart Card • Robot • Game App

docx105 trang | Chia sẻ: hachi492 | Ngày: 07/01/2022 | Lượt xem: 357 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đồ án Phát triển phần mềm quản lý dự án, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
rs and Interests: Người quản lý dự án- phụ trách quản lý nhân sự và tiến độ dự án Brief Description: Mô tả cách thức để cập nhập cũng như xem thông tin của dự án Trigger: Yêu cầu thay đổi từ khách hàng hoặc không đúng tiến độ dự án cần cập nhập lại hồ sơ dự án Type: External Relationships: Association: Người quản lý dự án Normal Flow of Events: Nếu yêu cầu xem thông tin chi tiết dự án, SubFlow S-1: Chi tiết dự án được thực hiện. Nếu yêu cầu chỉnh sửa thông tin dự án, SubFlow S-2: Chỉnh sửa dự án được thực hiện. Nếu yêu cầu xoá bỏ dự án, SubFlow S-3: Xoá dự án được thực hiện. Cập nhập lại danh sách hồ sơ dự án. SubFlows: S-1: Chi tiết dự án Tìm hồ sơ dự án trong danh sách. Lấy thông tin dự án và trả về thông tin yêu cầu. S-2: Chỉnh sửa dự án Tìm hồ sơ dự án trong danh sách. Thay đổi các thông tin trong hồ sơ dự án. Lưu lại hồ sơ dự án. S-3: Xoá dự án Tìm hồ sơ dự án trong danh sách Loại bỏ hồ sơ ra khỏi danh sách Sau khi đã mô hình hoá chức năng của hệ thống với các sơ đồ ca sử dụng và kịch bản sử dụng, ta chuyển sang bước phân tích tiếp theo là mô hình hoá cấu trúc hệ thống dựa trên các phân tích chức năng nghiệp vụ này. Mô hình hoá cấu trúc hệ thống Mô hình cấu trúc là cách để biểu diễn các đối tượng được sử dụng và tạo ra bởi một hệ thống nghiệp vụ. Nó thể hiện các sự vật, địa điểm hoặc con người có thông tin được thu thập và mối liên hệ giữa các đối tượng này. Để xây dựng mô hình cấu trúc hệ thống ta sử dụng thẻ cộng tác trách nhiệm lớp (Thẻ CRC) và sơ đồ lớp. Thẻ CRC Thẻ CRC (Class-Responsibility-Collaboration) dùng để mô tả trách nhiệm của mỗi lớp và sự cộng tác của các lớp để thực hiện một chức năng hệ thống. Với nghiệp vụ hệ thống đã được chúng ta phân tích ở phần trên, ta xây dựng được các lớp chịu trách nhiệm cho từng chức năng và sự hợp tác giữa các lớp được thể hiện trong Bảng 2.16 dưới đây. Bảng 2.16. Bảng ánh xạ giữa các chức năng và thẻ CRC Thẻ CRC Chức năng Phòng ban Nhân viên Tài khoản Dự án Nhân viên dự án Công việc Phân công công việc Tiến độ công việc Quản lý phòng ban x Quản lý nhân viên x Quản lý tài khoản x Tạo dự án x x x Tạo công việc x x Phân công công việc x x x x Xem công việc x x Cập nhập tiến độ công việc x x x Cập nhập tiến độ dự án x x x Cập nhập dự án x x Sau đây ta sẽ đi vào chi tiết thẻ CRC cho từng lớp. Lớp Phòng ban Lớp Phòng ban phụ trách các nghiệp vụ liên quan đến Quản lý phòng ban và được mô tả trên thẻ CRC như trong Bảng 2.17 dưới đây. Bảng 2.17. Thẻ CRC cho lớp Phòng ban Front: Class Name: Phòng ban ID: 1 Type: Concrete Description: Một phòng ban trong công ty Associated Use Cases: 1 Responsibilities Quản lý phòng ban Collaborators Nhân viên Back: Atributes: ID phòng ban (int) Tên phòng ban (text) Trưởng phòng (text) Mô tả (text) Relationships: Generalization: Aggregation (has-parts): Nhân viên Other Associations: Lớp Nhân viên Lớp Nhân viên phụ trách các nghiệp vụ liên quan đến Quản lý nhân viên, thẻ CRC cho lớp này được cho trong Bảng 2.18 dưới đây. Bảng 2.18. Thẻ CRC cho lớp Nhân viên Front: Class Name: Nhân viên ID: 2 Type: Concrete Description: Một nhân viên của công ty Associated Use Cases: 2 Responsibilities Quản lý nhân viên Tạo công việc Collaborators Phòng ban Tài khoản Nhân viên dự án Back: Atributes: ID nhân viên(int) Họ tên (text) Tài khoản (text) Phòng ban (text) Chức vụ (text) Kỹ năng (text) Email (text) Số điện thoại (text) Mô tả (text) Relationships: Generalization: Aggregation: Other Associations: Phòng ban, Tài khoản, Nhân viên dự án, Lớp Tài khoản Lớp Tài khoản phụ trách các nghiệp vụ liên quan đến Quản lý tài khoản và thẻ CRC cho lớp này được mô tả trong Bảng 2.19. Bảng 2.19. Thẻ CRC cho lớp Tài khoản Front: Class Name: Tài khoản ID: 3 Type: Concrete Description: Một tài khoản của nhân viên Associated Use Cases: 3 Responsibilities Quản lý tài khoản Collaborators Nhân viên Back: Atributes: ID tài khoản (int) Tên tài khoản (text) Mật khẩu (text) Quyền (text) Relationships: Generalization: Aggregation: Other Associations: Nhân viên Lớp Dự án Lớp Dự án phụ trách các nghiệp vụ liên quan đến Quản lý dự án, thẻ CRC cho lớp này được mô tả trong Bảng 2.20 dưới đây. Bảng 2.20. Thẻ CRC cho lớp Dự án Front: Class Name: Dự án ID: 4 Type: Concrete Description: Một dự án cần thực hiện Associated Use Cases: 5, 10, 11 Responsibilities Tạo dự án Tạo công việc Phân công công việc Cập nhập tiến độ dự án Cập nhập dự án Collaborators Công việc Nhân viên dự án Back: Atributes: ID dự án (int) Tên dự án (text) Ngày tạo (date) Ngày bắt đầu (date) Ngày kết thúc (date) Ngày hoàn thành (date) Mô tả (text) Tiến độ (int) Relationships: Generalization: Aggregation (has-parts): Công việc Other Associations: Nhân viên dự án Lớp Nhân viên dự án Lớp Nhân viên dự án lưu trữ các thông tin về nhân viên tham gia vào một dự án, thẻ CRC cho lớp này được mô tả trong Bảng 2.21 dưới đây. Bảng 2.21. Thẻ CRC cho lớp Nhân viên dự án Front: Class Name: Nhân viên dự án ID: 5 Type: Concrete Description: Một nhân viên tham gia vào dự án Associated Use Cases: 7, 12 Responsibilities Tạo dự án Phân công công việc Collaborators Dự án Nhân viên Phân công công việc Back: Atributes: ID nhân viên (int) ID dự án (int) Relationships: Generalization: Aggregation: Other Associations: Dự án, Nhân viên, Phân công công việc Lớp Công việc Lớp Công việc phụ trách các nghiệp vụ liên quan đến quản lý công việc của dự án, thẻ CRC cho lớp này được mô tả trong Bảng 2.22 dưới đây Bảng 2.22. Thẻ CRC cho lớp Công việc Front: Class Name: Công việc ID: 6 Type: Concrete Description: Một công việc trong dự án Associated Use Cases: 6, 7, 8, 9, 10, 11 Responsibilities Tạo công việc Phân công công việc Xem công việc Cập nhập tiến độ công việc Cập nhập tiến độ dự án Cập nhập dự án Collaborators Dự án Phân công công việc Tiến độ công việc Back: Atributes: ID công việc (int) ID dự án (int) Tên công việc (text) Ngày tạo (date) Ngày bắt đầu (date) Ngày kết thúc (date) Ngày hoàn thành (date) Mô tả (text) Relationships: Generalization: Aggregation (a-part-of): Dự án Other Associations: Phân công công việc, Tiến độ công việc Lớp Phân công công việc Lớp Phân công công việc được mô tả trong thẻ CRC trong Bảng 2.23 dưới đây Bảng 2.23. Thẻ CRC cho lớp Phân công công việc Front: Class Name: Phân công công việc ID: 7 Type: Concrete Description: Một công việc được phân công cho một nhân viên trong dự án Associated Use Cases: 7, 8, 9 Responsibilities Phân công công việc Xem công việc Cập nhập tiến độ công việc Collaborators Công việc Nhân viên dự án Back: Atributes: ID công việc (int) ID nhân viên (int) Relationships: Generalization: Aggregation: Other Associations: Công việc, Nhân viên dự án Lớp Tiến độ công việc Lớp Tiến độ công việc được mô tả trong thẻ CRC trong Bảng 2.24 dưới đây. Bảng 2.24. Thẻ CRC cho lớp Tiến độ công việc Front: Class Name: Tiến độ công việc ID: 8 Type: Concrete Description: Tiến độ của một công việc trong dự án Associated Use Cases: 9, 10 Responsibilities Cập nhập tiến độ công việc Cập nhập tiến độ dự án Collaborators Công việc Back: Atributes: ID công việc (int) Ngày đánh giá (date) Tiến độ công việc (int) Xác nhận (int) Relationships: Generalization: Aggregation: Other Associations: Công việc Sơ đồ lớp Dựa vào các thẻ CRC được xây dựng, ta xây dựng được sơ đồ lớp cho hệ thống quản lý dự án như trên Hình 2.5 dưới đây. Hình 2.5. Sơ đồ các lớp cho hệ thống quản lý dự án Sau khi đã mô tả được mô hình cấu trúc của hệ thống, ta chuyển sang bước mô hình hoá hoạt động của hệ thống. Mô hình hoá hoạt động hệ thống Ta mô hình hoá hoạt động của hệ thống sử dụng hai loại sơ đồ là sơ đồ hoạt động và sơ đồ tuần tự lần lượt mô hình hoá nghiệp vụ và mô hình hoá hoạt động bên trong của hệ thống Sơ đồ hoạt động Sơ đồ hoạt động mô tả các hoạt động cần để thực hiện quy trình nghiệp vụ của hệ thống. Sau đây sẽ trình bày sơ đồ hoạt động cho các chức năng chính của hệ thống. Sơ đồ hoạt động Quản lý phòng ban Các hoạt động quản lý phòng ban do người quản lý thực hiện và được mô tả trong Hình 2.6 dưới đây. Hình 2.6. Sơ đồ hoạt động Quản lý phòng ban Sơ đồ hoạt động quản lý nhân viên Các hoạt động quản lý nhân viên do người quản lý thực hiện và được mô tả trong Hình 2.7 dưới đây. Hình 2.7. Sơ đồ hoạt động Quản lý nhân viên Các hoạt động chính quản lý dự án đã được mô tả trong sơ đồ hoạt động trong Hình 2.2 ở phần trên. Sau đây ta sẽ đi vào chi tiết cho một số hoạt động quan trọng nhất trong quá trình quản lý dự án. Sơ đồ hoạt động Quản lý công việc Các hoạt động quản lý công việc bao gồm tạo công việc, tạo công việc con (nếu cần), phân công công việc cho nhân viên dự án. Các hoạt động này được mô tả trong sơ đồ hoạt động trên Hình 2.8. Hình 2.8. Sơ đồ hoạt động Quản lý công việc Sơ đồ hoạt động Cập nhập dự án Các hoạt động cập nhập dự án như sửa, xoá dự án và các công việc do người quản lý dự án thực hiện và được mô tả trên Hình 2.9. Hình 2.9. Sơ đồ hoạt động Cập nhập dự án Sơ đồ hoạt động Cập nhập tiến độ Các hoạt động cập nhập bao gồm cập nhập tiến độ công việc và cập nhập tiến độ dự án. Việc cập nhập tiến độ công việc do nhân viên dự án dựa vào kết quả thực hiện công việc của mình thực hiện để đánh giá và phải được chấp nhận từ người quản lý dự án. Tiến độ dự án được tính toán dựa vào tiến độ của các công việc của dự án và được cập nhập khi tiến độ công việc được cập nhập. Các hoạt động cập nhập tiến độ được mô tả trong sơ đồ hoạt động trên Hình 2.10. Hình 2.10. Sơ đồ hoạt động Cập nhập tiến độ Sơ đồ tuần tự Sơ đồ tuần tự mô tả hoạt động bên trong của hệ thống để thực hiện nghiệp vụ đã đề ra. Nó chỉ quan tâm đến trình tự các bước mà không cần quan tâm các bước này được thực hiện như nào. Sơ đồ tuần tự Quản lý phòng ban Hoạt động của chức năng Quản lý phòng ban được mô tả trong sơ đồ tuần tự trong Hình 2.11 dưới đây. Hình 2.11. Sơ đồ tuần tự Quản lý phòng ban Sơ đồ tuần tự Quản lý nhân viên Sơ đồ tuần tự mô tả hoạt động của chức năng Quản lý nhân viên được mô tả trong Hình 2.12 dưới đây. Hình 2.12. Sơ đồ tuần tự Quản lý nhân viên Sơ đồ tuần tự Quản lý tài khoản Sơ đồ tuần tự mô tả hoạt động chức năng Quản lý tài khoản được mô tả trong Hình 2.13 dưới đây. Hình 2.13. Sơ đồ tuần tự Quản lý tài khoản Sơ đồ tuần tự Tạo dự án Hoạt động của chức năng Tạo dự án được mô tả bằng sơ đồ tuần từ trong Hình 2.14 dưới đây. Hình 2.14. Sơ đồ tuần tự Tạo dự án Sơ đồ tuần tự Tạo công việc Hoạt động của chức năng Tạo công việc được mô tả bằng sơ đồ tuần tự trong Hình 2.15 dưới đây. Hình 2.15. Sơ đồ tuần tự Tạo công việc Sơ đồ tuần tự Phân công công việc Sơ đồ tuần tự mô tả hoạt động của chức năng Phân công công việc được cho trong Hình 2.16 dưới đây. Hình 2.16. Sơ đồ tuần tự Phân công công việc Sơ đồ tuần tự Xem công việc Sơ đồ tuần tự mô tả hoạt động của chức năng Xem công việc được cho trong Hình 2.17 dưới đây. Hình 2.17. Sơ đồ tuần tự Xem công việc Sơ đồ tuần tự Cập nhập tiến độ công việc Hoạt động của chức năng Cập nhập tiến độ công việc được mô tả bằng sơ đồ tuần tự trong Hình 2.18 dưới đây. Hình 2.18. Sơ đồ tuần tự Cập nhập tiến độ công việc Sơ đồ tuần tự Cập nhập tiến độ dự án Hình 2.19. Sơ đồ tuần tự Cập nhập tiến độ dự án Hoạt động của chức năng Cập nhập tiến độ dự án được mô tả bằng sơ đồ tuần tự như trên Hình 2.19. Sơ đồ tuần tự Cập nhập dự án Sơ đồ tuần tự mô tả hoạt động của chức năng Cập nhập dự án được thể hiện trong Hình 2.20 dưới đây. Hình 2.20. Sơ đồ tuần tự Cập nhập dự án Như vậy chúng ta đã hoàn thành các bước phân tích hệ thống từ mô hình hoá các chức năng hệ thống bằng sơ đồ ca sử dụng và kịch bản hoạt động; mô hình hoá cấu trúc hệ thống bằng thẻ CRC và sơ đồ lớp; cuối cùng là mô hình hoá hoạt động hệ thống bằng các sơ đồ tuần tự cho từng chức năng. Tiếp theo chúng ta sẽ thực hiện bước tiếp theo trong quy trình phát triển phần mềm là thiết kế hệ thống. THIẾT KẾ HỆ THỐNG Trong chương này, chúng ta thực hiện các bước thiết kế hệ thống. Mục đích của thiết kế là xác định cách hệ thống hoạt động. Đầu tiên chúng ta cần xây dựng mô hình thiết kế với các lớp phụ trách công việc riêng. Tiếp theo là thiết kế các lớp và phương thức của lớp dựa vào mô hình cấu trúc. Tiếp theo là thiết kế cơ sở dữ liệu để chỉ ra cách tổ chức dữ liệu trong hệ thống. Đồng thời tiến hành thiết kế các giao diện cho hệ thống. Đầu tiên chúng ta đi xây dựng mô hình thiết kế và phân chia các lớp (layers) của hệ thống. Mô hình thiết kế Cho đến nay, chúng ta mới chỉ tập trung vào vấn đề nghiệp vụ của hệ thống mà hoàn toàn bỏ qua môi trường hệ thống (quản lý dữ liệu, giao diện người dùng, kiến trúc vật lý). Để có thể chuyển từ mô hình phân tích sang mô hình thiết kế, chúng ta cần thêm các thông tin về môi trường hệ thống này. Chúng ta có thể thực hiện điều này bằng cách chia các thành phần hệ thống thành các lớp (layer) riêng biệt hay sử dụng mô hình MVC (Model-View-Controller). Việc phân lớp có thể thực hiện bằng cách sử dụng các gói (package) và sơ đồ gói (package diagram). Kiến trúc phần mềm thường được chia thành các lớp: lớp giao diện, lớp nghiệp vụ và lớp quản lý dữ liệu. Mỗi lớp có nhiệm vụ khác nhau và có quan hệ phụ thuộc lẫn nhau. Mỗi lớp (layer) này có thể được xem là một gói và có thể được biểu diễn thành sơ đồ lớp. Nhiệm vụ của từng lớp sẽ được trình bày chi tiết ở các phần thiết kế cho từng lớp ở phần sau. Với hệ thống quản lý dự án của chúng ta cũng có thể tổ chức thành các lớp giao diện, nghiệp vụ và dữ liệu như trên và ta có thể xây dựng mô hình thiết kế như trên sơ đồ gói trong Hình 3.1 dưới đây. Sau đây ta sẽ đi vào thiết kế chi tiết cho từng lớp (layer), do lớp nghiệp vụ đã được phân tích khá kỹ lưỡng trong phần phân tích hệ thống nên trong phần này chúng ta tập trung vào phần thiết kế cơ sở dữ liệu và thiết kế giao diện. Hình 3.1. Sơ đồ gói các lớp trong mô hình thiết kế Thiết kế cơ sở dữ liệu Từ sơ đồ các lớp đã được thiết kế và các yêu cầu về dữ liệu thu thập được liệt kê trong từ điển dữ liệu ở phần thu thập yêu cầu, ta xác định được các thực thể của mô hình thực thể liên kết (ERD) được liệt kê trong Bảng 3.1 dưới đây. Bảng 3.1. Các thực thể và thuộc tính trong mô hình ERD Tên thực thể Tên sử dụng Các thuộc tính Phòng ban Department Tên phòng ban, Trưởng phòng, Mô tả Nhân viên Staff Họ tên, Giới tính, Vị trí, Kỹ năng, Email, Số điện thoại, Phòng ban, Tài khoản, Mô tả Tài khoản Account Tên tài khoản, Mật khẩu, Quyền Dự án Project Tên dự án, Ngày tạo, Ngày bắt đầu, Ngày kết thúc, Ngày hoàn thành, Mô tả, Tiến độ Công việc Task Dự án, Tên công việc, Người tạo, Ngày tạo, Ngày bắt đầu, ngày kết thúc, Ngày hoàn thành, Mô tả Nhân viên dự án Staff Project Dự án, Nhân viên Phân công công việc Staff Task Nhân viên, Công việc Tiến độ công việc Progress Task Công việc, Ngày đánh giá, Tiến độ, Xác nhận, Chi tiết đánh giá Tiến độ dự án Progress Project Dự án, Ngày đánh giá, Tiến độ, Xác nhận, Chi tiết đánh giá Xác định liên kết giữa các thực thể Quan hệ 1:N giữa Nhân viên và Phòng ban: Một Phòng ban có nhiều Nhân viên, nhưng ngược lại một Nhân viên chỉ thuộc một Phòng ban. Quan hệ 1:1 giữa Nhân viên và Tài khoản: Một Nhân viên có một Tài khoản, và ngược lại một Tài khoản thuộc về một Nhân viên. Quan hệ 1:N giữa Dự án và Công việc: Một Dự án bao gồm nhiều công việc, nhưng ngược lại Một công việc chỉ thuộc về một Dự án. Quan hệ 1:N giữa Dự án và Nhân viên dự án: Một Dự án có nhiều Nhân viên dự án tham gia, nhưng ngược lại một Nhân viên dự án chỉ thuộc về một Dự án. Quan hệ 1:N giữa Nhân viên và Nhân viên dự án: Một Nhân viên có thể tham gia vào nhiều Dự án nên có thể là nhiều Nhân viên dự án, nhưng ngược lại một Nhân viên dự án chỉ là một Nhân viên. Quan hệ 1:N giữa Công việc và Phân công công việc: Một Công việc có thể được phân công cho nhiều người nên có nhiều Phân công công việc, và ngược lại một Phân công công việc là của một Công việc. Quan hệ 1:N giữa Nhân viên và Phân công công việc: Một Nhân viên có thể thực hiện nhiều Công việc nên có nhiều Phân công công việc, nhưng ngược lại một Phân công công việc do một Nhân viên thực hiện. Quan hệ 1:N giữa Công việc và Tiến độ công việc: Một Công việc sẽ có nhiều Tiến độ công việc được đánh giá ở mỗi lần cập nhập tiến độ, nhưng ngược lại một Tiến độ công việc là của một Công việc. Quan hệ 1:N giữa Dự án và Tiến độ dự án: Một Dự án sẽ có nhiều Tiến độ dự án cho mỗi lần cập nhập tiến độ, nhưng ngược lại, một Tiến độ dự án là của một dự án. Dựa vào mô tả của các thực thể và liên kết giữa các thực thể, ta xây dựng được sơ đồ thực thể liên kết (ERD) như trên Hình 3.2. Hình 3.2. Sơ đồ thực thể liên kết Sau khi đã có sơ đồ thực thể liên kết, ta chuyển từ mô hình thực thể liên kết sang mô hình quan hệ, ta được lược đồ cơ sở dữ liệu quan hệ như trên Hình 3.3. Hình 3.3. Lược đồ cơ sở dữ liệu cho hệ thống quản lý dự án Thiết kế giao diện Với phần giao diện, chúng ta sử dụng các bản mẫu giao diện web có sẵn để xây dựng giao diện. Ở đây chúng ta sử dụng Admin LTE để làm giao diện. Giao diện chính của website như trên Hình 3.4. Hình 3.4. Giao diện chính của website Để hiển thị các danh sách phòng ban, nhân viên, dự án hay công việc, sử dụng giao diện bảng như trên Hình 3.5. Hình 3.5. Giao diện bảng để hiển thị danh sách Để tạo hay chỉnh sửa các đối tượng như nhân viên hay dự án ta sử dụng form như trên Hình 3.6. Hình 3.6. Giao diện để chỉnh sửa, thêm thông tin dự án Để hiển thị chi tiết cho các đối tượng như công việc hay nhân viên, ta sử dụng giao diện như trên Hình 3.7. Hình 3.7. Giao diện hiển thị chi tiết công việc Ngoài ra, chúng em còn sử dụng thư hiện Highchart để hiển thị các dữ liệu tiến độ dưới dạng đồ thị, để có thể quan sát một cách trực quan. Hình 3.8. Giao diện hiển thị dưới dạng đồ thị Như vậy chúng ta đã xây dựng được thiết kế với mô hình phân lớp theo MVC và thiết kế cho từng lớp gồm lớp cơ sở dữ liệu và lớp giao diện. Dựa trên thiết kế này, chúng ta sẽ triển khai hệ thống trên nền tảng Java Spring. TRIỂN KHAI VÀ ĐÁNH GIÁ HỆ THỐNG Sau khi đã có được thiết kế cho các lớp (layer), ta tiến hành triển khai hệ thống bằng Spring Boot và sử dụng hệ quản trị cơ sở dữ liệu MySQL. Dưới đây sẽ trình bày các bước thực hiện và kết quả chạy chương trình. Triển khai hệ thống Ta triển khai cơ sở dữ liệu trên công cụ MySQL Workbench 8.0. Tạo một lược đồ có tên “rangdondev3”. Ta sử dụng bộ công cụ Spring Tool Suite 4 để triển khai ứng dụng. Ta có thể tạo ra các bảng trong cơ sở dữ liệu tương ứng các thực thể trong mô hình của hệ thống bằng cách thay đổi trong file application.properties thuộc tính ddl-auto từ “none” thành “update”. Sau khi đã có các bảng trong cơ sở dữ liệu, trước tiên ta cần thêm thủ công các quyền trong bảng phân quyền (role) từ MySQL, với 3 quyền chính như trong Hình 3.1 dưới đây. Hình 4.1. Thêm các quyền cho bảng phân quyền trong cơ sở dữ liệu Ta xây dựng ứng dụng bằng công cụ Spring Boot App. Để kiểm thử hệ thống ta cần đăng ký một tài khoản với quyền admin để có thể kiểm thử việc triển khai các chức năng hệ thống. Việc tạo tài khoản chỉ để hỗ trợ việc kiểm thử h chứ hệ thống không cho phép người dùng đăng ký tài khoản mà là do admin sẽ tạo tài khoản cho người dùng. Ta tạo một tài khoản với quyền admin như trên Hình 4.2. Sau khi đã có tài khoản với quyền admin, ta đăng nhập vào hệ thống và chạy thử các chức năng để kiểm tra hoạt động của hệ thống theo nghiệp vụ đã đề ra. Màn hình đăng nhập hệ thống cho trong Hình 4.3. Sau khi đã đăng nhập, ta chạy chương trình để kiểm thử các chức năng hệ thống, kết quả chạy chương trình được trình bày trong phần dưới đây. Hình 4.2. Đăng ký tài khoản để kiểm thử hệ thống Hình 4.3. Đăng nhập vào hệ thống Kết quả chạy chương trình Sau khi đăng nhập vào hệ thống, ta sẽ vào trang chủ của ứng dụng, có giao diện như trên Hình 4.4 dưới đây. Hình 4.4. Trang chủ của ứng dụng Ta thấy giao diện chính của trang chủ gồm các menu chức năng chính của hệ thống như quản lý tài khoản, quản lý phòng ban, quản lý nhân viên và quản lý dự án. Sau đây, ta sẽ chạy thử lần lượt từng chức năng này của hệ thống. Chức năng quản lý tài khoản Hiển thị danh sách tài khoản Danh sách các tài khoản trong cơ sở dữ liệu được hiển thị dưới dạng bảng với tên tài khoản và quyền tương ứng của mỗi tài khoản. Ngoài ra còn hiển thị các nút để người dùng có thể tương tác với hệ thống. Ta có giao diện như trong Hình 4.5 dưới đây. Hình 4.5. Hiển thị danh sách tài khoản Thêm tài khoản cho người dùng hệ thống Từ màn hình danh sách tài khoản phía trên, nhấn vào nút Create Account để thực hiện chức năng thêm tài khoản. Thông tin tài khoản bao gồm Account Name là tên tài khoản người dùng, Password là mật khẩu và Account role là quyền của tài khoản như trên Hình 4.6. Có 3 quyền chính của tài khoản có thể lựa chọn khi thêm tài khoản là admin, manager và staff. Hình 4.6. Thêm tài khoản cho người dùng hệ thống Cần lưu ý ở đây là không được phép thêm tài khoản trùng với tài khoản đã tồn tại trong hệ thống, như vậy hệ thống sẽ báo lỗi. Sau khi tạo tài khoản thành công sẽ có email thông báo gửi về cho chủ tài khoản. Chỉnh sửa tài khoản Từ màn hình danh sách tài khoản, nhấn chọn biểu tượng chỉnh sửa tài khoản hình bút chì để sửa thông tin tài khoản. Hệ thống chỉ cho phép chỉnh sửa mật khẩu và quyền của tài khoản mà không cho phép chỉnh sửa tên tài khoản. Lưu ý ở đây là chỉ có admin mới có quyền chỉnh sửa tài khoản. Giao diện chỉnh sửa tài khoản được thể hiện trên Hình 4.7. Xoá tài khoản Tài khoản bị xoá khi không còn sử dụng. Chỉ có tài khoản với quyền admin mới có thể xoá tài khoản. Để xoá tài khoản ta nhấn vào biểu tượng thùng rác tương ứng với tài khoản muốn xoá. Hệ thống sẽ yêu cầu xác nhận xoá như trên Hình 4.8. Thông báo cho người dùng đã xoá thành công hoặc thông báo lỗi khi người dùng không phải là người dùng có quyền admin. Hình 4.7. Chỉnh sửa thông tin tài khoản Hình 4.8. Xoá tài khoản người dùng khỏi hệ thống Chức năng quản lý phòng ban Danh sách các phòng ban Lựa chọn menu Department Management để truy cập vào danh sách các phòng ban trong công ty. Hiển thị danh sách các phòng ban dưới dạng bảng với các thông tin mô tả về phòng ban và các nút chức năng để người dùng tương tác với hệ thống như trên Hình 4.9. Hình 4.9. Hiển thị danh sách các phòng ban trong công ty Tạo phòng ban Từ màn hình danh sách phòng ban, bấm vào nút Create Department để thực hiện tạo phòng ban. Giao diện tạo phòng ban cùng các trường thông tin cần thêm như trong Hình 4.10. Hình 4.10. Tạo phòng ban mới Sửa phòng ban Từ màn hình danh sách các phòng ban, chọn biểu tượng chỉnh sửa để thay đổi các thông tin của phòng ban. Giao diện chỉnh sửa phòng ban được thể hiện như trên Hình 4.11. Hình 4.11. Chỉnh sửa phòng ban Xoá phòng ban Ở màn hình danh sách các phòng ban, chọn biểu tượng xoá tương ứng với phòng ban để thực hiện xoá phòng ban không còn hoạt động. Hệ thống sẽ yêu cầu người dùng xác nhận yêu cầu xoá như trong Hình 4.12. Hình 4.12. Xoá phòng ban không còn hoạt động Xem chi tiết phòng ban Từ màn hình danh sách phòng ban, chọn biểu tượng chi tiết để xem thông tin chi tiết của từng phòng ban. Các thông tin của phòng ban được hiển thị như trong Hình 4.13. Hình 4.13. Hiển thị thông tin chi tiết của phòng ban Chức năng quản lý nhân viên Danh sách nhân viên Khi chọn menu Staff Management, danh sách nhân viên được hiển thị dưới dạng bảng với các thông tin mô tả về nhân viên và các nút để người dùng có thể tương tác với hệ thống như trong Hình 4.14. Hình 4.14. Hiển thị danh sách nhân viên của công ty Thêm nhân viên Từ màn hình danh sách nhân viên, nhấn chọn nút Add Staff để thêm nhân viên vào công ty. Giao diện và các trường thông tin của nhân viên được thể hiện trên Hình 4.15. Hình 4.15. Thêm nhân viên vào công ty Chỉnh sửa thông tin nhân viên Từ màn hình danh sách nhân viên, chọn biểu tượng chỉnh sửa để chỉnh sửa thông tin nhân viên. Form chỉnh sửa nhân viên được thể hiện trong Hình 4.16. Hình 4.16. Chỉnh sửa thông tin nhân viên Xoá nhân viên Từ màn hình danh sách nhân viên, chọn biểu tượng xoá để xoá nhân viên khi không còn làm việc ra khỏi danh sách nhân viên. Hệ thống sẽ yêu cầu xác nhận xoá như trên Hình 4.17. Hình 4.17. Xoá nhân viên khỏi danh sách nhân viên Thông tin chi tiết nhân viên Từ màn hình danh sách nhân viên, chọn biểu tượng chi tiết để xem thông tin chi tiết của nhân viên. Các thông tin của nhân viên được hiển thị như trong Hình 4.18. Hình 4.18. Xem thông tin chi tiết của nhân viên Chức năng quản lý dự án Danh sách dự án Chọn menu Project Management để vào giao diện quản lý dự án. Ở đây sẽ hiển thị danh sách các dự án của công ty dưới dạng bảng với tên của dự án và các mốc thời gian quan trọng của dự án cùng với các biểu tượng để người dùng có thể tương tác với hệ thống như trong Hình 4.19. Hình 4.19. Hiển thị danh sách dự án của công ty Tạo dự án Từ màn hình danh sách dự án, chọn nút Create Project để tạo dự án mới. Giao diện tạo dự án và các trường thông tin mô tả dự án như trên Hình 4.20. Hình 4.20. Tạo một dự án mới Chỉnh sửa dự án Từ màn hình danh sách dự án, chọn biểu tượng chỉnh sửa để có thể chỉnh sửa thông tin dự án. Form chỉnh sửa thông tin dự án được thể hiện trong Hình 4.21. Hình 4.21. Chỉnh sửa thông tin dự án Xoá dự án Từ màn hình danh sách dự án, chọn biểu tượng xoá để loại bỏ dự án không còn được thực hiện. Hệ thống sẽ yêu cầu người dùng xác nhận xoá như trên Hình 4.22. Hình 4.22. Xoá dự án không còn được thực hiện Thông tin chi tiết dự án Từ màn hình danh sách dự án, chọn biểu tượng chi tiết để xem thông tin chi tiết của dự án. Các thông tin của dự án được hiển thị như trên Hình 4.23. Hình 4.23. Xem thông tin chi tiết dự án Danh sách nhân viên dự án Chọn menu Staff of Project để hiển thị danh sách các nhân viên tham gia vào dự án. Danh sách nhân viên dự án được hiển thị dưới dạng bảng với các mô tả về nhân viên và các biểu tượng để người dùng có thể tương tác với hệ thống như trên Hình 4.24. Hình 4.24. Hiển thị danh sách nhân viên của dự án Thêm nhân viên dự án Từ màn hình danh sách nhân viên dự án, nhấn chọn nút Add Staff in Project để thực hiện thêm một nhân viên từ danh sách nhân viên của công ty vào danh sách nhân viên của dự án. Các nhân viên được hiển thị trong combobox để người quản lý có thể lựa chọn thêm vào dự án như trên Hình 4.25. Các nhân viên trong combobox là những nhân viên chưa tham gia vào dự án hiện tại. Sau khi thêm nhân viên vào dự án thành công sẽ thông báo cho người dùng. Hình 4.25. Thêm nhân viên vào dự án Tạo công việc cho nhân viên dự án Từ màn hình danh sách nhân viên dự án, chọn đường dẫn tạo task cho staff để thêm một công việc cho nhân viên dự án. Giao diện hiển thị cùng các trường thông tin để tạo công việc cho nhân viên dự án được thể hiện trên Hình 4.26. Hình 4.26. Tạo công việc cho nhân viên dự án Danh sách công việc của nhân viên Từ màn hình danh sách nhân viên dự án, chọn đường dẫn List Task of Staff để hiển thị danh sách các công việc cần thực hiện của nhân viên. Danh sách các công việc được thể hiện dưới dạng bảng với các thông tin mô tả về công việc và các nút để người dùng tương tác với hệ thống như trên Hình 4.27. Hình 4.27. Hiển thị danh sách các công việc Tạo công việc con Từ màn hình danh sách các công việc, chọn đường dẫn Create Sub Task để tạo công việc con cho công việc hiện tại. Chỉ các công việc có lựa chọn ở cột Sub Task mới được phép thêm công việc con cho công việc đó. Giao diện và form tạo công việc con tương tự đối với tạo công việc như trên Hình 4.26. Xoá công việc Từ màn hình danh sách các công việc, chọn biểu tượng xoá để thực hiện xoá công việc tương ứng. Khi thực hiện xoá sẽ có hộp thoại thông báo xác nhận bạn có chắc chắn muốn xoá công việc, chọn OK để tiếp tục xoá như trên Hình 4.28. Khi thực hiện xoá công việc, hệ thống sẽ kiểm tra công việc ấy có công việc con hay không, nếu có sẽ hiển thị thông báo yêu cầu xoá công việc con trước mới được phép xoá công việc con. Ghi lại lịch làm việc Từ màn hình danh sách nhân viên dự án, người dùng chọn đường dẫn log work để ghi lại lịch trình làm việc hàng ngày. Người dùng sẽ thực hiện thêm các sự kiện và mô tả, hệ thống sẽ hiển thị trên lịch rất trực quan, giúp người dùng dễ quản lý lịch làm việc như trên Hình 4.29. Hình 4.28. Xoá công việc Hình 4.29. Ghi lại lich làm việc của người dùng Xoá nhân viên khỏi dự án Từ danh sách nhân viên dự án, chọn biểu tượng xoá để xoá nhân viên không còn tham gia vào dự án khỏi danh sách nhân viên dự án. Hệ thống sẽ đưa ra một hộp thoại thông báo để yêu cầu xác nhận xoá như trên Hình 4.30. Chọn OK để tiếp tục xoá hoặc Cancel nếu không muốn xoá nữa. Hình 4.30. Xoá nhân viên khỏi dự án Chi tiết công việc Từ danh sách các công việc, chọn đường dẫn Chi tiết task để xem thông tin chi tiết cho từng công việc. Các thông tin mô tả chi tiết về công việc được hiển thị như trên Hình 4.31. Hình 4.31. Xem chi tiết công việc Xem tiến độ của công việc Từ màn hình chi tiết công việc, chọn Progress Task trên thanh menu để xem tiến độ của công việc. Tiến độ của công việc được hiển thị trên đồ thị và có bảng ghi lại tiến độ như trên Hình 4.32. Hình 4.32. Xem tiến độ công việc Cập nhập tiến độ công việc Từ màn hình xem tiến độ công việc, chọn nút Log Task after a day work để thực hiện việc cập nhập tiến độ công việc sau mỗi ngày làm việc. Giao diện và các thông tin của form Log Task được thể hiện trên Hình 4.33. Hình 4.33. Cập nhập tiến độ công việc Cập nhập tiến độ dự án Từ màn hình thông tin chi tiết dự án, chọn Progress Project trên thanh menu để xem thống kê tiến độ dự án. Tiến độ dự án được tính toán từ tiến độ của các công việc trong dự án theo mô hình toán học được xây dựng từ phần phân tích. Khi người dùng cập nhập tiến độ công việc thì tiến độ của dự án sẽ tự động được tính và sinh ra bản ghi tương ứng ở bảng thông tin tiến độ dự án. Tiến độ của dự án được hiển thị trực quan trên sơ đồ như trên Hình 4.34. Hình 4.34. Cập nhập tiến độ dự án Đánh giá Qua các kết quả chạy chương trình, chúng ta có thể thấy hệ thống đã đáp ứng được đầy đủ các yêu cầu chức năng hệ thống từ quản lý phòng ban, quản lý nhân viên, quản lý tài khoản đến quản lý dự án. Các chức năng này được triển khai chi tiết để thực hiện đầy đủ chức năng yêu cầu. Yêu cầu ước lượng và đánh giá tiến độ dự án đã được triển khai và thực hiện đúng mô hình đã đề ra. Tuy nhiên, ứng dụng vẫn còn một số thiếu sót cần cải thiện thêm để có thể hoàn thiện hơn nữa và có thể triển khai trong thực tế. KẾT LUẬN Sau quá trình thực hiện đồ án, chúng em đã xây dựng được một phần mềm có thể thực hiện được các yêu cầu chức năng đặt ra của hệ thống quản lý dự án. Quá trình phát triển phần mềm diễn ra từ thu thập yêu cầu, phân tích, thiết kế hệ thống đến triển khai hệ thống trên nền tảng Java Spring. Phần mềm được thiết kế có thể thực hiện được các chức năng nghiệp vụ của hệ thống gồm: quản lý phòng ban, quản lý nhân viên, quản lý tài khoản và các nghiệp vụ quản lý dự án. Vấn đề trọng tâm của hệ thống là đánh giá tiến độ của dự án đã được giải quyết bằng cách xây dựng và triển khai một mô hình toán học để có thể tính toán tiến độ dự án. Tuy nhiên do hạn chế về thời gian, các bước phân tích, thiết kế vẫn còn thiếu sót nên có thể chưa hoàn toàn bao quát hết các chức năng nghiệp vụ của hệ thống. Phần mềm được xây dựng vẫn còn một số chức năng chưa hoàn toàn đúng với yêu cầu đưa ra cần được khắc phục và xử lý để hoàn thiện hơn. Trong tương lai, phần mềm có thể được tiếp tục phát triển để có thể tích hợp thêm các nghiệp vụ khác của doanh nghiệp, giúp công việc quản lý trở đơn giản và hiệu quả hơn. Với việc đánh giá tiến độ dự án, ta có thể xây dựng thêm các mô hình toán học khác để có thể đánh giá chính xác hơn tiến độ dự án, giúp quản lý dự án hiệu quả hơn. Hệ thống cũng có thể được cài đặt và triển khai trên hạ tầng vật lý để có thể đưa vào hoạt động và tích hợp với nghiệp vụ hiện tại của doanh nghiệp. TÀI LIỆU THAM KHẢO [1] A. Dennis, B. H. Wixom, D. Tegarden, System Analysis Design, UML Version 2.0: An Object-Oriented Approach, Fourth Edition, Willey, 2012. [2] https://en.wikipedia.org/wiki/Unified_Modeling_Language, truy nhập cuối cùng ngày 10/06/2019 [3] https://www.tutorialspoint.com/uml/, truy nhập cuối cùng ngày 10/06/2019. [4] https://spring.io/projects/spring-boot, truy nhập cuối cùng ngày 10/06/2019. [5] https://o7planning.org/vi/11669/spring-boot, truy nhập cuối cùng ngày 10/06/2019. [6] https://kipalog.com/posts/Buoc-dau-tim-hieu-Spring-Boot, truy nhập cuối cùng ngày 10/06/2019. [7] https://spring.io/guides/tutorials/rest/, truy nhập cuối cùng ngày 10/06/2019. [8] https://spring.io/guides/gs/rest-service/, truy nhập cuối cùng ngày 10/06/2019. [9] https://o7planning.org/vi/11645/vi-du-crud-restful-web-service-voi-spring-boot, truy nhập cuối cùng ngày 10/06/2019. [10] https://kipalog.com/posts/Spring-boot---Rest-API--Overview, truy nhập cuối cùng ngày 10/06/2019. [11] https://spring.io/projects/spring-security, truy nhập cuối cùng ngày 10/06/2019. [12] https://kipalog.com/posts/Huong-dan-lap-trinh-Spring-Security, truy nhập cuối cùng ngày 10/06/2019. [13] https://www.w3schools.com/bootstrap4/default.asp, truy nhập cuối cùng ngày 10/06/2019. [14] https://getbootstrap.com/, truy nhập cuối cùng ngày 10/06/2019. [15] https://www.w3schools.com/jquery/default.asp, truy nhập cuối cùng ngày 10/06/2019. [16] https://blog.jquery.com/, truy nhập cuối cùng ngày 10/06/2019. [17] https://code.jquery.com/, truy nhập cuối cùng ngày 10/06/2019. [18] https://www.w3schools.com/js/, truy nhập cuối cùng ngày 10/06/2019. [19] https://javascript.info/, truy nhập cuối cùng ngày 10/06/2019. BẢNG ĐỐI CHIẾU THUẬT NGỮ VIỆT ANH Ngôn ngữ mô hình hoá thống nhất Unified Modeling Language Quy trình nghiệp vụ Business Process Mô hình hoá chức năng Functional Modeling Sơ đồ ca sử dụng Use Case Diagram Sơ đồ hoạt động Activity Diagram Kịch bản hoạt động Use Case Description Mô hình hoá cấu trúc Structural Modeling Lớp Class Đối tượng Object Thẻ cộng tác trách nhiệm lớp Class-Responsibility-Collaboration card Sơ đồ lớp Class Diagram Mô hình hoá hoạt động Behavioral Modeling Sơ đồ tuần tự Sequence Diagram Lớp (layer) Layer Sơ đồ gói Package diagram Cơ sở dữ liệu Database Sơ đồ thực thể liên kết Entity-Relationship Diagram Nền tảng Framework PHỤ LỤC Phụ lục 1. Cơ sở lý thuyết các thành phần triển khai hệ thống 1.1. Giới thiệu chung Xây dựng ứng dụng web quản lý dự án cho công ty Rạng Đông Ngôn ngữ viết: Java, Javascript Các thành phần: Front-end: JavaScript, BootStrap Back-end: Java Cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu MySQL 1.2. Các thành phần ở front-end 1.2.1. JavaScript 1.2.1.1. Giới thiệu ngôn ngữ JavaScript JavaScript là một ngôn ngữ lập trình của HTML và WEB. Nó là nhẹ và được sử dụng phổ biến nhất như là một phần của các trang web, mà sự thi hành của chúng cho phép Client-Side script tương tác với người sử dụng và tạo các trang web động. Nó là một ngôn ngữ chương trình thông dịch với các khả năng hướng đối tượng. JavaScript được biết đến đầu tiên với tên Mocha, và sau đó là LiveScript, nhưng công ty Netscape đã đổi tên của nó thành JavaScript, bởi vì sự phổ biến như là một hiện tượng của Java lúc bấy giờ. JavaScript xuất hiện lần đầu trong Netscape 2.0 năm 1995 với tên LiveScript. Core đa năng của ngôn ngữ này đã được nhúng vào Netscape, IE, và các trình duyệt khác. ECMA-262 Specification định nghĩa một phiên bản chuẩn của ngôn ngữ JavaScript như sau: JavaScript là một ngôn ngữ chương trình thông dịch, nhẹ. Được thiết kế để tạo các ứng dụng mạng trung tâm. Bổ sung và tích hợp với Java. Bổ sung và tích hợp với HTML. Mở và đa nền tảng. 1.2.1.2. Client-side JavaScript Client-Side JavaScript là Form phổ biến nhất của ngôn ngữ này. Script nên được bao gồm trong một tài liệu HTML cho việc mã hóa để được thông dịch bởi trình duyệt. Nghĩa là một trang web không cần là một HTML tĩnh, nhưng có thể bao gồm các chương trình mà tương tác với người dùng, điều khiển trình duyệt, và tạo nội dung HTML động. Kỹ thuật Client-Side JavaScript cung cấp nhiều lợi thế hơn các CGI Server-Side Script. Ví dụ, bạn có thể sử dụng JavaScript để kiểm tra nếu người sử dụng đã nhập một địa chỉ Email hợp lệ trong một trường Form. JavaScript code được thực thi khi người sử dụng đệ trình Form, và chỉ nếu tất cả đầu vào là hợp lệ, chúng sẽ được đệ trình tới Web Server. JavaScript có thể được sử dụng để nắm bắt các sự kiện được khởi tạo từ người sử dụng như nhấp chuột, điều hướng link, và các hoạt động khác mà người dùng khởi tạo. 1.2.1.3. Các lợi thế của JavaScript Các lợi thế của việc sử dụng JavaScript là: Sự tương tác Server ít hơn: Bạn có thể xác nhận đầu vào (input) người sử dụng trước khi gửi trang tới Server. Điều này làm tiết kiệm lưu lượng tải ở Server, nghĩa là Server của bạn tải ít hơn. Phản hồi ngay lập tức tới khách truy cập: Họ không phải chờ cho một trang web tải lại để thấy xem nếu họ đã quên nhập cái gì đó. Khả năng tương tác tăng lên: Bạn có thể tạo các giao diện mà phản ứng lại khi người sử dụng rê chuột qua chúng hoặc kích hoạt chúng thông qua bàn phím. Giao diện phong phú hơn: Bạn có thể sử dụng JavaScript để bao gồm những mục như các thành phần Drag và Drop (DnD) và các con trượt (Slider) để cung cấp một Rich Interface (Giao diện giàu tính năng) tới site khách truy cập của bạn. 1.2.1.4. Hạn chế của JavaScript Chúng ta không thể đối xử JavaScript như là một ngôn ngữ chương trình chính thức (full-fledged). Nó thiếu các tính năng quan trọng sau: Client-side JavaScript không cho phép đọc và ghi các file, bởi vì lý do bảo mật. JavaScript không được sử dụng cho việc kết nối mạng các ứng dụng bởi vì không có những hỗ trợ có sẵn. JavaScript không có bất kỳ khả năng đa luồng hoặc đa xử lý. Một lần nữa, JavaScript là một ngôn ngữ chương trình thông dịch, nhẹ mà cho phép bạn xây dựng khả năng tương tác trong các trang HTML tĩnh. 1.2.1.5. Các công cụ phát triển JavaScript Một trong những điểm mạnh lớn nhất của JavaScript là nó không yêu cầu các công cụ phát triển tốn kém. Bạn có thể bắt đầu với một bộ biên soạn (Editor) văn bản đơn giản như Notepad. Khi nó là một ngôn ngữ thông dịch bên trong context của một trình duyệt web, bạn không cần phải mua một Complier (bộ phiên dịch). Để làm cuộc sống của bạn đơn giản hơn, nhiều nhà cung cấp đã cho ra đời các công cụ chỉnh sửa JavaScript đẹp, được liệt kê dưới đây: Microsoft FrontPage Microsoft đã phát triển một HTML Editor phổ biến được gọi là FrontPage. FrontPage cũng cung cấp cho nhà lập trình các công cụ JavaScript để giúp đỡ tạo các Website có tính tương tác. Macromedia Dreamweaver MX Macromedia Dreamweaver MX là một HTML và JavaScript Editor rất phổ biến trong cộng đồng lập trình web chuyên nghiệp. Nó cung cấp các thành phần JavaScript đã xây dựng trước mà thuận tiện, tích hợp tốt với cơ sở dữ liệu, và theo các chuẩn mới như XHTML và XML. Macromedia HomeSite 5 HomeSite 5 là một HTML và JavaScript Editor từ Macromedia mà có thể được sử dụng để quản lý các Website cá nhân một cách hiệu quả. 1.2.1.6. JavaScript ngày nay? Chuẩn ECMAScript Edition 5 sẽ là cập nhật đầu tiên được công bố trong 4 năm qua. JavaScript 2.0 tuân theo chuẩn ECMAScript Edition 5, và sự khác nhau giữa chúng là ít. Chi tiết kỹ thuật cho JavaScript 2.0 có thể được tìm thấy trong site sau:  Ngày nay, JavaScript của Netscape và JScript của Microsoft tuân theo chuẩn ECMAScript, mặc dù cả hai ngôn ngữ vẫn hỗ trợ các tính năng mà không là một phần của chuẩn này. Theo Tutorialspoint 1.2.2. Ngôn ngữ Java Đồ án này sử dụng Java bản 8.211 1.2.2.1. Giới thiệu về Java Java là một Ngôn ngữ lập trình và là một Platform: Ngôn ngữ lập trình: Java là một ngôn ngữ lập trình bậc cao, hướng đối tượng, bảo mật và mạnh mẽ. Platform: Bất cứ môi trường phần cứng hoặc phần mềm nào mà trong đó có một chương trình chạy, thì được hiểu như là một Platform. Với môi trường runtime riêng cho mình (JRE) và API, Java được gọi là Platform. Ngôn ngữ lập trình Java ban đầu được phát triển bởi Sun Microsystems do James Gosling khởi xướng và phát hành vào năm 1995. Phiên bản mới nhất của Java Standard Edition là Java SE 8. Với sự tiến bộ của Java và sự phổ biến rộng rãi của nó, nhiều cấu hình đã được xây dựng để phù hợp với nhiều loại nền tảng khác nhau. Ví dụ: J2EE cho các ứng dụng doanh nghiệp, J2ME cho các ứng dụng di động. Các phiên bản J2 mới đã được đổi tên thành Java SE, Java EE và Java ME. Phương châm của java là “Write Once, Run Anywhere” – viết một lần chạy nhiều nơi, nghĩa là bạn chỉ cần viết một lần trên window chẳng hạn, sau đó vẫn chương trình đó bạn có thể chạy trên Linux, Android, các thiết bị J2ME Java là: Hướng đối tượng – Trong Java, mọi thứ đều là một Object. Java có thể dễ dàng mở rộng và bảo trì vì nó được xây dựng dựa trên mô hình Object. Nền tảng độc lập – Không giống nhiều ngôn ngữ lập trình khác bao gồm cả C và C ++, khi Java được biên dịch, nó không được biên dịch thành ngôn ngữ máy nền tảng cụ thể, thay vào mã byte – nền tảng độc lập. Mã byte này được thông dịch bởi máy ảo (JVM) trên nền tảng nào đó mà nó đang chạy. Đơn giản – Java được thiết kế để dễ học. Nếu bạn hiểu khái niệm cơ bản về OOP Java, sẽ rất dễ để trở thành master về java. Bảo mật – Với tính năng an toàn của Java, nó cho phép phát triển các hệ thống không có virut, giả mạo. Các kỹ thuật xác thực dựa trên mã hoá khóa công khai. Kiến trúc – trung lập – Trình biên dịch Java tạo ra định dạng tệp đối tượng kiến trúc trung lập, làm cho mã biên dịch được thực thi trên nhiều bộ vi xử lý, với sự hiện diện của hệ điều hành Java. Portable – Là kiến trúc tập trung và không có khía cạnh thực hiện phụ thuộc của đặc tả này làm cho Java khả chuyển. Trình biên dịch trong Java được viết bằng ANSI C, đó là một tập con POSIX. Mạnh mẽ – Java làm nỗ lực để loại trừ các tình huống dễ bị lỗi bằng cách kiểm tra lỗi tại thời gian biên dịch và kiểm tra lỗi tại runtime. Đa luồng – Với tính năng đa luồng của Java có thể viết các chương trình có thể thực hiện nhiều tác vụ đồng thời. Tính năng thiết kế này cho phép các nhà phát triển xây dựng các ứng dụng tương tác có thể chạy trơn tru hơn. Thông dịch – Mã byte Java được dịch trực tiếp tới các máy tính gốc và không được lưu trữ ở bất cứ đâu. Hiệu năng cao – Với việc sử dụng trình biên dịch Just-In-Time, Java cho phép thực hiện hiệu năng cao. Phân tán – Java được thiết kế cho môi trường phân tán của Internet. Năng động – Java là năng động hơn C hoặc C++ vì nó được thiết kế để thích nghi với môi trường đang phát triển. Các chương trình Java có thể mang một lượng lớn thông tin tại runtime mà có thể được sử dụng để xác minh và giải quyết các truy cập vào các đối tượng tại runtime. Nơi Java được sử dụng Theo tập đoàn SUN, hiện nay có khoảng 3 tỷ thiết bị đang chạy java. Ví dụ: Desktop App như acrobat reader, media player, antivirus, Web App như irctc.co.in, javatpoint.com, Enterprise App như các ứng dụng về xử lý nghiệp vụ ngân hàng, Thiết bị Mobile Hệ thống nhúng Smart Card Robot Game App Các kiểu của Java App Có 4 kiểu ứng dụng chính của java app: Standalone App cũng được biết đến như Desktop App hoặc Window-based App. Để tạo ra ứng dụng kiểu này người ta thường sử dụng AWT, Swing hoặc JavaFX framework. Web App là ứng dụng chạy trên server và tạo được các trang động. Hiện nay, servlet, jsp, struts, jsf, spring là những công nghệ được sử dụng để tạo Web App trong java. Một ứng dụng dạng như Banking App, có lợi thế là tính bảo mật cao, cân bằng tải (load balancing) và clustering. Trong java, EJB được sử dụng để tạo các Enterprise App. Mobile App là ứng dụng được tạo ra cho các thiết bị di động. Hiện nay Android và Java ME được sử dụng để chạy các ứng dụng này. 1.2.2.2. Spring Framework Spring Framework, hay ngắn hơn là Spring, là một cấu trúc dùng để xây dựng chương trình ứng dụng mã nguồn mở dành cho ngôn ngữ lập trình Java. Spring là một framework nhẹ. Nó có thể được dùng như một framework của frameworks vì nó cung cấp hỗ trợ khác nhau frameworks như Struts, Hibernate, Tapestry, EJB, JSF vv.. Các framework, trong ý nghĩa rộng hơn, có thể được định nghĩa như là một cấu trúc mà chúng ta tìm thấy giải pháp của nhau các vấn đề kỹ thuật. Spring framework bao gồm một số modules như IOC, AOP, DAO, Context, ORM, WEB MVC vv.. Các modules này sẽ được tìm hiểu trong các phần tiếp theo. Hình 1. Các thành phần của Spring Framework Ưu điểm của Spring Framework Lightweight và very little overhead trong việc phát triển ứng dụng của bạn. Dependency Injection hoặc Inversion of Control được sử dụng để giúp các component tách rời, độc lập với nhau. Spring container sẽ giúp gắn kết những components này lại với nhau theo đặc tả business của bạn. Spring IoC container quản lý vòng đời của Spring Bean và các cấu hình của project chẳng hạn như JNDI lookup. Spring MVC framework được sử dụng cho phát triển ứng dụng web rất dễ dàng với việc hỗ trợ rất tốt các tính năng web services, json, Hỗ trợ quản lý transaction, JDBC operations, File uploading, Exception Handling, rất dễ dàng bằng cách cấu hình được rút gọn, thay vào đó là sử dụng annotation hoặc spring bean configuration file. Và một vài ưu điểm khi sử dụng Spring framework: Làm giảm đi sự phụ thuộc giữa các components khác nhau của ứng dụng, Spring IoC container làm nhiệm vụ khởi tạo resources hoặc beans và “tiêm – inject” chúng theo sự phụ thuộc khác nhau. Thực hiện unit test case rất dễ bởi vì business logic của bạn không có sự phụ thuộc trực tiếp. Việc thực hiện chỉ là viết test configuration và inject mock bean cho các mục đích test khác nhau. Làm giảm đi khối lượng code rất nhiều, chẳng hạn như việc khởi tạo đối tượng, open/close các resources, Spring framework chia thành nhiều module riêng biệt, do đó việc sử dụng các features trong Spring framework rất tự do Ví dụ như ứng dụng không sử dụng tính năng transaction, thì không cần thiết phải thêm dependency này vào. Spring framework hỗ trợ hầu hết các tính năng của Java EE, thậm chí còn nhiều hơn nữa. Nguồn: Vnfit.com Phụ lục 2. Một số chức năng khác phần mềm hỗ trợ Hình 2. Chức năng gửi phản hồi Hình 3. Chức năng thống kê phản hồi Hình 4. Chức năng trả lời phản hồi Hình 5. Giới thiệu trang web Hình 6. Giới thiệu về team Phụ lục 3. Mã nguồn SQL cho cơ sở dữ liệu create database rangdongdev3; use rangdongdev3; create database test1; -- Create table create table `account` ( account_id int not null primary key auto_increment, account_name VARCHAR(50) not null unique, `password` VARCHAR(128) not null, role_id int default 3, foreign key(role_id) references role(role_id) ) ; -- Create table create table role ( role_id int not null primary key auto_increment, role_name VARCHAR(50) not null unique ) ; create table department ( department_id int not null primary key auto_increment, department_name VARCHAR(50) not null, manager_name VARCHAR(50) not null, discription varchar(500) not null ) ; create table staff ( staff_id int not null primary key auto_increment, first_name varchar(50) not null, last_name varchar(50) not null, full_name varchar(100) not null, gender enum('male','female'), email varchar(100) not null unique, possition varchar(100) not null, skill varchar(100) not null, department_id int not null, account_id int not null, telephone varchar(10) not null unique, discription varchar(500) null, foreign key(department_id) references department(department_id), foreign key(account_id) references `account`(account_id) ); create table staff_project ( id int not null primary key auto_increment, staff_id int not null , project_id int not null , foreign key(staff_id) references staff(staff_id), foreign key(project_id) references project(project_id) ); create table project ( project_id int not null primary key auto_increment, project_name varchar(100) not null, create_date datetime not null, start_date datetime not null, deadline_date datetime not null, finish_date datetime not null, discription varchar(500) null, project_state int null, project_output varchar(500) null ); create table task ( task_id int not null auto_increment primary key, task_idparent int default 0, project_id int not null unique, task_name varchar(500) not null, name_create varchar(100) not null, name_assign varchar(100) not null, date_create datetime not null, deadline_date datetime not null, finish_date datetime null, task_state int null, discription varchar(500) not null, task_output varchar(500) null, foreign key(project_id) references project(project_id) ); create table staff_task ( id int not null primary key auto_increment, staff_id int not null , task_id int not null , foreign key(staff_id) references staff(staff_id), foreign key(task_id) references task(project_id) ); create table progress_task ( progresstask_id int not null primary key auto_increment, confirm int , datelog datetime not null, detail_log nvarchar(500), progress int(11), task_id int(11) , foreign key(task_id) references task(task_id) ); create table feedback ( id int not null primary key auto_increment, `comment` varchar(255) not null, email varchar(255) not null, experience varchar(255), `name` varchar(255) not null, review varchar(255) not null ); create table progress_project ( progress_id bigint(20) not null primary key auto_increment, confirm int(11), datelog datetime, detail_log varchar(255), progress int(11), project_id int(11), foreign key(project_id) references project(project_id) ); create table progress_task ( progress_id bigint(20) not null primary key auto_increment, confirm int(11), datelog datetime, detail_log varchar(255), progress int(11), task_id int(11), foreign key(task_id) references task(task_id) ); create table task_relation ( task_id int(11), previos_task_id int(11), foreign key(task_id) references task(task_id), foreign key(previos_task_id) references task(task_id) )

Các file đính kèm theo tài liệu này:

  • docxdo_an_phat_trien_phan_mem_quan_ly_du_an.docx