2009-04-10 28 views
10

Nếu bạn đang sử dụng nhanh, ý tưởng là luôn luôn làm tái cấu trúc gia tăng và không bao giờ xây dựng nợ kỹ thuật lớn. mà đang được nói, nếu bạn có một đội ngũ nhanh nhẹn đang tiếp nhận phần mềm có số tiền nợ kỹ thuật khá lớn, bạn phải phù hợp với nó ở đâu đó.Trả hết nợ kỹ thuật trong Agile

Bạn có đi và tạo câu chuyện của người dùng nhà phát triển không. .ví dụ .

  • Là một nhà phát triển, tôi có bảo hiểm kiểm tra 50% so với các mô-đun logic kinh doanh vì vậy tôi có sự tự tin trong giao
  • Là một nhà phát triển, ứng dụng hỗ trợ dependency injection vì vậy chúng tôi có thể trao đổi trên concretions và được nhanh nhẹn hơn trong tương lai.

hoặc là có một thực hành tốt nhất để dọn dẹp này nợ kỹ thuật đang

+0

Đối với những người không quen với nợ kỹ thuật, điều này có thể là một lời giải thích tốt: http://benlakey.com/2012/06/18/technical-debt/ –

+0

câu hỏi như vậy nên được hỏi tại https: //pm.stackexchange.com/ –

+0

Tôi đang bỏ phiếu để đóng câu hỏi này là không có chủ đề vì các câu hỏi như vậy nên được hỏi tại https://pm.stackexchange.com/ –

Trả lời

6

là ứng dụng của bạn nội bộ hoặc làm bạn có một khách hàng bên ngoài? Nếu khách hàng đang thanh toán cho công việc của bạn và hỗ trợ ứng dụng, có thể khó khăn để họ đăng xuất trên các thẻ như những người bạn đề xuất.

Ngoài ra, với ý tưởng thẻ thứ hai của bạn, có thể khó nói "Hoàn thành" là gì. Một cách tiếp cận cụ thể cho vấn đề của bạn có thể là Defect Driven Testing - ý tưởng là khi bạn nhận được báo cáo lỗi và ước tính thẻ nói để sửa lỗi, hãy xem (các) thử nghiệm nào bạn có thể thêm vào cùng một lúc tương tự nhưng tăng mức độ phù hợp.

Và bạn không yêu cầu cụ thể để biết chi tiết kỹ thuật về làm thế nào để có được dự án của bạn được kiểm tra, nhưng cuốn sách này là rất hữu ích khi bạn bắt đầu thực sự làm điều đó: Working Effectively with Legacy Code

+0

nội bộ. tôi đồng ý với việc khách hàng đăng xuất nhưng bạn phải dành thời gian chạy nước rút vì đây có thể là những nhiệm vụ lớn và bạn muốn làm cho chúng rất rõ ràng – leora

+0

Ngoài ra, hãy xem chỉnh sửa của tôi cho câu trả lời của tôi. Bạn có thể chọn để thêm thử nghiệm bằng cách thiết kế những cái mới vào ước tính thẻ bugfix. – JeffH

1

Tôi làm việc trong một môi trường Agile, nhưng ở đâu codebase hiện tại đã tồn tại trong vài năm trước khi các kỹ thuật nhanh nhẹn được áp dụng. Điều này dẫn đến việc phải cố gắng làm việc một cách nhanh nhẹn, xung quanh mã mà không được viết bằng thử nghiệm hồi quy tự động trong tâm trí.

Do nợ kỹ thuật ảnh hưởng đến tốc độ chúng tôi có thể phân phối các tính năng mới, chúng tôi ghi lại số lượng thời gian đã được thêm do làm việc với mã cũ. Dữ liệu này cho phép chúng tôi tạo ra một trường hợp dành thời gian dành riêng cho việc trả hết nợ kỹ thuật. Vì vậy, khi khách hàng (là người quản lý, hoặc CTO hoặc bất kỳ ai) nghĩ rằng ước tính quá cao, bạn có dữ liệu có thể củng cố vị trí của bạn.

