Là thiếu các yêu cầu chức năng nhanh nhẹn?


10

Ngày nay ai cũng muốn nhanh nhẹn. Trong mỗi đội tôi làm việc cùng, hình dạng nhanh nhẹn là khác nhau. Một số điều là phổ biến - như đứng lên hàng ngày hoặc lập kế hoạch, nhưng các phần khác thay đổi đáng kể.

Trong đội hiện tại của tôi có một chi tiết mà tôi thấy đáng lo ngại. Đó là thiếu các yêu cầu chức năng. Không chỉ không có hình thức kỳ vọng bằng văn bản mà còn trong các nhiệm vụ, nó khá mơ hồ xác định những gì cần phải làm.

Mục tiêu của dự án là viết lại hệ thống cũ bằng các công nghệ mới. Hệ thống cũ không có bất kỳ tài liệu hợp lý là tốt. Để chắc chắn đến ngày một không tồn tại. Mô tả các yêu cầu của chủ doanh nghiệp là - hãy thực hiện nó theo cách thực hiện mới giống như cũ. Có vẻ hợp lý nhưng nó không phải là. Hệ thống cũ là loại mã spaghetti và trích xuất các yêu cầu kinh doanh từ nó là tốn kém. Có vẻ như tình hình ảnh hưởng đến việc lập kế hoạch theo cách tiêu cực. Để chắc chắn rằng nó dễ bị lỗi và lỗi trong triển khai mới (bỏ qua một số chi tiết).

Vì vậy, tôi đang suy nghĩ - có thực sự nhanh nhẹn khi không có yêu cầu kinh doanh trong trường hợp viết lại hệ thống cũ?


1
Hệ thống cũ sẽ được sử dụng cho đến khi hệ thống mới thay thế nó, hoặc cả hai hệ thống sẽ được sử dụng đồng thời, với hệ thống mới dần thay thế các chức năng trong hệ thống cũ?
Greg Burghardt

1
@GregBurghardt tùy chọn thứ hai
Landeeyo

1
Vâng, nhóm của bạn dự định làm gì? Bạn sẽ tập hợp họ, nói chuyện với những người kinh doanh, vv?
Filip Milovanović

2
Ngoài ra, hãy nhớ rằng bạn chỉ có thể sửa hai trong ba ràng buộc: thời gian, nỗ lực và phạm vi. Nếu thời gian là cố định (như bạn đã nói trong nhận xét của bạn) và nỗ lực là cố định hoặc ít nhất là giới hạn (ông chủ của bạn có sẵn sàng thuê nhà phát triển vô hạn không?), Thì phạm vi không được cố định và các bạn nên làm những gì bạn có thể trong thời gian cố định mà bạn có (đây là những gì Scrum làm với Sprints) hoặc bạn nên chấp nhận thất bại và tiếp tục (có thể đến một công ty khác, nơi các ông chủ hiểu về phát triển phần mềm hoặc để lại cho những người làm)
Blueriver 11/11/19

3
Tôi thực sự sẽ gọi đó là mong manh .
Mason Wheeler

Câu trả lời:


21

Cho dù thiếu hay không yêu cầu chức năng là nhanh nhẹn, đó là một công thức cho thảm họa. Bạn không thể xây dựng lại một hệ thống khi bạn không biết hệ thống đó hoạt động như thế nào.

Bạn cần nói với chủ doanh nghiệp rằng bạn không biết hệ thống cũ hoạt động như thế nào.

Lựa chọn tốt nhất của bạn là làm việc với chủ doanh nghiệp hoặc một vài người dùng có kinh nghiệm để hiểu các quy trình kinh doanh đang chơi và phát triển các bài kiểm tra chấp nhận của riêng bạn. Nếu bạn có thể làm việc với một số người dùng cuối, bạn có thể nhận được nhiều phản hồi hơn về cách hệ thống cũ hoạt động.

Không, bạn sẽ cần thực hiện một số thử nghiệm thăm dò trong môi trường không sản xuất để thu thập các yêu cầu của riêng bạn. Nhiều khi chủ doanh nghiệp nói "làm cho nó hoạt động như cũ", họ bị hạn chế về thời gian và không thể giúp bạn như một chủ doanh nghiệp nên làm. Bạn cần có chuyên môn của một số người dùng dày dạn hoặc toàn bộ thử nghiệm thủ công từ phía bạn để hiểu hệ thống cũ hoạt động như thế nào.

