Làm thế nào để bạn theo dõi một tài liệu yêu cầu về một nhóm nhanh nhẹn?


22

Tôi hiểu rằng Câu chuyện người dùng thống trị thế giới nhanh, nhưng những cổ vật này được lưu trữ như thế nào, để các nhà phát triển mới tham gia nhóm có thể đạt được yêu cầu?

Điều gì xảy ra nếu Câu chuyện người dùng thay đổi sau đó, nó được cập nhật và lưu giữ như một vật phẩm như thế nào? Tôi đã thấy nhiều đội chỉ mở một báo cáo yêu cầu vé / tính năng mới thay vì theo dõi câu chuyện gốc.


1
Tài liệu tốt nhất là mã làm việc
Robert Wagner

Câu trả lời:


11

Trước hết, hầu như không có gì trong câu trả lời của @ DXM phù hợp với trải nghiệm của tôi với Agile và đặc biệt là không có Scrum.

Các Agile Manifesto khẳng định rằng trong khi tài liệu toàn diện là có giá trị, phần mềm làm việc có giá trị hơn. Vì vậy, tài liệu chắc chắn không phải là một điều xấu, nhưng nó thực sự cần được phục vụ để tạo ra phần mềm làm việc.

Các cá nhân và tương tác qua các quy trình và công cụ

Phần mềm làm việc trên tài liệu toàn diện

Hợp tác khách hàng qua đàm phán hợp đồng

Đáp ứng để thay đổi theo kế hoạch

Đó là, trong khi có giá trị trong các mục ở bên phải, chúng tôi đánh giá các mục ở bên trái nhiều hơn.

Đóng đinh từng chi tiết trước khi bắt đầu viết mã đã được chứng minh lãng phí hết lần này đến lần khác, vì vậy tài liệu nói chung được xử lý theo cách JIT (chỉ trong thời gian). Đó là, bạn ghi lại những gì bạn thực sự sẽ viết mã.

Một trong những cách phổ biến để thực hiện Scrum là sử dụng Câu chuyện của người dùng, được Chủ sở hữu sản phẩm duy trì và lưu trong Product Backlog. Product Backlog là một danh sách cấp cao khá cao về tất cả những thứ mà một giải pháp cần phải làm, và Câu chuyện người dùng nói chung là một cách có kích thước độc đáo để mô tả từng điều trong danh sách. Câu chuyện của người dùng không bắt buộc, nhưng dường như chúng là một cách tốt để không lạm dụng các chi tiết và truyền cảm hứng cho sự hợp tác thay thế.

Vì vậy, dù sao đi nữa, khi một câu chuyện được thực hiện - nhóm đã tạo, thử nghiệm và triển khai một cái gì đó đáp ứng các tiêu chí chấp nhận, câu chuyện không bị CHẤP NHẬN, nó chỉ đơn giản được đánh dấu được thực hiện trên hồ sơ tồn đọng - vì vậy, tồn đọng có một số dấu hiệu về những gì đã được thực hiện trong mỗi lần chạy nước rút - những câu chuyện và những điểm liên quan đến chúng. Đây là những gì cho phép bạn tính toán vận tốc, và là tài liệu có giá trị trong chính nó.

Tất cả những gì đã nói, Câu chuyện người dùng có thể là tất cả các tài liệu cần thiết để hiểu một yêu cầu, nhưng nhiều khả năng, đó là thứ để tạo ra một cuộc trò chuyện giữa khách hàng và nhóm phát triển. Như vậy, có bất kỳ số lượng những điều bạn có thể làm xung quanh cuộc trò chuyện đó. Nếu đó là một điều trực tiếp, như thường lệ, nhà phân tích / nhà phát triển có thể (và có thể, tùy thuộc vào tổ chức của bạn, nên) viết ra bất kỳ quyết định nào được đưa ra và lưu nó ở đâu đó, chẳng hạn như Wiki hoặc kho tài liệu. Nếu đó là một cuộc trò chuyện email, bạn có thể lưu email. Nếu đó là phiên bảng trắng, hãy chụp ảnh bảng bằng điện thoại di động của bạn và lưu nó. Vấn đề là, những điều này là những gì đang giúp bạn hoàn thành mã và có thể giúp bạn sau này nếu bạn cần tìm hiểu làm thế nào hoặc tại sao bạn lại làm như vậy.

