TỔNG QUAN VỀ CÔNG NGHỆ PHẦN MỀM
Khái niệm
- Phần mềm: là một tập hợp những câu lệnh được viết bằng một hoặc nhiều ngôn ngữ lập trình theo một trật tự xác định nhằm tự động thực hiện một số chức năng hoặc giải quyết một bài toán nào đó Phần mềm được thực thi trên máy, thường là máy tính.
- Công nghệ (engineering): là cách sử dụng các công cụ, các kỹ thuật trong cách giải quyết một vấn đề nào đó.
- Công nghệ Phần mềm (Software Engineering): là việc áp dụng các công cụ,các kỹ thuật một cách có hệ thống trong việc phát triển các ứng dụng dựa trên máy tính.
Phân loại
- Generic Product: là sản phẩm đóng gói và bán rộng rãi trên thị trường.
- Bespoke Product: là sản phẩm được phát triển theo yêu cầu đặc thù của từng khách hàng.
- Ngoài ra có thể phân chia phần mềm theo miền ứng dụng như sau:
- Là một tập hợp các chương trình được viết để phục vụ cho các chương trình khác.
- Xử lý các cấu trúc thông tin phức tạp nhưng xác định (trình biên dịch, trình soạn thảo, tiện ích quản lý tệp).
- Đặc trưng bởi tương tác chủ yếu với phần cứng máy tính.
- Phục vụ nhiều người dùng.
- Cấu trúc dữ liệu phức tạp và nhiều giao diện ngoài.
1.2.2 Phần mềm thời gian thực
- Phần mềm điều phối, phân tích hoặc kiểm soát các sự kiện thế giới thực ngay khi chúng xuất hiện được gọi là phần mềm thời gian thực Điển hình là các phần mềm điều khiển các thiết bị tự động Phần mềm thời gian thực bao gồm các thành tố:
+ Thành phần thu thập dữ liệu để thu và định dạng thông tin từ môi trường ngoài.
+ Thành phần phân tích để biến đổi thông tin theo yêu cầu của ứng dụng.
+ Thành phần kiểm soát hoặc đưa ra đáp ứng môi trường ngoài.
+ Thành phần điều phối để điều hòa các thành phần khác sao cho có thể duy trì việc đáp ứng thời gian thực.
- Hệ thống thời gian thực phải đáp ứng những ràng buộc thời gian chặt chẽ
- Là các phần mềm phục vụ các hoạt động kinh doanh hay các nghiệp vụ của tổ chức, doanh nghiệp Đây có thể coi là lĩnh vực ứng dụng phần mềm lớn nhất Điển hình là các hệ thống thông tin quản lý gắn chặt với Cơ sở dữ liệu (CSDL), các ứng dụng tương tác như xử lý giao tác cho các điểm bán hàng.
1.2.4 Phần mềm khoa học và công nghệ
- Được đặc trưng bởi các thuật toán (tính toán trên ma trận số, mô phỏng )
- Thường đòi hỏi phần cứng có năng lực tính toán cao
- Nằm trong bộ nhớ chỉ đọc và được dùng để điều khiển các sản phẩm và hệ thống cho người dùng và thị trường công nghiệp
- Có các đặc trưng của phần mềm thời gian thực và phần mềm hệ thống
1.2.6 Phần mềm máy tính cá nhân
- Bùng nổ từ khi xuất hiện máy tính cá nhân, giải quyết các bài toán nghiệp vụ nhỏ như xử lý văn bản, trang tính, đồ họa, quản trị CSDL nhỏ
- Yếu tố giao diện người-máy rất được chú trọng
1.2.7 Phần mềm trí tuệ nhân tạo
- Dùng các thuật toán phi số để giải quyết các vấn đề phức tạp mà tính toán hay phân tích trực tiếp không quản lý nổi.
- Các ứng dụng chính là: hệ chuyên gia (hệ cơ sở tri thức), nhận dạng (hình ảnh và tiếng nói), chứng minh định lý và chơi trò chơi, mô phỏng
- Ngoài ra, chúng ta còn có thể kể đến một dạng phần mềm đặc biệt là phần mềm phục vụ kỹ nghệ phần mềm Đó là các phần mềm như chương trình dịch, phần mềm gỡ rối, các công cụ hỗ trợ phân tích thiết kế (CASE) Các phần mềm này có thể xuất hiện dưới dạng phần mềm máy tính cá nhân, phần mềm hệ thống hoặc là phần mềm nghiệp vụ.
Các đặc tính quan trọng của sản phẩm phần mềm
- Phần mềm thông thường được định nghĩa bao gồm:
+ các lệnh máy tính nhằm thực hiện các chức năng xác định
+ các cấu trúc dữ liệu cho phép chương trình thao tác với dữ liệu
+ các tài liệu giúp cho người dùng có thể vận hành được phần mềm
- Bốn thuộc tính chủ chốt mà một hệ phần mềm tốt phải có là:
+ Có thể bảo trì được (Maintainability): phần mềm tuổi thọ dài phải được viết và được lập tư liệu sao cho việc thay đổi có thể tiến hành được mà không quá tốn kém. Đây được coi là đặc tính chủ chốt nhất của một phần mềm tốt Để có thể bảo trì được, phần mềm phải có một thiết kế tốt có tính modun hóa cao, được viết bằng ngôn ngữ bậc cao và được lập tài liệu (tài liệu phân tích, thiết kế, chú thích mã nguồn, hướng dẫn người dùng ) đầy đủ.
+ Đáng tin cậy (Reliablity): phần mềm phải thực hiện được điều mà người tiêu dùng mong mỏi và không thất bại nhiều hơn những điều đã được đặc tả Điều này có nghĩa là phần mềm phải thỏa mãn được nhu cầu của người dùng Để đạt được yếu tố đáng tin cậy, trước tiên người phát triển cần phải hiểu một cách đúng đắn yêu cầu của người dùng và sau đó cần thỏa mãn được các yêu cầu này bằng các thiết kế và cài đặt tốt.
+ Có hiệu quả (Efficiency): phần mềm khi hoạt động phải không lãng phí tài nguyên hệ thống như bộ nhớ, bộ xử lý Nếu phần mềm chạy quá chậm hay đòi hỏi quá nhiều bộ nhớ thì dù có được cài đặt rất nhiều chức năng cũng sẽ không được đưa vào sử dụng Tuy nhiên, ngoại trừ các phần mềm nhúng hay thời gian thực đặc biệt, người ta thường không cực đại hóa mức độ hiệu quả vì rằng việc đó có thể phải dùng đếm các kỹ thuật đặc thù và cài đặt bằng ngôn ngữ máy khiến cho chi phí tăng cao và phần mềm rất khó thay đổi (tính bảo trì kém).
+ Dễ sử dụng (Usability): giao diện người sử dụng phải phù hợp với khả năng và kiến thức của người dùng, có các tài liệu hướng dẫn và các tiện ích trợ giúp Đối tượng chính của các phần mềm nghiệp vụ thường là người không am hiểu về máy tính, họ sẽ xa lánh các phần mềm khó học, khó sử dụng.
- Có thể thấy rõ, việc tối ưu hóa đồng thời các thuộc tính này là rất khó khăn. Các thuộc tính có thể mẫu thuẫn lẫn nhau, ví dụ như tính hiệu quả và tính dễ sử dụng, tính bảo trì Quan hệ giữa chi phí cải tiến và hiệu quả đối với từng thuộc tính không phải là tuyến tính Nhiều khi một cải thiện nhỏ trong bất kỳ thuộc tính nào cũng có thể là rất đắt.
- Một khó khăn khác của việc phát triển phần mềm là rất khó định lượng các thuộc tính của phần mềm Chúng ta thiếu các độ đo và các chuẩn về chất lượng phần mềm Vấn đề giá cả phải được tính đến khi xây dựng một phần mềm Chúng ta sẽ xây dựng được một phần mềm dù phức tạp đến đâu nếu không hạn chế về thời gian và chi phí Điều quan trọng là chúng ta phải xây dựng một phần mềm tốt với một giá cả hợp lý và theo một lịch biểu được định trước.
Các đặc trưng của công nghệ phần mềm
- Efficiency: Phần mềm được sản xuất trong thời gian và điều kiện vừa phải. Phần mềm vận hành đúng mức độ yêu cầu về công việc và thời gian.
- Reliablity: Phần mềm vận hành ổn định và tương tác được với các hệ thống ứng dụng.
- Usability: Phần mềm có thể dùng được bởi người sử dụng và với môi trường mà người sử dụng đang có Chú ý tới giao diện, điều kiện hệ thống, …
- Modifiability: Phần mềm có thể được thay đổi dể dàng, nhanh chóng khi yêu cầu của người sử dụng thay đổi.
- Portability: Phần mềm có thể chuyển đổi dễ dàng sang các hệ thống khác mà không cần phải điều chỉnh lớn Chỉ cần recompile nều cần thiết là tốt nhất.
- Testability: Phần mềm có thể được kiểm tra dễ dàng Tốt nhất là được modul hóa.
- Reusability: Phần mềm hay một phần có thể được tái sử dụng cho các ứng dụng khác Các modul có thiết kế tốt, độc lập và giao tiến đơn giản, cả về tình tương thích công nghệ phát triển.
- Maintainability: thiết kế của phần mềm có thể được hiểu dễ dàng cũng như chuyển giao thuận tiện cho người khác trong quá trình điều chỉnh, nâng cấp hay thay đổi theo yêu cầu.
- Interoperability: Phần mềm vận hành ổn định và đúng như mong đợi Trên hệ thống nhiều người dùng (multi users) phần mềm vẫn hoạt động được với các vận hành khác của hệ thống.
- Correctness: Phần mềm phải tính toán đúng và tạo ra kết quả đúng và đúng với mục tiêu ứng dụng của người dùng.
Nội dung công việc của một kỹ sư phần mềm
- Kỹ sư phần mềm (software engineer): là một người biết cách áp dụng rộng rãi những kiến thức về cách phát triển ứng dụng vào việc tổ chức phát triển một cách có hệ thống các ứng dụng Công việc của người kỹ sư phần mềm là: đánh giá, lựa chọn, sử dụng những cách tiếp cận có tính hệ thống, chuyên biệt, rõ ràng trong việc phát triển, đưa vào ứng dụng, bảo trì, và thay thế phần mềm.
- Do đặc điểm nghề nghiệp, người kỹ sư phần mềm phải có những kỹ năng cơ bản như:
+ Định danh, đánh giá, cài đặt, lựa chọn một phương pháp luận thích hợp và các công cụ CASE.
+ Biết cách sử dụng các mẫu phần mềm (prototyping).
+ Biết cách lựa chọn ngôn ngữ, phần cứng, phần mềm - Quản lý cấu hình, lập sơ đồ và kiểm soát việc phát triển của các tiến trình.
+ Lựa chọn ngôn ngữ máy tính và phát triển chương trình máy tính.
+ Đánh giá và quyết định khi nào loại bỏ và nâng cấp các ứng dụng.
- Mục tiêu của kỹ sư phần mềm là sản xuất ra các sản phẩm có chất lượng cao và phù hợp với các quy trình phát triển chuẩn mực:
+ Việc phát triển (development): được bắt đầu từ khi quyết định phát triển sản phẩm phần mềm và kết thúc khi sản phẩm phần mềm được chuyển giao cho người sử dụng.
+ Việc sử dụng (operations): là việc xử lý, vận hành hằng ngày sản phẩm phần mềm.
+ Việc bảo trì (maintenance): thực hiện những thay đổi mang tính logic đối với hệ thống và chương trình để chữa những lỗi cố định, cung cấp những thay đổi về công việc, hoặc làm cho phần mềm được hiệu quả hơn.
+ Việc loại bỏ (retirement): thường là việc thay thế các ứng dụng hiện thời bởi các ứng dụng mới.
Lịch sử ngành công nghệ phần mềm
- Công nghệ phần mềm có một lịch sử khá sớm Các công cụ được dùng cũng như các ứng dụng được viết đã tham gia vào kỹ nghệ phần mềm theo thời gian.
- Thập niên 1940: Các chương trình cho máy tính được viết bằng tay.
- Thập niên 1950: Các công cụ đầu tiên xuất hiện như là phần mềm biên dịch Macro Assembler và phần mềm thông dịch đã được tạo ra và sử dụng rộng rãi để nâng cao năng suất và chất lượng Các trình dịch được tối ưư hoá lần đầu tiên ra đời.
- Thập niên 1960: Các công cụ của thế hệ thứ hai như các trình dịch tối ưu hoá và công việc kiểm tra mẫu đã được dùng để nâng cao sản phẩm và chất lượng Khái niệm công nghệ phần mềm đã được bàn thảo rộng rãi.
- Thập niên 1970: Các công cụ phần mềm, chẳng hạn trong UNIX các vùng chứa mã, lệnh make, v.v được kết hợp với nhau Số lượng doanh nghiệp nhỏ về phần mềm và số lượng máy tính cỡ nhỏ tăng nhanh.
- Thập niên 1980: các PC và máy trạm ra đời Cùng lúc có sự xuất hiện của mô hình dự toán khả năng Lượng phần mềm tiêu thụ tăng mạnh.
- Thập niên 1990: Phương pháp lập trình hướng đối tượng ra đời Các quá trình nhanh như là lập trình cực hạn được chấp nhận rộng rãi Trong thập niên này, WWW và các thiết bị máy tính cầm tay phổ biến rộng rãi.
- Hiện nay: Các phần mềm biên dịch và quản lý như là NET, PHP và Java làm cho việc viết phần mềm trở nên dễ dàng hơn nhiều.
Mô hình phát triển phần mềm
1.7.1 Các công đoạn trong phát triển phần mềm
- Các công đoạn chính tổng quát bao gồm 4 giai đoạn
+ Giai đoạn đặc tả: xác định các tính năng và điều kiện hoạt động của hệ thống. (thu thập yêu cầu và phân tích)
+ Giai đoạn phát triển: Thiết kế phần mềm (software design), viết code (code generation)
+ Giai đoạn kiểm tra: kiểm tra phần mềm (software testing), kiểm tra tính hợp lý của phần mềm.
+ Giai đoạn bảo trì: Sửa lỗi (correction), thay đổi môi trường thực thi (adaptation), tăng cường (enhancement).
1.7.2 Các mô hình phát triển phần mềm
- Tùy theo quy mô và công nghệ phát triển, có các mô hình sản xuất khác nhau.
+ Mô hình tuần tự tuyến tính- waterfall - Mô hình Prototyping - Evolutionary Development.
+ Mô hình xoắn ốc – Boehm’s Spiral Model.
+ Mô hình RAD – Rapid Application Development.
- Mỗi mô hình phù hợp với trình độ phát triển, quy mô sản phẩm và yêu cầu ràng buộc cụ thể về thời gian và tính chất của hệ thống.
PHÁT BIỂU BÀI TOÁN
Lý do chọn đề tài
- Hiện nay, có không ít trung tâm đào tạo, trường học sử dụng công nghệ vào việc quản lý học sinh, học viên Vì vậy, một trung tâm đào tạo hay 1 lớp học chỉ có thể hoạt động ổn định khi người quản lý có những giải pháp phù hợp để quản lý hệ thống các lớp học của trung tâm đào tạo đó Khi mỗi lớp học được quản lý khoa học và hiệu quả, cả hệ thống trung tâm đào tạo của bạn mới có thể được hoạt động tốt.
- Với cách quản lý thủ công như hiện tại thì giấy tờ, sổ sách sẽ rất nhiều và dễ bị thất lạc, mất mát, không những vậy thông tin có thể sai lệch, không đầy đủ, khó tìm kiếm khi cần Vì vậy, giải pháp tối ưu nhất với thời đại số ngày nay là có một ứng dụng làm thay những việc đó để giảm thiểu khối lượng công việc và con người.
- Những mặt lợi khi sử dụng ứng dụng để quản lý:
+ Tính tiện lợi và tăng cường hiệu quả: Sử dụng một ứng dụng quản lý lớp học có thể giảm bớt công việc thủ công và giúp tăng cường hiệu quả trong việc quản lý lớp học Thông qua ứng dụng, giảng viên và quản lý trường có thể nhanh chóng truy cập thông tin và thực hiện các tác vụ quản lý một cách dễ dàng và tiện lợi.
+ Tương tác và giao tiếp: Ứng dụng quản lý lớp học cung cấp một kênh tương tác và giao tiếp hiệu quả giữa giảng viên, học sinh và phụ huynh Chúng có thể chia sẻ thông tin về lịch học, kế hoạch giảng dạy, bài tập, kết quả kiểm tra và thông báo quan trọng.
+ Quản lý dữ liệu: Một ứng dụng quản lý lớp học cho phép lưu trữ và quản lý dữ liệu liên quan đến học sinh, giảng viên, lịch học, điểm số và thành tích học tập. Điều này giúp quản lý thông tin một cách có tổ chức và tiện lợi, giúp người dùng nhanh chóng tra cứu thông tin khi cần thiết.
+ Khả năng mở rộng: Xây dựng ứng dụng quản lý lớp học có khả năng mở rộng và tùy chỉnh, cho phép bạn thêm tính năng và chức năng mới theo yêu cầu cụ thể của trường học hoặc giảng viên Bạn có thể tích hợp các tính năng như quản lý tài liệu,giao tiếp trực tuyến, báo cáo tổng kết.
Thu thập các yêu cầu của ứng dụng
2.2.1 Xác định yêu cầu chức năng hệ thống
- Quản lý hồ sơ học sinh
- Quản lý danh sách lớp
- Giao bài tập và thu bài
- Quản lý kết quả học tập
2.2.2 Xác định yêu cầu người dùng của hệ thống
2.2.3 Xác định yêu cầu phi chức năng của hệ thống
- Giao diện người dùng thân thiện
- Độ tin cậy và bảo mật
- Tích hợp với hệ thống khác
- Hỗ trợ đa nền tảng
- Hiệu suất và khả năng mở rộng
- Hỗ trợ và bảo trì
- Tuân thủ quy định và chình sách
Mô hình phát triển dự án
* Ở trong dự án làn này chúng em đã áp dụng mô hình thác nước để hoàn thành ứng dụng Vậy mô hình thác nước là gì?
- Mô hình thác nước là một ví dụ của mô hình Sequential (Tuần tự) Trong mô hình này, hoạt động phát triển phần mềm được chia thành các giai đoạn khác nhau và từng giai đoạn bao gồm hàng loạt các nhiệm vụ và có các mục tiêu khác nhau.
- Trong thác nước, sự phát triển của một pha chỉ bắt đầu khi giai đoạn trước hoàn thành Do tính chất này, mỗi giai đoạn của mô hình thác nước phải được xác định khá chính xác Các giai đoạn chuyển từ mức cao xuống mức thấp hơn, giống như một thác nước nên mô hình này được đặt tên là mô hình thác nước.
Hình 2.1: Mô hình thác nước
- Các hoạt động liên quan đến các giai đoạn khác nhau như sau:
STT Giai đoạn Các hoạt động đã được thực hiện Các tài liệu có thể chuyển
1 Phân tích yêu cầu 1 Nắm được tất cả các yêu cầu.
2 Thảo luận và hướng dẫn để hiểu các yêu cầu.
3 Thực hiện thử nghiệm các yêu cầu để đảm bảo rằng các yêu cầu có thể kiểm chứng được hay không.
RUD (Yêu cầu hiểu tài liệu)
2 Thiết kế hệ thống 1 Theo yêu cầu, tạo ra thiết kế.
2 Thảo luận về yêu cầu phần cứng /phần mềm.
HLD (Tài liệu thiết kế mức độ cao), LLD (Tài liệu thiết kế mức độ thấp)
3 Thực hiện 1 Theo thiết kế tạo ra các chương trình / code.
2 Tích hợp code cho giai đoạn tiếp theo.
Các chương trình, Unit TCs và kết quả
4 Thử nghiệm hệ thống 1 Tích hợp unit tested code và kiểm tra nó để đảm bảo nó hoạt động như mong đợi.
2 Thực hiện tất cả các hoạt động thử nghiệm (Functional and non functional) để đảm bảo hệ thống đáp ứng các yêu cầu.
3 Trong trường hợp bất thường, báo cáo.
4 Theo dõi tiến độ về kiểm tra thông qua các công cụ như số liệu truy xuất nguồn gốc, ALM.
5 Báo cáo hoạt động thử nghiệm
Test case, Test report, Report lỗi,Updates
5 Triển khai Hệ thống 1 Hãy chắc chắn rằng môi trường đang hoạt động.
2 Hãy chắc chắn rằng không có lỗi mở server.
3 Đảm bảo rằng các tiêu chí test được đáp ứng.
4 Triển khai ứng dụng trong môi trường tương ứng.
5 Thực hiện kiểm tra về môi trường sau khi ứng dụng được triển khai để đảm bảo ứng dụng không gặp vấn đề
Hướng dẫn sử dụng Định nghĩa / đặc tả môi trường
6 Bảo trì hệ thống 1 Hãy chắc chắn rằng ứng dụng đang chạy và chạy trong môi trường tương ứng.
2 Trong trường hợp người dùng gặp lỗi, chắc chắn giải quyết và khắc phục các vấn đề.
3 Trong trường hợp bất kỳ vấn đề fixed; code cập nhật được triển khai trong môi trường.
4 Ứng dụng luôn được tăng cường để kết hợp nhiều tính năng, cập nhật môi trường với các tính năng mới nhất
Hướng dẫn sử dụng, Danh sách ticket, Danh sách các tính năng mới được triển khai.
Bảng 2.1: Mô tả chi tiết tuần tự mô hình thác nước 2.3.2 Sử dụng mô hình thác nước khi nào?
- Mô hình Thác nước SDLC được sử dụng khi:
+ Yêu cầu ổn định và không thay đổi thường xuyên.
+ Không có yêu cầu mà không hiểu hoặc không rõ ràng.
+ Các công cụ và công nghệ được sử dụng là ổn định
+ Nguồn lực được đào tạo và sẵn sàng.
2.3.3 Ưu nhược điểm của mô hình thác nước?
- Đơn giản, dễ hiểu và sử dụng.
- Đối với các dự án nhỏ hơn, mô hình thác nước hoạt động tốt và mang lại kết quả phù hợp.
- Vì các giai đoạn của mô hình thác nước cứng nhắc và chính xác, một pha được thực hiện một lần, nó rất dễ dàng để maintain.
- Các tiêu chí đầu vào và đầu ra được xác định rõ ràng, do đó nó dễ dàng và có hệ thống để tiến hành chất lượng.
- Kết quả được ghi chép tốt.
- Không thể chấp nhận thay đổi yêu cầu
- Nó trở nên rất khó khăn để di chuyển trở lại giai đoạn Ví dụ, nếu ứng dụng đã chuyển sang giai đoạn thử nghiệm và có thay đổi về yêu cầu, gặp khó khăn để quay lại và thay đổi nó.
- Việc giao hàng của sản phẩm cuối cùng là muộn vì không có mẫu thử nghiệm được chứng minh trung gian.
- Đối với các dự án lớn và phức tạp, mô hình này không tốt vì yếu tố rủi ro cao hơn.
- Không thích hợp cho các dự án mà yêu cầu được thay đổi thường xuyên.
- Không làm việc cho các dự án dài và đang diễn ra.
- Kể từ khi thử nghiệm được thực hiện ở giai đoạn sau, nó không cho phép xác định những thách thức và rủi ro trong giai đoạn trước đó nên chiến lược giảm thiểu rủi ro rất khó để chuẩn bị.
* Lý do sử dụng mô hình này:
- Do nhóm chúng em đã vạch ra kế hoạch làm cái gì trước cái gì sau và quen làm việc với nhau theo một cách tuần tự nên đã sử dụng mô hình này Hơn nữa, mô hình này phù hợp với dự án nhỏ, đơn giản, dễ hiểu và sử dụng Đối với các dự án nhỏ hơn, mô hình thác nước hoạt động tốt và mang lại kết quả phù hợp Vì các giai đoạn của mô hình thác nước cứng nhắc và chính xác, một pha được thực hiện một lần, nó rất dễ dàng để maintain Các tiêu chí đầu vào và đầu ra được xác định rõ ràng, do đó nó dễ dàng và có hệ thống để tiến hành chất lượng Kết quả được ghi chép tốt.
Chi tiết lịch trình công việc
Giai đoạn Công việc Thành viên đảm nhận
Giai đoạn 1: Phân tích yêu cầu người dùng Mục tiêu:
- Nắm được tất cả các yêu cầu người dùng.
- Chỉ ra những chức năng, giao diện cần có
- Thảo luận và hướng dẫn để hiểu các yêu cầu.
- Thực hiện thử nghiệm các yêu cầu để đảm bảo rằng các yêu cầu có thể kiểm chứng
Nguyễn Văn Hào được hay không.
- Mỗi người sẽ phải tìm hiểu một nghiệp vụ, chức năng của ứng dụng, đưa ra các chức năng cần phải làm trong ứng dụng.
Giai đoạn 2: Thiết kế hệ thống
- Thảo luận về yêu cầu phần cứng/phần mềm.
- Phân tích thiết kế hệ thống gồm các chức năng và vẽ các biểu đồ mô tả chức năng.
- Thiết kế giao diện cho hệ thống làm sao cho thuận tiện, dễ sử dụng.
- Thiết kế cơ sở dữ liệu bao gồm các bảng và thuộc tính, nhập dữ liệu vào.
Output: Phân chia công việc cho thành viên trong nhóm, cơ bản là phải hoàn thành được nhiệm vụ được giao để tiến hành giai đoạn tiếp theo.
Giai đoạn 3: Thực hiện xây dựng hệ thống
- Theo giao diện và cơ sở dữ liệu đã tạo ở giai đoạn trước, người viết code bắt đầu xây dựng ứng dụng, tích hợp code cho giai đoạn tiếp theo.
Output: Người được giao nhiệm vụ viết code cần phải thực hiện đúng thời hạn để cho bên test kiểm thử.
Giai đoạn 4: Thử nghiệm hệ thống Mục tiêu:
- Đưa ứng dụng ra chạy thửu nghiệm và test xem ứng dụng đã đáp ứng được yêu cầu và mong đợi của nhóm chưa.
- Nếu xảy ra lỗi thì cần được sửa chữa kahwcs phục ngay.
- Người test đánh giá được mức độ hoàn thành, tốc độ phản hồi của ứng dụng, liệt kê những lỗi gặp phải trong quá trình test.
Giai đoạn 5: Triển khai hệ thống
- Upload ứng dụng lên server mà thầy giáo yêu cầu.
- Hướng dẫn sử dụng ứng Nguyễn Văn Hào dụng.
- Đảm bảo rằng các tiêu chí test được đáp ứng.
- Thực hiện kiểm tra về môi trường sau khi ứng dụng được triển khai để đảm bảo ứng dụng không gặp vấn đề.
- Upload lên server thành công.
- Đưa ra hướng dẫn sử dụng cho người dùng
Giai đoạn 6: Bảo trì hệ thống Mục tiêu:
- Trong trường hợp người dùng gặp lỗi, chắc chắn giải quyết và khắc phục các vấn đề.
- Ứng dụng luôn được tăng cường để kết hợp nhiều tính năng, cập nhật môi trường với các tính năng mới nhất
- Sửa lỗi, update ứng dụng.
Bảng 2.2: Lịch trình công việc triển khai
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Phân tích yêu cầu
3.1.1 Phân tích yêu cầu chức năng ứng dụng
- Quản lý hồ sơ học sinh: Cho phép thêm, sửa đổi và xóa thông tin học sinh như tên, ngày sinh, địa chỉ, thông tin liên lạc và hình ảnh cá nhân.
- Quản lý danh sách lớp: Hiển thị danh sách các lớp học, cho phép thêm, sửa đổi và xóa lớp học, cũng như gán học sinh vào các lớp tương ứng.
- Điểm danh: Cho phép giảng viên điểm danh học sinh trong lớp học và ghi lại thông tin vắng mặt hoặc đi trễ.
- Quản lý lịch học: Hiển thị lịch học của các lớp, bao gồm ngày, giờ bắt đầu và kết thúc, địa điểm và môn học tương ứng.
- Giao bài tập và thu bài: Cho phép giảng viên giao bài tập cho học sinh và ghi lại thông tin về ngày giao, hạn nộp và điểm số.
- Quản lý kết quả học tập: Ghi lại kết quả kiểm tra, bài tập và thành tích học tập của học sinh, và cho phép tra cứu kết quả theo học kỳ hoặc môn học.
- Gửi thông báo: Cho phép giảng viên gửi thông báo cho học sinh và phụ huynh về các sự kiện quan trọng, thay đổi lịch học, thông báo khẩn cấp và thông tin khác.
- Giao tiếp: Cung cấp kênh giao tiếp giữa giảng viên, học sinh và phụ huynh, bao gồm tin nhắn trong ứng dụng hoặc thông qua email hoặc tin nhắn văn bản.
- Quản lý tài liệu: Cho phép tải lên và chia sẻ tài liệu giảng dạy, tài liệu học tập và tài liệu tham khảo với học sinh.
- Báo cáo và thống kê: Cung cấp báo cáo tổng kết về kết quả học tập, điểm danh, và các thông số thống kê khác để giúp giảng viên và quản lý trường đánh giá tiến trình và hiệu suất của lớp học.
- Đăng ký và đăng nhập: Ứng dụng cần cung cấp chức năng đăng ký tài khoản cho giáo viên, học sinh và phụ huynh Đăng nhập cần được bảo mật thông qua việc sử dụng tên người dùng và mật khẩu hoặc các phương pháp xác thực khác như đăng nhập bằng tài khoản Google hoặc Facebook Tài khoản giáo viên nên có quyền truy cập và quản lý toàn bộ thông tin lớp học, trong khi tài khoản học sinh và phụ huynh chỉ có quyền truy cập vào thông tin liên quan đến học sinh cụ thể.
3.1.2 Phân tích yêu cầu phi chức năng ứng dụng
- Giao diện người dùng thân thiện: Yêu cầu ứng dụng có giao diện đơn giản, dễ sử dụng và thân thiện với người dùng để giúp người dùng dễ dàng tương tác với ứng dụng mà không gặp khó khăn.
- Độ tin cậy và bảo mật: Yêu cầu ứng dụng đảm bảo sự an toàn và bảo mật thông tin cá nhân của học sinh, giảng viên và phụ huynh Cần có các biện pháp bảo mật như đăng nhập, mã hóa dữ liệu và quản lý quyền truy cập.
- Tích hợp với hệ thống khác: Yêu cầu ứng dụng có khả năng tích hợp và tương tác với các hệ thống khác như hệ thống quản lý cơ sở dữ liệu, hệ thống lịch học, hệ thống thông báo, để cung cấp thông tin liên tục và chính xác.
- Hỗ trợ đa nền tảng: Yêu cầu ứng dụng có thể hoạt động trên nhiều nền tảng, bao gồm di động (Android, iOS) và máy tính để bàn, để đáp ứng nhu cầu của các người dùng trên các thiết bị khác nhau.
- Hiệu suất và khả năng mở rộng: Yêu cầu ứng dụng có hiệu suất tốt và khả năng mở rộng để xử lý tốt khi số lượng người dùng và dữ liệu tăng lên Điều này đảm bảo rằng ứng dụng vẫn hoạt động một cách ổn định và nhanh chóng khi có nhiều người sử dụng cùng lúc.
- Hỗ trợ và bảo trì: Yêu cầu ứng dụng có hỗ trợ kỹ thuật và cập nhật thường xuyên để đảm bảo rằng nó luôn hoạt động tốt và đáp ứng được các nhu cầu mới của người dùng.
- Tuân thủ quy định và chính sách: Yêu cầu ứng dụng tuân thủ các quy định, chính sách và quy tắc của tổ chức giáo dục, quy định pháp luật về bảo mật thông tin và quyền riêng tư.
3.1.3 Phân tích yêu cầu người dùng a, Đối với giảng viên:
- Quản lý danh sách học sinh và thông tin liên quan.
- Ghi lại điểm danh và thông tin vắng mặt.
- Giao bài tập, thu bài và quản lý kết quả học tập.
- Gửi thông báo về lịch học, thay đổi, sự kiện quan trọng.
- Tra cứu thông tin học sinh và kết quả học tập. b, Đối với học sinh:
- Xem thông tin lớp học, lịch học và môn học.
- Xem bài tập, hạn nộp và kết quả học tập.
- Nhận thông báo từ giảng viên về lịch học, thay đổi, sự kiện.
- Tra cứu thông tin cá nhân và kết quả học tập. c, Đối với phụ huynh:
- Xem thông tin lớp học và lịch học của con.
- Xem bài tập, hạn nộp và kết quả học tập của con.
- Nhận thông báo từ giảng viên về lịch học, thay đổi, sự kiện.
- Tra cứu thông tin cá nhân và kết quả học tập của con. d, Quản lý trường:
- Quản lý danh sách lớp học và thông tin giảng viên.
- Xem báo cáo và thống kê về kết quả học tập và hiệu suất lớp học.
- Gửi thông báo chung cho toàn bộ lớp học hoặc một nhóm lớp cụ thể. e, Đối với tổ chức giáo dục:
- Quản lý hồ sơ học sinh, giảng viên và thông tin lớp học.
- Xem báo cáo tổng quan về hiệu suất học tập, điểm danh, và thống kê khác.
- Gửi thông báo quan trọng đến các lớp học và cán bộ quản lý.
Đặc tả yêu cầu
3.2.1 Đặc tả trước – sau a, Quản lý hồ sơ học sinh
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò quản trị viên hoặc giáo viên.
+ Dữ liệu về học sinh đã được nhập và lưu trữ trong cơ sở dữ liệu.
- Đặc tả sau (post-condition):
+ Người dùng có thể thao tác và quản lý hồ sơ học sinh trong hệ thống.
+ Các thay đổi được áp dụng và lưu trữ vào cơ sở dữ liệu.
+ Các thông tin và hoạt động liên quan đến hồ sơ học sinh được hiển thị và truy cập đúng. b, Quản lý danh sách lớp
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò quản trị viên hoặc giáo viên.
+ Danh sách lớp đã được tạo ra và lưu trữ trong cơ sở dữ liệu.
- Đặc tả sau (post-condition):
+ Người dùng có thể thao tác và quản lý danh sách lớp trong hệ thống.
+ Các thay đổi được áp dụng và lưu trữ vào cơ sở dữ liệu.
+ Danh sách lớp được hiển thị và truy cập đúng, bao gồm thông tin về tên lớp, giáo viên phụ trách, số lượng học sinh, v.v. c, Điểm danh
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò giáo viên.
+ Lớp học đã được tạo và danh sách học sinh đã được nhập và lưu trữ trong cơ sở dữ liệu.
- Đặc tả sau (post-condition):
+ Người dùng có thể thực hiện điểm danh cho các buổi học trong lớp học. + Thông tin điểm danh được lưu trữ và cập nhật vào cơ sở dữ liệu.
+ Các học sinh được đánh dấu có mặt hoặc vắng mặt trong các buổi học cụ thể. d, Quản lý lịch học
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò giáo viên.
+ Thông tin lớp học, danh sách học sinh và các tài liệu liên quan đã được nhập và lưu trữ trong cơ sở dữ liệu.
- Đặc tả sau (post-condition):
+ Người dùng có thể xem, tạo, chỉnh sửa và xóa các mục lịch học.
+ Lịch học được hiển thị chính xác, bao gồm thông tin về thời gian, địa điểm, nội dung bài học, tài liệu liên quan, v.v.
+ Thay đổi trong lịch học được cập nhật và lưu trữ vào cơ sở dữ liệu. e, Giao bài tập và thu bài
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò giáo viên.
+ Lớp học và danh sách học sinh đã được tạo và lưu trữ trong cơ sở dữ liệu.
- Đặc tả sau (post-condition):
+ Người dùng có thể giao bài tập cho các học sinh trong lớp học.
+ Học sinh có thể nộp bài tập của mình qua ứng dụng.
+ Thông tin về bài tập và trạng thái nộp bài của học sinh được lưu trữ và cập nhật vào cơ sở dữ liệu.
+ Giáo viên có thể xem và đánh giá bài tập của học sinh. f, Quản lý kết quả học tập
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò giáo viên.
+ Lớp học và danh sách học sinh đã được tạo và lưu trữ trong cơ sở dữ liệu.
+ Các bài kiểm tra, bài tập hoặc các hoạt động đánh giá đã được giao cho học sinh và kết quả đã được nhập.
- Đặc tả sau (post-condition):
+ Người dùng có thể xem và quản lý kết quả học tập của học sinh trong lớp học.
+ Kết quả học tập được hiển thị chính xác cho từng học sinh, bao gồm điểm số, phần trăm hoàn thành, hoặc các thông tin đánh giá khác.
+ Kết quả học tập được lưu trữ và cập nhật vào cơ sở dữ liệu.
+ Giáo viên có thể thao tác với kết quả học tập, như sửa đổi, xóa hoặc xuất báo cáo. g, Gửi thông báo
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò giáo viên.
+ Lớp học và danh sách học sinh đã được tạo và lưu trữ trong cơ sở dữ liệu.
- Đặc tả sau (post-condition):
+ Người dùng có thể gửi thông báo cho toàn bộ lớp học hoặc cho từng học sinh riêng lẻ.
+ Thông báo được gửi thành công và hiển thị đến các học sinh trong lớp học. + Thông báo được lưu trữ và cập nhật vào cơ sở dữ liệu.
+ Học sinh có thể xem thông báo từ giáo viên. h, Giao tiếp
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò giáo viên hoặc học sinh. + Lớp học và danh sách học sinh đã được tạo và lưu trữ trong cơ sở dữ liệu.
- Đặc tả sau (post-condition):
+ Người dùng có thể giao tiếp với nhau trong ứng dụng.
+ Giáo viên có thể gửi thông điệp cho toàn bộ lớp học hoặc cho từng học sinh riêng lẻ.
+ Học sinh có thể gửi thông điệp cho giáo viên hoặc các bạn cùng lớp.
+ Các thông điệp được gửi thành công và hiển thị cho người nhận.
+ Các thông điệp được lưu trữ và cập nhật vào cơ sở dữ liệu. k, Quản lý tài liệu
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò giáo viên.
+ Lớp học và danh sách học sinh đã được tạo và lưu trữ trong cơ sở dữ liệu.
- Đặc tả sau (post-condition):
+ Người dùng có thể tải lên và quản lý tài liệu trong ứng dụng.
+ Giáo viên có thể tải lên tài liệu cho toàn bộ lớp học hoặc cho từng học sinh riêng lẻ.
+ Học sinh có thể tải xuống tài liệu từ giáo viên.
+ Tài liệu được lưu trữ và cập nhật vào cơ sở dữ liệu.
+ Người dùng có thể xem danh sách tài liệu và tìm kiếm theo tiêu đề, ngày tải lên, hoặc tác giả.
+ Người dùng có thể xóa tài liệu đã tải lên. l, Báo cáo và thống kê
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng đã đăng nhập vào hệ thống với vai trò giáo viên.
+ Lớp học và danh sách học sinh đã được tạo và lưu trữ trong cơ sở dữ liệu.
+ Dữ liệu về điểm số, kết quả học tập và các thông tin liên quan đã được nhập và lưu trữ trong cơ sở dữ liệu.
- Đặc tả sau (post-condition):
+ Người dùng có thể tạo báo cáo và thống kê dựa trên dữ liệu học tập trong lớp học.
+ Báo cáo và thống kê có thể được tạo theo các tiêu chí như tổng kết điểm, điểm trung bình, phần trăm học sinh đạt điểm cao, v.v.
+ Báo cáo và thống kê được hiển thị cho giáo viên và có thể được xuất ra dưới dạng tệp tin để lưu trữ hoặc chia sẻ.
+ Dữ liệu báo cáo và thống kê được cập nhật và lưu trữ trong cơ sở dữ liệu. m, Đăng ký và đăng nhập
- Đặc tả trước (pre-condition):
+ Hệ thống đã được cài đặt và hoạt động.
+ Người dùng chưa đăng nhập vào hệ thống.
- Đặc tả sau (post-condition):
+ Người dùng có thể đăng ký tài khoản mới trong ứng dụng.
+ Người dùng có thể đăng nhập vào hệ thống bằng tài khoản đã đăng ký.
+ Người dùng đã đăng nhập có quyền truy cập vào các chức năng và thông tin liên quan đến lớp học.
+ Hệ thống xác thực thông tin đăng nhập của người dùng và duy trì phiên làm việc.
+ Người dùng có thể đăng xuất khỏi hệ thống khi cần thiết.
Phân tích thiết kế hệ thống
Hình 3.1: Biểu đồ User - Case 3.3.2 Biểu đồ Sequence Diagram a, Đăng ký, đăng nhập
Hình 3.2: Sơ đồ tuần tự chức năng đăng ký
Hình 3.3: Sơ đồ tuần tự chức năng đăng nhập b, Thêm, sửa, xóa, xem chi tiết
Hình 3.4: Biểu đồ tuần tự chức năng thêm mới
Hình 3.5: Biểu đồ tuần tự chức năng sửa
Hình 3.6: Biểu đồ tuần tự chức năng xóa
Hình 3.7: Biểu đồ tuần tự chức năng xem thông tin c, Tìm kiếm
Hình 3.8: Biểu đồ tuần tự chức năng tìm kiếm d, Điểm danh
Hình 3.9: Biểu đồ tuần tự chức năng điểm danh e, Giao bài và thu bài
Hình 3.10: Biểu đồ tuần tự chức năng giao bài
Hình 3.11: Biểu đồ tuần tự chức năng nộp bài 3.3.3 Biểu đồ ERD