Thông báo cho chủ doanh nghiệp rằng việc thiếu các yêu cầu và hiểu biết về hệ thống cũ sẽ làm tăng đáng kể thời gian cần thiết để xây dựng lại nó - khoảng gấp ba lần thời gian hoặc cao hơn. Đối mặt với dòng thời gian và chi phí tăng lên, chủ doanh nghiệp sẽ cung cấp cho bạn chuyên môn cần thiết để thu thập các yêu cầu nhanh hơn hoặc quyết định viết lại là không khả thi về mặt kinh tế tại thời điểm này.

Bạn sẽ nhận được một trong những điều sau đây:

  • Yêu cầu đúng và chu kỳ phát triển nhanh hơn
  • Thời gian để thu thập các yêu cầu và xây dựng lại phần mềm
  • Một dự án mới sẽ không trở thành một vết đen trong sự nghiệp của bạn

Câu trả lời tuyệt vời, Greg. Rất hợp lý, quan điểm chuyên nghiệp. Thật không may, có một số chi tiết làm cho tình hình thậm chí còn tồi tệ hơn - thời hạn cho một phần của hệ thống được cố định do các yêu cầu bên ngoài. Dù sao, như một hướng dẫn chung, đó là lời khuyên tuyệt vời.
Landeeyo

6
@Landeeyo: Đó là một điểm khó khăn để có được, có thời hạn cuối cùng. Đó là lý do tại sao việc giao tiếp thiếu các yêu cầu quan trọng hơn sẽ khiến bạn bỏ lỡ thời hạn. Rủi ro bỏ lỡ thời hạn có thể là nhiên liệu cần thiết để giúp bạn có được những gì nhóm của bạn cần.
Greg Burghardt


Câu chuyện này đang trở nên kỳ lạ hơn, giống như một nửa của nó được tạo thành. Thời hạn tiền tố không tồn tại trong phát triển phần mềm. Hạn chót là tại thời điểm mà người tài trợ của dự án trở nên thiếu kiên nhẫn và mất niềm tin vào một kết quả tốt. Đó là khi phích cắm được kéo và thời điểm đó không bao giờ được biết trước. Nhanh nhẹn có nghĩa là bạn sẽ đảm bảo thời điểm này đến sớm hơn là muộn hơn, tiết kiệm cho nhà tài chính rất nhiều tiền, được gọi là thất bại nhanh chóng.
Martin Maat

16

Agile không thay đổi nhu cầu về các yêu cầu chức năng, nhưng nó thường thay đổi cách bạn thu thập chúng. Cách không nhanh nhẹn là để ai đó trải qua một quá trình dài sau đó cung cấp cho bạn một số loại tài liệu có chứa tất cả các yêu cầu cho hệ thống.

Cách nhanh nhẹn để thu thập các yêu cầu là làm việc cùng nhau để xác định các yêu cầu cho một mức tăng nhỏ của hệ thống, xây dựng nó, sau đó nhận phản hồi và thực hiện bước tăng tiếp theo. Trong trường hợp bạn gặp khó khăn khi khiến các chủ doanh nghiệp bắt đầu quy trình, tôi sẽ bắt đầu bằng cách dành nửa ngày để khám phá phần hệ thống cũ mà bạn muốn làm việc tiếp theo và tạo một danh sách các câu hỏi về các yêu cầu.

Sau đó ngồi xuống với chủ doanh nghiệp của bạn và hỏi họ những câu hỏi. Một số câu hỏi sẽ dễ dàng cho họ trả lời, một số dễ dàng hơn để bạn trả lời bằng cách xem mã, và một số khó trả lời theo một trong hai cách. Chia các câu hỏi khó thành các phần nhỏ hơn và nhỏ hơn cho đến khi bạn đạt được điều gì đó có thể được trả lời.

Mục tiêu là để có đủ câu hỏi của bạn được trả lời để xây dựng một cái gì đó, nhận phản hồi và khởi động lại quá trình. Hãy nhớ rằng, những thay đổi của bạn càng nhỏ và chu kỳ phản hồi của bạn càng ngắn thì càng ít xảy ra nếu bạn xây dựng sai.