Tất nhiên đôi khi, bạn tìm thấy ước tính của bạn đi qua vì những kỳ quặc bất ngờ của mã cũ mà bạn để trả hết nợ kỹ thuật. Chúng tôi đã tìm thấy rằng miễn là thời gian thêm có thể được giải thích và tính toán, và một trường hợp có thể được thực hiện cho những lợi ích của thời gian thêm chi tiêu, nó thường được chấp nhận khá tốt.

Tất nhiên, YMMV phụ thuộc vào khách hàng hoặc các yếu tố khác, nhưng có số liệu thống kê đại diện cho ảnh hưởng của nợ kỹ thuật trong tương lai là rất hữu ích.

0

Tôi nghĩ rằng nên hỏi xem khách hàng sẽ sử dụng ứng dụng lâu hơn bao lâu nữa. Nếu tuổi thọ của ứng dụng bị hạn chế (nói, ba năm hoặc ít hơn) thì có thể không có ý nghĩa gì khi đặt nhiều nỗ lực vào việc tái cấu trúc. Nếu tuổi thọ được mong đợi (hoặc hy vọng) lâu hơn, thì việc hoàn vốn để tái cấu trúc trở nên hấp dẫn hơn nhiều.

Bạn cũng có thể muốn thử tạo trường hợp kinh doanh cho việc đầu tư tái cấu trúc. Hiển thị các ví dụ cụ thể về các loại cải tiến mà bạn muốn thực hiện.Thực hiện đánh giá trung thực về chi phí, rủi ro và dự kiến ​​hoàn vốn. Hãy thử tìm một phép tái cấu trúc cụ thể mà bạn có thể thực hiện độc lập với những người khác, và vận động hành lang để phê duyệt để thực hiện thay đổi đó như là chạy thử nghiệm của quá trình tái cấu trúc.

Lưu ý rằng, khi bạn nói về hoàn vốn, bạn có thể được mong đợi cung cấp các số cụ thể. Nó không đủ để nói "nó sẽ dễ dàng hơn nhiều để sửa lỗi." Thay vào đó, bạn nên chuẩn bị để nói điều gì đó như "Chúng tôi sẽ thấy cải thiện tối thiểu 30% trong thời gian quay vòng để sửa lỗi" hoặc "Chúng tôi sẽ giảm 40% hồi quy." Bạn cũng nên chuẩn bị thương thảo với quản lý và/hoặc khách hàng để tất cả các bạn đồng ý rằng bạn có các phép đo có ý nghĩa đối với họ, và để cung cấp các phép đo từ trước và sau khi tái cấu trúc.

+0

bạn sẽ làm cách nào để có được loại số liệu đó? – leora

+0

Để đo lường tỷ lệ sửa lỗi, bạn sẽ đo lường số lần sửa lỗi được thực hiện trong một tuần, tháng hoặc quý. Để đo lường tỷ lệ hồi quy, theo dõi xem các lỗi mới được báo cáo có phải là do cố gắng khắc phục các lỗi trước đó hay không. Đây là những biện pháp rất thô lỗ, nhưng tốt hơn là không có bất kỳ biện pháp nào cả. –

4

Cần có sự phân biệt giữa thực tiễn kỹ thuật và nợ kỹ thuật. Tôi xem phát triển theo thử nghiệm và thử nghiệm tự động như thực tiễn.

Có tài sản mã đã được xây dựng bởi các nhóm thác nước, tài sản không có kiểm tra đơn vị, chức năng hoặc hiệu suất tự động. Khi chúng tôi chịu trách nhiệm về tài sản phần mềm, chúng tôi đã đào tạo chủ sở hữu sản phẩm ở Agile và nói với họ về các thực tiễn chúng tôi sẽ sử dụng.

