Professional Documents
Culture Documents
Lý thuyết
Lý thuyết
1. Phương pháp nước rơi (Waterfall): Là phương pháp truyền thống nhất, trong
đó quá trình phát triển được chia thành các giai đoạn tuyến tính và tuần tự, bắt đầu
từ việc thu thập yêu cầu và kết thúc bằng việc bảo trì hệ thống. Mỗi giai đoạn phải
được hoàn thành trước khi giai đoạn tiếp theo bắt đầu.
2. Phương pháp phát triển linh hoạt (Agile): Agile tập trung vào việc phát triển
liên tục và đáp ứng nhanh chóng trước sự thay đổi. Phương pháp này nhấn mạnh vào
sự hợp tác giữa các bên liên quan, phát triển lặp đi lặp lại và thường xuyên cập nhật
sản phẩm dựa trên phản hồi từ người dùng.
3. Phương pháp phát triển theo vòng đời xoắn ốc (Spiral): Kết hợp các yếu tố của cả
phương pháp nước rơi và phát triển linh hoạt, xoắn ốc là một mô hình lặp đi lặp lại
trong đó mỗi vòng lặp là một dự án phần mềm nhỏ, cho phép việc đánh giá rủi ro và
phản hồi người dùng sớm và thường xuyên.
4. Phương pháp Phát triển Phần mềm Nhanh (Rapid Application Development
- RAD): RAD tập trung vào việc nhanh chóng tạo ra các phiên bản ban đầu của phần
mềm để thử nghiệm và lấy phản hồi. Điều này thường được thực hiện thông qua việc
sử dụng công cụ phát triển phần mềm tự động hóa và kỹ thuật lập trình linh hoạt.
5. Phương pháp Lean: Lấy cảm hứng từ sản xuất tinh gọn, phương pháp Lean trong
phát triển phần mềm tập trung vào việc giảm thiểu lãng phí và tối đa hóa giá trị sản
phẩm cho khách hàng. Điều này đạt được thông qua việc liên tục đánh giá dự án và
loại bỏ các yếu tố không cần thiết.
6. Phương pháp DevOps: Mặc dù không phải là một phương pháp phát triển phần
mềm theo nghĩa truyền thống, DevOps tập trung vào việc cải thiện sự hợp tác giữa
các nhóm phát triển và vận hành để đạt được việc triển khai phần mềm nhanh chóng
và liên tục.
Mỗi phương pháp phát triển phần mềm có những điểm mạnh và hạn chế riêng, và sự
lựa chọn giữa chúng thường dựa trên mục tiêu cụ thể của dự án, yêu cầu về thời gian,
ngân sách, và khả năng đáp ứng sự thay đổi của dự án.
Phương pháp Waterfall, hay Mô hình Nước Rơi, là một trong những phương pháp luận
phát triển phần mềm truyền thống nhất. Nó dựa trên việc hoàn thành các giai đoạn
của dự án một cách tuần tự, nơi mỗi giai đoạn phải được hoàn thành trước khi bước
sang giai đoạn tiếp theo. Các giai đoạn chính thường bao gồm:
1. Phân tích và Thu thập Yêu cầu: Xác định yêu cầu của người dùng và dự án.
2. Thiết kế Hệ thống và Phần mềm: Tạo ra thiết kế tổng thể và chi tiết cho hệ
thống.
3. Triển khai và Lập trình: Thực hiện việc viết mã dựa trên thiết kế đã được xác
định.
4. Kiểm thử: Kiểm tra và tìm kiếm lỗi trong phần mềm.
5. Triển khai: Cài đặt phần mềm tại môi trường hoạt động của người dùng.
6. Bảo trì: Sửa chữa và cập nhật phần mềm sau khi đã được triển khai.
Ưu điểm:
● Không linh hoạt để đáp ứng sự thay đổi trong yêu cầu.
● Rủi ro và vấn đề có thể không được phát hiện cho đến giai đoạn kiểm thử.
● Có thể dẫn đến sự lãng phí nếu dự án phải điều chỉnh đáng kể.
Phương pháp Agile là một tập hợp các nguyên tắc và phương pháp luận dựa trên việc
phát triển phần mềm thông qua sự hợp tác liên tục và phản hồi từ người dùng. Nó
tập trung vào việc phát triển sản phẩm thông qua các lần lặp ngắn gọi là sprint, mỗi
sprint thường kéo dài từ một đến bốn tuần. Các nguyên tắc chính của Agile bao gồm:
● Ưu tiên khách hàng và sự hài lòng thông qua giao hàng sớm và liên tục.
● Chấp nhận sự thay đổi yêu cầu, ngay cả ở giai đoạn muộn của dự án.
● Giao hàng thường xuyên của phần mềm hoạt động.
● Sự hợp tác chặt chẽ giữa các bên liên quan và nhóm phát triển.
● Hỗ trợ, tin tưởng, và khuyến khích nhóm làm việc tự quản.
Ưu điểm:
Nhược điểm:
● Yêu cầu sự cam kết và hợp tác cao từ phía khách hàng.
● Có thể khó quản lý nếu phạm vi công việc không được xác định rõ ràng từ
đầu.
● Đôi khi có thể dẫn đến việc thiếu tập trung vào việc lập kế hoạch dài hạn do
tập trung vào giao hàng ngắn hạn.
Agile không phải là một phương pháp cụ thể mà là một tập hợp các nguyên tắc có
thể được áp dụng thông qua nhiều phương pháp luận khác nhau như Scrum, Kanban,
Extreme Programming (XP), và nhiều hơn nữa. Sự chọn lựa giữa Waterfall và Agile
phụ thuộc vào đặc thù của dự án và môi trường làm việc.
Phương pháp luận Scrum
Scrum là một trong những khung công tác Agile phổ biến nhất, được thiết kế để tạo
ra môi trường phát triển sản phẩm linh hoạt và phản hồi nhanh. Scrum tập trung vào
việc quản lý và kiểm soát công việc trong một môi trường động.
● Sprint: Các chu kỳ làm việc cố định, thường kéo dài từ 1 đến 4 tuần, trong đó
nhóm đặt mục tiêu hoàn thành một tập hợp công việc cụ thể.
● Scrum Master: Người hỗ trợ nhóm, giúp nhóm áp dụng đúng phương pháp
Scrum, loại bỏ các rào cản và tạo điều kiện cho nhóm làm việc hiệu quả.
● Product Owner: Đại diện cho người dùng cuối và các bên liên quan khác, đảm
bảo rằng dự án đang di chuyển theo đúng hướng và rằng sản phẩm cuối cùng
đáp ứng nhu cầu của họ.
● Backlog Sản phẩm: Danh sách tất cả công việc cần được thực hiện, được ưu
tiên bởi Product Owner.
● Sprint Backlog: Phần của backlog sản phẩm được chọn để làm việc trong
sprint hiện tại, cùng với kế hoạch cho việc phân phối sản phẩm.
● Daily Scrum (Stand-up): Cuộc họp hàng ngày nơi thành viên nhóm cập nhật về
tiến độ và rào cản.
● Sprint Review và Sprint Retrospective: Cuộc họp diễn ra cuối mỗi sprint để
đánh giá công việc đã hoàn thành và lên kế hoạch cải thiện cho sprint tiếp
theo.
Ưu điểm:
Nhược điểm:
1. Hiển Thị Công Việc: Kanban sử dụng một bảng Kanban (thường là một bảng
vật lý hoặc số) để hiển thị tất cả các công việc hiện tại ở các giai đoạn khác
nhau của quy trình. Mỗi công việc được biểu diễn bằng một thẻ hoặc "card" di
chuyển qua các cột trên bảng, tương ứng với từng giai đoạn của quy trình.
2. Giới Hạn Công Việc Đang Thực Hiện (WIP): Để tránh tình trạng quá tải và cải
thiện tốc độ hoàn thành công việc, Kanban đặt giới hạn cho số lượng công
việc đang thực hiện tại mỗi giai đoạn của quy trình.
3. Quản Lý Dòng Công Việc: Bằng cách theo dõi sự di chuyển của công việc qua
các giai đoạn, Kanban giúp nhận diện các điểm nghẽn và cơ hội để cải thiện
4. Cải Tiến Liên Tục: Mục tiêu cuối cùng của Kanban là cải thiện liên tục quy
trình làm việc thông qua việc đánh giá và điều chỉnh dựa trên hiệu suất thực tế
và phản hồi.
cho một phần của quy trình làm việc (ví dụ: Đang Chờ, Đang Thực Hiện, Hoàn
Thành). Công việc được chia thành các thẻ và được di chuyển qua bảng theo
tiến độ.
● Thẻ (Card): Mỗi thẻ trên bảng Kanban tượng trưng cho một công việc hoặc
nhiệm vụ cụ thể, bao gồm thông tin chi tiết như mô tả công việc, người phụ
● Luồng Công Việc (Workflow): Được xác định rõ ràng thông qua bảng Kanban,
giúp mọi người trong nhóm hiểu rõ công việc nào cần được thực hiện, bởi ai,
● Cuộc Họp Đánh Giá Dòng Công Việc: Định kỳ, nhóm sẽ tổ chức các cuộc họp
để đánh giá dòng công việc, xác định các điểm nghẽn và thảo luận về cách cải
Ưu Điểm
● Tăng Khả Năng Hiển Thị: Mọi người có thể dễ dàng nhìn thấy tất cả công việc
● Cải Thiện Dòng Công Việc: Giúp nhận diện và giảm thiểu các điểm nghẽn.
● Tối Ưu Hóa Hiệu Suất: Bằng cách giới hạn WIP, Kanban giúp giảm thời gian
● Cải Tiến Liên Tục: Khuyến khích sự cải thiện không ngừng trong quy trình làm
việc.
Kanban là một công cụ linh hoạt và mạnh mẽ, có thể được áp dụng cho mọi loại
nhóm và dự án, từ phát triển phần mềm đến quản lý nhiệm vụ hàng ngày.
"What type and level/stage of testing would you suggest the team do? Who will do
test in each test level/stage?"
II) Testing Types and Levels:
Types of Testing:
Levels of Testing:
Q3.
Understanding Functional and Non-Functional
Requirements:
Note:
1. Có các tiêu đề rõ ràng của phần cho các yêu cầu chức năng và phi chức năng.
2. Liệt kê từng yêu cầu theo định dạng ngắn gọn, có dấu đầu dòng.
3. Bắt đầu mỗi yêu cầu chức năng bằng một động từ hành động, chẳng hạn như
"shall allow," "shall enable," "shall provide", v.v., để cho biết hệ thống dự kiến
sẽ làm gì.
4. Mô tả các yêu cầu phi chức năng với các chi tiết cụ thể như số liệu định lượng
hoặc kỳ vọng chính xác có thể đo lường được.
Q5.
Q6.
User Stories are a way to describe features from the perspective of the end user.
They are a tool used in Agile development to capture a description of a software
feature from an end-user perspective. A user story describes the type of user, what
they want, and why. This helps to create a simplified description of a requirement.
Acceptance Criteria:
Criteria 1 (Actionable & Testable condition)
Criteria 2 (Another condition)
...
Criteria N (Final condition)
1. Cụ thể và ngắn gọn: Câu chuyện của người dùng phải đơn giản và xác định rõ
ràng người dùng cần gì và tại sao.
2. Tập trung vào người dùng: Luôn viết câu chuyện từ góc nhìn của người
dùng, nhấn mạnh nhu cầu và lợi ích của người dùng.
3. Tránh dùng thuật ngữ kỹ thuật: Câu chuyện của người dùng phải dễ hiểu đối
với tất cả các bên liên quan, kể cả những thành viên nhóm không chuyên về kỹ
thuật.
4. Bao gồm các tiêu chí chấp nhận: Xác định điều gì phải đúng để câu chuyện
được coi là "hoàn thành". Điều này giúp làm rõ phạm vi của câu chuyện và hỗ
trợ thử nghiệm.
5. Ưu tiên tương tác hơn chức năng: Làm nổi bật những gì người dùng muốn đạt
được thay vì chỉ tập trung vào chức năng hệ thống.
6. Cộng tác và tinh chỉnh: Câu chuyện của người dùng phải được tinh chỉnh và
làm rõ với ý kiến đóng góp của nhóm phát triển, các bên liên quan và người
dùng để đảm bảo chúng phản ánh chính xác nhu cầu của người dùng.