Kiểm tra hướng so với yêu cầu kinh doanh thay đổi liên tục


8

Một trong những yêu cầu mới của nhóm nhà phát triển do CTO / CIO đặt ra là trở thành phát triển theo hướng thử nghiệm, tuy nhiên tôi không nghĩ rằng phần còn lại của doanh nghiệp sẽ giúp vì họ không có ý thức về vòng đời phát triển và yêu cầu nhận được thay đổi tất cả thời gian trong một lần chạy nước rút. Điều đó làm tôi thất vọng về việc lãng phí thời gian viết 10 trường hợp thử nghiệm và sẽ trở nên vô dụng vào ngày mai.

Chúng tôi đã đề nghị thiết lập các quy trình để tránh những thay đổi yêu cầu đó và giáo dục doanh nghiệp về vòng đời phát triển. Điều gì xảy ra nếu doanh nghiệp không có được ý tưởng? Bạn sẽ làm gì?


1
Là "ngày mai" theo nghĩa đen hay nghĩa bóng?
dùng16764

1
Tôi chỉ nghĩ đó là bình thường. Khi (đó chỉ là một phần của thời gian) Tôi làm TDD Tôi thấy rằng tôi dành nhiều thời gian hơn để viết các bài kiểm tra so với mã sản xuất vì các điều kiện liên tục thay đổi. Không có nghĩa là nó không hữu ích. Chỉ có nghĩa là bạn có thể viết nhiều bài kiểm tra hơn ...
Brian Knoblauch

Sẽ là ít phiền toái hơn (hoặc lãng phí công việc) để viết mã làm một cái gì đó và sau đó có nhu cầu đó để được ném ra và viết lại? Vấn đề dường như không phải là vấn đề mà là sự thay đổi trong giai đoạn nước rút.

Tôi đồng ý, vấn đề không phải là TDD, không có quy trình hay nguyên tắc nào sai cả, chỉ cần sử dụng chúng một cách khôn ngoan.
James Lin

Câu trả lời:


4

Câu hỏi của bạn dường như gợi ý rằng TDD bị ràng buộc bởi vòng đời phát triển. Tôi không chắc là tôi đồng ý.

Câu trả lời cho các yêu cầu linh hoạt, thay đổi là phát triển lặp. TDD không có gì để nói về điều này, hoặc về lịch trình phần mềm; nó là một công cụ để phát triển phần mềm theo bất kỳ yêu cầu và lịch trình nào bạn có. Nếu các yêu cầu thay đổi, phần mềm cũng vậy. Điều này đi cho các bài kiểm tra đơn vị là tốt.

TDD không phát triển các yêu cầu, mặc dù một số người đề xuất cho rằng nó có. Thay vào đó, các yêu cầu điều khiển các bài kiểm tra đơn vị, lần lượt điều khiển mã được viết. Bạn không phát triển kiến ​​trúc từ các bài kiểm tra, bạn cũng không phát triển các yêu cầu với các bài kiểm tra. Thay vào đó, các bài kiểm tra là kết quả của kiến ​​trúc và yêu cầu được chỉ định.

Nếu các yêu cầu đang thay đổi ở cấp độ phát triển phần mềm (phương pháp / đơn vị), thì tôi sẽ đề nghị rằng các yêu cầu của bạn quá chi tiết. Yêu cầu phải chỉ định những gì phần mềm làm, không phải làm thế nào nó làm. Làm thế nào phần mềm đáp ứng các yêu cầu là miền và trách nhiệm của các nhà phát triển phần mềm, chứ không phải các bên liên quan chính.

Nói cách khác, tôi không nói với khách hàng hoặc chủ doanh nghiệp cách điều hành công ty của anh ta và anh ta không cho tôi biết cách thiết kế các lớp học của mình.


