GIỚI THIỆU
Đặt vấn đề
Hiện nay, nhiều công ty tại Việt Nam đang áp dụng các quy trình phần mềm theo phương pháp linh hoạt (agile), với Scrum và eXtreme Programming là hai phương pháp phổ biến nhất Cộng đồng phát triển phần mềm đang ngày càng chuyển hướng sang các phương pháp mới hơn như Crystal, Dynamic Systems Development, Feature-Driven Development và Kanban.
Kanban, dịch từ tiếng Nhật có nghĩa là thẻ thông tin, là thuật ngữ chuyên môn trong "Quản lý công học" và kinh tế học, được biết đến với tên gọi "Phương pháp quản lý Kanban" Thuật ngữ này xuất phát từ công ty Toyota, nổi tiếng không chỉ với kỹ thuật đặc sắc mà còn với phương pháp quản lý hiệu quả, được gọi là "Phương thức quản lý Toyota" Đây là một phương thức quản lý thông minh, tạo đòn bẩy cho sự phát triển kinh tế Nhật Bản và trở thành tiêu chuẩn cho các tập đoàn sản xuất lớn hiện nay Phương thức quản lý Toyota dựa trên hai trụ cột chính: "Phương thức quản lý KANBAN" và "Tự động hóa".
Phương pháp Kanban tại Toyota là một công cụ quản lý nhu cầu, sử dụng phiếu yêu cầu kích thước A6 Phiếu này ghi rõ địa điểm lấy hàng, địa điểm nhận hàng, tên và mã số sản phẩm cần thiết, số "Kanban", tổng số phiếu "Kanban", ngày xuất phiếu, lô trình và số lượng chi tiết được sắp xếp trong một thùng chứa.
Hệ thống Kanban, mặc dù là một khái niệm mới trong công nghệ thông tin, đã được áp dụng trong sản xuất Tinh gọn tại Toyota hơn 50 năm trước David Anderson, cùng với Don Reinertsen, đã tiên phong trong việc mở rộng hiểu biết về sản xuất Tinh gọn và áp dụng Kanban để tối ưu hóa quy trình làm việc trong phát triển và bảo trì công nghệ thông tin Kanban tập trung vào dòng chảy và bối cảnh, cung cấp một phương pháp linh hoạt với ít quy tắc, trở thành một phần mở rộng phổ biến cho các phương pháp truyền thống như Scrum và XP.
Hướng tiếp cận của đề tài
Bài viết sẽ tập trung nghiên cứu ứng dụng quy trình phần mềm Kanban trong phát triển phần mềm quản lý con dấu, nhằm nâng cao hiệu quả quản lý công tác nghiệp vụ trong ngành Công an.
Tại Văn phòng Công an tỉnh Tuyên Quang, tôi đã tham gia phát triển nhiều dự án phần mềm có quy mô từ nhỏ đến trung bình, đảm nhận vai trò là người phát triển.
Dự án đầu tiên là Hệ thống quản lý Vũ khí và Công cụ hỗ trợ tại tỉnh Tuyên Quang, phục vụ cho Phòng quản lý Hành chính Công an Tỉnh Dự án được triển khai từ năm 2008 đến 2010, tuy nhiên, đến nay hệ thống vẫn gặp nhiều khiếm khuyết và đã phải bảo trì nhiều lần.
Dự án Hệ thống Quản lý Vật liệu nổ tại tỉnh Tuyên Quang, phục vụ cho Phòng cháy chữa cháy Công an tỉnh Tuyên Quang, đã không được triển khai thực tế Nguyên nhân là do sự thay đổi trong quy trình quản lý và nghiệp vụ của phòng ban, khiến cho các chức năng của phần mềm không còn phù hợp.
Dự án thứ ba là Hệ thống Quản lý vi phạm An toàn giao thông, phục vụ cho phòng Cảnh sát Giao thông Công an tỉnh Tuyên Quang Mục tiêu của dự án này là xây dựng hệ thống xử phạt vi phạm hành chính liên quan đến an toàn giao thông đường bộ Được triển khai từ đầu năm 2012, hệ thống đã trải qua 3 lần bảo trì cho đến nay.
Dựa trên một số dự án đã triển khai, tôi nhận thấy rằng các dự án này chưa đạt được thành công như mong đợi Vẫn còn nhiều vấn đề tồn tại trong việc phát triển và phân phối phần mềm đến tay người sử dụng Nguyên nhân chính dẫn đến sự không thành công của các dự án này chủ yếu nằm ở phía người quản lý và đội ngũ phát triển Cụ thể, người quản lý chưa thiết lập được quy trình làm việc hợp lý, điều này ảnh hưởng lớn đến hiệu quả của dự án.
Hệ thống làm việc quá tải có thể dẫn đến chất lượng sản phẩm kém Khi nhu cầu và lưu lượng công việc không đồng đều, tắc nghẽn trong hệ thống dễ xảy ra Để kịp thời giao sản phẩm, một số tắc nghẽn có thể bị bỏ qua hoặc giải quyết không triệt để, điều này ảnh hưởng trực tiếp đến chất lượng phần mềm.
Chính sách làm việc không rõ ràng có thể gây ra nhiều rủi ro trong hệ thống sản xuất phần mềm, như tắc nghẽn công việc và sự phụ thuộc vào cá nhân phát triển Một hệ thống hiệu quả cần sự phối hợp đồng bộ giữa các nhóm làm việc, với sản phẩm cuối cùng được tạo ra từ sự kết hợp của các phần công việc Để đạt được sự đồng bộ này, cần có các chính sách rõ ràng cho từng nhóm và từng giai đoạn trong quy trình sản xuất Khi có sự thay đổi về nhân sự, việc phát triển sẽ không bị gián đoạn và hệ thống sẽ không gặp phải tình trạng tắc nghẽn do sự phụ thuộc vào người trước đó.
Để xây dựng niềm tin với khách hàng, việc đưa ra các dự đoán chính xác về quy trình làm việc và thời hạn phát hành sản phẩm là rất quan trọng Khách hàng thường mong muốn nhận được cam kết về thời gian phát hành ngắn nhất có thể Một quy trình làm việc hiệu quả giúp xác định các điểm tắc nghẽn, ưu tiên công việc và thời gian hoàn thành từng hạng mục Từ những dự báo này, người quản lý có thể ước lượng thời gian phát hành sản phẩm một cách chính xác hơn, đáp ứng kỳ vọng của khách hàng.
Quy trình làm việc không rõ ràng gây khó khăn cho sự phối hợp giữa các bên liên quan như khách hàng, chủ sở hữu sản phẩm và người phát triển Người quản lý cần theo dõi hiệu suất làm việc của nhân viên, đồng thời khuyến khích sự hợp tác chặt chẽ giữa các thành viên trong nhóm.
Khách hàng luôn mong muốn xác định xem sản phẩm có đáp ứng đúng yêu cầu của họ hay không Khi quy trình làm việc được hiển thị rõ ràng (ví dụ như trên một bảng), mọi người có thể dễ dàng theo dõi ai đang thực hiện công việc gì, vị trí hiện tại của công việc trong quá trình phát triển và những điểm tắc nghẽn có thể xảy ra.
Có thể rút ra đƣợc một số kinh nghiệm khi triển khai các dự án trên là:
Liên hệ thường xuyên với khách hàng là rất quan trọng vì họ là những người hiểu rõ nhất về nghiệp vụ và yêu cầu mà phần mềm cần đáp ứng Khách hàng cũng đóng vai trò then chốt trong việc kiểm thử phần mềm, giúp phát hiện lỗi và các chức năng không phù hợp.
Quản lý dự án là yếu tố quan trọng cần được chú trọng, đòi hỏi người quản lý phải có kinh nghiệm, khả năng lập kế hoạch hiệu quả và sự nhạy bén trong việc xử lý các tình huống phát sinh.
Một quy trình phát triển phần mềm hiệu quả là cần thiết để nâng cao năng suất làm việc của các thành viên trong nhóm Quy trình tốt giúp chuẩn hóa tài liệu, từ đó giảm thiểu các tác động tiêu cực khi có sự thay đổi trong đội ngũ phát triển.
Trong một dự án mà chúng tôi đang triển khai, tôi quyết định thử nghiệm áp dụng phương pháp Kanban vào hệ thống phân phối phần mềm của mình, nhằm đưa nhóm làm việc vào một quy trình làm việc hoàn toàn mới và linh hoạt.
Nội dung của luận văn
Phần còn lại của luận văn sẽ bao gồm các chương sau:
Chương 2 cung cấp cái nhìn tổng quan về phương pháp phát triển phần mềm linh hoạt, đồng thời giới thiệu một số phương pháp phát triển phần mềm truyền thống liên quan Các phương pháp được đề cập bao gồm Extreme Programming, Scrum và Adaptive Software Development, giúp hiểu rõ hơn về sự tiến hóa và ứng dụng của các phương pháp này trong phát triển phần mềm hiện đại.
Chương 3, trình bày chi tiết một phương pháp phát triển phần mềm mới ra đời của phương pháp linh hoạt – Phương pháp Kanban
Dựa trên kiến thức nghiên cứu từ chương 3, chúng tôi đã áp dụng phương pháp Kanban để phát triển phần mềm quản lý con dấu tại Công an tỉnh Tuyên Quang Chương này sẽ trình bày chi tiết các giai đoạn phát triển phần mềm theo phương pháp Kanban và đánh giá kết quả của quá trình thử nghiệm.
Cuối cùng là Chương 5, đưa ra kết luận cho toàn bộ quá trình nghiên cứu đề tài.
TỔNG QUAN
Phương pháp phát triển phần mềm linh hoạt
Phương pháp linh hoạt là sự thay thế cần thiết cho quy trình phát triển phần mềm truyền thống, vốn nặng về tài liệu và quy trình Các phương pháp truyền thống bắt đầu bằng việc đặc tả yêu cầu, sau đó là thiết kế kiến trúc, phát triển và kiểm thử Tuy nhiên, từ những năm 1990, nhiều nhà phát triển nhận thấy rằng các bước phát triển ban đầu gây cản trở cho các giai đoạn tiếp theo Ngành công nghiệp và công nghệ phát triển nhanh chóng, khiến cho các yêu cầu thay đổi với tốc độ vượt quá khả năng của các phương pháp truyền thống, trong khi khách hàng cũng ngày càng thiếu quyết đoán trong việc đưa ra yêu cầu Do đó, nhiều chuyên gia đã phát triển các phương pháp linh hoạt để thích ứng với những thay đổi này Các phương pháp linh hoạt bao gồm nhiều kỹ năng khác nhau, chia sẻ các giá trị và nguyên tắc cơ bản, với một ví dụ điển hình là kỹ thuật dựa trên vòng lặp tăng cường được sử dụng phổ biến vào năm 1975.
Cải tiến quy trình phần mềm là một quá trình tiến hóa, trong đó các quy trình mới được xây dựng dựa trên những thất bại và thành công của các quy trình trước đó Để hiểu rõ về bước đi linh hoạt, cần xem xét các phương pháp đã ra đời trước đó.
Mô hình thác nước là phương pháp đầu tiên để đánh giá và xây dựng nhu cầu người sử dụng, bắt đầu bằng việc phân tích đầy đủ các yêu cầu Sau nhiều tháng làm việc căng thẳng với người dùng và khách hàng, các kỹ sư sẽ thiết lập một tập hợp các yêu cầu chức năng và phi chức năng rõ ràng Thông tin này được tài liệu hóa cho các giai đoạn tiếp theo, bao gồm thiết kế, nơi các kỹ sư phối hợp với chuyên gia cấu trúc dữ liệu và cơ sở dữ liệu để tạo ra kiến trúc tối ưu cho hệ thống Cuối cùng, các lập trình viên thực thi thiết kế đã được tài liệu hóa, và hệ thống hoàn chỉnh sẽ được kiểm thử và phát hành.
Quy trình lý thuyết có thể hiệu quả, nhưng thực tế lại không luôn như mong đợi Đầu tiên, người dùng thường thay đổi ý định của họ sau nhiều tháng hoặc thậm chí hàng năm thu thập yêu cầu và xây dựng sơ đồ, dẫn đến sự không chắc chắn về mong muốn thực sự của họ Họ chỉ nhận thấy rằng sản phẩm không đạt yêu cầu Thứ hai, các yêu cầu cũng thường xuyên thay đổi trong quá trình phát triển, khiến việc thích nghi với những thay đổi này trở nên khó khăn.
Các kỹ thuật gia tăng và lặp trong phát triển phần mềm tập trung vào việc phân rã chu kỳ phát triển thành các phần nhỏ hơn, tiến hóa từ mô hình thác nước Mục tiêu của phát triển gia tăng là giảm thời gian phát triển bằng cách chia dự án thành các phiên bản gia tăng chồng lên nhau Trong mô hình thác nước, tất cả yêu cầu được phân tích trước khi bắt đầu phát triển, nhưng sau đó chúng được chia thành các gia tăng với các chức năng độc lập Việc phát triển từng gia tăng có thể diễn ra song song, giúp tiết kiệm thời gian xử lý trên toàn bộ dự án.
Trong bối cảnh phát triển ngày càng tăng, việc tiết kiệm thời gian trở thành ưu tiên hàng đầu Các phương pháp tiên tiến như phát triển lặp và mô hình xoắn ốc được áp dụng nhằm xử lý các yêu cầu thay đổi và quản lý rủi ro một cách hiệu quả hơn Những mô hình này chú trọng vào việc đánh giá các yếu tố quan trọng trong lập kế hoạch và cấu trúc tại nhiều thời điểm trong quy trình, thay vì chỉ cố gắng giảm thiểu rủi ro khi chúng xuất hiện trong dự án.
Phát triển lặp phân rã dự án thành các bước lặp có độ dài thay đổi, mỗi lần sản xuất một sản phẩm hoàn chỉnh và xây dựng dựa trên mã và tài liệu của sản phẩm trước đó Phiên bản đầu tiên bắt đầu với sản phẩm cơ bản nhất, và mỗi lần lặp tiếp theo sẽ thêm vào các chức năng hợp lý Mỗi phần nhỏ được thực hiện theo quy trình thác nước, bao gồm phân tích, thiết kế, thực thi và kiểm thử Phát triển lặp giúp đối phó tốt với sự thay đổi, chỉ yêu cầu hoàn chỉnh cho phiên bản hiện tại, trong khi các yêu cầu dự kiến có thể được đưa vào phiên bản tiếp theo mà không cần có mặt trong phiên bản hiện tại cho đến giai đoạn phân tích tiếp theo Cách tiếp cận này cho phép thay đổi công nghệ hoặc điều chỉnh từ khách hàng với tác động tối thiểu đến tiến độ của dự án.
Mô hình xoắn ốc là phương pháp phát triển phần mềm giúp tránh việc xác định toàn bộ hệ thống từ đầu, mà thay vào đó, xây dựng từng phần theo chức năng và ưu tiên các yêu cầu dựa trên mức độ rủi ro.
Mô hình xoắn ốc và phát triển lặp mang lại sự linh hoạt hơn so với quy trình thác nước, nhưng vẫn có ý kiến cho rằng chúng chưa đáp ứng đủ yêu cầu thay đổi linh hoạt trong bối cảnh phát triển của thế giới kinh doanh hiện nay.
Mô hình trưởng thành (CMM) là một mô hình gồm 5 cấp độ, nhằm mô tả các thực tiễn quản lý, kỹ thuật và quy định các ưu tiên cải tiến cho tổ chức phần mềm.
Mô hình xác định 18 khu vực quan trọng và 52 mục tiêu để một tổ chức đạt mức 5 trong quy trình trưởng thành Hầu hết các tổ chức phần mềm hiện nay chỉ đạt mức độ trưởng thành thấp (CMM mức 1), trong khi chỉ có một số ít tổ chức được coi là “tối ưu” (CMM mức 5).
CMM chủ yếu tập trung vào các dự án lớn và tổ chức lớn, nhưng có thể điều chỉnh để phù hợp với các dự án vừa và nhỏ Điều này là do CMM được xây dựng một cách chung, đáp ứng nhu cầu của nhiều loại hình tổ chức khác nhau Mục tiêu của CMM là thiết lập quy trình thống nhất, có khả năng dự đoán và độ tin cậy cao.
Mặc dù CMM hướng đến việc phát triển phần mềm theo quy trình có thể dự đoán và lặp lại, nhưng các nhà khoa học đã chỉ ra rằng nhiều yếu tố trong quy trình thực tế thường không thể dự đoán và không lặp lại được.
Quy trình này chỉ mới bắt đầu đƣợc tìm hiểu
Quy trình này quá phức tạp
Quy trình đang biến đổi và không thể dự đoán đƣợc
Schwaber, người sáng lập Scrum, nhấn mạnh rằng để đạt được tính linh hoạt thực sự, quy trình cần phải chấp nhận sự thay đổi thay vì chỉ dự đoán Các chuyên gia cũng nhận thấy rằng việc áp dụng các phương pháp linh hoạt để thích ứng với sự thay đổi nhanh chóng là rất quan trọng Trong môi trường phát triển phần mềm năng động, sự sáng tạo được coi là chìa khóa để quản lý các vấn đề phức tạp.
Các chuyên gia như Mary Poppendieck và Bob Charette đã tìm kiếm các nguyên lý kỹ thuật mới cho quy trình sản xuất, chuyển sang xu hướng sản xuất Tinh gọn (Lean Manufacturing) bắt đầu từ sau chiến tranh thế giới thứ 2 Mặc dù phương pháp này không được phổ biến cho đến đầu những năm 1980, Toyota đã áp dụng nó bằng cách chỉ giữ đủ nguồn cung để vận hành nhà máy trong một ngày và sản xuất đủ sản phẩm theo đơn hàng hiện tại, trong khi các nhà máy ở Mỹ hoạt động với 100% công suất và tồn kho khổng lồ.
Năm 2000, dự án đầu tiên của Beck và Jeffries sử dụng phương pháp eXtreme Programming [11] ra đời và thu về thành công ngoài mong đợi
Cũng vào năm 2000, Cockburn đã sử dụng những gì mà ông học đƣợc ở IBM để phát triển phương pháp Crystal [11].
Một số phương pháp phát triển phần mềm linh hoạt tiêu biểu
Hiện nay, nhiều phương pháp phát triển linh hoạt đã được đề xuất và áp dụng, mỗi phương pháp có cách tiếp cận và quy trình riêng Tuy nhiên, chúng đều chia sẻ những đặc điểm chung như tính tương tác cao, coi trọng vai trò khách hàng và khả năng đáp ứng nhanh với sự thay đổi Bài viết này sẽ giới thiệu một số phương pháp phát triển phần mềm tiêu biểu như Extreme Programming (XP), Scrum và Adaptive Software Development (ASD), những phương pháp truyền thống đã được áp dụng rộng rãi tại Việt Nam Phần này sẽ chỉ nêu qua quy trình của các phương pháp trên và tập trung vào nghiên cứu phương pháp Kanban, một phương pháp linh hoạt mới hơn trong chương sau.
Extreme Programming (XP) là một trong những phương pháp phát triển linh hoạt nổi bật, được hình thành nhằm khắc phục các vấn đề của các phương pháp truyền thống với chu kỳ phát triển dài XP ra đời để đảm bảo sản phẩm đáp ứng yêu cầu khách hàng, nâng cao khả năng áp dụng và đảm bảo tiến độ thực hiện Dựa trên kinh nghiệm thực tiễn và thành công trong áp dụng, XP đã được phát triển thành lý thuyết với các nguyên lý và bài học thực tiễn rõ ràng.
Vòng đời quy trình XP, theo mô tả của Beck, bao gồm các giai đoạn chính: khảo sát, lập kế hoạch, vòng lặp phát triển, đưa ra sản phẩm, bảo trì và kết thúc dự án.
Trước khi khởi động dự án, nhóm phát triển cần tiến hành đánh giá khả năng thực hiện, bao gồm các yếu tố như nhân lực, kỹ năng, công nghệ và thời gian.
Trong giai đoạn này, khách hàng sẽ ghi lại các yêu cầu cho phiên bản đầu tiên của chương trình, với mỗi yêu cầu tương ứng với một chức năng cụ thể Tuy nhiên, quá trình này thường gặp khó khăn, vì sự chậm trễ có thể xảy ra do khách hàng không hiểu rõ những gì lập trình viên cần và những gì không cần thiết.
Các thành viên trong dự án sẽ làm quen với công cụ và công nghệ cần thiết, đồng thời xây dựng một mô hình nguyên mẫu để kiểm tra công nghệ và khảo sát các kiến trúc khả thi cho hệ thống Giai đoạn khảo sát này có thể kéo dài từ vài tuần đến vài tháng, tùy thuộc vào mức độ quen thuộc với công nghệ của các lập trình viên.
2.2.1.2 Giai đoạn lập kế hoạch
Giai đoạn lập kế hoạch nhằm giúp khách hàng và các nhà phát triển thống nhất các chức năng quan trọng nhất của dự án Các yêu cầu sẽ được ưu tiên và nội dung của phiên bản đầu tiên sẽ được xác định Lập trình viên ước lượng công sức cần thiết để thực hiện các yêu cầu và thống nhất lịch trình làm việc Thời gian cho phiên bản đầu tiên dự kiến từ hai đến sáu tháng, trong khi quá trình lập kế hoạch chỉ kéo dài vài ngày.
2.2.1.3 Các vòng lặp phát triển
Lịch trình trong giai đoạn lập kế hoạch được chia thành các vòng thời gian từ một đến bốn tuần Trong vòng lặp đầu tiên, cần xây dựng hệ thống kiến trúc tổng thể bằng cách lựa chọn các nhiệm vụ quan trọng Khách hàng sẽ quyết định nhiệm vụ cho mỗi vòng lặp, và vào cuối mỗi vòng, các kết quả sẽ được trình bày và kiểm thử chức năng.
Kết thúc vòng lặp cuối, hệ thống sẵn sàng chuyển sang giai đoạn đƣa ra sản phẩm đầu tiên
2.2.1.4 Giai đoạn đƣa ra sản phẩm Ở giai đoạn này, các sản phẩm đƣợc kiểm thử song song, và có thể vẫn có những thay đổi Những thay đổi này đƣợc ghi nhận và áp dụng cho phiên bản hiện thời hoặc phiên bản kế tiếp
Trong giai đoạn này, việc cải tiến hiệu năng và tối ưu hóa chương trình là rất cần thiết Công việc chính bao gồm việc chuyển giao sản phẩm cho khách hàng và bắt đầu đưa sản phẩm vào vận hành.
Sau khi phiên bản đầu tiên được bàn giao cho khách hàng, dự án XP cần duy trì hoạt động sản phẩm và khởi động các vòng lặp mới Giai đoạn bảo trì yêu cầu nỗ lực hỗ trợ khách hàng, dẫn đến khả năng phát triển có thể chậm lại Ngoài ra, giai đoạn này có thể cần thêm thành viên mới vào đội dự án và điều chỉnh cấu trúc đội ngũ.
Khi khách hàng không còn nhiệm vụ nào cần thực hiện, hệ thống phục vụ khách hàng cần đáp ứng các yêu cầu về tính năng và độ tin cậy Trong giai đoạn này, việc hoàn thiện tài liệu cần thiết về hệ thống là rất quan trọng, đặc biệt khi không có thay đổi nào về kiến trúc, thiết kế hay mã nguồn Ngoài ra, hệ thống cũng có thể được kết thúc nếu không đạt được đầu ra mong muốn hoặc nếu việc phát triển tiếp theo sẽ tốn kém.
Thuật ngữ “Scrum” đƣợc trình bày lần đầu tiên trong bài báo của Takeuchi và Nonaka
Scrum là một phương pháp quản lý linh hoạt, thích hợp cho việc phát triển phần mềm trong các hệ thống hiện có Phương pháp này cho phép kết hợp với các kỹ thuật phát triển khác, nhằm quản lý hiệu quả các yếu tố như yêu cầu, thời gian, tài nguyên và công nghệ, vốn có thể thay đổi trong suốt quá trình phát triển Điều này cho thấy rằng việc phát triển dự án thường mang tính không ổn định, phức tạp và khó dự đoán, do đó cần có một quy trình phát triển linh hoạt để đáp ứng kịp thời những thay đổi, đồng thời đảm bảo sản phẩm cuối cùng đáp ứng cao nhu cầu của khách hàng.
Scrum là một phương pháp quản lý quy trình hiệu quả, được chia thành ba giai đoạn chính: giai đoạn bắt đầu và lập kế hoạch, giai đoạn phát triển, và giai đoạn kết thúc để đưa ra sản phẩm.
2.2.2.1 Giai đoạn bắt đầu và lập kế hoạch
Trước khi bắt đầu dự án, tất cả yêu cầu hệ thống được tập hợp thành các phiếu công việc, gọi là Backlog, trong đó tập hợp toàn bộ các phiếu công việc của sản phẩm được gọi là Product Backlog Product Backlog cung cấp cái nhìn tổng quan về chức năng của sản phẩm cuối cùng, với các yêu cầu thu thập từ khách hàng, bộ phận bán hàng hoặc các nhà phát triển phần mềm Người tạo ra Product Backlog, thường là khách hàng hoặc quản lý trong công ty, được gọi là Product Owner Các yêu cầu này sẽ được xác định độ ưu tiên và ước lượng nhân lực cần thiết để triển khai Danh sách Product Backlog liên tục được cập nhật với các mục mới và điều chỉnh độ ưu tiên, cũng như ước lượng nhân lực và tài nguyên cho chính xác hơn.
Kết chương
Trong chương này, tôi đã cung cấp cái nhìn tổng quan về phương pháp phát triển phần mềm linh hoạt và điểm qua một số quy trình truyền thống liên quan đến phương pháp này.
Phương pháp ASD cung cấp một mô hình chung và định hướng, cho phép áp dụng linh hoạt và có tính tùy biến cao Tuy nhiên, do thiếu hướng dẫn cụ thể, phương pháp này yêu cầu người quản lý phải sở hữu kỹ năng quản lý tốt.
Scrum cung cấp các tiêu chuẩn và hướng dẫn chi tiết để áp dụng ngay lập tức, mặc dù việc thực hiện có thể gặp khó khăn Tuy nhiên, phương pháp này không đưa ra hướng dẫn cụ thể về kỹ thuật lập trình, do đó có thể được kết hợp với các phương pháp phát triển phần mềm khác để đạt hiệu quả tốt hơn.
XP (Extreme Programming) đưa ra nhiều ý tưởng hiệu quả như làm việc nhóm và lập trình theo cặp Phương pháp này không cứng nhắc, chỉ mang tính chất chỉ đạo, giúp việc áp dụng trở nên dễ dàng hơn Chúng ta có thể áp dụng XP một cách toàn diện hoặc kết hợp những gợi ý của nó với các phương pháp khác để đạt hiệu quả tối ưu.
Chương tiếp theo sẽ trình bày chi tiết một phương pháp linh hoạt hoàn toàn mới được áp dụng vào sản xuất phần mềm – Phương pháp Kanban.
PHƯƠNG PHÁP KANBAN
Giới thiệu
Thuật ngữ Kanban trong tiếng Nhật có nghĩa là "cái thẻ" Mỗi thẻ đại diện cho một phần công việc và được sử dụng để bắt đầu một nhiệm vụ mới Công việc mới sẽ phải chờ trong hàng đợi cho đến khi có thẻ sẵn sàng Khi một số nhiệm vụ được hoàn thành, thẻ sẽ được bóc ra và tái chế, cho phép bắt đầu một phần công việc mới từ hàng đợi.
Cơ chế kéo trong hệ thống Kanban cho phép công việc mới chỉ được đưa vào khi có khả năng xử lý, thay vì bị đẩy vào dựa trên nhu cầu Điều này giúp ngăn chặn tình trạng quá tải, miễn là dung lượng và số lượng thẻ tín hiệu trong lưu thông được xác định hợp lý.
Trong công viên, khách thăm quan được xem như công việc đang thực hiện (WIP), với dung lượng giới hạn bởi số thẻ vào cửa Vào ngày bình thường, việc này không gây vấn đề, nhưng vào ngày đông đúc, khách mới phải chờ bên ngoài cho đến khi có vé được tái sử dụng Hệ thống Kanan cung cấp giải pháp đơn giản và hiệu quả để kiểm soát kích thước đám đông, giúp duy trì điều kiện hoạt động tốt cho công viên và tránh thiệt hại do quá tải.
Trong phát triển phần mềm, hệ thống Kanban ảo được sử dụng để giới hạn công việc đang tiến hành Các thẻ Kanban không đóng vai trò như tín hiệu kéo công việc mà đại diện cho các hạng mục, do đó chúng được gọi là “ảo” vì không có thẻ tín hiệu vật lý Tín hiệu để kéo công việc mới được suy ra từ việc quan sát trực quan công việc hiện tại dựa trên các chỉ số giới hạn như dung lượng và công suất.
David J Anderson áp dụng hệ thống Kanban để giới hạn công việc trong nhóm, giúp cân bằng nhu cầu và khả năng xử lý công việc Phương pháp này cho phép nhóm duy trì tốc độ phát triển ổn định, tạo điều kiện cho các thành viên cân bằng giữa công việc và cuộc sống Kanban cũng giúp làm rõ ảnh hưởng của lỗi, tắc nghẽn, biến động và chi phí kinh tế đến dòng chảy công việc Việc giới hạn công việc đang làm khuyến khích chất lượng cao hơn và hiệu suất tốt hơn Sự cải thiện trong dòng chảy và chất lượng giúp giảm thời gian chờ và nâng cao khả năng dự báo hiệu suất hàng ngày Bằng cách thiết lập nhịp phát hành thường xuyên và liên tục, Kanban góp phần xây dựng lòng tin với khách hàng.
Kanban đóng vai trò quan trọng trong việc phát triển văn hóa tổ chức bằng cách công khai các vấn đề và tập trung vào việc giải quyết chúng Phương pháp này không chỉ loại trừ những ảnh hưởng tiêu cực trong tương lai mà còn thúc đẩy sự hình thành của một tổ chức cải tiến liên tục Kết quả là, Kanban tạo ra một môi trường làm việc có tính hợp tác cao, nơi các thành viên được trao quyền và đánh giá cao, góp phần nâng cao uy tín của tổ chức.
Các bảng thẻ đã trở thành công cụ kiểm soát trực quan phổ biến trong phát triển phần mềm linh hoạt, giúp theo dõi công việc đang thực hiện Mặc dù chúng không phải là hệ thống Kanban, nhưng chúng cho phép các đội tự tổ chức, phân công nhiệm vụ và di chuyển công việc tồn đọng mà không cần sự chỉ đạo từ quản lý Tuy nhiên, để trở thành hệ thống Kanban thực thụ, cần có giới hạn rõ ràng cho công việc đang làm và tín hiệu để kéo công việc mới vào hệ thống.
Mỗi thẻ trực quan đại diện cho một phần công việc quan trọng của khách hàng, chứa thông tin cần thiết Thông tin trên thẻ phải hỗ trợ hệ thống kéo để cá nhân có thể đưa ra quyết định một cách hiệu quả Nội dung của thẻ có thể thay đổi tùy thuộc vào hạng mục công việc hoặc các lớp dịch vụ liên quan.
Tên hạng mục được đặt ở giữa, trong khi ngày vào hệ thống được ghi ở góc dưới bên trái Điều này phục vụ hai mục đích: thúc đẩy quy trình đầu vào và đầu ra cho lớp dịch vụ chuẩn, đồng thời giúp các thành viên trong nhóm theo dõi thời gian còn lại cho các thỏa thuận mức dịch vụ (được mô tả trong mục 3.3.8) Để xác định lớp ngày phân phối cho các hạng mục dịch vụ, thời hạn giao hàng được ghi ở góc dưới bên phải của thẻ.
Có thể sử dụng các dấu hiệu như dấu hoa thị để chỉ ra rằng hạng mục đã trễ so với thời gian sản xuất trong thỏa thuận mức dịch vụ Tên của người được giao nhiệm vụ cũng được ghi rõ trên thẻ.
Theo nguyên tắc chung, thiết kế thẻ đại diện cho công việc cá nhân cần cung cấp thông tin đầy đủ để hỗ trợ quản lý dự án mà không cần can thiệp từ người quản lý Việc trao quyền cho các thành viên trong nhóm với quy trình, mục đích và mục tiêu rõ ràng, cùng thông tin về rủi ro, là rất quan trọng Khi hiểu rõ về các lớp dịch vụ và thỏa thuận mức dịch vụ, chúng ta nhận thấy rằng Kanban thúc đẩy sự tự tổ chức và quản lý rủi ro hiệu quả Bằng cách cho phép các thành viên trong đội thực hiện kế hoạch và quyết định ưu tiên của họ, chúng ta thể hiện sự tôn trọng và niềm tin vào hệ thống thiết kế quy trình.
Có nhiều cách tiếp cận đến Kanban, nhưng hầu hết đồng ý rằng Kanban là phương pháp quản lý các thay đổi, tập trung vào các nguyên tắc sau đây [13] :
1 Trực quan công việc (Visualize Work) Trực quan các bước trong quy trình làm việc, từ khái niệm mơ hồ tới lúc phần mềm có thể phát hành
2 Tạo ra các chính sách rõ ràng (Make Policies Explicit) Tạo ra các chính sách mà chúng ta đang hoạt động một cách minh bạch
3 Đo và quả lý lưu lượng (Measure and Manage Flow) Đo và quản lý lưu lượng để đƣa ra các quyết định và hình dung ra kết quả
4 Xác định các cơ hội cải tiến Tạo ra một nền văn hóa cải tiến liên tục là công việc của tất cả mọi người
Để áp dụng Kanban hiệu quả trong tổ chức, phương pháp tốt nhất là giới thiệu dần dần thay vì thông qua việc chuyển kế hoạch và chương trình đào tạo Dựa trên các nguyên tắc này, chúng ta có thể thực hiện các bước cụ thể để tích hợp hệ thống Kanban vào quy trình làm việc.
3.3 Quy trình Kanban 3.3.1 Trực quan quy trình làm việc
Bước đầu tiên hướng tới việc trực quan quy trình làm việc, chính là phải hiểu hệ thống hiện tại của chúng ta hoạt động nhƣ thế nào
Hiểu rõ hệ thống cung cấp phần mềm là điều cần thiết để tối ưu hóa quy trình làm việc Bước đầu tiên là phân tích quy trình hiện tại bằng cách vẽ sơ đồ tổng thể, không chỉ tập trung vào phần phát triển mà còn xem xét toàn bộ quy trình làm việc.
Chúng ta có thể áp dụng các công cụ như bản đồ dòng giá trị, biểu đồ trạng thái trong UML, hoặc sơ đồ quy trình công việc để xác định quy trình của mình một cách hiệu quả.
Hệ thống sản xuất Tinh gọn (Lean) hiện nay phổ biến với khái niệm bản đồ dòng giá trị (Value Stream Maps) Biểu đồ này mô tả các giai đoạn công việc từ nguyên liệu thô đến thành phẩm, hoặc từ ý tưởng mơ hồ đến tính năng hoàn thiện trong sản xuất phần mềm Việc sử dụng bản đồ dòng giá trị giúp nhận diện rõ ràng từng giai đoạn, ví dụ như giai đoạn "Kiểm thử" không chỉ đơn thuần là thử nghiệm mà còn bao gồm sửa chữa, phân tích, tái cấu trúc, thảo luận và cập nhật Khi xác định giai đoạn "Kiểm thử", chúng ta có thể nhận biết rằng nhiều hoạt động đang diễn ra Khoảng cách giữa các giai đoạn mà không có thông tin bổ sung được gọi là "thời gian chờ đợi" Hình 3.1 minh họa ví dụ từ một dự án thực tế.
Hình 3.1: Ví dụ về bản đổ luồng giá trị mô tả 1 quy trình sản suất phần mềm
Quy trình Kanban
Bước đầu tiên hướng tới việc trực quan quy trình làm việc, chính là phải hiểu hệ thống hiện tại của chúng ta hoạt động nhƣ thế nào
Để tối ưu quy trình làm việc trong cung cấp phần mềm, việc đầu tiên là hiểu rõ quy trình hiện tại Cách hiệu quả nhất để nắm bắt quy trình này là vẽ sơ đồ tổng thể, không chỉ tập trung vào phần phát triển mà còn bao gồm tất cả các bước liên quan.
Chúng ta có thể áp dụng các công cụ như bản đồ dòng giá trị (Value Stream Maps), biểu đồ trạng thái trong UML, hoặc sơ đồ quy trình công việc để xác định và tối ưu hóa quy trình của mình.
Một trong những phương pháp phổ biến hiện nay trong hệ thống sản xuất Tinh gọn (Lean) là sử dụng bản đồ dòng giá trị (Value Stream Maps) Biểu đồ này mô tả các giai đoạn mà công việc trải qua, từ nguyên liệu thô đến thành phẩm, hoặc từ ý tưởng đến tính năng hoàn thiện trong sản xuất phần mềm Việc nhận diện các giai đoạn, chẳng hạn như "Kiểm thử", không chỉ đơn thuần là thử nghiệm mà còn bao gồm nhiều hoạt động khác như sửa chữa, phân tích, tái cấu trúc và thảo luận Điều này giúp chúng ta xác định rõ ràng công việc đang diễn ra trong giai đoạn "Kiểm thử" Khoảng thời gian giữa các giai đoạn, nơi không có thông tin mới được thêm vào, được gọi là "thời gian chờ đợi" Hình 3.1 minh họa một ví dụ từ một dự án thực tế.
Hình 3.1: Ví dụ về bản đổ luồng giá trị mô tả 1 quy trình sản suất phần mềm
Sau khi hiểu rõ quy trình làm việc hiện tại, bước tiếp theo là trực quan hóa nó Cách đơn giản nhất là sử dụng một tấm bảng, nhưng nếu bạn làm việc trong một nhóm phân tán, hãy cân nhắc sử dụng công cụ quản lý công việc trực tuyến Việc trực quan hóa công việc giúp chúng ta dễ dàng nhìn thấy và tương tác với nó mọi lúc, từ đó nâng cao hiệu quả làm việc.
Trong quy trình làm việc, thường có ít nhất hai giai đoạn chính: giai đoạn "Hoạt động", nơi công việc đang được thực hiện, và giai đoạn "Đệm", nơi công việc đang chờ đợi để được phát hành hoặc phát triển Tuy nhiên, có thể xuất hiện thêm nhiều giai đoạn khác trong quá trình này.
Bảng làm việc là công cụ quản lý trực quan hiệu quả, cho phép nhóm ghi lại những ý tưởng và nhiệm vụ cần thiết Ở phiên bản đầu tiên, bảng này có thể hiển thị tất cả công việc cần thực hiện để hoàn thành một chức năng, không chỉ giới hạn ở phát triển.
Hình 3.2: Quy trình làm việc đƣợc trực quan trên bảng
Mọi chức năng bắt đầu từ những ý tưởng chưa rõ ràng trong cột “Hàng đợi đầu vào” và kết thúc tại cột "Phát hành", nơi chức năng được thực hiện Nguyên tắc chính là "bạn chỉ có thể quản lý công việc mà bạn có thể thấy".
Trực quan công việc cho một số lợi ích, quan trọng nhất là:
Tập trung vào "tổng thể" giúp chúng ta nhận thức rõ ràng về cách công việc của mình ảnh hưởng đến người khác và ngược lại Việc hiểu mối liên hệ này không chỉ nâng cao hiệu quả công việc cá nhân mà còn tạo ra sự gắn kết trong tập thể.
- Minh bạch (Transparency) Mọi người đều biết chính xác những gì đang xảy ra và không có thông tin nào bị che dấu
Xác định các lãng phí là bước quan trọng giúp chúng ta đặt ra câu hỏi về lý do thực hiện công việc theo cách hiện tại Việc này không chỉ giúp nhận diện những điểm yếu trong quy trình mà còn mở ra cơ hội cải tiến hiệu suất và tiết kiệm nguồn lực.
3.3.2 Giới hạn công việc đang tiến hành
Khi chúng ta đã thành thạo việc trực quan hóa công việc, bước tiếp theo là giảm thiểu số lượng công việc đang thực hiện (WIP).
Để hiểu rõ tầm quan trọng của giới hạn WIP, chúng ta cần xem xét công thức thời gian quay vòng (Cycle time), được tính bằng cách chia công việc trong tiến trình (WIP) cho lưu lượng (Throughput) trong một đơn vị thời gian.
Cycle time là khoảng thời gian mà một hạng mục công việc di chuyển qua hệ thống, tức là thời gian từ khi một chức năng được chọn để thực hiện cho đến khi nó sẵn sàng sử dụng trong sản xuất Cách xác định "lựa chọn để thực hiện" phụ thuộc vào từng hoàn cảnh cụ thể của chúng ta.
WIP (Work In Progress) mô tả số lượng công việc đang được xử lý trong hệ thống, bao gồm các "story points", "user stories" và "backlog items" Số lượng này phụ thuộc vào hoàn cảnh, với một số người cho rằng nó bao gồm tất cả các hạng mục đang chờ xử lý, trong khi những người khác chỉ tính các hạng mục đã được chọn để thực hiện.
Lưu lượng trên đơn vị thời gian là số lượng công việc hoàn thành trung bình trong một khoảng thời gian nhất định Ví dụ, với một hệ thống có 100 câu chuyện người dùng và lưu lượng 2 câu chuyện mỗi tuần, cycle time trung bình sẽ là 50 tuần Để giảm cycle time xuống còn 25 tuần, có thể tăng lưu lượng lên 4 câu chuyện mỗi tuần hoặc giảm số lượng câu chuyện đang tiến hành xuống còn 50 Thông thường, việc giảm công việc đang làm sẽ hiệu quả hơn là tăng lưu lượng.
Giới hạn công việc hiện tại giúp giảm cycle time, từ đó tăng lưu lượng và giảm số lượng công việc mà chúng ta đã đầu tư thời gian và nguồn lực, mặc dù chưa tạo ra giá trị kinh doanh.
Kết chương
Các bước trên cung cấp hướng dẫn chi tiết về cách sử dụng hệ thống Kanban hiệu quả Tuy nhiên, còn nhiều yếu tố, lợi ích và tình huống khác cần được xem xét để nâng cao sự hiểu biết và nghiên cứu thêm.
Hệ thống Kanban giúp tổ chức giám sát và cải tiến quy trình làm việc, đặc biệt trong những tình huống bất ngờ mà nhóm chưa từng nghĩ đến Mục tiêu chính là tối ưu hóa dòng chảy công việc, nâng cao lợi nhuận và đảm bảo công việc được thực hiện nhanh chóng, chính xác với chi phí thấp nhất mà không ảnh hưởng đến chất lượng.
Cách tiếp cận hiệu quả nhất khi áp dụng phương pháp Kanban là bắt đầu ngay lập tức mà không cần phải thực hiện đầy đủ 5 nguyên lý cốt lõi ngay từ đầu Các nguyên lý này có thể được giới thiệu dần dần và điều chỉnh phù hợp với nhu cầu và văn hóa của tổ chức.
Chương 4 ÁP DỤNG PHƯƠNG PHÁP KABAN VÀO PHÁT
TRIỂN PHẦN MỀM QUẢN LÝ CON DẤU
Trong chương 3, chúng ta tìm hiểu các bước cần thiết để triển khai Kanban vào tổ chức Phần này sẽ thực hiện thử nghiệm phương pháp Kanban trong phát triển phần mềm quản lý con dấu.
Thử nghiệm đƣợc tiến hành trên phân mềm quản lý con dấu của Văn phòng Công an Tỉnh Tuyên Quang
Tổ chức phát triển phần mềm cho Công an tỉnh có cấu trúc gọn nhẹ, với trưởng phòng đứng đầu và trực tiếp quản lý các dự án Đội trưởng phụ trách công việc chung của nhóm phát triển gồm 3 thành viên, trong đó trưởng nhóm là đội phó Cả nhóm đảm nhận mọi công việc chuyên môn như phân tích, thiết kế, lập trình, kiểm thử, triển khai và bảo trì Lãnh đạo như trưởng phòng và đội trưởng có trách nhiệm về sản phẩm và hiểu rõ đặc thù ngành công an, đồng thời luôn ủng hộ việc áp dụng các cải tiến, tạo điều kiện thuận lợi cho việc thử nghiệm mô hình.
4.1 Quy trình làm việc hiện tại
Để triển khai phương pháp Kanban trong tổ chức, cần thực hiện từng bước một cách dần dần, bắt đầu bằng việc xác định quy trình hiện tại Quy trình phát triển phần mềm của chúng tôi được tổ chức theo cách cụ thể.
Giai đoạn 1: Khảo sát là bước đầu tiên trong quá trình làm việc, nơi chúng tôi tìm hiểu hệ thống làm việc của khách hàng và thu thập yêu cầu người dùng thông qua phỏng vấn trực tiếp với các chuyên gia Kết quả của giai đoạn này là tập hợp các yêu cầu cuối cùng từ người dùng Thời gian hoàn thành giai đoạn này thường mất khoảng 3 tuần.
Giai đoạn 2 của quy trình là lập kế hoạch, nơi công việc được phân bổ cho từng thành viên và thời gian hoàn thành được xác định rõ ràng Quá trình lập kế hoạch chỉ diễn ra trong vòng 2 giờ đồng hồ.
Giai đoạn 3: Phát triển là thời điểm mà các thành viên trong nhóm tập trung vào việc thực hiện số lượng công việc được giao Mục tiêu là hoàn thành phiên bản đầu tiên với đầy đủ các yêu cầu đặt ra Thời gian cho giai đoạn này thường kéo dài khoảng 4 tháng.
Giai đoạn 4: Sản phẩm đầu tiên sẽ được giới thiệu cho người dùng để thẩm định Nếu người dùng hài lòng, sản phẩm sẽ được đưa vào sử dụng Trong trường hợp họ yêu cầu sửa đổi hoặc bổ sung, quy trình sẽ quay lại giai đoạn phát triển để cập nhật sản phẩm.
Giai đoạn 5: Bảo trì là quá trình quan trọng khi sản phẩm đã được đưa vào sản xuất Nếu khách hàng có yêu cầu hoặc phản hồi về sản phẩm, chúng ta sẽ quay lại giai đoạn phát triển để thực hiện các cập nhật cần thiết nhằm cải thiện sản phẩm.
Giai đoạn 6: Kết thúc, khi khách hàng đã thỏa mãn với sản phẩm, sản phẩm cuối đƣợc chuyển giao cho khách hàng thì tiến hành kết thúc dự án
Hình 4.1 Biểu đồ trạng thái UML mô tả quy trình làm việc
Khi hiểu rõ quy trình làm việc hiện tại, chúng tôi đã trực quan hóa nó trên một bảng Do nhóm phát triển chỉ là một phần nhỏ trong văn phòng, không gian làm việc hạn chế và thiếu riêng tư, nên sau khi thảo luận, chúng tôi quyết định sử dụng công cụ quản lý điện tử Trong số nhiều công cụ có sẵn, chúng tôi chọn Kanban Tool để quản lý công việc Để sử dụng bảng Kanban trực tuyến, chúng tôi đã đăng ký tài khoản trên trang http://kanbantool.com/ và tạo bảng làm việc cho toàn bộ nhóm.
Phân bổ năng lực, hạn chế thời gian
Lấy yêu cầu người dùng
Thiết kế Xây dựng Kiểm thử
Kết thúc Bảo trì Đƣa ra sản phẩm
Hình 4.2 Trực quan quy trình làm việc hiện tại của nhóm làm việc
4.2 Phát triển phần mềm 4.2.1 Giai đoạn khảo sát
Công việc chính chúng tôi thường làm ở giai đoạn này là:
Khảo sát khách hàng là bước quan trọng để hiểu rõ về lĩnh vực hoạt động và nhu cầu của họ Qua việc gặp gỡ người đứng đầu và nghiên cứu tài liệu, chúng ta có thể có cái nhìn tổng quát về công việc của khách hàng Sau khi hoàn thành khảo sát, cần xác định các mảng cần lấy yêu cầu và làm việc với những người liên quan để cụ thể hóa các yêu cầu này.
Sau khi tiến hành khảo sát, bước tiếp theo là tổ chức cuộc gặp với những chuyên gia có kinh nghiệm và chuyên môn phù hợp để xác định các yêu cầu chung nhất.
Để chi tiết hoá các yêu cầu, chúng tôi sẽ tập hợp và phân loại các thông tin ban đầu sau khi phân tích sơ bộ Quá trình này thường được thực hiện thông qua việc gặp gỡ trực tiếp khách hàng và hỏi ý kiến từ những người có chuyên môn Công việc này có thể diễn ra nhiều lần nhằm thu thập một bộ phiếu yêu cầu đầy đủ và rõ ràng.
Phát triển phần mềm
Công việc chính chúng tôi thường làm ở giai đoạn này là:
Khảo sát khách hàng là bước quan trọng để hiểu rõ về lĩnh vực hoạt động của họ và gặp gỡ những người đứng đầu Quá trình này bao gồm việc nghiên cứu tài liệu và thảo luận, nhằm tạo ra cái nhìn tổng quan về công việc của khách hàng Sau khi hoàn thành khảo sát, cần xác định các mảng cần thu thập yêu cầu và xác định những người cần làm việc cùng để cụ thể hóa những yêu cầu đó.
Xác định các yêu cầu chung là bước quan trọng sau khi tiến hành khảo sát Để thực hiện điều này, cần tổ chức các cuộc gặp gỡ với những chuyên gia và người có nghiệp vụ phù hợp, nhằm thu thập và thống nhất các yêu cầu cơ bản nhất.
Để chi tiết hoá các yêu cầu, chúng tôi sẽ tập hợp và phân tích các thông tin ban đầu thành các đầu mục nhỏ hơn Quy trình này thường diễn ra thông qua việc gặp gỡ trực tiếp khách hàng và trao đổi với những người có chuyên môn Chúng tôi có thể thực hiện công việc này nhiều lần để đảm bảo thu thập được một tập hợp phiếu yêu cầu đầy đủ và rõ ràng.
Trong giai đoạn này, công việc chủ yếu là gặp gỡ khách hàng để thu thập thông tin ban đầu Chúng tôi tiến hành phân tích sơ bộ các thông tin này nhằm xác định các phần cần phát triển và những phần không cần thiết đưa vào hệ thống Buổi phân tích được thực hiện trước bảng làm việc của nhóm, nơi tất cả thông tin của khách hàng được trực quan hóa Mỗi công việc của khách hàng được ghi vào một thẻ, hiển thị đầy đủ các mô tả như tên công việc, vị trí người thực hiện và các bước thực hiện Sau khi thảo luận về từng thẻ, chúng tôi đưa ra quyết định cuối cùng: công việc nào được giữ lại để phát triển sẽ được chuyển sang phần đã hoàn thành, trong khi những công việc không cần thiết sẽ được loại bỏ Các thẻ được giữ lại sẽ được tái sử dụng cho các lần làm việc tiếp theo trong giai đoạn này.
Hình 4 3 Gắn thẻ công việc vào bảng
Sau khi xác định các yêu cầu chung cần duy trì để phát triển, bước tiếp theo là chi tiết hóa những yêu cầu đó Chúng tôi tiến hành làm việc với khách hàng để thu thập thông tin chi tiết cho từng yêu cầu.
Khi có thông tin chi tiết, chúng tôi bắt đầu phân rã các yêu cầu chung đã được tập hợp trong các thẻ trên bảng Trong bước chi tiết hóa yêu cầu, các thẻ được sử dụng lại sẽ được gắn vào phần đang tiến hành, ghi rõ tên người thực hiện, ngày thực hiện và ngày kết thúc Nhiệm vụ của từng thành viên trong nhóm là phân rã các yêu cầu có ghi tên mình trên thẻ.
Giai đoạn chi tiết hóa các yêu cầu đƣợc lặp nhiều lần để đƣa ra đƣợc các yêu cầu đầy đủ rõ ràng
Hình 4.4 Thông tin chi tiết một thẻ công việc
Chúng tôi chưa có kinh nghiệm làm việc với Kanban, vì vậy chưa thể giới hạn công việc đang làm (WIP) Chính sách nhóm hiện tại là sử dụng phương pháp phỏng vấn trực tiếp khách hàng để thu thập thông tin Sau hai tuần làm việc đầu tiên, chúng tôi đã thu thập được một tập hợp các yêu cầu từ người dùng.
Dưới đây là quy trình cấp phát và quản lý con dấu:
Các đơn vị tổ chức được cơ quan có thẩm quyền cho phép sử dụng con dấu cần nộp hồ sơ xin phép khắc con dấu mới Đối với các cơ quan đang sử dụng con dấu nhưng gặp phải các vấn đề như mất, hỏng, mòn, hoặc khi thông tin trên con dấu cần thay đổi, cũng phải nộp đơn xin cấp đôi hoặc cấp lại con dấu.
Sau khi nhận đơn xin khắc dấu, phòng quản lý hành chính sẽ tiến hành xem xét hồ sơ và kiểm tra thông tin Nếu thông tin trong đơn chính xác, giấy phép sẽ được cấp với thời hạn lưu hành là 3 ngày.
Giấy phép sẽ được giao cho tổ chức sử dụng con dấu để mang đến nơi khắc dấu Sau khi hoàn tất việc khắc dấu, nơi khắc dấu sẽ trả lại con dấu cùng giấy phép cho phòng quản lý hành chính.
- Sau khi có con dấu, phòng quản lý hành chính sẽ tiến hành lưu chiểu
Tổ chức khi sử dụng con dấu sẽ được phòng quản lý cấp giấy chứng nhận sử dụng con dấu, có hiệu lực trong 5 năm Sau thời gian này, tổ chức cần làm thủ tục gia hạn giấy chứng nhận Khi có giấy chứng nhận, con dấu chính thức sẽ có hiệu lực.
Nếu con dấu hoặc giấy chứng nhận bị mất trong quá trình sử dụng, bạn cần báo ngay cho phòng quản lý để được cấp giấy chứng nhận mới.
Phòng quản lý cần lập báo cáo hàng tháng và hàng quý về tình hình quản lý con dấu, bao gồm trạng thái của con dấu và giấy chứng nhận sử dụng con dấu.
Các yêu cầu người dùng bao gồm 26 yêu cầu sau:
- Nhập thông tin tổ chức sử dụng con dấu
- Nhập thông tin giấy phép khắc dấu
- Nhập giấy chứng nhận sử dụng con dấu
- Cập nhật tình trạng con dấu
- Cập nhật tình trạng giấy chứng nhận sử dụng con dấu
- Cập nhật thông tin tổ chức có sự thay đổi thông tin
- Sửa thông tin tổ chức
- Sửa thông tin giấy phép khác dấu
- Sửa cập nhật tình trạng con dấu
- Sửa cập nhật tình trạng giấy chứng nhận sử dụng con dấu
- Tìm kiếm in giấy phép khắc dấu
- Tìm kiếm in giấy chứng nhận sử dụng
- Tìm kiếm in danh sách tổ chức sử dụng con dấu
- Báo cáo công tác quản lý con dấu
- Báo cáo tình trạng con dấu
- Báo cáo tình trạng giấy chứng nhận sử dụng
- Nhập bảng mã cấp 1 (Bảng mã tỉnh, nhóm tổ chức sử dụng con dấu )
- Nhập bảng mã cấp 2 (Bảng mã huyện, loai tổ chức sử dụng con dấu )
- Nhập bảng mã cấp 3 (Bảng mã xã )
4.2.2 Giai đoạn lập kế hoạch
Trước đây, giai đoạn lập kế hoạch của chúng tôi chỉ gói gọn trong 2h làm việc bao gồm các công việc nhƣ:
- Phân công nhiệm vụ cho mọi người trong nhóm
- Giới hạn chung thời gian hoàn thành nhiệm vụ cho mỗi người
Một người có thể đảm nhận nhiều yêu cầu, với trung bình 9 yêu cầu được hoàn thành từ tổng số 26 yêu cầu, bao gồm các công đoạn như phân tích, thiết kế, mã hóa và kiểm thử đơn vị Phiên bản đầu tiên của sản phẩm thường đáp ứng đầy đủ tất cả các yêu cầu, dẫn đến thời gian phát triển kéo dài hơn 4 tháng.
Khi áp dụng phương pháp Kanban vào quy trình làm việc, chúng tôi đã quyết định thực hiện bước 6: xác định ưu tiên và bước 7: thỏa thuận mức độ dịch vụ với khách hàng Hiện tại, công việc của chúng tôi đang tập trung vào giai đoạn này.
- Thỏa thuận ngày đƣa ra phiên bản bao gồm các chức năng quan trong đầu tiên cho khách hàng
- Thiết lập mức độ ƣu tiên cho các yêu cầu và thống nhất nội dung của phiên bản đầu tiên
- Ứớc lƣợng công sức cần để giải quyết các yêu cầu, sau đó thống nhất lịch trình làm việc
Kết chương
Trong chương này, tôi đã trình bày quá trình áp dụng phương pháp Kanban vào sản xuất phần mềm quản lý con dấu Kết quả cho thấy chúng tôi hài lòng với thời gian sản xuất Tuy nhiên, do sản phẩm mới được đưa vào sử dụng chưa lâu, chúng tôi vẫn chưa nhận được phản hồi từ khách hàng về chất lượng Để khẳng định hiệu quả của phương pháp Kanban, cần thực hiện nhiều thử nghiệm hơn trong các dự án tương lai.