1
Người ta chắc chắn có thể lập luận rằng điểm tình huống này hoàn toàn phù hợp với sự nhanh nhẹn. Bạn có một hệ thống hiểu biết yếu mà bạn đang cố gắng thay thế. Vì vậy, hãy hiểu một số bit nhỏ (tiêu chí chấp nhận), xây dựng bit nhỏ đó (chạy nước rút) và nhận phản hồi (bản demo). Lót, rửa sạch, lặp lại.
Bryan Oakley

4

Yêu cầu nắm bắt là một phần thiết yếu của bất kỳ dự án phần mềm (thành công) nào. Nhưng viết một đặc tả yêu cầu thì không.

  • Một cách tiếp cận tập trung vào tài liệu có thể kết thúc giống như một trò chơi của Whispers Trung Quốc: một chuyên gia về chủ đề nói lên một yêu cầu, một nhà phân tích viết nó ra, một nhà phát triển cố gắng viết một cái gì đó đáp ứng mô tả của nhà phân tích, người dùng cuối bị nhầm lẫn vì phần mềm không Sẽ giải quyết vấn đề của họ.

    Các kỹ thuật Agile gợi ý rằng các nhà phát triển nên thu thập các yêu cầu trực tiếp từ các chuyên gia về chủ đề, thường là người dùng cuối. Có nhiều kỹ thuật để làm điều này, ví dụ bằng cách nói chuyện thông qua một kịch bản ví dụ với SME. Các nhà phát triển rất giỏi trong việc phát hiện các trường hợp cạnh và yêu cầu các doanh nghiệp vừa và nhỏ làm rõ phần mềm nên hoạt động như thế nào trong trường hợp cạnh đó.

  • Thay vì thu thập tất cả các yêu cầu lên phía trước (và do đó có nguy cơ hiểu lầm lớn), các nhóm nhanh nhẹn có thể sẽ bắt đầu với một lát yêu cầu nhỏ, xây dựng nguyên mẫu và sử dụng điều đó để thu thập phản hồi cho lần lặp tiếp theo.

  • Khi sự hiểu biết về các yêu cầu thay đổi theo thời gian, một đặc tả yêu cầu tĩnh sẽ bị lỗi thời. điều này có thể được ngăn ngừa bằng cách nào?

    Bằng cách thể hiện các yêu cầu như các bài kiểm tra runnable. Nó chỉ ra rằng các đặc điểm kỹ thuật có thể đọc được của Viking và các bài kiểm tra có thể chạy được. Đây không phải là các khái niệm độc quyền, nhưng cuối cùng có thể là một và cùng một tài liệu. Ví dụ, dưa chuột và các ý tưởng khác trong không gian BDD có thể rất hữu ích ở đây.

Trong trường hợp bạn đang viết lại một hệ thống cũ, hệ thống ban đầu có thể là một nguồn yêu cầu tuyệt vời. Nhưng những khía cạnh nào có liên quan? Là tính năng thích hợp của nó thậm chí đang được sử dụng? Những lỗi nào phải được thực hiện lại để tương thích? Thường không có cách giải quyết để nói chuyện với người dùng cuối.

Có một hệ thống làm việc nằm xung quanh cũng có thể rất hữu ích để thử nghiệm phần mềm mới, nhưng điều đó không liên quan đến bất kỳ mối quan tâm nhanh nhẹn nào.

Lưu ý rằng các dự án phạm vi cố định, thời gian cố định với thời hạn thấp thoáng là phản đề của nhanh nhẹn. Cách tiếp cận nhanh nhẹn thông thường là chọn một phần chức năng và đầu tiên cung cấp điều đó, sau đó lặp lại. Những thứ quan trọng nhất được thực hiện trước, những thứ ít quan trọng hơn sau (hoặc không bao giờ). Nếu mọi thứ đều quan trọng và PHẢI được thực hiện càng sớm càng tốt, thì không có gì quan trọng và dự án không có khả năng cung cấp bất cứ điều gì.

Trong tình huống của bạn, việc thiếu các yêu cầu không phải là một tính năng nhanh mà là một trường hợp trung bình của rối loạn chức năng tổ chức. Nếu bạn muốn dự án thành công, bạn sẽ cần tìm cách khắc phục rối loạn chức năng này. Ví dụ, khuyến khích chủ doanh nghiệp không viết một tài liệu yêu cầu hoàn chỉnh, nhưng cố gắng thiết lập một cuộc họp nơi họ giải thích các yêu cầu của họ cho tính năng quan trọng nhất. Bạn có thể nhìn vào hệ thống cũ để biết chi tiết. Sau đó thực hiện tính năng đó, và lặp đi lặp lại.


