lOMoARcPSD| 58933639
1. Tìm hiểu quy trình phát triển phần mềm linh hoạt Agile 1.1Agile
là gì ?
Agile phương pháp quản dự án linh hoạt, tập trung vào việc chia nh
công việc thành các phần nhỏ (gọi là Sprint hoặc Iteration), phản hồi liên tục
cải tiến liên tục trong quá trình phát triển. Agile giúp đội ngũ nhanh chóng
thích ứng với thay đổi và tăng hiệu quả hoàn thành sản phẩm. Phương pháp
này được xây dựng dựa trên nguyên tắc phân đoạn vòng lặp (iterative)
tăng trưởng tiệm tiến (incremental).
Agile nhấn mạnh sự hợp tác liên tục giữa các thành viên trong nhóm các
bên liên quan, cũng như cải tiến liên tục trong mọi giai đoạn của dự án. Mục
tiêu đưa sản phẩm đến tay khách hàng nhanh chóng, đáp ứng tối ưu nhu
cầu thực tế
1.2 Bối cảnh ra đời của Agile
Trước Agile, các mô hình phát triển truyền thống như Waterfall (thác nước)
hay V-model thường được áp dụng. Tuy nhiên, hạn chế của các mô hình này
là:
- Cứng nhắc: toàn bộ kế hoạch, tài liệu sản phẩm đều được xác định
gần như ngay từ đầu, khó thay đổi giữa chừng.
- Thời gian phát triển dài: khách hàng chỉ nhìn thấy sản phẩm sau giai
đoạn cuối, dẫn đến rủi ro nếu yêu cầu thay đổi.
- Khoảng cách giữa khách hàng và nhóm phát triển: dễ gây ra sản phẩm
không đúng mong muốn thực tế.
Để khắc phục, năm 2001, 17 chuyên gia phần mềm đã họp tại Snowbird (Mỹ)
và đưa ra Tuyên ngôn Agile (Agile Manifesto) – đặt nền móng cho phương
pháp Agile.
1.3 Nguyên tắc cốt lõi của Agile
Việc phát triển phần mềm theo Agile nhấn mạnh vào bốn giá trị cốt lõi:
- Tương tác cá nhân và theo nhóm hơn là các quy trình và công cụ
- Phần mềm có thể làm việc hơn là tài liệu đầy đủ
- Sự hợp tác của khách hàng hơn là quá trình đàm phán hợp đồng
- Đáp ứng với các sự thay đổi hơn là tuân thủ một kế hoạch có sẵn
lOMoARcPSD| 58933639
1.4 Các mô hình agile phổ biến
- Scrum Làm theo Sprint (1–4 tuần), có Product Owner Scrum Master
– Dev Team.
- Kanban → Quản lý công việc bằng bảng Kanban (To Do – Doing –
Done), luồng liên tục, có WIP limit.
- Extreme Programming (XP) → Tập trung kỹ thuật: Pair
Programming, TDD, Refactoring.
- Lean Software Development Tinh gọn, loại bỏ lãng phí, tăng giá trị
cho khách hàng.
- CrystalNhấn mạnh con người hơn quy trình, linh hoạt cho nhóm nhỏ.
- DSDM → Có vòng đời đầy đủ, dùng kỹ thuật MoSCoW, thích hợp dự án
lớn có deadline.
- FDD Phát triển theo tính năng, phù hợp dán quy lớn. 1.5Quy
trình phát triển Agile (kanban)
a. Thiết lập bảng Kanban
Dùng công cụ quản (Trello, Jira, Asana…) hoặc bảng trắng với sticky
notes.
Các cột (list) cơ bản trong Kanban:
o Backlog chứa toàn bộ yêu cầu/tính năng (nguồn công việc). o To
Do những việc đã được chọn để làm. o Doing (In Progress)
việc nhóm đang thực hiện. o Testing/Review việc cần kiểm thử
hoặc chờ đánh giá.
o Done → việc đã hoàn thành.
Có thể thêm cột tùy nhu cầu (VD: “Code Review”, “Deploy”). b. Tạo và
quản lý thẻ công việc (Card)
Mỗi card = 1 nhiệm vụ hoặc tính năng cụ thể.
Thẻ nên ghi rõ:
o Tiêu đề ngắn gọn (VD: “Xây dựng màn hình đăng nhập”). o t
chi tiết hoặc link tài liệu yêu cầu. o Người phụ trách (Assignee).
o Nhãn (Labels) để phân loại: Tính năng mới (Feature), Sửa lỗi (Bug),
Cải tiến (Improvement).
o Ngày hoàn thành (Deadline) nếu cần.
c. Giới hạn công việc đang làm (WIP – Work In Progress Limit)
Đặt giới hạn cho mỗi cột, đặc biệt Doing, để tránh làm dở nhiều việc
cùng lúc. o dụ: “Doing” tối đa 3 task nếu đã đủ 3 thì phải hoàn
thành một cái trước khi kéo thêm việc mới.
lOMoARcPSD| 58933639
Giúp tập trung, giảm tắc nghẽn, nâng cao chất lượng. d. Luồng công
việc liên tục (Continuous Flow) Không có Sprint như Scrum.
Quy trình làm việc:
o Chọn task từ Backlog → đưa vào To Do.
o Thành viên kéo task sang Doing khi bắt đầu làm. o Khi xong,
chuyển sang Testing/Review.
o Được kiểm duyệt/kiểm thử xong thì chuyển sang Done.
Luồng công việc diễn ra liên tục, không cần đợi hết
Sprint. e. Theo dõi và cải tiến
Họp định kỳ (weekly/bi-weekly):
o Kiểm tra luồng công việc. o Xem chỗ nào bị nghẽn (VD:
nhiều task nằm ở Testing).
o Điều chỉnh quy trình, vai trò hoặc giới hạn WIP.
Dùng các chỉ số để đo hiệu suất:
o Lead Time: thời gian từ lúc tạo task đến khi hoàn thành. o
Cycle Time: thời gian từ lúc bắt đầu làm đến khi hoàn thành.
o Cumulative Flow Diagram: theo dõi số ợng task trong
từng cột theo thời gian.
1.6Quản lý dự án bằng trello
Trello một công cụ quản dự án trực quan, thường được dùng theo
hình Kanban. Khi quản dự án bằng Trello, bạn thể hình dung
toàn bộ tiến trình công việc qua các thẻ (cards) và bảng (boards).
lOMoARcPSD| 58933639
2. Biểu đồ phân rã chức năng (BFD – Business Function Diagram)
2.1 Khái niệm
Biểu đồ phân chức năng (BFD Business/Functional Decomposition
Diagram) Là biểu diễn phân rã có thứ bậc các nhiệm vụ chức năng của phần
mềm. Mỗi nhiệm vụ chức năng lại được chia ra làm nhiều công việc con. Số
mức phân chia theo chiều sâu theo chiều rộng lại phụ thuộc vào độ phức
tạp của hệ thống.
2.2 Mục đích sử dụng
Xác định phạm vi và cấu trúc chức năng của hệ thống.
Giúp quản dự án bằng cách chia nhỏ công việc phức tạp thành các
nhiệm vụ rõ ràng.
Là cơ sở để xây dựng các mô hình khác (DFD, Use Case…).
Tạo ngôn ngữ trực quan giúp giao tiếp hiệu quả giữa nhà phát triển, khách
hàng và nhà quản lý.
2.3 Ký hiệu trong BFD
Chức năng: hình chữ nhật, tên chức năng ngắn gọn, rõ ràng.
Cây phân cấp dọc/ngang: thể hiện quan hệ phân từ chức năng cha xuống
các chức năng con.
Mức phân rã:
o Mức 0: hệ thống tổng thể.
o Mức 1, 2…: các chức năng con chi tiết hơn.
Nguyên tắc đặt tên: tên chức năng cần diễn đạt công việc cần làm một cách
cụ thể, dễ hiểu.
2.4 Nguyên tắc phân rã
Áp dụng phương pháp Top-down: mỗi chức năng mức trên được phân rã
thành nhiều chức năng mức dưới.
Đảm bảo:
o Các chức năng con thực sự tham gia vào việc thực hiện chức năng cha.
o Tập hợp tất cả các chức năng con phải bao quát đầy đủ chức năng cha.
Lưu ý:
o Không nên quá 50 chức năng con trực tiếp dưới một chức ng cha.
o Với hệ thống lớn không nên quá 6 mức phân rã; hệ thống nhỏ không
nên quá 3 mức.
o Các chức năng cùng cấp nên đquan trọng mức chi tiết tương
đồng.
o Chức năng mức nên chỉ còn một nhiệm vụ cụ thể (hoặc nhóm nhiệm
vụ nhỏ gắn với người dùng).
2.5 Quy trình xây dựng BFD
1. Xác định chức năng chính của hệ thống từ yêu cầu nghiệp vụ.
lOMoARcPSD| 58933639
2. Phân rã chức năng chính thành các chức năng con cấp 1 theo nguyên tắc
phân rã.
3. Tiếp tục phân rã đến mức chi tiết cần thiết.
4. tả chi tiết chức năng mức bằng lời hoặc kết hợp với các hình
khác (như BPM).
- Ví dụ minh hoạ :
Hệ thống quản lý bán hàng:
Mức 0: Quản lý bán hàng.
Mức 1: Quản sản phẩm Quản khách hàng Quản đơn hàng
Quản lý thanh toán.
Mức 2:
o Quản đơn hàng Tạo đơn hàng, Sửa đơn hàng, Xem chi tiết đơn
hàng.
o Quản thanh toán Thanh toán tiền mặt, Thanh toán chuyển khoản.
2.6 Ưu điểm và hạn chế
Ưu điểm: trực quan, dễ hiểu, cho cái nhìn tổng thể chi tiết, giúp chia
nhỏ vấn đề phức tạp thành phần dễ quản lý.
Hạn chế: chỉ tập trung vào chức năng, chưa thể hiện dữ liệu và luồng
thông tin; hệ thống lớn dễ rối rắm; cần kết hợp với các hình khác để
có cái nhìn toàn diện.
2.7 Ứng dụng thực tế
Phân tích yêu cầu trong phát triển phần mềm.
Giảng dạy các môn Phân tích & Thiết kế hệ thống.
Doanh nghiệp: mô tả quy trình nghiệp vụ (quản lý nhân sự, bán ng, thư
viện, v.v.).
Bài toán minh họa: chương trình quản bán đồ uống (sữa hạt, sữa thực
vật).
lOMoARcPSD| 58933639
Biểu đồ phân rã (BFD) cho chương trình quản lý bán đồ uống sữa hạt