Tôi nghĩ rằng bạn đã hiểu sai hoặc tôi trình bày sai quan điểm của tôi, giả sử, có một yêu cầu để thực hiện chức năng A, vì vậy tôi đã viết một số trường hợp kiểm tra chống lại chức năng A, và sau đó chức năng A không còn cần thiết nữa, hoặc yêu cầu của chức năng A đã được yêu cầu đã thay đổi phần lớn để tất cả các trường hợp kiểm tra mà tôi đã viết không còn hiệu lực.
James Lin

4
Đọc đoạn thứ hai đến đoạn cuối của tôi. Không có thứ gọi là "yêu cầu" chỉ định một chức năng. Nếu có, bạn đang làm sai.
Robert Harvey

Tôi không nói chức năng là chức năng lập trình thực tế, ý tôi là chức năng chức năng ...
James Lin

1
Đó là bản chất của sự phát triển lặp đi lặp lại. Đôi khi mọi người thay đổi suy nghĩ về những gì họ muốn.
Robert Harvey

6
Tùy thuộc vào công ty / khách hàng quyết định xem đó có phải là một thực tế lãng phí hay không, và suy nghĩ kỹ hơn về các yêu cầu họ đưa ra cho bạn nếu có. Nếu mọi người đổ lỗi cho bạn về quá trình phát triển chậm, điều đó có nghĩa là bạn không lưu giữ đầy đủ thời gian của mình, để bạn có thể hiển thị số giờ bị lãng phí khi ai đó thay đổi ý định.
Robert Harvey

3

Thay đổi yêu cầu là một điều bình thường, nhưng khi chúng thay đổi hàng ngày và thay đổi các yêu cầu ở giữa giai đoạn nước rút thì đây không phải là môi trường thuận lợi cho phần mềm được phát triển theo bất kỳ cách có ý nghĩa và định tính nào. Nói cách khác, TDD là vấn đề ít nhất của bạn ở đây, chúng cơ bản hơn.

Bạn đề cập đến nước rút, có nghĩa là bạn đang thực hiện một số loại phát triển Agile, đó là một điều tốt. Xử lý phát triển trong các lần chạy nước rút nhanh hoạt động tốt trên các dự án khi các ưu tiên và yêu cầu không ổn định và có thể thay đổi ở giữa dự án. Vấn đề nghiêm trọng là bạn có những yêu cầu thay đổi mạnh mẽ đối với các nhóm phát triển và thử nghiệm của mình ở giữa giai đoạn nước rút.

Các ưu tiên chạy nước rút không nên thay đổi một khi nước rút đã bắt đầu. Chạy nước rút được coi là một thỏa thuận giữa các bên liên quan và nhóm phát triển rằng các tính năng và câu chuyện người dùng đã thỏa thuận sau đây sẽ được gửi và kiểm tra vào một ngày cụ thể. Các bên liên quan không duy trì kết thúc thỏa thuận khi họ bắt đầu thay đổi kỳ vọng của họ cho nước rút sau khi bắt đầu phát triển.

Vì vậy, các bên liên quan không cẩn thận hoặc suy nghĩ về những gì họ yêu cầu, vì vậy họ sẽ thay đổi kỳ vọng của họ ngay lập tức. Các nhà phát triển sau đó có xa xỉ trong việc đẩy ngày giao hàng cho các tính năng không? Thường thì không. Tốt nhất là các bên liên quan đã sơ suất hoặc không đủ năng lực và các nhà phát triển phải trả giá ngoài giờ để đáp ứng ngày. Đôi khi, ngay cả các bên liên quan cũng cố tình biết rằng họ có thể kiếm được nhiều công việc hơn từ các nhà phát triển được trả lương.

Điều gì nên thành thật xảy ra khi các yêu cầu cốt lõi thay đổi đến mức mà công việc hiện tại cho chạy nước rút sẽ vô dụng là ngay lập tức dừng phát triển nước rút cho đến khi một cuộc chạy nước rút mới có thể được lên kế hoạch dựa trên các yêu cầu mới. Chắc chắn không có lý do để tiếp tục cho tuần tới và một nửa phần mềm phát triển mà doanh nghiệp đã nói với bạn rằng dù sao đi nữa cũng không hữu ích cho họ.