1

Đây là cách chúng tôi đã làm nó. Chúng tôi đã nói chuyện với các chủ sở hữu. Chúng tôi đã nói chuyện với các nhà quản lý. Chúng tôi đã nói chuyện với người dùng đang làm việc. Những gì chúng tôi tìm thấy bằng cách ngồi xuống bàn của người dùng và xem (và đặt câu hỏi) rất hữu ích. Các nhà quản lý biết người dùng nào chúng ta nên ngồi cùng.

Chúng tôi đã phát hiện ra rằng một số phần của hệ thống thực sự hoạt động rất tốt và chúng tôi có thể dễ dàng viết đủ các yêu cầu để bắt đầu thiết kế và mã hóa và thử nghiệm, v.v., nhưng các phần khác có một số cách giải quyết khó chịu mà người dùng trên sàn đang sử dụng, mà các nhà quản lý và chủ sở hữu đã không nhận thức được. Đối với các bộ phận của hệ thống cũ, chúng tôi đã quay lại công việc và nói về quy trình làm việc và xử lý một chút trước khi chúng tôi có thể hiểu được những nhiệm vụ nhỏ hơn và do đó có thể chia chúng thành các đơn vị mà phương pháp nhanh của chúng tôi muốn.

Vì vậy, trong khi Agile có thể nhanh chóng cất cánh trên một số phần của hệ thống, những người khác phải suy nghĩ và ghi chép thêm một chút trước khi chúng tôi có thể bắt đầu.


0

Thu thập các yêu cầu trong khung Agile và không ai đề cập đến Câu chuyện của người dùng? Câu chuyện người dùng về cơ bản là một định nghĩa cấp cao về những gì phần mềm sẽ có khả năng làm. Thông thường, mọi phản hồi hoặc yêu cầu đến từ doanh nghiệp hoặc người dùng cuối đều có thể được viết dưới dạng câu chuyện của người dùng. ... Bạn có thể nghĩ về tiêu chí chấp nhận là các yêu cầu chức năng hỗ trợ câu chuyện của người dùng.


0

Câu hỏi này gợi ý những gì đã xảy ra với phong trào nhanh nhẹn. Đó không phải là lỗi của người đặt câu hỏi; Tôi rơi vào cái bẫy này mọi lúc bởi vì nhiều năm của cuộc sống công ty đã đào tạo tôi.

Cái bẫy mà tôi đang nói đến là nghĩ rằng có một cách Agile được quy định và chính xác để làm mọi việc. Điều này có thể là do mọi người nghĩ Agile tồn tại. Bạn không thể làm Agile nhiều hơn bạn có thể làm Thực dụng.

Không có "thông số chức năng" hoặc bất cứ điều gì, nghe có vẻ đáng lo ngại, nhưng nó có thể không. Bạn cần bao nhiêu chi tiết để bắt đầu? Bảo mật và hiệu suất là những thứ hiển nhiên được biết trước và áp dụng tất cả các cách thức thông qua. Nếu không, nó là một công cụ Đặt giá Tùy chọn hoặc ứng dụng đồng hồ?

Sẽ liên tục phát hành, thảo luận, học hỏi, quay lại và thay đổi phần mềm? Bạn đang xây dựng phần mềm hoặc phần cứng?

Các nhà phát triển làm việc trong một quá trình thác nước thường không tham gia cho đến giai đoạn sau, đây là một vấn đề. Liên quan đến họ sớm hơn hoặc ngay từ đầu có nghĩa là họ kín đáo với những thứ không rõ ràng, không xác định và nửa nướng, điều này dường như làm đảo lộn các nhà phát triển lâu năm, trong khi thực tế một phần công việc của họ là đặt câu hỏi, chẳng hạn như "những gì là yêu cầu chức năng cho thứ này chúng ta sẽ xây dựng? "

Xác định các lỗ hổng trong kế hoạch không phải là tìm lỗi, đó chỉ là phát triển phần mềm.

Vì lý do này, tôi yêu câu trả lời của Guy.

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.