Một phương pháp khác để nắm bắt các yêu cầu là ngay lập tức nhúng chúng vào các trường hợp thử nghiệm (mà tôi tin là những gì DXM đang nhận được). Điều này có thể thực sự hiệu quả, trong đó bạn cần phải kiểm tra cho từng yêu cầu nào. Trong trường hợp này, bạn có thể lưu trữ hiệu quả các yêu cầu của mình trong công cụ kiểm tra.

Nếu một câu chuyện được hoàn thành (và được chấp nhận) và sau đó người dùng thay đổi nhu cầu của mình, thì có lẽ bạn cần phải tạo một câu chuyện mới. Nếu bạn sử dụng wiki cho tài liệu của mình, bạn có thể liên kết câu chuyện mới trở lại bản gốc và tương tự liên kết câu chuyện gốc đó với nội dung mới để ai đó nhìn vào nó biết rằng mọi thứ đã thay đổi. Đó là điều tốt đẹp về wiki - thật dễ dàng và khá dễ dàng để liên kết các công cụ. Nếu bạn đang thực hiện phương pháp tiếp cận thử nghiệm, bạn sẽ cập nhật trường hợp thử nghiệm để đối phó với thay đổi hoặc tạo trường hợp thử nghiệm mới cho câu chuyện mới nếu mới và cũ không loại trừ lẫn nhau.

Cuối cùng, nó phụ thuộc vào nhu cầu của bạn là gì. Nếu điều chính là làm cho mọi người tăng tốc nhanh chóng, có lẽ nên cho ai đó viết một tài liệu trên tàu để giúp họ. Vì vậy, có ai đó làm điều đó. Như tôi đã đề cập, Wiki là một công cụ tuyệt vời để giữ thứ này, vì vậy bạn có thể xem xét các giải pháp của Atlassian có thể tích hợp Wiki Confluence với Jira và Greenhopper để theo dõi các câu chuyện / nhiệm vụ / khiếm khuyết của bạn và nói chung là quản lý dự án của bạn. Ngoài ra còn có rất nhiều công cụ khác để lựa chọn.


Nó sẽ hữu ích để đặt trích dẫn chính xác trong câu trả lời của bạn.
EL Yusubov

@ElYusubov Báo giá chính xác nào? Tuyên ngôn Agile?
Matthew Flynn

@Mathew, tôi đã thêm các trích dẫn đã được đề cập.
EL Yusubov

@MatthewFlynn: hầu hết thông tin của tôi không đến từ trải nghiệm cá nhân, mà là từ việc đọc cả đống sách và blog về phát triển nhanh, nếu bạn muốn, tôi có thể đưa cho bạn danh sách, vì vậy bạn có thể đọc tất cả có thể so sánh các ghi chú. Kinh nghiệm cá nhân của tôi đã được scrum là tốt. Trong công ty trước đây của tôi, chúng tôi đã thực hiện 5 bản phát hành bằng scrum và 4 trong số đó không hoạt động tốt. Điều nguy hiểm với một công ty chỉ đơn giản là "làm scrum" là phần lớn những nơi cuối cùng làm "scrum-but" hoặc "sùng bái hàng hóa" nhanh nhẹn. Nhóm của chúng tôi chắc chắn đã làm điều đó trong một thời gian khá lâu. Và vâng, chúng tôi đã tồn đọng ...
DXM

1
@DXM - Tôi cũng đã có kết quả hỗn hợp với Scrum, nhưng nó chưa bao giờ tệ hơn SDLC truyền thống và một vài lần hoạt động xuất sắc.
Matthew Flynn

8