Preview text:

lOMoAR cPSD| 58933639
1. Tìm hiểu quy trình phát triển phần mềm linh hoạt Agile 1.1Agile là gì ?
Agile là phương pháp quản lý dự án linh hoạt, tập trung vào việc chia nhỏ
công việc thành các phần nhỏ (gọi là Sprint hoặc Iteration), phản hồi liên tục
và cải tiến liên tục trong quá trình phát triển. Agile giúp đội ngũ nhanh chóng
thích ứng với thay đổi và tăng hiệu quả hoàn thành sản phẩm. Phương pháp
này được xây dựng dựa trên nguyên tắc phân đoạn vòng lặp (iterative) và
tăng trưởng tiệm tiến (incremental).
Agile nhấn mạnh sự hợp tác liên tục giữa các thành viên trong nhóm và các
bên liên quan, cũng như cải tiến liên tục trong mọi giai đoạn của dự án. Mục
tiêu là đưa sản phẩm đến tay khách hàng nhanh chóng, đáp ứng tối ưu nhu cầu thực tế
1.2 Bối cảnh ra đời của Agile
Trước Agile, các mô hình phát triển truyền thống như Waterfall (thác nước)
hay V-model thường được áp dụng. Tuy nhiên, hạn chế của các mô hình này là:
- Cứng nhắc: toàn bộ kế hoạch, tài liệu và sản phẩm đều được xác định
gần như ngay từ đầu, khó thay đổi giữa chừng.
- Thời gian phát triển dài: khách hàng chỉ nhìn thấy sản phẩm sau giai
đoạn cuối, dẫn đến rủi ro nếu yêu cầu thay đổi.
- Khoảng cách giữa khách hàng và nhóm phát triển: dễ gây ra sản phẩm
không đúng mong muốn thực tế.
Để khắc phục, năm 2001, 17 chuyên gia phần mềm đã họp tại Snowbird (Mỹ)
và đưa ra Tuyên ngôn Agile (Agile Manifesto) – đặt nền móng cho phương pháp Agile.
1.3 Nguyên tắc cốt lõi của Agile
Việc phát triển phần mềm theo Agile nhấn mạnh vào bốn giá trị cốt lõi:
- Tương tác cá nhân và theo nhóm hơn là các quy trình và công cụ
- Phần mềm có thể làm việc hơn là tài liệu đầy đủ
- Sự hợp tác của khách hàng hơn là quá trình đàm phán hợp đồng
- Đáp ứng với các sự thay đổi hơn là tuân thủ một kế hoạch có sẵn lOMoAR cPSD| 58933639
1.4 Các mô hình agile phổ biến
- Scrum → Làm theo Sprint (1–4 tuần), có Product Owner – Scrum Master – Dev Team.
- Kanban → Quản lý công việc bằng bảng Kanban (To Do – Doing –
Done), luồng liên tục, có WIP limit.
- Extreme Programming (XP) → Tập trung kỹ thuật: Pair
Programming, TDD, Refactoring.
- Lean Software Development → Tinh gọn, loại bỏ lãng phí, tăng giá trị cho khách hàng.
- Crystal → Nhấn mạnh con người hơn quy trình, linh hoạt cho nhóm nhỏ.
- DSDM → Có vòng đời đầy đủ, dùng kỹ thuật MoSCoW, thích hợp dự án lớn có deadline.
- FDD → Phát triển theo tính năng, phù hợp dự án quy mô lớn. 1.5Quy
trình phát triển Agile (kanban)
a. Thiết lập bảng Kanban
Dùng công cụ quản lý (Trello, Jira, Asana…) hoặc bảng trắng với sticky notes. •
Các cột (list) cơ bản trong Kanban:
o Backlog → chứa toàn bộ yêu cầu/tính năng (nguồn công việc). o To
Do → những việc đã được chọn để làm. o Doing (In Progress)
việc nhóm đang thực hiện. o Testing/Review → việc cần kiểm thử hoặc chờ đánh giá.
o Done → việc đã hoàn thành. •
Có thể thêm cột tùy nhu cầu (VD: “Code Review”, “Deploy”). b. Tạo và
quản lý thẻ công việc (Card)