Điều đang xảy ra thực sự là các bên liên quan kinh doanh đang làm thất bại nhóm phát triển bằng cách không duy trì hoặc đáp ứng cam kết nước rút. Họ thể hiện sự thiếu năng lực hoàn toàn trong việc xác định những gì họ muốn trong phần mềm hoặc họ hoàn toàn thiếu sự tôn trọng đối với nhóm phát triển và cách thức sản xuất phần mềm chất lượng.

Cách duy nhất mà các nhóm kinh doanh như thế này có được sự tôn trọng về cách phát triển phần mềm thực sự hoạt động là thuê một công ty tư vấn bên ngoài hoặc nhà cung cấp phần mềm để phát triển phần mềm cho họ và trả tiền bằng cách chạy nước rút. Một khi họ mất tiền trong một vài lần chạy nước rút mà họ không thể sử dụng thì họ sẽ bắt đầu đánh giá cao việc duy trì cam kết của họ với tư cách là các bên liên quan và rất cẩn thận và cụ thể với các tính năng và yêu cầu của họ.


3

Không đi vào thuật ngữ nhanh cụ thể, có vẻ như vấn đề cơ bản là thiếu hiểu biết và / hoặc cam kết với trách nhiệm của khách hàng trong một lần lặp: một khi tập hợp các mục có thể thực hiện được chọn (bởi khách hàng, được các nhà phát triển đồng ý) Lặp lại, khách hàng đồng ý không thay đổi tâm trí của họ cho đến khi kết thúc lặp lại.

Điều này cung cấp cho các nhà phát triển một mục tiêu cố định trong một thời gian ngắn.

Nếu các yêu cầu không ổn định đến mức chúng không thể tồn tại một ngày, dự án có vấn đề vượt xa phương pháp ... Trong trường hợp đó, hãy quay lại mục tiêu của dự án và xem xét lại các tính năng được đề xuất.


1
Tôi chưa bao giờ gặp một khách hàng "mua" Agile, người đồng ý không thay đổi yêu cầu nhưng không chiến đấu mạnh mẽ để đưa ra ngoại lệ trong mỗi lần chạy nước rút ... Mỗi người trong số họ đồng ý về lý thuyết và không đồng ý trong thực tế. (Vâng, tôi biết đây chỉ là bằng chứng giai thoại)
Andres F.

Bạn đã đăng bài này từ điện thoại di động? Có một cài đặt trên điện thoại của bạn sẽ tự động viết hoa từ đầu tiên trong mỗi câu. Nó thậm chí có thể thêm thời gian, nếu bạn nhấn phím cách hai lần.
Robert Harvey

@RobertHarvey: lol, chỉ cần đăng vội vàng. Cảm ơn đã chỉnh sửa!
Steven A. Lowe

1

Tôi không nghĩ rằng phần còn lại của doanh nghiệp sẽ giúp đỡ vì họ không có ý thức về vòng đời phát triển và các yêu cầu được thay đổi mọi lúc trong một lần chạy nước rút.

Một điều mà doanh nghiệp thường lắng nghe là bất cứ điều gì có tác động đến ngân sách. Nếu các yêu cầu thay đổi liên tục được thực hiện một cách phù phiếm, thì bạn sẽ muốn tạo một cuộc tranh luận với các ví dụ chi tiết để cho thấy sự thay đổi đó ảnh hưởng đến hiệu quả của nhóm như thế nào, tạo ra công việc chồng chéo và chi phí tiền của công ty. Mặt khác, những thay đổi là cần thiết và có thể dẫn đến tổn thất cho công ty nếu không được thực hiện, thì bạn có thể chỉ cần mặc nó và tìm cách giải quyết các yêu cầu thay đổi liên tục.