[cập nhật # 1] Như @MatthewFlynn đã chỉ ra, trải nghiệm của anh ấy với sự nhanh nhẹn cũng như nhiều người khác (bao gồm cả của tôi) rất khác với câu trả lời mà tôi đang cung cấp ở đây. Câu trả lời ở đây dựa trên những quan sát của tôi về những gì đã làm và không hoạt động trong nhóm của riêng tôi trong quá khứ, kết hợp với nhiều sách và blog mà tôi đọc về chủ đề này ...

hầu hết các nỗ lực hướng tới phát triển nhanh được đặc biệt nhắm mục tiêu loại bỏ các tài liệu yêu cầu.

Agile cố gắng loại bỏ hầu hết các tài liệu và tôi đồng ý với ý tưởng của họ nhưng trong tất cả các tài liệu, các yêu cầu cho đến nay là con mắt lớn nhất được vẽ lên chúng. Lý do cho điều đó (IMO) là các tài liệu yêu cầu nằm xa nhất với mã làm việc thực tế và của tất cả các tài liệu, điều đó làm cho chúng

  • Chính xác nhất
  • khó bảo trì nhất
  • ít hữu dụng nhất

Để hướng dẫn nhóm phát triển những gì nên phát triển tiếp theo, Agile thay thế các tài liệu yêu cầu bằng một hồ sơ tồn đọng để xác định những gì bạn nên làm với các mục ưu tiên cao nhất và tiếp theo với tiếng nổ lớn nhất (cả hiện tại và tương lai) thường được đặt lên hàng đầu trong danh sách đó

Tuy nhiên, không nên nhầm lẫn một hồ sơ tồn đọng với tài liệu yêu cầu:

  • Trong một hồ sơ tồn đọng, chỉ có N số câu chuyện nên có chi tiết được điền vào. Càng ra một câu chuyện, càng ít chi tiết bạn nên đặt vào đó (tức là đừng lãng phí thời gian của bạn để cố gắng xác định điều gì đó sẽ không xảy ra trong nửa năm ).
  • Vượt quá một điểm nhất định, các mục "yêu cầu" thậm chí không được đặt trong một hồ sơ tồn đọng nếu chúng nằm ngoài hơn 2 chu kỳ phát hành (còn gọi là gia tăng có thể chuyển đổi tiềm năng (PSI)). Ngay cả khi bạn biết yêu cầu là quan trọng và phải hoàn thành vào một lúc nào đó, hãy chống lại sự cám dỗ của việc thêm nó vào hồ sơ tồn đọng. Nếu nó thực sự quan trọng, ai đó sẽ nhớ nó trong phiên bản tiếp theo. Nếu không ai nhớ nó, rất có thể đó là vì nó không quan trọng.

Khi một câu chuyện được hoàn thành, câu chuyện đó sẽ bị xóa khỏi hồ sơ tồn đọng và bị HẤP DẪN (1) . Một lần nữa, những câu chuyện không phải là yêu cầu. Họ CHỈ nói với nhóm những gì sẽ làm việc tiếp theo; chúng không dành cho ghi chép lịch sử.

Tuy nhiên, trong quy trình nhanh nhẹn thích hợp, bất cứ khi nào bạn giao việc, một phần của phân phối đó phải là các bài kiểm tra đơn vị / tích hợp / chấp nhận. Những xét nghiệm này rất có giá trị vì chúng có nhiều mục đích. Tôi sẽ không vào danh sách đầy đủ, nhưng một trong những mục đích đó là tài liệu cho phần mềm sản xuất hiện tại của bạn.

Một tài liệu kiểm tra làm thế nào phần mềm nên hoạt động với một bộ đầu vào và điều kiện tiên quyết nhất định. Nó cũng ghi lại cách sử dụng API công khai (và nội bộ) mã của bạn. Nó cũng phục vụ như một mạng lưới an toàn để khi một nhà phát triển mới gia nhập một nhóm và vô tình phá vỡ một cái gì đó, lỗi đó sẽ được phát hiện ngay khi được kiểm tra.

Quá trình Agile rõ ràng thúc đẩy việc tận dụng các thử nghiệm đơn vị tự động càng nhiều càng tốt nhưng tất cả chúng ta đều biết rằng không phải mọi thứ đều có thể được tự động hóa. Bộ phần mềm của bạn sẽ luôn có một bộ các bài kiểm tra phải được thực hiện thủ công. Tuy nhiên, a) các nhà phát triển của bạn nên tích cực làm việc để tự động hóa càng nhiều càng khả thi và b) bộ kiểm tra thủ công nên được nhóm QA của bạn thực hiện thường xuyên để bất kỳ sự phá vỡ chức năng nào được phát hiện càng sớm càng tốt.