Mỗi card = 1 nhiệm vụ hoặc tính năng cụ thể. • Thẻ nên ghi rõ:
o Tiêu đề ngắn gọn (VD: “Xây dựng màn hình đăng nhập”). o Mô tả
chi tiết hoặc link tài liệu yêu cầu. o Người phụ trách (Assignee).
o Nhãn (Labels) để phân loại: Tính năng mới (Feature), Sửa lỗi (Bug), Cải tiến (Improvement).
o Ngày hoàn thành (Deadline) nếu cần.
c. Giới hạn công việc đang làm (WIP – Work In Progress Limit)
Đặt giới hạn cho mỗi cột, đặc biệt là Doing, để tránh làm dở nhiều việc
cùng lúc. o Ví dụ: “Doing” tối đa 3 task → nếu đã đủ 3 thì phải hoàn
thành một cái trước khi kéo thêm việc mới. lOMoAR cPSD| 58933639 •
Giúp tập trung, giảm tắc nghẽn, nâng cao chất lượng. d. Luồng công
việc liên tục (Continuous Flow)
Không có Sprint như Scrum. • Quy trình làm việc:
o Chọn task từ Backlog → đưa vào To Do.
o Thành viên kéo task sang Doing khi bắt đầu làm. o Khi xong,
chuyển sang Testing/Review.
o Được kiểm duyệt/kiểm thử xong thì chuyển sang Done.
Luồng công việc diễn ra liên tục, không cần đợi hết
Sprint. e. Theo dõi và cải tiến
Họp định kỳ (weekly/bi-weekly):
o Kiểm tra luồng công việc. o Xem chỗ nào bị nghẽn (VD:
nhiều task nằm ở Testing).
o Điều chỉnh quy trình, vai trò hoặc giới hạn WIP. •
Dùng các chỉ số để đo hiệu suất:
o Lead Time: thời gian từ lúc tạo task đến khi hoàn thành. o
Cycle Time: thời gian từ lúc bắt đầu làm đến khi hoàn thành.
o Cumulative Flow Diagram: theo dõi số lượng task trong
từng cột theo thời gian.
1.6Quản lý dự án bằng trello
Trello là một công cụ quản lý dự án trực quan, thường được dùng theo
mô hình Kanban. Khi quản lý dự án bằng Trello, bạn có thể hình dung
toàn bộ tiến trình công việc qua các thẻ (cards) và bảng (boards). lOMoAR cPSD| 58933639
2. Biểu đồ phân rã chức năng (BFD – Business Function Diagram) 2.1 Khái niệm
Biểu đồ phân rã chức năng (BFD – Business/Functional Decomposition
Diagram) Là biểu diễn phân rã có thứ bậc các nhiệm vụ chức năng của phần
mềm. Mỗi nhiệm vụ chức năng lại được chia ra làm nhiều công việc con. Số
mức phân chia theo chiều sâu và theo chiều rộng lại phụ thuộc vào độ phức tạp của hệ thống.
2.2 Mục đích sử dụng
• Xác định phạm vi và cấu trúc chức năng của hệ thống.
• Giúp quản lý dự án bằng cách chia nhỏ công việc phức tạp thành các nhiệm vụ rõ ràng.
• Là cơ sở để xây dựng các mô hình khác (DFD, Use Case…).
• Tạo ngôn ngữ trực quan giúp giao tiếp hiệu quả giữa nhà phát triển, khách hàng và nhà quản lý.
2.3 Ký hiệu trong BFD
• Chức năng: hình chữ nhật, tên chức năng ngắn gọn, rõ ràng.
• Cây phân cấp dọc/ngang: thể hiện quan hệ phân rã từ chức năng cha xuống các chức năng con. • Mức phân rã:
o Mức 0: hệ thống tổng thể.
o Mức 1, 2…: các chức năng con chi tiết hơn.
Nguyên tắc đặt tên: tên chức năng cần diễn đạt công việc cần làm một cách cụ thể, dễ hiểu.
2.4 Nguyên tắc phân rã
• Áp dụng phương pháp Top-down: mỗi chức năng mức trên được phân rã
thành nhiều chức năng mức dưới. • Đảm bảo:
o Các chức năng con thực sự tham gia vào việc thực hiện chức năng cha.
o Tập hợp tất cả các chức năng con phải bao quát đầy đủ chức năng cha. • Lưu ý:
o Không nên có quá 50 chức năng con trực tiếp dưới một chức năng cha.
o Với hệ thống lớn không nên quá 6 mức phân rã; hệ thống nhỏ không nên quá 3 mức.
o Các chức năng cùng cấp nên có độ quan trọng và mức chi tiết tương đồng.
o Chức năng mức lá nên chỉ còn một nhiệm vụ cụ thể (hoặc nhóm nhiệm
vụ nhỏ gắn với người dùng).
2.5 Quy trình xây dựng BFD
1. Xác định chức năng chính của hệ thống từ yêu cầu nghiệp vụ. lOMoAR cPSD| 58933639
2. Phân rã chức năng chính thành các chức năng con cấp 1 theo nguyên tắc phân rã.
3. Tiếp tục phân rã đến mức chi tiết cần thiết.
4. Mô tả chi tiết chức năng mức lá bằng lời hoặc kết hợp với các mô hình khác (như BPM).
- Ví dụ minh hoạ :
Hệ thống quản lý bán hàng:
• Mức 0: Quản lý bán hàng.
• Mức 1: Quản lý sản phẩm – Quản lý khách hàng – Quản lý đơn hàng – Quản lý thanh toán. • Mức 2:
o Quản lý đơn hàng → Tạo đơn hàng, Sửa đơn hàng, Xem chi tiết đơn hàng.
o Quản lý thanh toán → Thanh toán tiền mặt, Thanh toán chuyển khoản.
2.6 Ưu điểm và hạn chế
• Ưu điểm: trực quan, dễ hiểu, cho cái nhìn tổng thể và chi tiết, giúp chia
nhỏ vấn đề phức tạp thành phần dễ quản lý.
• Hạn chế: chỉ tập trung vào chức năng, chưa thể hiện dữ liệu và luồng
thông tin; hệ thống lớn dễ rối rắm; cần kết hợp với các mô hình khác để có cái nhìn toàn diện.
2.7 Ứng dụng thực tế
• Phân tích yêu cầu trong phát triển phần mềm.
• Giảng dạy các môn Phân tích & Thiết kế hệ thống.
• Doanh nghiệp: mô tả quy trình nghiệp vụ (quản lý nhân sự, bán hàng, thư viện, v.v.).
• Bài toán minh họa: chương trình quản lý bán đồ uống (sữa hạt, sữa thực vật). lOMoAR cPSD| 58933639
Biểu đồ phân rã (BFD) cho chương trình quản lý bán đồ uống sữa hạt