Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 37

Báo cáo bài tập lớn

Môn : Thiết kế và xây dựng phần mềm

Giáo viên hướng dẫn : Trịnh Tuấn Đạt


Lớp : 144929
Nhóm : 17

1. Đánh giá thành viên

Họ và tên Mã số sinh viên Nhiệm vụ Đóng góp


Đặng Đình Điệp 20183495 Làm usecase phần
chấm công
Lê Thế Huy 20204566 Làm usecase phần
xem thông tin
chấm công
Trần Văn Nghĩa 20194131 Làm usecase thống
kê chấm công
Nguyễn Đức Kiên 20200302 Làm usecase sửa
thông tin chấm
công
Tạ Hữu Tiến 20194175 Làm usecase nhập
Thành dữ liệu chấm công
2. Đặc tả tài liệu

a. Đặc tả usecase chấm công

MÃ Usecase UC004 Tên Usecase Chấm công

Actor Nhân viên (NV văn phòng, công nhân)

Tiền điều kiện Không

Luồng sự kiện chính


( thành công ) # Thực Hành động
hiện
1. Nhân Đưa tay vào máy vân tay
viên

2. Hệ Kiểm tra xem có công nhân hay không?


thống

3. Hệ Kiểm tra đó có phải là checkout hay không?


thống

4. Hệ Kiểm tra đó có phải là nhân viên văn phòng


thống không ?

5. Hệ Tính toán dữ liệu dựa trên thời gian ra, vào, công
thống nhân.

6 Hệ Tiến hành cập nhật dữ liệu


. thống
7 Hệ Hiển thị thông báo: cập nhật thành công + thông
. thống tin của NV
Luồng sự kiện thay
thế # Thực Hành động
hiện
2a. Hệ Không tìm thấy nhân viên-> Thông báo: Mã
thống vân tay không hợp lệ, mời thử lại
3a. Hệ Là checkin -> Chưa tính toán thời gian, tạm lưu
thống vào hệ thống, đợi thời điểm checkout…
4a. Hệ Là công nhân -> Hiển thị thời gian, Bước 5 sẽ
thống tính toán theo cách tính của công nhân
- Thắc mắc chấm công

Mã Usecase UC005 Usecase name Chấm công

Actor Người dùng

Tiền điều kiện Không

Luồng sự kiện chính


( thành công ) # Thực hiện Hành động
bởi
1. Người dùng Chọn thắc mắc
2. Hệ thống Hiển thị thông tin về các lựa chọn thắc
mắc
3. Người Chọn loại thắc mắc
dùng
4. Hệ thống Hiển thị form thắc mắc
5. Người Điền form thắc mắc
dùng
6. Người Nhấn gửi
dùng
7. Hệ thống Cập nhật dữ liệu trên máy chủ

8. Hệ thống Gửi thông báo thành công

Luồng sự kiện thay


thế Hệ thống Cập nhật dữ liệu trên máy chủ (thất bại)
7.1
8.1 Hệ thống Gửi thông báo thất bại

Người Không chọn loại thắc mắc mà thoát ra


3.2 dùng
4.2 Hệ thống Hiển thị giao diện trang chủ
Hậu điều kiện Không
- Biểu đồ usecase
- Activity diagram
b. Đặc tả usecase xem thông tin chấm công

- Xem thông tin chấm công cho nhân viên

Mã usecase UC001 Tên usecase Xem thông tin chấm


công tháng hiện tại
(default)

Tác nhân Nhân viên

Mô tả Cho phép nhân viên xem thông tin chấm công của tháng hiện tại.

Tiền điều Nhân viên đăng nhập thành công vào hệ thống chấm công của công
kiện ty.
STT Thực hiện bởi Hành động
Luồng sự
kiện chính
(thành công) 1 Nhân viên Đăng nhập thành công vào hệ thống

2 Hệ thống Check thông tin nhân viên để lấy dữ liệu.

3 Hệ thống Hiển thị giao diện trang chủ là bảng công


tháng hiện tại.

Luồng sự Không
kiện thay
thế
Hậu điều Không
kiện
Mã usecase UC002 Tên usecase Xem thông tin chấm
công tháng bất kỳ

Tác nhân Nhân viên

Mô tả Cho phép nhân viên xem thông tin chấm công của 1 tháng bất kỳ.

Tiền điều Nhân viên đăng nhập thành công vào hệ thống.
kiện
STT Thực hiện bởi Hành động
Luồng sự
kiện chính
(thành 1 Nhân viên Đăng nhập thành công vào hệ thống
công)
2 Hệ thống Giao diện bảng chấm công, mục chọn
tháng dạng dropdown