(1) - Vì tôi đã nhận được một số phản hồi cho phần "cười thầm". Trong 5 năm kể từ khi chuyển sang nhanh nhẹn, nhóm của tôi không bao giờ ném đi một câu chuyện duy nhất, thậm chí 30% những câu chuyện đã được lên lịch, sau đó hoãn lại và sau đó bị lãng quên. Ông chủ của tôi muốn giữ chúng "để tham khảo" và chưa ai từng xem bất kỳ câu chuyện nào trong số đó.

Mọi người thường gắn liền với dữ liệu của họ và tôi biết rằng thật khó để hiểu được một thứ gì đó khi bạn đã có nó, nhưng việc giữ hàng tồn kho (dù là vật lý hay bầu cử) trong tay không phải là miễn phí và tôi càng nghĩ về nó, tôi càng đồng ý với "chucking". Đây là từ "Yêu cầu phần mềm linh hoạt: Thực hành yêu cầu tinh gọn cho các nhóm, chương trình và doanh nghiệp" (tr.190) - "Câu chuyện của người dùng có thể được loại bỏ một cách an toàn sau khi thực hiện. Điều đó giúp họ nhẹ nhàng, giữ cho họ thân thiện với nhóm và thúc đẩy đàm phán, nhưng các bài kiểm tra chấp nhận vẫn tồn tại trong suốt vòng đời của ứng dụng ... "


+1 để chỉ ra sự khác biệt giữa các yêu cầu và câu chuyện của người dùng đối với OP.
Frank

Tôi chỉ muốn nói thêm rằng đội của tôi và các đội trước chưa có câu chuyện "cười khúc khích". Chúng tôi giữ chúng để tham khảo.
Simon Whitehead

