THIẾT KẾ TRONG SCRUM
GIỚI THIỆU
Trong phương pháp truyền thống, thiết kế thường được thực hiện đầy đủ
trước khi lập trình. Nhưng trong Scrum, thiết kế diễn ra liên tục và lặp lại. Chương
này sẽ giúp sinh viên hiểu cách thiết kế phần mềm trong môi trường linh hoạt, qua
từng Sprint, phù hợp với nguyên tắc “just enough design” (thiết kế vừa đủ) và
“evolutionary design” (thiết kế tiến hóa).
THIẾT KẾ LÀ GÌ TRONG SCRUM?
Là hoạt động xác định kiến trúc tổng thể, giao diện, logic xử lý của phần
mềm.
Không phải là bước riêng biệt, mà được lồng ghép vào các Sprint.
Được điều chỉnh dần khi yêu cầu thay đổi hoặc có phản hồi mới.
NGUYÊN TẮC THIẾT KẾ LINH HOẠT (AGILE)
Thiết kế đơn giản (Simple Design): Làm đủ để đáp ứng yêu cầu hiện tại,
không “dự đoán tương lai”.
Thiết kế tiến hóa (Evolutionary Design): Cấu trúc phần mềm được cải tiến
qua các Sprint.
Thiết kế có thể thay đổi (Embrace Change): Thiết kế mở, dễ sửa, dễ mở
rộng.
Liên tục refactor mã nguồn (Continuous Refactoring): Giữ mã sạch, dễ
hiểu, tránh “nợ kỹ thuật”.
VAI TRÒ CỦA THIẾT KẾ TRONG SCRUM TEAM
Vai trò Trách nhiệm liên quan thiết kế
Product Owner Chỉ mô tả mong muốn người dùng, không quyết định kỹ thuật
Scrum Master Hỗ trợ nhóm duy trì quy trình thiết kế hiệu quả
Developer Chủ động thiết kế kiến trúc, giao diện, thuật toán trong Sprint
THIẾT KẾ KIẾN TRÚC PHẦN MỀM (ARCHITECTURE DESIGN)
Xác định:
o Các thành phần chính (modules)
o Cách các thành phần giao tiếp với nhau (API, message)
o Lựa chọn công nghệ (framework, CSDL, server,...)
Dùng các sơ đồ:
o Sơ đồ lớp (Class Diagram)
o Sơ đồ kiến trúc (Deployment / Component Diagram)BÀI GIẢNG ĐỒ ÁN CHUYÊN NGÀNH
Trần Bàn Thạch – 0931270979 – tranbanthach@dtu.edu.vn Trang 24
o Mô hình MVC, Microservices...
Thiết kế kiến trúc thường thực hiện trước Sprint 1 và được cải tiến dần.
THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG (UI/UX)
Cần làm mockup để:
o Trình bày với Product Owner
o Nhóm dev có định hướng khi lập trình
Công cụ phổ biến:
o Figma, Adobe XD, Balsamiq
o Hoặc vẽ tay + scan
Nguyên tắc thiết kế giao diện:
o Đơn giản, trực quan
o Nhất quán về màu sắc, font chữ
o Ưu tiên trải nghiệm người dùng (User Flow rõ ràng)
THIẾT KẾ CƠ SỞ DỮ LIỆU
Phân tích thực thể – thuộc tính
Vẽ sơ đồ ERD (Entity Relationship Diagram)
Thiết kế bảng, khóa chính, khóa ngoại
Scrum không yêu cầu làm đầy đủ ngay từ đầu – cơ sở dữ liệu có thể được
mở rộng sau các Sprint.
THIẾT KẾ HƯỚNG ĐỐI TƯỢNG
Áp dụng nguyên tắc SOLID để tăng khả năng tái sử dụng:
o S: Single Responsibility
o O: Open/Closed
o L: Liskov Substitution
o I: Interface Segregation
o D: Dependency Inversion
Sử dụng UML:
o Class Diagram
o Sequence Diagram
o Activity Diagram
THIẾT KẾ “JUST ENOUGH” – THIẾT KẾ VỪA ĐỦBÀI GIẢNG ĐỒ ÁN CHUYÊN NGÀNH
“Design for the now, not the future.”
Chỉ thiết kế sâu những gì sẽ lập trình trong Sprint này
Không cố gắng thiết kế toàn bộ hệ thống trong Sprint 1
Chấp nhận thay đổi – không nên over-design
THIẾT KẾ TRONG THỰC TẾ DỰ ÁN SINH VIÊN
Gợi ý quy trình:
1. Sprint 0:
o Vẽ sơ đồ kiến trúc tổng thể
o Mockup UI màn hình chính
o Phác thảo sơ đồ ERD
2. Trong Sprint:
o Mỗi tính năng -> sơ đồ lớp nhỏ
o Cập nhật ERD khi thêm bảng
o Cập nhật giao diện nếu cần
CÔNG CỤ HỖ TRỢ THIẾT KẾ
Loại thiết kế Công cụ hỗ trợ
UI/UX Figma, Balsamiq, Adobe XD
Sơ đồ UML Draw.io, Lucidchart, StarUML
Kiến trúc hệ thống Whimsical, Creately
ERD/CSDL dbdiagram.io, MySQL Workbench
THIẾT KẾ VÀ DEFINITION OF DONE (DOD)
Trong Definition of Done có thể yêu cầu:
o Đã có sơ đồ thiết kế giao diện
o Có tài liệu sơ bộ về thiết kế logic
o Có cập nhật thiết kế khi thay đổi yêu cầu
CÂU HỎI ÔN TẬP
1. Scrum quan niệm thế nào về thiết kế?
2. So sánh thiết kế truyền thống và thiết kế trong Scrum?
3. Nguyên tắc “Simple Design” có ý nghĩa gì?
4. Một số sơ đồ cần thiết khi thiết kế phần mềm là gì?
5. Thiết kế giao diện cần tuân thủ những tiêu chí nào?BÀI GIẢNG ĐỒ ÁN CHUYÊN NGÀNH
BÀI TẬP THỰC HÀNH
Bài tập 1: Vẽ sơ đồ giao diện (UI) cho chức năng “Đăng ký môn học trực
tuyến” bằng Figma hoặc vẽ tay.
Bài tập 2: Tạo sơ đồ ERD cho đề tài “Ứng dụng quản lý phòng trọ”.