Tuy nhiên, đó là kinh nghiệm của tôi, khi mọi thứ thay đổi với tốc độ cao như bạn đã đề xuất, có thể vì những lý do sau:

  • Khái niệm này là thử nghiệm, trong trường hợp bạn có thể muốn chuyển tất cả những thay đổi này thay vì thực hiện chúng trực tiếp vào mã sản xuất.
  • Khái niệm này chưa được phân tích kỹ lưỡng, điều này cho thấy rằng sản phẩm chưa thực sự được nghĩ đến và yêu cầu là mã hóa sản phẩm trong khi nó đang được nghĩ ra.
  • Thị trường liên tục và áp lực cạnh tranh dẫn đến thay đổi đầu gối
  • Một mối quan hệ kém giữa các trình điều khiển dự án, người quản lý và nhóm thực hiện, về khả năng tất cả các bên liên quan có thể giao tiếp tự do về nhu cầu thay đổi.
  • Ưu tiên kém của các nhiệm vụ, và điều này có thể là một lỗi của cả nhân viên quản lý và thực hiện.

Đôi khi chủ dự án không thực sự biết sản phẩm này hoạt động như thế nào, bởi vì họ có một khái niệm cơ bản trong đầu, tuy nhiên họ cảm thấy cần phải xem nó hoạt động như thế nào trước khi quyết định. Điều này có thể là do miền vấn đề không được hiểu rõ lắm hoặc vì họ chưa thực sự nghĩ về cách một chức năng kinh doanh sẽ chuyển thành một giải pháp dựa trên phần mềm. Tạo mẫu có thể có lợi trong những trường hợp như vậy. Bạn có thể dễ dàng tạo nguyên mẫu GUI với các đối tượng giả nếu các thay đổi là mỹ phẩm hoặc bạn có thể sử dụng các thử nghiệm đơn vị làm phương tiện để kiểm tra và điều chỉnh các thay đổi mang tính thuật toán. Điều quan trọng là phải đảm bảo rằng các thay đổi được áp dụng một cách có hệ thống nhất có thể, để giữ cho quá trình tương đối gọn nhẹ và ít tốn kém hơn.

Chúng tôi đã đề nghị thiết lập các quy trình để tránh những thay đổi yêu cầu đó và giáo dục doanh nghiệp về vòng đời phát triển.

Đây là một khởi đầu tốt và cho phép bạn một phương tiện để tham gia với quản lý để thử và thực hiện các kết quả tích cực theo cách thức được đo lường và có cấu trúc. Giáo dục là phương pháp hiệu quả nhất để xử lý các vấn đề trong đó các nhà phát triển và quản lý không đồng bộ về mặt tư tưởng. Tuy nhiên, để có được lợi ích lớn nhất, giáo dục cần phải có hai chiều, cũng như truyền thông. Bạn cần dạy bản thân và quản lý để truyền đạt nhu cầu của bạn, và giúp nhau hiểu được những động lực thúc đẩy những nhu cầu đó. Nói rằng "quá khó" hoặc "rất nhiều công việc" hoặc "người dọn dẹp thời gian" sẽ chỉ gặp phải phàn nàn và "lười biếng". Lý luận của bạn cần phải rõ ràng, và trong một ngôn ngữ sẽ cho thấy rằng bạn đang làm việc để đạt được kết quả tích cực cho công ty và sản phẩm bạn đang làm việc, và động cơ của bạn luôn hướng đến những lợi ích tốt nhất này. Tương tự như vậy, bạn có thể cần phải học cách chấp nhận những lý do mà bộ đồ đưa ra cho bạn tại sao họ cảm thấy cần phải thay đổi mọi thứ quá nhanh. Có lẽ giữa bạn, bạn sẽ có thể tìm thấy một nền tảng trung gian hoàn toàn khả thi khi cả hai bên có thể hiểu được quan điểm của nhau.

Điều gì xảy ra nếu doanh nghiệp không có được ý tưởng? Bạn sẽ làm gì?

