Agile là một phương pháp quản lý dự án linh hoạt, tập trung vào việc phản hồi nhanh chóng và linh hoạt trong quá trình phát triển sản phẩm. Trái ngược với các phương pháp truyền thống, Agile tạo điều kiện cho sự linh hoạt, sáng tạo và tương tác chặt chẽ giữa các thành viên trong nhóm dự án.
Scrum, một phương pháp quản lý dự án Agile phổ biến, đặt trọng tâm vào việc tổ chức công việc thành các “sprints” ngắn hạn, tăng cường khả năng phản hồi và điều chỉnh linh hoạt theo yêu cầu thị trường. Điều này giúp tối ưu hóa quản lý dự án và nâng cao chất lượng sản phẩm cuối cùng. Cùng CIT tìm hiểu chi tiết hơn về Agile là gì? Scrum là gì? qua bài viết này nhé!
Agile là gì?
Agile không chỉ là một phương pháp quản lý dự án mà còn là một triết lý phát triển phần mềm đang ngày càng trở nên phổ biến trong cộng đồng phát triển phần mềm. Từ khi được giới thiệu vào những năm 2000, Agile đã trở thành một phần không thể thiếu trong quản lý dự án hiện đại.
Ở cơ bản nhất, Agile là một phương pháp quản lý dự án linh hoạt, tập trung vào việc chia nhỏ dự án thành các phần nhỏ hơn và hoạt động trong các chu kỳ ngắn gọi là “sprints”. Điều này cho phép các nhóm phát triển phần mềm thích ứng nhanh chóng với sự thay đổi và phản hồi từ khách hàng, giúp tăng khả năng cạnh tranh và giảm thiểu rủi ro.
Tuy nhiên, Agile không chỉ là về phương pháp quản lý dự án mà còn là một triết lý phát triển phần mềm. Tại trung tâm của triết lý này là Tuyên ngôn Agile, một tài liệu ngắn gọn nhưng ảnh hưởng mạnh mẽ định rõ các giá trị và nguyên tắc cốt lõi mà Agile hướng đến.
Trong các phần tiếp theo của bài viết, chúng ta sẽ khám phá sâu hơn về Tuyên ngôn Agile, bao gồm lịch sử ra đời, các giá trị cốt lõi và nguyên tắc quan trọng, để hiểu rõ hơn về tầm quan trọng của Agile trong quản lý dự án và phát triển phần mềm hiện đại.
Xem thêm: Docker là gì? Tìm hiểu kiến thức cơ bản về Docker
Tuyên ngôn Agile (Agile Manifesto)
Tuyên ngôn Agile (Agile Manifesto) là một tài liệu ngắn gọn nhưng có ảnh hưởng lớn trong cộng đồng phát triển phần mềm. Được công bố lần đầu vào năm 2001, tại hội nghị Agile ở Snowbird, Utah, Mỹ, tuyên ngôn này được đưa ra bởi một nhóm các chuyên gia phát triển phần mềm đang tìm kiếm các phương pháp mới để giải quyết các vấn đề phát triển dự án.
Lịch sử ra đời của tuyên ngôn Agile
Lịch sử ra đời của Tuyên ngôn Agile bắt nguồn từ sự phát triển và sự tiến bộ trong ngành công nghiệp phần mềm trong những năm 1990. Trong một thời điểm mà các phương pháp phát triển phần mềm truyền thống, như Waterfall, thường gặp phải các vấn đề như thiếu linh hoạt và khả năng thích ứng, một số nhóm phát triển phần mềm đã bắt đầu tìm kiếm những cách tiếp cận mới và linh hoạt hơn.
Tuyên ngôn Agile ra đời như một phản ứng tổng hợp của những ý kiến và kinh nghiệm tích luỹ từ các chuyên gia phát triển phần mềm. Nó là sản phẩm của một quá trình thảo luận mở cửa, nơi mà những người tham gia đã chia sẻ các ý tưởng và quan điểm của họ về cách tiếp cận phát triển phần mềm mà họ tin rằng sẽ mang lại hiệu quả cao hơn và khả năng thích ứng tốt hơn với sự thay đổi.
Tuyên ngôn Agile không chỉ là một bước quan trọng trong lịch sử phát triển phần mềm mà còn là một bản tuyên bố về cam kết của các nhà phát triển phần mềm đối với việc tạo ra các sản phẩm chất lượng cao một cách linh hoạt và hiệu quả. Điều này đã mở ra một kỷ nguyên mới của sự đổi mới và tiến bộ trong lĩnh vực công nghệ thông tin và phát triển phần mềm.
4 giá trị cốt lõi của phương pháp Agile
- Individuals and interactions over processes and tools: Cá nhân và sự tương tác hơn quy trình và công cụ
- Working software over comprehensive documentation: Phần mềm chạy tốt hơn là tài liệu đầy đủ
- Customer collaboration over contract negotiation: Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng
- Responding to change over following a plan: Ứng phó với sự thay đổi hơn là bám theo kế hoạch
Bốn giá trị cốt lõi của phương pháp Agile cung cấp một khung nhìn vững chắc về những gì quan trọng nhất trong quá trình phát triển phần mềm. Dưới đây là mô tả chi tiết về mỗi giá trị:
- Cá nhân và sự tương tác hơn quy trình và công cụ
Trong Agile, sự tương tác giữa các thành viên trong nhóm phát triển được coi là cực kỳ quan trọng. Thay vì tập trung quá nhiều vào quy trình và công cụ, Agile đặt sự ưu tiên cao cho việc xây dựng môi trường làm việc mà ở đó các thành viên trong nhóm có thể tương tác một cách hiệu quả, chia sẻ kiến thức và kinh nghiệm, cùng nhau tìm ra các giải pháp tốt nhất cho các thách thức trong dự án.
- Phần mềm chạy tốt hơn là tài liệu đầy đủ
Agile đặt sự ưu tiên cao cho việc sản xuất phần mềm chất lượng và có giá trị cao nhất. Thay vì tập trung vào việc tạo ra tài liệu chi tiết và rườm rà, Agile khuyến khích việc tạo ra các phiên bản phần mềm chạy được, cho phép khách hàng kiểm tra và đánh giá sản phẩm sớm trong quá trình phát triển. Điều này giúp tăng tính linh hoạt và giảm thiểu rủi ro trong dự án.
- Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng
Agile đánh giá cao việc hợp tác chặt chẽ với khách hàng thông qua việc liên tục thu thập phản hồi và sự tham gia của họ trong quá trình phát triển. Thay vì chỉ dựa vào hợp đồng cố định, Agile khuyến khích sự linh hoạt và thích ứng, giúp đảm bảo rằng sản phẩm cuối cùng đáp ứng đúng nhu cầu và mong muốn của khách hàng.
- Ứng phó với sự thay đổi hơn là bám theo kế hoạch
Agile nhận thức rõ rằng sự thay đổi là không tránh khỏi trong quá trình phát triển phần mềm. Thay vì cố gắng bám theo kế hoạch ban đầu một cách cứng nhắc, Agile khuyến khích việc linh hoạt và thích ứng, giúp nhóm phát triển phần mềm đáp ứng nhanh chóng và hiệu quả với các yêu cầu mới hoặc thay đổi trong dự án.
12 nguyên tắc quan trọng của Agile
Dưới đây là mô tả chi tiết về 12 nguyên tắc quan trọng của Agile:
- Sự hài lòng của khách hàng: Agile đặt sự hài lòng của khách hàng lên hàng đầu bằng cách liên tục cung cấp giá trị và sản phẩm phản hồi nhanh chóng.
- Chào đón các thay đổi: Agile chấp nhận thực tế rằng yêu cầu có thể thay đổi theo thời gian và khuyến khích sự linh hoạt và thích ứng trong quá trình phát triển.
- Giao hàng thường xuyên: Agile khuyến khích việc giao hàng sớm và thường xuyên, giúp tạo ra phản hồi nhanh chóng và giảm thiểu rủi ro.
- Làm việc cùng nhau: Agile khuyến khích sự hợp tác chặt chẽ và làm việc nhóm, giúp tăng cường hiệu suất và sự sáng tạo.
- Đội ngũ có động lực: Agile tạo điều kiện để các thành viên trong nhóm tự chủ và động viên, tạo ra một môi trường làm việc tích cực.
- Đối thoại trực tiếp: Agile khuyến khích việc giao tiếp trực tiếp và hiệu quả giữa các thành viên trong nhóm và với khách hàng, giúp giảm thiểu hiểu lầm và tăng cường sự hiểu biết.
- Phần mềm làm việc: Agile đặt sự ưu tiên cao cho việc tạo ra phần mềm hoạt động và chất lượng cao nhất, thúc đẩy việc phát triển liên tục và cải tiến sản phẩm.
- Tốc độ không đổi: Agile khuyến khích việc duy trì một tốc độ phát triển ổn định và không đổi, giúp đảm bảo sự ổn định và dự đoán trong quá trình phát triển.
- Thiết kế tốt: Agile khuyến khích việc đầu tư vào việc thiết kế phần mềm tốt từ đầu, giúp đảm bảo tính linh hoạt và dễ bảo trì của sản phẩm.
- Tính đơn giản: Agile ưa chuộng việc tối giản hóa quy trình phát triển và sản phẩm, giúp tăng cường hiệu suất và giảm bớt lãng phí.
- Tự tổ chức: Agile khuyến khích việc tự tổ chức trong nhóm, giúp các thành viên tự quản lý và tự điều chỉnh các hoạt động của họ.
- Suy ngẫm và điều chỉnh: Agile khuyến khích việc đánh giá định kỳ và học hỏi từ kinh nghiệm, giúp cải thiện liên tục và phát triển.
Các phương pháp Agile được áp dụng phổ biến hiện nay
Scrum
Scrum là một trong những phương pháp Agile phổ biến nhất được sử dụng để quản lý và phát triển dự án phần mềm. Nó tập trung vào việc chia nhỏ công việc thành các chu kỳ ngắn gọi là “sprints”, trong đó các công việc ưu tiên cao nhất được hoàn thành trước.
Kanban
Kanban là một phương pháp quản lý công việc Agile tập trung vào việc hỗ trợ quá trình làm việc liên tục và tối ưu hóa hiệu suất. Nó sử dụng các bảng Kanban để quản lý quy trình làm việc và giúp nhóm nhìn thấy rõ ràng tiến trình của công việc.
Extreme Programming (XP)
Extreme Programming (XP) là một phương pháp phát triển phần mềm Agile tập trung vào việc cải thiện chất lượng phần mềm thông qua việc áp dụng các nguyên tắc như lập trình ghép cặp, kiểm thử liên tục và tái cấu trúc liên tục.
Lean Software Development (LSD)
Lean Software Development (LSD) là một phương pháp Agile được lấy cảm hứng từ triết lý Lean Manufacturing, tập trung vào việc loại bỏ lãng phí và tối ưu hóa quy trình sản xuất phần mềm để tạo ra giá trị cao nhất cho khách hàng.
Feature-driven development (FDD)
Feature-driven development (FDD) là một phương pháp phát triển phần mềm Agile tập trung vào việc xác định, thiết kế và triển khai các tính năng riêng lẻ một cách hiệu quả và linh hoạt.
Crystal methodology
Crystal methodology là một tập hợp các phương pháp phát triển phần mềm nhằm tối ưu hóa hiệu suất và chất lượng của dự án bằng cách áp dụng các nguyên tắc linh hoạt và thích ứng với môi trường cụ thể của từng dự án.
Scrum là gì?
Scrum là một phương pháp quản lý dự án Agile tập trung vào việc tổ chức và quản lý công việc trong các chu kỳ ngắn gọi là “sprints”. Mục tiêu chính của Scrum là tạo ra các sản phẩm phần mềm có giá trị cao và đáp ứng nhanh chóng yêu cầu của khách hàng.
Trong Scrum, mỗi sprint kéo dài từ 1 đến 4 tuần, và trong mỗi sprint, nhóm phát triển tập trung vào việc hoàn thành một tập hợp các công việc ưu tiên cao nhất từ product backlog. Sprint bắt đầu bằng việc tiến hành một buổi lập kế hoạch sprint (sprint planning), trong đó nhóm quyết định nhiệm vụ cụ thể cần hoàn thành trong sprint đó.
Trong quá trình sprint, nhóm phát triển họat động một cách tự tổ chức và tương tác mật thiết với nhau hàng ngày thông qua các buổi họp ngắn gọi là “daily scrum” để cập nhật tiến độ và giải quyết các vấn đề phát sinh.
Cuối mỗi sprint, nhóm thực hiện một buổi kiểm tra sprint (sprint review) để giới thiệu sản phẩm đã hoàn thành và thu thập phản hồi từ khách hàng và các bên liên quan. Sau đó là buổi tổng kết sprint (sprint retrospective), nơi nhóm đánh giá hiệu suất của mình và đề xuất các cải tiến cho sprint tiếp theo.
Scrum không chỉ cung cấp một cấu trúc tổ chức rõ ràng cho quá trình phát triển phần mềm mà còn khuyến khích tính linh hoạt và thích ứng, giúp nhóm phát triển phần mềm tạo ra sản phẩm có giá trị cao và đáp ứng được yêu cầu của khách hàng một cách nhanh chóng.
Xem thêm: Blockchain là gì? Blockchain hoạt động như thế nào? Ứng dụng ra sao?
Scrum có ích gì cho phát triển phầm mềm hiện nay
3 giá trị cốt lõi của Scrum
Scrum mang lại nhiều lợi ích cho việc phát triển phần mềm hiện nay thông qua ba giá trị cốt lõi của mình: Minh bạch, Thanh tra và Thích nghi.
- Minh bạch
Scrum tạo ra một môi trường làm việc minh bạch bằng cách giúp mọi thành viên trong nhóm hiểu rõ mục tiêu và tiến độ của dự án. Qua các buổi họp như Daily Scrum và Sprint Review, thông tin về tiến độ và các vấn đề đang phát sinh được chia sẻ một cách công khai, giúp tạo ra sự hiểu biết chung và tăng cường sự đồng lòng trong nhóm.
- Thanh tra
Scrum cung cấp cơ hội cho việc kiểm tra liên tục thông qua các buổi kiểm tra sprint và kiểm tra sản phẩm. Qua các buổi này, nhóm có thể đánh giá sự phát triển của dự án, thu thập phản hồi từ khách hàng và các bên liên quan, từ đó đưa ra các điều chỉnh cần thiết để đảm bảo rằng sản phẩm đang được phát triển theo hướng đúng đắn và đáp ứng được yêu cầu của khách hàng.
- Thích nghi
Scrum khuyến khích tính linh hoạt và thích ứng trong quá trình phát triển. Thông qua việc chia nhỏ dự án thành các chu kỳ ngắn và linh hoạt, nhóm có thể nhanh chóng thích ứng với sự thay đổi trong yêu cầu hoặc điều kiện môi trường, từ đó giảm thiểu rủi ro và tăng cường khả năng thành công của dự án.
Nhờ vào ba giá trị cốt lõi này, Scrum đã trở thành một phương pháp quản lý dự án phổ biến và mạnh mẽ, giúp các nhóm phát triển phần mềm tạo ra các sản phẩm chất lượng cao, đáp ứng được nhu cầu của khách hàng một cách linh hoạt và hiệu quả.
Các khái niệm cơ bản Scrum
Scrum Team
- Product Owner (chủ sản phẩm): Là người đại diện cho khách hàng hoặc người sử dụng sản phẩm, có trách nhiệm xác định và ưu tiên các yêu cầu của sản phẩm, đảm bảo rằng sản phẩm đáp ứng được nhu cầu của khách hàng và mang lại giá trị cao nhất.
- Development Team: Là nhóm các chuyên gia về kỹ thuật thực hiện việc phát triển sản phẩm. Development Team tự tổ chức và tự quản lý công việc, chịu trách nhiệm cho việc sản xuất phần mềm chất lượng cao và đáp ứng được yêu cầu của Product Owner.
- Scrum Master: Là người lãnh đạo của nhóm Scrum, có trách nhiệm hướng dẫn và hỗ trợ nhóm trong việc thực thi quy trình Scrum, loại bỏ các rủi ro và cản trở, và giúp nhóm tối ưu hóa hiệu suất làm việc.
Sprint
Sprint là một chu kỳ phát triển ngắn, thường kéo dài từ 1 đến 4 tuần, trong đó nhóm phát triển tập trung vào việc hoàn thành một tập hợp các công việc đã được ưu tiên từ Product Backlog.
Sprint Planning
Sprint Planning là buổi họp ở đầu mỗi sprint, trong đó nhóm Scrum xác định và cam kết cho việc hoàn thành một tập hợp các công việc cụ thể trong suốt thời gian của sprint.
Daily Scrum
Daily Scrum là một buổi họp ngắn hàng ngày, thường diễn ra vào cùng một thời gian và cùng một nơi, nơi mà các thành viên của nhóm Scrum chia sẻ thông tin về tiến độ công việc và đặt ra các kế hoạch cho ngày làm việc tiếp theo.
Sprint Review
Sprint Review là buổi họp cuối cùng của mỗi sprint, nơi mà nhóm Scrum giới thiệu sản phẩm hoàn thành cho khách hàng và các bên liên quan, thu thập phản hồi và đề xuất các cải tiến cho các sprint tiếp theo.
Sprint Restrospective
Sprint Retrospective là buổi họp cuối cùng của mỗi sprint, trong đó nhóm Scrum đánh giá hiệu suất của mình và đề xuất các cải tiến cho các sprint tiếp theo.
Các công cụ (artifacts) Scrum
- Product backlog: Là danh sách tất cả các yêu cầu sản phẩm, được sắp xếp theo thứ tự ưu tiên, là nguồn gốc cho việc lập kế hoạch và thực thi các sprint.
- Sprint backlog: Là danh sách các công việc cụ thể mà nhóm Scrum cam kết hoàn thành trong một sprint cụ thể.
- Burndown Chart: Là biểu đồ theo dõi tiến độ của sprint, hiển thị số lượng công việc còn lại trong sprint theo thời gian, giúp nhóm Scrum đánh giá hiệu suất và dự đoán thời gian hoàn thành của sprint.
Lợi ích khi áp dụng Agile vào quản lý dự án
Áp dụng phương pháp Agile vào quản lý dự án mang lại nhiều lợi ích đáng kể:
- Tăng khả năng thích ứng và linh hoạt: Agile khuyến khích việc thích ứng nhanh chóng với sự thay đổi và linh hoạt trong quá trình phát triển dự án. Điều này giúp giảm thiểu rủi ro và đảm bảo rằng dự án có thể đáp ứng được yêu cầu của khách hàng một cách linh hoạt.
- Tạo ra giá trị sớm và liên tục: Phương pháp Agile tập trung vào việc tạo ra các phiên bản phần mềm chạy được và có giá trị cao sớm trong quá trình phát triển. Giúp tăng cường sự hài lòng của khách hàng và giảm thiểu rủi ro.
- Tăng cường tương tác và sự tham gia của khách hàng: Agile khuyến khích việc liên tục thu thập phản hồi từ khách hàng và sự tham gia của họ trong quá trình phát triển. Đảm bảo rằng sản phẩm đáp ứng được mong đợi của khách hàng và đáp ứng được nhu cầu thực tế.
- Tăng cường sự hợp tác trong nhóm: Agile tạo điều kiện cho sự hợp tác chặt chẽ và làm việc nhóm, giúp tăng cường hiệu suất và sự sáng tạo trong quá trình phát triển.
- Giảm thiểu lãng phí: Agile tập trung vào việc tối giản hóa quy trình phát triển và sản phẩm, giúp giảm thiểu lãng phí và tăng cường hiệu suất làm việc.
- Tăng cường sự hài lòng của nhân viên: Agile tạo điều kiện cho sự tự quản lý và tự tổ chức trong nhóm, giúp tăng cường sự hài lòng và cam kết của nhân viên.
Tại sao chúng ta nên chuyển đổi sang Agile?
- Linh hoạt hơn
Agile tạo điều kiện cho sự linh hoạt và thích ứng nhanh chóng với sự thay đổi trong yêu cầu hoặc môi trường dự án. Điều này giúp giảm thiểu rủi ro và đảm bảo rằng dự án có thể thích ứng được với những thay đổi không mong đợi.
- Sáng tạo hơn
Agile khuyến khích việc sáng tạo và tạo ra giải pháp mới trong quá trình phát triển. Thông qua việc tạo điều kiện cho sự tham gia của khách hàng và sự tự tổ chức của nhóm, Agile giúp kích thích sự sáng tạo và đem lại giải pháp đột phá cho các vấn đề phức tạp.
- Tăng năng suất
Agile tạo ra một môi trường làm việc tích cực và động viên, giúp tăng cường hiệu suất làm việc của nhóm. Bằng cách sử dụng các nguyên tắc và phương pháp của Agile, nhóm có thể làm việc hiệu quả hơn và tạo ra sản phẩm với chất lượng cao hơn trong thời gian ngắn hơn.
- Agile đã phổ biến trên thế giới
Phương pháp Agile đã trở thành tiêu chuẩn quản lý dự án phổ biến trên toàn cầu. Bằng cách chuyển đổi sang Agile, tổ chức có thể tiếp cận được tài nguyên, công cụ và hỗ trợ từ một cộng đồng lớn, giúp tăng cường khả năng thành công của dự án.
Đặc điểm của các phương pháp Agile
- Tính lặp (Iterative): Agile sử dụng quá trình lặp lại để phát triển sản phẩm, trong đó các chu kỳ ngắn và liên tục được thực hiện để tạo ra các phiên bản sản phẩm chạy được và có giá trị cao.
- Tính tăng trưởng và tiến hóa (Incremental and Evolutionary): Agile tập trung vào việc xây dựng sản phẩm một cách tăng dần và tiến hóa theo thời gian. Sản phẩm được phát triển bước từng bước, mỗi bước mang lại giá trị cụ thể và có khả năng thích ứng với các yêu cầu mới.
- Tính thích nghi (Adaptive): Agile khuyến khích việc thích nghi nhanh chóng với sự thay đổi bằng cách sử dụng các phương pháp linh hoạt và mở cửa cho việc điều chỉnh liên tục trong quá trình phát triển.
- Giao tiếp thường xuyên và hiệu quả: Agile đặt sự chú trọng vào việc giao tiếp thường xuyên và hiệu quả giữa các thành viên trong nhóm phát triển, giúp tăng cường sự hiểu biết và sự hợp tác trong quá trình làm việc.
- Nhóm tự tổ chức và liên chức năng: Agile tạo điều kiện cho sự tự tổ chức và tự quản lý của nhóm, trong đó các thành viên làm việc cùng nhau để đạt được mục tiêu chung của dự án. Các nhóm liên chức năng được hình thành để giải quyết các vấn đề phức tạp.
- Quản lý tiến trình thực nghiệm (Empirical Process Control): Agile sử dụng quản lý tiến trình thực nghiệm, dựa trên việc quan sát, điều chỉnh và học hỏi từ các kết quả thực tế để cải thiện hiệu suất và chất lượng của quá trình phát triển.
- Phát triển dựa trên giá trị (Value-based development): Agile tập trung vào việc tạo ra giá trị cho khách hàng thông qua việc ưu tiên và phát triển các tính năng có giá trị cao nhất đầu tiên, đảm bảo rằng sản phẩm đáp ứng được nhu cầu và mong muốn của khách hàng.
Cách áp dụng mô hình Agile trong quản lý dự án
Quy trình Agile hoàn chỉnh
Để thực hiện một dự án theo phương pháp Agile, cần thiết lập một quy trình hoàn chỉnh bao gồm các bước từ lập kế hoạch đến triển khai và đánh giá. Các bước này có thể bao gồm xác định yêu cầu, lập kế hoạch sprint, thực hiện phát triển, kiểm tra và đánh giá sản phẩm, và điều chỉnh quy trình theo phản hồi thu được.
Agile phù hợp với dự án như thế nào?
Agile thường phù hợp với các dự án có tính chất động, yêu cầu linh hoạt và thay đổi thường xuyên. Các dự án có yêu cầu không rõ ràng hoặc có khả năng thay đổi trong quá trình phát triển cũng thích hợp áp dụng Agile. Ngoài ra, Agile cũng phù hợp với các dự án mà việc tạo ra các phiên bản sản phẩm chạy được và đánh giá sớm là quan trọng.
Tuy nhiên, không phải mọi dự án đều phù hợp với Agile. Các dự án có yêu cầu cố định, không thể thay đổi hoặc yêu cầu một kế hoạch chi tiết từ đầu có thể không phù hợp với phương pháp Agile. Đối với những dự án như vậy, các phương pháp quản lý dự án truyền thống có thể phù hợp hơn.
Khi áp dụng Agile vào quản lý dự án, quan trọng là hiểu rõ tính chất của dự án cụ thể và điều chỉnh quy trình Agile một cách phù hợp để đảm bảo rằng nó đáp ứng được yêu cầu và mục tiêu của dự án.