@SimonWhitehead: vì bạn không phải là người duy nhất đưa ra nhận xét đó, tôi đã cập nhật câu trả lời của mình. Đội của tôi không bao giờ ném đi một câu chuyện duy nhất. Vì vậy, bạn có thường xuyên phải quay lại 2 năm trước và đào những câu chuyện cũ đó để tham khảo không? Và loại thông tin nào bạn đã nhận ra từ họ. Chi tiết câu chuyện của bạn như thế nào so với những gì Bob Martin ( Books.google.com/ ) mô tả (đặc biệt là đoạn thứ 3 trong phần Câu chuyện của người dùng? Chỉ tò mò, câu chuyện của bạn có nói lên điểm hay bạn thực sự nắm bắt được TẤT CẢ yêu cầu? ...
DXM

... Nhóm của tôi luôn giữ mọi thứ nhưng chúng tôi thậm chí không có bất kỳ chi tiết nào trong các câu chuyện của mình, vì vậy tôi vẫn không hiểu những câu chuyện đó được cung cấp giá trị gì, nhưng cũng như nhiều người khác, ông chủ của tôi rất kiên quyết về việc không ném ra bất cứ điều gì.
DXM

Các bài kiểm tra chấp nhận mà bạn nói đến, những âm thanh này với tôi giống như các trường hợp kiểm tra được ghi lại? Tôi có đúng không, hay chúng là những bài kiểm tra thực tế?
Didier A.

1

Điều gì xảy ra nếu Câu chuyện người dùng thay đổi sau đó, nó được cập nhật và lưu giữ như một vật phẩm như thế nào? Tôi đã thấy nhiều đội chỉ mở một báo cáo yêu cầu vé / tính năng mới thay vì theo dõi câu chuyện gốc.

Việc quản lý bất kỳ tài liệu nào cũng có thể khó khăn bất kể bạn đang sử dụng các câu chuyện nhanh hay tài liệu lớn, và để giảm bớt gánh nặng, tài liệu nên được tối thiểu và cập nhật dần dần để phù hợp với những nỗ lực trong các bài kiểm tra và thực hiện. Tuy nhiên, như OP đã ám chỉ, chỉ đơn giản là cập nhật các rủi ro tài liệu làm mất lịch sử về cách phần mềm đã phát triển theo thời gian.

Điều này thực sự quan trọng? Đôi khi nó có thể. Đối với hầu hết các phần bạn chỉ muốn xem các câu chuyện / UML / bất cứ điều gì cùng với các bài kiểm tra và bản thân mã ở thời điểm hiện tại, tuy nhiên khi các câu hỏi được đặt ra là tại sao một tính năng được triển khai theo một cách cụ thể, nó thường có thể là hữu ích để nhìn vào lịch sử để xem làm thế nào tính năng đã thay đổi theo thời gian, để vẽ một bức tranh rõ ràng hơn là tại sao lựa chọn thực hiện X đã được lựa chọn thay vì lựa chọn Y .

Có một số cách mà bạn có thể theo dõi các đồ tạo tác như vậy. Một trong những lựa chọn tốt hơn có thể là giữ các câu chuyện của bạn trong một công cụ cho phép bạn có phiên bản văn bản câu chuyện của mình theo cách tương tự như phiên bản mã nguồn của bạn. Wiki có xu hướng rất tốt về điều này, và một số công cụ quản lý dự án / vấn đề cũng vậy, chẳng hạn như Trac hoặc Redminenơi lưu giữ lịch sử các thay đổi đối với các vấn đề, cũng như các trang wiki trong các hệ thống này. Điều này có thể được thực hiện xa hơn một chút, để cải thiện khả năng theo dõi các thay đổi từ vấn đề này sang tính năng khác, bằng cách đảm bảo rằng các câu chuyện hoặc vấn đề mới được liên kết theo một cách nào đó với các vấn đề và câu chuyện liên quan cũ hơn. Điều này có thể đơn giản như việc thêm một id vấn đề / câu chuyện cũ hơn vào văn bản của một vấn đề / câu chuyện mới hơn, nhưng có thể được cải thiện đáng kể bằng cách đưa bất kỳ vấn đề hoặc id câu chuyện nào vào bình luận khi bạn thay đổi hệ thống kiểm soát phiên bản của mình . Phương pháp này có giá trị lớn nhất tuy nhiên nếu các cam kết của bạn thường xuyên và bị giới hạn trong một câu chuyện hoặc một vấn đề.

Tất nhiên, khó khăn lớn nhất là cách tiếp cận này đòi hỏi sự chú ý cẩn thận và sự cam kết của mọi thành viên trong nhóm để thống nhất và giữ cho các cam kết của họ nhỏ và thường xuyên, và cho những người quản lý các câu chuyện và / hoặc hệ thống theo dõi vấn đề / dự án để giữ trên đầu trang của các tạo phẩm cung cấp các liên kết giữa trạng thái hiện tại của việc triển khai của bạn và tất cả các thay đổi đã xảy ra trước đó.


1

Nó đã được nói trước đây nhưng tôi nghĩ ý chính của nó là:

  • yêu cầu có thể bao gồm nhiều khía cạnh và thường dẫn đến nhiều hơn một câu chuyện.

  • một câu chuyện tổ chức một nhóm làm việc trong các khối đủ nhỏ để phù hợp với ranh giới thời gian của một lần chạy nước rút.

  • thường có nhiều chi tiết cần được xác định để một số chức năng cụ thể hoạt động chính xác. Đây là khi nó bắt đầu trở nên hữu ích để giữ các định nghĩa này trong một tài liệu yêu cầu riêng biệt - để rõ ràng, hiểu biết chung và tham khảo sau này.

Hãy xem xét ví dụ về cửa hàng thú cưng trực tuyến huyền thoại:

  • Câu chuyện có thể nói "Là người dùng, tôi muốn xem VAT được in trên biên lai của tôi,". Bây giờ, việc tính thuế VAT (thuế giá trị gia tăng) có thể là một vấn đề phức tạp và có thể cần nhiều công việc hơn câu chuyện này cho thấy.
  • Có thể có một câu chuyện bổ sung yêu cầu thực hiện tính toán VAT ( nhân tổng số tiền bán hàng với thuế suất VAT ), nhưng có thể không bao gồm tất cả các biến thể của tính toán đó.
  • Đầu tiên, nhóm sẽ tập trung vào việc cung cấp mô-đun cơ bản, nói rằng lấy danh sách hàng hóa và giá bán của chúng và trả lại số tiền thuế VAT. Đó là điều mà một đội có thể hoàn thành trong khoảng thời gian chạy nước rút.
  • Có khả năng sẽ còn nhiều câu chuyện nữa để đề cập đến tất cả các trường hợp có thể tính thuế VAT.
  • Để giữ cho nhiều quy tắc tính thuế VAT khác nhau hiển thị trên và ngoài các lần chạy nước rút, việc giữ một tài liệu yêu cầu riêng biệt liệt kê tất cả các cách khác nhau để tính thuế VAT. Tài liệu này có thể phát triển theo thời gian. Trên thực tế, việc thêm một phần mới vào đó có thể là một phần nhiệm vụ cần hoàn thành.

Có vẻ như bạn phù hợp với @Matthew Flynn trong đó tài liệu Yêu cầu được viết cùng với sự phát triển và phục vụ nhiều hơn như một tài liệu về hoạt động thực tế của mã, sau đó là danh sách các yêu cầu trước.
Didier A.

"... được viết cùng với sự phát triển" - điều đó với tôi nghe có vẻ quá dễ thương. Để làm rõ, các yêu cầu không phải là sản phẩm phụ, chúng là điều kiện tiên quyết để thực hiện hiệu quả. Tuy nhiên, trong một dự án nhanh, các yêu cầu chỉ được viết ở mức độ cần thiết để thực hiện vòng phát triển tiếp theo, và không nhiều hơn thế. Hình thức để làm điều đó là một câu chuyện người dùng mà theo định nghĩa đã giới hạn phạm vi nên thời gian cần thiết để thực hiện phù hợp trong một lần chạy nước rút. Tương phản điều này với các dự án thác nước, trong đó các yêu cầu được chỉ định đến từng chi tiết trước khi tiến hành giai đoạn tiếp theo.
miraculixx

Không rõ vì bạn nói rằng các yêu cầu không giống với câu chuyện của người dùng mà tôi đồng ý. Tôi nghĩ về các yêu cầu như các chi tiết chính xác của logic kinh doanh, giống như cách thức, trong khi câu chuyện của người dùng là trạng thái mong muốn, giống như những gì. Vì vậy, tôi không chắc chắn tôi hiểu bình luận của bạn? Có vẻ như trong ví dụ của bạn, bạn sẽ nắm bắt các yêu cầu VAT khác nhau khi chúng được phân phối, từng cái một, trái ngược với tất cả cùng một lúc.
Didier A.

IMHO nếu một yêu cầu, như câu chuyện của người dùng, không chỉ định trạng thái mong muốn, tôi không chắc nó bắt đầu tốt như thế nào. Thật vậy, trong ví dụ VAT, sẽ có một vài câu chuyện người dùng được chỉ định liên tục và được phân phối trong các lần chạy nước rút tiếp theo. Để chắc chắn, không có phương pháp nhanh nào ngăn một nhóm ghi lại toàn bộ bộ quy tắc tính thuế VAT ở một nơi, nó chỉ thúc đẩy ý tưởng rằng không có thời gian trả trước để viết lên các yêu cầu đầy đủ chi tiết, đầy đủ cho đơn giản Lý do là nhóm dev sẽ không thể thực hiện tất cả cùng một lúc.
miraculixx

Tôi vẫn còn bối rối, điểm đầu tiên trong câu trả lời của bạn là câu chuyện của người dùng không giống như một yêu cầu. Bạn có nói rằng bạn sẽ có một tài liệu khác được viết vào đầu mỗi lần chạy nước rút mà yêu cầu nắm bắt cho lần chạy nước rút sắp tới không?
Didier A.

0

Bạn có thể sử dụng freemind để thu thập danh sách các tính năng. Làm thế nào nó được thực hiện, hãy xem hướng dẫn này (một nơi nào đó ở giữa).

Khi bạn có danh sách các tính năng, bạn sẽ viết các câu chuyện của người dùng. Điều này có thể được thực hiện bằng cách sử dụng một tệp văn bản đơn giản, hoặc tài liệu từ hoặc một cái gì đó phức tạp như một công cụ quản lý nhanh .

Khi bạn kết thúc với câu chuyện của người dùng, chúng được ưu tiên. Sau đó, từ những câu chuyện của người dùng, mọi người tạo ra các nhiệm vụ, mọi người nhận các nhiệm vụ và thực hiện nó trong mã.

Tất cả điều này có thể được thấy cách dự án ac # được quản lý từ đầu vào mùa thu của loạt diễn viên video nhanh nhẹn .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.