Agile là phương pháp phát triển phần mềm linh hoạt, phù hợp với những doanh nghiệp có môi trường kinh doanh nhiều thay đổi, phải đối mặt với những trường hợp phức tạp. Các bạn sinh viên CNTT Cao đẳng FPT Mạng cá cược bóng đá đã biết đến phần mềm này chưa?
Agile là gì?
Những phương pháp phát triển phần mềm theo cách truyền thống ngày càng bộc lộ nhiều nhược điểm và tỷ lệ các dự án thất bại cao trong thời kỳ bùng phát của ngành công nghệ. Nhận ra vấn đề đó, một số phương pháp phát triển phần mềm hiện đại hơn và khác nhau đã được phát triển để thích ứng với tình hình mới. Tuy nhiên, chúng cũng chỉ giúp giải quyết phần nào một số vấn đề, còn lại vẫn phát sinh vấn đề khác về sự cộng tác, kỹ thuật, công cụ, hướng phát triển, chia sẻ ….
Hiểu được vấn đề này, Agile ra đời.
Agile là phương pháp phát triển phần mềm linh hoạt, một hướng tiếp cận cụ thể cho việc quản lý dự án phần mềm. Nó gồm một quá trình làm việc tương tác và tích hợp để có thể đưa sản phẩm đến tay người dùng càng nhanh càng tốt.
Tại sao môn Quản lý dự án phần mềm Agile lại là kỹ năng cần thiết của sinh viên CNTT Mạng cá cược bóng đá
- 4 giá trị cốt lõi của Agile
- Cá nhân và tương tác qua các quy trình và công cụ
Với sự phức tạp của công nghệ, yếu tố con người sẽ luôn đóng vai trò quan trọng trong bất kỳ loại hình quản lý dự án nào. Dựa quá nhiều vào các quy trình và công cụ dẫn đến việc không thể thích nghi với hoàn cảnh thay đổi
- Phần mềm hoạt động so với tài liệu bao quát / dễ hiểu
Phần mềm hoạt động quan trọng hơn so với tài liệu đơn thuần. Giá trị này là về việc cung cấp cho các nhà phát triển chính xác những gì họ cần để hoàn thành công việc, mà không làm quá tải họ.
- Hợp tác với khách hàng trong thực hiện hợp đồng
Khách hàng là một trong những tài sản mạnh nhất của bạn. Cho dù khách hàng nội bộ hay bên ngoài, có sự tham gia của họ trong suốt quá trình có thể giúp đảm bảo rằng sản phẩm cuối cùng đáp ứng nhu cầu của họ hiệu quả hơn.
- Đáp ứng với sự thay đổi so với thực hiện theo kế hoạch
Giá trị này là một trong những sự tách biệt lớn nhất so với quản lý dự án truyền thống. Trong lịch sử, thay đổi được coi là một chi phí, và là một điều cần tránh. Agile cho phép thay đổi liên tục trong suốt vòng đời của bất kỳ dự án nào. Mỗi lần ““sprint”” cung cấp một cơ hội để xem xét và chỉnh sửa dự án.
2. 6 bước trong phương pháp Agile
Mục tiêu của Agile là tạo ra các chu kỳ phát triển ngắn hơn và tung ra sản phẩm thường xuyên hơn so với quản lý dự án theo kiểu Waterfall (thác nước) truyền thống. Khung thời gian ngắn hơn này cho phép các nhóm dự án phản ứng với các thay đổi trong nhu cầu của khách hàng hiệu quả hơn.
Bạn có thể sử dụng một vài cách thức quản lý dự án Agile khác nhau – Scrum và Kanban là hai trong số những cách thức phổ biến nhất. Nhưng mỗi phương pháp quản lý dự án Agile sẽ tuân theo cùng một quy trình cơ bản, bao gồm:
- Lập kế hoạch dự án
Giống như với bất kỳ dự án nào, trước khi bắt đầu, nhóm của bạn nên hiểu mục tiêu cuối cùng, giá trị cho tổ chức hoặc khách hàng và cách thức đạt được. Bạn có thể phát triển phạm vi dự án ở đây, nhưng hãy nhớ rằng mục đích của việc sử dụng quản lý dự án Agile là để có thể giải quyết các thay đổi và bổ sung cho dự án một cách dễ dàng, vì vậy phạm vi dự án không nên được xem là không thể thay đổi.
- Tạo hành trình sản phẩm
Hành trình là một sự chia nhỏ thành các tính năng sẽ tạo nên sản phẩm cuối cùng. Đây là một nội dung quan trọng của giai đoạn lập kế hoạch Agile, bởi vì nhóm của bạn sẽ xây dựng các tính năng riêng lẻ này trong mỗi lần “sprint”. Tại thời điểm này, bạn cũng sẽ phát triển một “backlog” sản phẩm, đó là danh sách tất cả các tính năng và sản phẩm bàn giao sẽ tạo nên sản phẩm cuối cùng. Sau này, khi bạn lên kế hoạch “sprint”, nhóm của bạn sẽ lấy các công việc (task) từ “backlog” này.
- Lên kế hoạch tung ra (release)
Trong quản lý dự án waterfall truyền thống, có một ngày hoàn tất sau khi toàn bộ dự án đã được phát triển. Tuy nhiên, khi sử dụng một phương pháp quản lý dự án Agile, dự án của bạn sử dụng các chu kỳ phát triển ngắn hơn (được gọi là “sprint”) với các tính năng được tung ra vào cuối mỗi chu kỳ. Trước khi khởi động dự án, bạn sẽ lập một kế hoạch ở mức tổng thể cho các lần tung ra tính năng (feature releases) và vào đầu mỗi lần “sprint”, bạn sẽ xem xét lại và đánh giá lại kế hoạch tung ra cho tính năng đó.
- Lập kế hoạch “sprint”
Trước khi mỗi “sprint” bắt đầu, các bên liên quan cần lập kế hoạch những gì sẽ được hoàn thành bởi mỗi người trong lần “sprint” đó, cách thức sẽ đạt được và đánh giá khối lượng công việc. Điều quan trọng là chia sẻ công việc đồng đều giữa các thành viên trong nhóm để họ có thể hoàn thành nhiệm vụ được giao trong “sprint”. Bạn cũng sẽ cần phải ghi lại trực quan quy trình làm việc của mình để minh bạch hóa với nhóm, hiểu biết được chia sẻ trong nhóm, và xác định và loại bỏ các tắc nghẽn.
- Cuộc họp hàng ngày
Các cuộc họp hàng ngày chỉ nên dài 15 phút. Chúng không nên bị chuyển thành các buổi giải quyết vấn đề hoặc có cơ hội nói về các mục tin tức chung. Một số nhóm thậm chí sẽ tổ chức các cuộc họp ở trạng thái “đứng” để giữ cho nó ngắn gọn.
- Xem xét và xem lại “sprint”
Sau khi kết thúc mỗi “sprint”, nhóm của bạn sẽ tổ chức hai cuộc họp: đầu tiên, bạn sẽ tổ chức đánh giá “sprint” với các bên liên quan của dự án để cho họ xem sản phẩm bàn giao. Đây là một phần quan trọng của việc giữ liên lạc cởi mở với các bên liên quan. Một cuộc họp trực tiếp hoặc họp qua video cho phép cả hai nhóm xây dựng mối quan hệ và thảo luận về các vấn đề sản phẩm phát sinh.
Thứ hai, bạn sẽ có một cuộc họp xem lại “sprint” với các bên liên quan để thảo luận về những gì diễn ra tốt đẹp trong “sprint”, điều gì có thể tốt hơn, cho dù khối lượng công việc quá nặng hay quá nhẹ cho mỗi thành viên và những gì đã hoàn thành trong “sprint”.
Nếu nhóm của bạn chưa quen với quản lý dự án Agile, đừng bỏ qua cuộc họp cần thiết này. Nó giúp bạn đánh giá nhóm của bạn có thể giải quyết bao nhiêu trong mỗi “sprint” và thời gian “sprint” hiệu quả nhất cho các dự án trong tương lai.
3. 7 tính đặc trưng của Agile
- Tính lặp (Iterative):
-
- Dự án sẽ được thực hiện trong các phân đoạn lặp đi lặp lại. Các phân đoạn (được gọi là Iteration hoặc Sprint) này thường có khung thời gian ngắn (từ 1 – 4 tuần).
- Trong mỗi phân đoạn này, nhóm phát triển thực hiện đầy đủ các công việc cần thiết như lập kế hoạch, phân tích yêu cầu, thiết kế, triển khai, kiểm thử (với các mức độ khác nhau) để cho ra các phần nhỏ của sản phẩm.
- Tính tiệm tiến (Incremental) và tiến hóa (Evolutionary)
- Cuối các phân đoạn, nhóm phát triển thường cho ra các phần nhỏ của sản phẩm cuối cùng.
- Các phần nhỏ này thường là đầy đủ, có khả năng chạy tốt, được kiểm thử cẩn thận và có thể sử dụng ngay (gọi là potentially shippable product increment of functionality).
- Theo thời gian, phân đoạn này tiếp nối phân đoạn kia, các phần chạy được này sẽ được tích lũy, lớn dần lên cho tới khi toàn bộ yêu cầu của khách hàng được thỏa mãn.
- Tính thích ứng (hay thích nghi – adaptive)
- Do các phân đoạn chỉ kéo dài trong một khoảng thời gian ngắn, và việc lập kế hoạch cũng được điều chỉnh liên tục, nên các thay đổi trong quá trình phát triển (yêu cầu thay đổi, thay đổi công nghệ, thay đổi định hướng về mục tiêu v.v.) đều có thể được đáp ứng theo cách thích hợp.
- Theo đó, các quy trình Agile thường thích ứng rất tốt với các thay đổi.
- Nhóm tự tổ chức và liên chức năng
- Cấu trúc nhóm Agile thường là liên chức năng (cross-functionality) và tự tổ chức (self-organizing).
- Theo đó, các nhóm này tự thực hiện lấy việc phân công công việc mà không dựa trên các mô tả cứng về chức danh (title) hay làm việc dựa trên một sự phân cấp rõ ràng trong tổ chức.
- Nhóm tự tổ chức có nghĩa là nó đã đủ các kĩ năng (competency) cần thiết cho việc phát triển phần mềm, do vậy nó có thể được trao quyền để tự ra quyết định, tự quản lí và tổ chức lấy công việc của chính mình để đạt được hiệu quả cao nhất.
- Quản lý tiến trình thực nghiệm (Empirical Process Control)
- Các nhóm Agile ra các quyết định dựa trên các dữ liệu thực tiễn thay vì tính toán lý thuyết hay các tiền giả định (prescription).
- Nói cách khác, Agile rút ngắn vòng đời phản hồi (short feedback life cycle) để dễ dàng thích nghi và gia tăng tính linh hoạt.
- Theo thời gian, các chiến lược này sẽ tiến gần đến trạng thái tối ưu, nhờ đó nhóm có thể kiểm soát được tiến trình, và nâng cao năng suất lao động.
- Giao tiếp trực diện (face-to-face communication)
- Về yêu cầu của khách hàng, Agile khuyến khích nhóm phát triển trực tiếp nói chuyện với khách hàng để hiểu rõ hơn về cái khách hàng thực sự cần, thay vì phụ thuộc nhiều vào các loại văn bản.
- Trong giao tiếp giữa nội bộ nhóm phát triển với nhau, thay vì một lập trình viên (thực hiện việc mã hóa) và một kỹ sư (thực hiện việc thiết kế) giao tiếp với nhau thông qua bản thiết kế.
- Phát triển dựa trên giá trị (value-based development)
- Một trong các nguyên tắc cơ bản của Agile là “phần mềm chạy tốt chính là thước đo của tiến độ”. Nguyên tắc này giúp loại bỏ đi các công việc dư thừa không trực tiếp mang lại giá trị cho sản phẩm.
- Để vận hành được cơ chế “làm việc dựa trên giá trị”, nhóm Agile thường làm việc trực tiếp và thường xuyên với khách hàng (hay đại diện của khách hàng). Cộng tác trực tiếp với họ để biết yêu cầu nào có độ ưu tiên cao hơn, mang lại giá trị hơn sớm nhất có thể cho dự án.
- Nhờ đó các dự án Agile thường giúp khách hàng tối ưu hóa được giá trị của dự án. Một cách gần như trực tiếp, Agile gia tăng đáng kể độ hài lòng của khách hàng.
4. Làm quen với các công cụ quản lý dự án theo Agile mà bạn bên biết
- Trello
- JIRA
- Asana
Theo những gì ở trên có thể thấy Quản lý dự án Agile mang lại lợi ích to lớn, đặc biệt trong lĩnh vực công nghệ thông tin bởi thời gian là thứ quyết định số phận của sản phẩm. Kể từ khi công nghệ thông tin phát triển nhanh chóng mặt, thời gian để làm ra sản phẩm tính từ vài tháng đã giảm xuống còn vài tuần, rồi từ vài tuần giảm xuống chỉ còn vài ngày.
Nếu bạn mất quá nhiều thời gian để phát triển một phần mềm, rất có thể những yêu cầu về sản phẩm sẽ thay đổi mạnh mẽ vào thời điểm cuối cùng khi đưa nó vào sử dụng, điều này khiến cho sự nhanh nhạy trở thành một vấn đề trọng điểm. Agile cũng cho phép đội ngũ phát triển phần mềm làm việc nhanh hơn bằng cách chia công việc thành các khác nhau, từ đó chúng ta có thể dễ dàng đưa được vào quy trình phát triển sản phẩm những cải tiến đặc thù thích hợp.
Việc phương pháp Agile tinh giản số lượng tài liệu quản lý đã giúp cải tiến tốc độ phát triển sản phẩm. Thay vì sử dụng tài liệu dài mà không phải ai cũng có thời gian để đọc, thì phương pháp Agile tăng cường sự tương tác giữa các thành viên trong nhóm, với các phản hồi của khách hàng, trí tưởng tượng, lập trình, cùng những thử nghiệm và những ý tưởng mới. Những yếu tố này sẽ góp phần tìm ra giải pháp phù hợp khi có sự thay đổi đột ngột thay vì nhất nhất tuân theo một kế hoạch và không thể đối phó khi có tình huống phát sinh. Không giống như quản lý dự án truyền thống, Agile mở ra lối đi để thích nghi với những thay đổi vào phút chót.
Ngoài ra, quản lý dự án Agile phù hợp nhất với các doanh nghiệp có môi trường kinh doanh liên tục thay đổi và phải đối mặt với nhiều tình huống phức tạp nên phương pháp này thường được triển khai đối với các phần mềm phải cập nhật thường xuyên và với ngành công nghệ thông tin.
CLB Coder Poly HCM