3 Nhân viên Chọn tháng cần xem

4 Hệ thống Hiển thị bảng công của tháng đã chọn

Luồng sự Không
kiện thay
thế
Hậu điều Không
kiện
Mã UC003 Tên usecase Xem lịch sử chấm công
usecase trên máy chấm công

Tác nhân Nhân viên

Mô tả Cho phép xem chi tiết(lịch sử) các lần chấm công

STT Thực hiện bởi Hành động


Luồng sự
kiện
chính 1 Nhân viên Click vào nút thông báo -> chấm công
(thành
công) 2 Hệ thống Hệ thống hiển thị giao diện chấm công

3 Nhân viên Nhập thông tin thời gian, nhấn nút tìm
kiếm

4 Hệ thống Tìm kiếm trong database

5 Hệ thống Hiển thị thông tin kết quả

STT Thực hiện bởi Hành động


Luồng sự
kiện thay
thế 6a Hệ thống Thông báo lỗi: Cần nhập đủ đúng thông
tin(ví dụ như thời gian phải nằm trong
khoảng hợp lệ, phải nhập số,…)
Mã UC004 Tên usecase Xem thông tin chấm
usecase công bù, xin làm
remote, đơn OT, đơn
xin nghỉ phép, đơn đi
muộn về sớm

Tác nhân Nhân viên

Mô tả Cho phép nhân viên xem thông tin về chấm công bù, đơn chấm công
do làm remote, đơn OT, đơn đi muộn về sớm và đơn xin nghỉ phép.

STT Thực hiện bởi Hành động


Luồng sự
kiện
chính 1 Nhân viên Nhân viên chọn mục đơn cần xem.
(thành
công) 2 Hệ thống Hiên thị form thông tin.

3 Nhân viên Nhập thời gian cần xem

4 Nhân viên Nhấn nút tìm kiếm

5 Hệ thống Lấy dữ liệu trong database

6 Hệ thông Hiển thị giao diện


- Xem thông tin chấm công cho người quản lý

Mã UC005 Tên usecase Xem thông tin chấm


usecase công tháng hiện tại của
nhân viên (default)

Tác nhân Manager

Mô tả Cho phép manager xem thông tin chấm công của tháng hiện tại của
nhân viên.

Tiền điều Manager đăng nhập thành công vào hệ thống chấm công của công ty.
kiện
STT Thực hiện bởi Hành động
Luồng sự
kiện
chính 1 Manager Đăng nhập thành công vào hệ thống
(thành
công) 2 Hệ thống Hiển thị giao diện trang chủ

3 Manager Nhập thông tin của nhân viên

4 Hệ thống Hiển thị giao diện thông tin chấm công


tháng hiện tại

STT Thực hiện bởi Hành động


Luồng sự
kiện thay
thế 4a Hệ thống Thông báo lỗi :nhập sai mã nhân viên,
nhân viên không tồn tại

Hậu điều Xem được chi tiết chính xác nhân viên đó
kiện
Mã UC006 Tên usecase Xem thông tin chấm
usecas công tháng bất kỳ
e của nhân viên

Tác Manager
nhân
Mô tả Cho phép Manager xem thông tin chấm công của 1 tháng bất
kỳ.

Tiền Manager đăng nhập thành công vào hệ thống.


điều
kiện
STT Thực hiện bởi Hành động
Luồng
sự kiện
chính 1 Manager Đăng nhập thành công vào hệ thống
(thành
công) 2 Hệ thống Giao diện bảng chấm công

3 Manager Nhập thông tin của nhân viên

4 Hệ thống Hiển thị giao diện thông tin chấm công


tháng hiện tại của nhân viên

5 Manager Chọn tháng cần xem

6 Hệ thống Hiển thi giao diện thông tin chấm công


tháng đã chọn

STT Thực hiện bởi Hành động


Luồng
sự kiện
thay 6a Hệ thống Thông báo lỗi :nhập sai mã nhân viên,
nhân viên không tồn tại
thế

Hậu Không
điều
kiện
Mã UC007 Tên usecase Xem thông tin chấm
usecas công bù, xin làm
e remote, đơn OT, đơn
- Biểu đồ usecase chi tiết
xin nghỉ phép, đơn đi
muộn về sớm

Tác Manager
nhân
Mô tả Cho phép Manager xem thông tin về chấm công bù, đơn chấm
công do làm remote, đơn OT, đơn đi muộn về sớm và đơn xin
nghỉ phép.

STT Thực hiện bởi Hành động