Khi chúng tôi bắt đầu sử dụng thực tiễn, chúng tôi bắt đầu xác định nợ kỹ thuật. Khi các khoản nợ kỹ thuật được xác định, các thẻ câu chuyện kỹ thuật được viết và được đặt trên sản phẩm tồn đọng của chủ sở hữu sản phẩm. Nhà phát triển và người thử nghiệm ước tính tất cả công việc sử dụng các thực hành kỹ thuật XP (TDD, kiểm tra tự động, lập trình ghép đôi, v.v.). Những thực hành đã xác định sự mong manh trong mã thông qua TDD, chức năng tự động và kiểm tra hiệu suất. Đặc biệt, một vấn đề hiệu suất đáng kể đã được xác định thông qua kiểm tra hiệu suất tự động và lược tả. Khoản nợ quá lớn đến mức chúng tôi ước tính bản sửa lỗi cần 6 lần lặp lại. chúng tôi đã thông báo cho chủ sở hữu sản phẩm rằng nếu các tính năng mới được phát triển, chúng sẽ không thể được sử dụng bởi cơ sở người dùng do hiệu suất kém của ứng dụng. Do đó chúng tôi phải mở rộng ứng dụng từ vài trăm người dùng thành 10 trong số hàng nghìn người dùng, chủ sở hữu sản phẩm đã ưu tiên nợ kỹ thuật hiệu suất rất cao và chúng tôi đã hoàn thành các thẻ kỹ thuật trong các ước tính lặp lại.

Lưu ý: Nợ kỹ thuật có thể được cố định thông qua tái cấu trúc trong ước tính thẻ câu chuyện không yêu cầu thẻ câu chuyện kỹ thuật. Nợ kỹ thuật lớn hơn sẽ. Đối với nợ kỹ thuật sẽ yêu cầu thẻ kỹ thuật, hãy xác định tác động kinh doanh và yêu cầu chủ sở hữu sản phẩm ưu tiên thẻ kỹ thuật. Sau đó làm việc thẻ. Không tạo nợ kỹ thuật cho các thực hành kỹ thuật. Làm tất cả ước tính biết rằng thực hành kỹ thuật sẽ là một phần của ước tính. Không tạo thẻ để trang bị thêm ứng dụng với thử nghiệm đơn vị, chức năng và hiệu suất tự động. Thay vào đó, chỉ bao gồm tác phẩm trong các thẻ bạn đang ước tính và thêm kiểm tra tự động vào mã bạn chạm vào thông qua thẻ đang hoạt động. Điều này sẽ cho phép ứng dụng cải thiện theo thời gian mà không mang lại tiến trình dừng lại. Ngừng việc bổ sung tất cả danh thiếp chỉ nên được lưu cho tình huống quyết liệt nhất, chẳng hạn như không có khả năng ứng dụng thực hiện hoặc mở rộng quy mô.

Với trường hợp bạn kế thừa cơ sở mã mà không có đơn vị tự động, kiểm tra chức năng và hiệu suất, hãy thông báo cho đối tác kinh doanh về trạng thái buồn. Hãy cho họ biết bạn sẽ ước tính công việc như thế nào. Tạo ra nợ kỹ thuật vì nó được phát hiện thông qua thực hành kỹ thuật. Cuối cùng, thông báo cho chủ sở hữu sản phẩm rằng tốc độ của đội sẽ cải thiện khi ngày càng nhiều cơ sở mã được chạm vào với các bài kiểm tra đơn vị, chức năng và hiệu suất tự động.

1

Giảm nợ kỹ thuật là điều mọi người nên làm, mỗi khi chúng tôi gửi mã.

Khi bạn chỉnh sửa mã, bạn dọn dẹp một chút, như trinh sát trước khi rời khỏi khu cắm trại.

Bằng cách này, mã thay đổi thường sẽ có hình dạng tốt hơn, phù hợp cho doanh nghiệp.

Mã không bao giờ thay đổi sẽ không cải thiện, nhưng sau đó một lần nữa tại sao nó nên, nếu nó hoạt động?

Đừng lên lịch các tác vụ cho việc này, mặc dù kế hoạch dài hạn hữu ích, cũng như diễn đàn thảo luận các vấn đề.

Các dự án rất lớn sẽ được hưởng lợi từ một số loại lược đồ khóa để hai lập trình viên không tái cấu trúc cùng một đoạn mã đồng thời mà không đồng bộ hóa.

/Roger

Các vấn đề liên quan