Nếu bạn không đạt được kết quả mà bạn đang hy vọng, có lẽ thời điểm đó không đúng. Có lẽ lập luận của bạn cần phải được thực hiện khác nhau. Có lẽ bạn đã sai tất cả và cần tìm hiểu thêm về những gì phía bên kia đang nghĩ. Cuối cùng, nếu cách tiếp cận cụ thể của bạn thất bại, bạn phải quyết định tầm quan trọng của nó đối với bạn. Tuy nhiên, thay vì quan tâm đến bản thân với những gì có thể hoặc không thể xảy ra, hãy suy nghĩ tích cực và đơn giản quyết định những gì bạn có thể làm trong ngày hôm nay. Các vấn đề của ngày mai không nhất thiết phải được đảm bảo và không đáng để căng thẳng lo lắng cho đến khi chúng thực sự xảy ra.

Một điểm cuối cùng để xem xét. CTO của bạn có thể quan tâm đến nhiều vấn đề tương tự như bạn. Chắc chắn việc có một nghị định áp dụng TDD gợi ý cho tôi rằng đây rất có thể là trường hợp được đưa ra rằng TDD có hiệu quả cao trong các tình huống mà mã thường có thể thay đổi. Trong kịch bản thử nghiệm đầu tiên, các thử nghiệm không trở nên vô dụng vào ngày hôm sau bởi vì việc cung cấp cho bạn một mạng lưới an toàn để hoạt động bên trong, cho phép bạn áp dụng các thay đổi nhanh chóng và tự tin. Tuy nhiên, bạn vẫn sẽ cần tìm cách quản lý kỳ vọng của những người yêu cầu thay đổi để giúp quản lý thay đổi hiệu quả.


0

Để làm cho nó rõ ràng hơn, một yêu cầu đòi hỏi trang web phải có thể tải lên một hình ảnh và thay đổi kích thước xuống dưới 500kb nếu kích thước thực tế là hơn 500kb.

Thay đổi yêu cầu có thể là tính năng này không cần thiết (phần lớn thời gian là sau khi họ thấy nó, họ nhận ra rằng họ không thực sự cần nó)

Chúng tôi đã đề nghị thiết lập các quy trình để tránh những thay đổi yêu cầu đó và giáo dục doanh nghiệp về vòng đời phát triển. Điều gì xảy ra nếu doanh nghiệp không có được ý tưởng?

Đầu tiên, có vẻ như bạn có thể cần phải tạo mẫu giả nhiều hơn. Có nghĩa là hoạt động, các mockup có thể nhấp, những người không thực sự lưu trữ hoặc truy xuất bất kỳ dữ liệu thực nào, nhưng họ mô phỏng phần mềm sẽ hoạt động như thế nào. Vì vậy, đối với các ứng dụng web, điều này có nghĩa là HTML / CSS / JavaScript được thực hiện đầy đủ cho phép người dùng 'nhấp qua' phần mềm, mặc dù bạn có rất ít mã hóa được thực hiện. Có lẽ điều đó có thể giúp người dùng thấy những gì họ đang yêu cầu trước khi bạn đầu tư công việc vào việc mã hóa nó.

Tiếp theo, nó thực sự không phụ thuộc vào bộ phận CNTT để quyết định cách thức hoạt động của doanh nghiệp. Và nó có thể là các giá trị kinh doanh nhanh nhẹn về độ tin cậy cho nhu cầu phần mềm của nó. Vì vậy, nhận được một cái gì đó thay đổi HÔM NAY có giá trị hơn khi đảm bảo một tính năng nhất định hoạt động 100% thời gian, trái ngược với 95,5% thời gian. Chỉ có chính doanh nghiệp có thể quyết định điều này. Trừ khi bộ phận của bạn đang gặp khó khăn về vấn đề chất lượng, có lẽ bạn nên xem xét rằng doanh nghiệp hoàn toàn ổn với các yêu cầu thay đổi và mã không được kiểm tra. CTO / CIO của bạn nói rằng anh ấy muốn bạn được "điều khiển thử nghiệm", nhưng nếu các yêu cầu kinh doanh thường xuyên "thực hiện thay đổi này trước 4 giờ chiều" thì bạn không thể có cả hai.

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.