Luồng
sự kiện
chính 1 Manager Nhập thông tin của nhân viên
(thành
công) 2 Hệ thống Hiển thị giao diện thông tin chấm công
tháng hiện tại của nhân viên

3 Manager Nhập thông tin cần xem

4 Manager Nhấn nút tìm kiếm

5 Hệ thống Lấy dữ liệu trong database

6 Hệ thống Hiển thị giao diện

STT Thực hiện Hành động


Luồng bởi
sự kiện
thay thế
6a Hệ thống Thông báo lỗi :nhập sai
mã nhân viên, nhân viên
không tồn tại

Hậu Không
điều
kiện
+ Biểu đồ xem thông tin tháng hiện tại hoặc tháng bất kì

+ Biểu đồ xem lịch sử chấm công trên máy chấm công

+ Biểu đồ xem thông tin chấm công bù, xin làm remote, đơn OT, đơn xin nghỉ phép, đơn
đi muộn về sớm:
+ Biểu đồ UC quản lý xem thông tin chấm công nhân viên:

+ Biểu đồ UC quản lý xem thông tin chấm công nhân viên, nghỉ, OT,đi muộn về sớm,
chấm công bù:
c. Đặc tả usecase nhập dữ liệu chấm công

Mã use case UC001 Nhập dữ liệu chấm công

Tác nhân HR

Precondition Người dùng đăng nhập với vai trò quản lý nhân sự

Luồng sự kiện # Thực hiện bởi Hành động


chính
Quản lý nhân sự Chọn chức năng import dữ liệu chấm công
(Thành công) 1.

Hệ thống Hiển thị form tải lên dữ liệu chấm công


2.

Quản lý nhân sự Tải data lên và chọn submit


3.

Hệ thống Kiểm tr nếu file tải lên không phù hợp định dạng
4.

Hệ thống Kiểm tra file tải lên có phải rỗng hay không
5.

Hệ thống Kiểm tra file tải lên có đúng format không


6.

Hệ thống Cập nhật dữ liệu trên database


7.

Hệ thống Thông báo nhập dữ liệu thành công


8.

Luồng sự kiện # Thực hiện bởi Hành động


thay thế
4a. Hệ thống Thông báo file tải lên không đúng định dạng, yêu
cầu tải lên file đúng định dang

5a. Hệ thống Thông báo file tải lên rỗng, thông báo nhập lại

7a. Hệ thống Thông báo dữ liệu trong file không đúng format.
Yêu cầu sửa và tải lại

Hậu điều kiện None

- Activity diagram
d. Đặc tả usecase sửa thông tin chấm công

Mã UC UC001 Tên UC Sửa thông tin chấm công


công nhân

Actor Quản lý nhân sự

Tiền điều kiện Đăng nhập

Luồng sự kiện # Thực hiện bởi Hành động


chính
Quán lý nhân sự Chọn quản lý chấm công công nhân
1.

Hệ thống Chuyển giao diện sang trang quản lý chấm công


2.
công nhân
Hệ thống Lấy dữ liệu thông tin chấm công của công nhân
3.
tháng hiện tại
Hệ thống Hiển thị dữ liệu
4.

Quản lý nhân sự Chọn xem chi tiết thông tin chấm công theo ngày
5.

Hệ thống Lấy dữ liệu thông tin cá nhân của công nhân từ hệ


6.
thống quản lý nhân sự
Hệ thống Hiển thị thông tin chi tiết chấm công công nhân
7.
theo ngày
Quản lý nhân sự Chọn sửa thông tin chấm công
8.

Quản lý nhân sự Chỉnh sửa thông tin chấm công


9.

Quản lý nhân sự Chọn cập nhật dữ liệu mới


10.

Hệ thống Cập nhật dữ liệu mới


11.

FormLuồng # Thực hiện bởi Hành động


sự kiện thay
thế 5a. Quản lý nhân sự Thay đổi tháng

6a. Hệ thống Lấy dữ liệu thông tin chấm công của công nhân
tháng được chọn

Hậu điều kiện Không


-Activity diagram
e. Đặc tả usecase thống kê chấm công

Mã ###### Tên Use case Thống kê


Use chấm
case công theo
tháng

Mô tả Quản lý nhân sự thống kê chấm công theo tháng

Tác Quản lý nhân sự


nhân
Tiền Dữ liệu chấm công phải chính xác và đầy đủ.
điều Máy vân tay phải hoạt động bình thường.
kiện Người quản lý nhân sự đã đăng nhập hệ thống với vai trò
Quản lý nhân sự

Luồng
sự kiện Stt Thực Hành động
chính hiện bởi
(Thành 1. 1. Quản lý Chọn tính năng thống kê chấm công
công) nhân sự theo tháng
2. Hệ Lấy dữ liệu thời điểm hiện tại
thống
3. Hệ Hiển thị dữ liệu tổng hợp các tháng
thống bao gồm đã thống kê hoặc chưa thống
kê và trạng thái
4. Quản lý Chọn tháng (tháng chưa thống kê)
nhân sự
5. Hệ Lấy dữ liệu chấm công từ máy vân tay
thống
6. Hệ Xử lý dữ liệu trong bản ghi trả về bảng
thống dữ liệu thông tin tổng hợp theo tháng
7. Hệ Hiển thị danh sách thông tin chấm
thống công tổng hợp
8. Quản lý Chọn xuất thống kê chấm công
nhân sự
9. Hệ Xử lý dữ liệu (Thống kê tổng số giờ
thống làm việc, giờ tăng ca, giờ đi muộn, giờ
về sớm của tất cả nhân viên trong
doanh nghiệp theo tháng).
10. Hệ Hiển thi kết quả thống kê chấm công
thống
11. Quản lý Ấn xác nhận lưu dữ liệu
nhân sự
12. Hệ Hiển thị lưu thành công
thống
Luồng STT Thực hiện Hành động
sự kiện bởi
thay 4a Quản lý Chọn tháng (tháng đã thống kê)
thế nhân sự
5a Hệ thống Lấy dữ liệu
6a Hệ thống Hiển thị ra thông tin chấm công
tổng hợp và thống kê chấm công
7a Quản lý Xem thông tin của tháng đó
nhân sự
6b Hệ thống Không nhận được phản hồi từ máy
vân tay
7b Hệ thống Đưa ra phản hồi lỗi
8b Quản lý Tiến hành kiểm tra lại
nhân sự
Thống kê chấm công được thực hiện chính xác và đầy đủ.
Hậu
Thống kê chấm công được lưu trữ an toàn.
điều
kiện
- Activity diagram
3. Mô tả thiết kế chi tiết phần mềm

a. Thiết kế chi tiết chấm công

-
- Sequense diagram
- Communication diagram
b. Thiết kế chi tiết thông tin chấm công

- Class diagram
-

- Communication diagram
- Sequense diagram
c. Thiết kế chi tiết sửa thông tin chấm công
d. Thiết kế chi tiết nhập dữ liệu chấm công

- Class diagram

- Communication diagram
- Sequense diagram

+ Nhập dữ liệu chấm công bằng máy chấm công

+ Nhập dữ liệu chấm công bởi người quản lý

-
e. Thiết kế chi tiết thống kê chấm công

- Communication diagram
- Sequense diagram

-
4. Các nguyên lý thiết kế và mẫu thiết kế nhóm đã áp dụng, kèm phân tích giải
thích lợi ích đem lại

a) Single Responsibility Priciple:

- Nguyên lý này nói rằng không nên có hơn 1 lý do để một lớp (class) thay đổi. Nghĩa là, nên thiết
kế class của bạn sao cho mỗi class chỉ phục vụ cho một mục đích.
=> Khi áp dụng nguyên tắc này, nhóm em đã tách các class thành các lớp đơn lẻ phục vụ mục
địch riêng hơn.
+ Ví dụ : Phân thành các model con như ChamCongInterface, StaffInterface và
HRInterface và để chỉ ra rằng, các model này chỉ có chức năng như một biến, chỉ cho một mục
đích là get và set dữ liệu vào một đối tượng Object.
b) Open/Closed Priciple:
- Nguyên lý này nói rằng các thực thể phần mềm như: classs, modules, functions,… thì có thể
thoải mái viết code để mở rộng nhưng hạn chế cho việc sửa đổi.
- Ví dụ: một lớp cơ sở ChamCong chứa tất cả các thuộc tính và phương thức lấy dữ liệu chấm
công cơ bản. Lớp này có thể được mở rộng bởi các lớp ChamCongRepository khác nhau cho các
người sử dụng khác nhau(nhân viên or manager) để phục vụ các chức năng của họ. Do đó, nó
được mở rộng dễ dàng và thoải mái nhưng hạn chế việc thay đổi.
c) Liscov Substitution Priciple:
- Nguyên ly này nói rằng các đối tượng của lớp con có thể thay thế được các đối tượng của lớp
cha mà vẫn đảm bảo tính đúng đắn của chương trình.
=> Nhóm đã áp dụng nguyên lý này cho các phương thức xem chấm công bù, xin nghỉ, đơn OT,
đơn đi muộn về sớm.
+ Ví dụ: Model đơn từ có thể được kế thừa từ các model con như chấm công bù, xin
nghỉ, đơn OT, đơn đi muộn về sớm. Vì các phương thức này cũng khá giống nhau nên việc mở
rộng và thay thế phương thức lớp cha để phù hợp với lớp con là hoàn toàn hợp lý.
d) Interface Segregation Priciple
- Nguyên lý này nói rằng thay vì dùng 1 interface lớn, ta nên tách thành nhiều interface nhỏ với
nhiều mục đích cụ thể.
=> Ví dụ ở cách thiết kế class trên, nhóm đã phân thành các interface nhỏ hơn như
ChamCongInterface, StaffInterface và DonTuInterface, rồi ném vào interface lớn như
ChamCongRepositoryInterface.

e) Dependency Inversion Priciple:


- Nguyên lý này nói rằng, các module cấp cao không nên phụ thuộc vào các module cấp thấp. Cả
hai nên phụ thuộc vào abstractions (interface).
=> Nhóm đã phân tách thành các model con để implement các interface. Khi thực thi bất kỳ một
action nào thì đều phải qua interface, tránh thực thi trực tiếp các model.
f) DRY – Don’t Repeat Yourself
- Nguyên lý này nói rằng mỗi mẩu kiến thức nhỏ (code) chỉ có thể xảy ra chính xác một lần trong
toàn bộ hệ thống. Điều này giúp chúng ta viết mã mở rộng, bảo trì và có thể sử dụng lại được.
=> Nhóm em sẽ nghiên cứu và chỉnh sửa cách viết code sao cho 1 đoạn code không phải thực thi
nhiều lần
=> Solution: viết thành các mothod riêng lẻ hoặc các method để gộp chung vào 1 class service.
g) Keep it simple, Stupid!
- Nguyên lý này nói rằng cố gắng giữ cho từng phần nhỏ của phần mềm đơn giản và nên tránh
phức tạp chúng không cần thiết. Điều này giúp chúng ta viết code dễ bảo trì.
=> Trong ví dụ trên, nhóm đã thiết kế theo đơn giản dễ đọc, đối với những bạn mới join project
cũng có khả năng đọc hiểu nhanh.

*************** Ý nghĩa đem lại :

- Dễ bảo trì, dễ dàng trace code đồng thời dễ tìm bug vì áp dụng nguyên lý Single Responsibility
Priciple, nguyên lý thiết kế giúp tạo ra mã nguồn dễ đọc, hiểu và bảo trì. Điều này giúp nhóm
phát triển phần mềm dễ dàng thực hiện các cải tiến, sửa lỗi và nâng cấp hệ thống mà không gặp
nhiều khó khăn.
- Có khả năng mở rộng vì áp dụng nguyên lý Open/Closed Priciple.
- Có khả năng tái sử dụng vì áp dụng nguyên lý Liscov Substitution Priciple, nguyên lý thiết kế giúp
tạo ra các lớp con, có khả năng tái sử dụng lại lớp cha.
- Hiệu suất (Performance): Thiết kế chặt chẽ và tuân thủ nguyên lý giúp tối ưu hóa hiệu suất của
phần mềm. Các thuật toán và cấu trúc dữ liệu có thể được tối ưu hóa để đảm bảo phần mềm
chạy mượt mà và đáp ứng nhanh chóng.
- Dễ dàng quản lý, dễ dàng đọc đồng thời tuân theo một quy chuẩn nhất định của Framework vì
áp dụng nguyên lý Interface Segregation Priciple
 Tóm lại, việc áp dụng các nguyên lý thiết kế trong phát triển phần mềm không chỉ giúp tạo ra
sản phẩm chất lượng cao mà còn giảm thiểu rủi ro, chi phí và thời gian liên quan đến quá
trình phát triển và duy trì.
5. Nhật ký làm việc nhóm:

 22/9 -> 29/9: Đọc yêu cầu phần mềm chấm công + phân công rõ các usecase cho từng
người.
 29/9 -> 6/10: Họp nhóm để report tiến độ + làm homeword 01
 6/10 -> 13/10: Họp nhóm + làm homeword 02
 13/10 -> 20/10: Làm homeword 03
 20/10->27/10: Họp nhóm để bàn tiến độ công việc, đồng thời thống nhất với nhau cách
thiết kế giao diện. Và làm homework 04.
 27/10 -> 3/11: Làm homework 05.
 3/11 -> 10/11: Làm homework 06.
 10/11 -> 01/12: Họp làm homework 07 -> bắt đầu code phần mềm.
 01/12 -> 21/12: Làm báo cáo nhóm + báo cáo cá nhân

You might also like