Một cách đơn giản để cải thiện chất lượng phát hành trong môi trường RAD


15

Một chút nền tảng ở đây - chúng tôi là một nhóm nhỏ (gồm 5) nhà phát triển RAD chịu trách nhiệm phát triển phần mềm nội bộ trong một công ty phi phần mềm lớn. "Phần mềm nội bộ" thay đổi từ ứng dụng .NET trên máy tính để bàn sử dụng máy chủ MSSQL dưới dạng phụ trợ cho các tập lệnh Python chạy trên nền cho các tài liệu và mẫu MS Word - một sở thú công nghệ.

Toàn bộ nhóm bao gồm tất cả những người xung quanh có thể nhận được các yêu cầu từ người dùng, mã hóa nó, kiểm tra và triển khai vào sản xuất. Một khi phần mềm trong quá trình sản xuất nó đang được một nhóm khác chăm sóc nhưng chúng tôi thường dễ dàng can thiệp nếu có sự cố xảy ra.

Tất cả nghe có vẻ tốt, nhưng có một vấn đề - là một nhóm RAD chúng tôi phải phát hành thường xuyên và sẽ không có ngày nào trôi qua mà chúng tôi không phát hành phiên bản mới của một hoặc hai ứng dụng (hoặc có thể là tập lệnh, tài liệu từ được cập nhật , Ứng dụng bảng điều khiển C ++, v.v.) vào sản xuất. Chúng tôi thực hiện thử nghiệm phát triển và cũng liên quan đến người dùng cuối bằng cách cho phép họ chạy phần mềm trong môi trường UAT ...

... Nhưng dù sao thì các con bọ đang xâm nhập vào sản xuất. Người dùng hiểu rằng những lỗi này và sự không ổn định thường xuyên là cái giá họ phải trả để có được thứ họ muốn thực sự nhanh chóng, nhưng đồng thời nó khiến chúng tôi phải suy nghĩ - có lẽ chúng tôi có thể cải thiện sự phát triển của mình hoặc thực hành phát hành để cải thiện tính ổn định của phần mềm và giảm số lượng lỗi chúng tôi giới thiệu khi thêm chức năng mới.

Điều tốt - chúng tôi không thực sự có nhiều quy trình ngay từ đầu, vì vậy thật dễ dàng để bắt đầu cải thiện, điều tồi tệ - là một nhóm RAD nhỏ mà chúng tôi không thực sự có nhiều thời gian và nguồn lực để thực hiện một cái gì đó lớn, nhưng chúng tôi đã suy nghĩ về các sáng kiến ​​sau đây và sẽ hoan nghênh mọi phản hồi, mẹo, gợi ý và đề xuất.

  1. Hiện tại một số ứng dụng đang được phát hành ngay sau khi nhà phát triển thử nghiệm, bỏ qua thử nghiệm chấp nhận của người dùng. Nên ngừng thực hành đó và ngay cả một thay đổi nhỏ cũng phải được kiểm tra bởi người dùng cuối. Mỗi ứng dụng sẽ có một trình kiểm tra beta chuyên dụng được chọn từ người dùng cuối. Chỉ sau khi trình kiểm tra beta có ok-ed, bản phát hành mới được phát hành từ thử nghiệm sang môi trường sản xuất.

  2. Chúng tôi không tiến hành đánh giá mã - nhưng chúng tôi sẽ bắt đầu thực hiện đánh giá mã trước khi một trong số chúng tôi kiểm tra thay đổi. Tôi cũng đã suy nghĩ về một "đánh giá triển khai" - về cơ bản, một trong số các nhà phát triển phải ngồi cạnh người khác xem anh ta / cô ta đang triển khai phần mềm (sao chép nhị phân, cập nhật cấu hình, thêm bảng mới vào cơ sở dữ liệu, v.v.) mất 5-10 phút để không mất nhiều thời gian "xem xét triển khai".

  3. Làm thế nào để bắt chước thời gian rollback khi một bản phát hành mới được chứng minh là có lỗi đủ để rút khỏi sản xuất và được thay thế bằng một phiên bản tốt trước đó. Chúng tôi lưu trữ lịch sử của tất cả các bản phát hành (dưới dạng nhị phân) để giúp dễ dàng quay lại một phiên bản - và mặc dù nó nhanh chóng "ghi đè một nhị phân mới được phát hành với các nhị phân phiên bản trước" nhưng đây vẫn là một quy trình thủ công dễ bị lỗi và yêu cầu đôi khi "điều gì xảy ra nếu rollback sẽ thất bại và sẽ khiến hệ thống không sử dụng được thay vì lỗi".

Đây là nơi chúng tôi hết ý tưởng và chúng tôi muốn nhận phản hồi của bạn về những ý tưởng này và nếu bạn có thể chia sẻ một số lời khuyên cải tiến quy trình phát hành / phát hành đơn giản - điều đó thật tuyệt vời.


kiểm tra đơn vị tự động và CI có vẻ như chỉ là loại điều bạn cần.
Raynos

Câu trả lời:


14

+1 để chạm vào một chủ đề tuyệt vời. Khi chúng tôi thực hiện dòng phát triển "Phát hành sớm thường xuyên", mọi thứ sẽ bắt kịp tốc độ thực sự và khi động lực xây dựng nhiều vấn đề như vậy phát sinh (như bạn mô tả) mà chúng tôi không sẵn sàng để đối phó. Nỗi sợ hãi tồi tệ nhất là khi mọi người coi tốc độ là kẻ thù của công việc tốt.

Tôi đã thấy tài liệu rất hạn chế về điều này tuy nhiên, đây là những gì chúng tôi thực hành mà chắc chắn giúp:

1. Theo dõi lỗi hiệu quả
Giúp theo dõi lỗi hiệu quả hơn - những gì chúng tôi làm không chỉ là giữ một danh sách các lỗi và đánh dấu, mà khi đóng, chúng tôi phải xác định một số điều như "vấn đề có thể lặp lại không?", "Đây có phải là giải pháp lâu dài không hoặc sửa chữa công việc? "," nguyên nhân gốc rễ "của sự cố là gì? Điều này cho phép kiến ​​thức về những gì đã xảy ra, khi lỗi này được nhìn thấy lần trước. Đây là chìa khóa để đảm bảo rằng các lỗi không lặp lại thường xuyên.

2. Xác định các điểm rơi chính của khóa
Tất cả chúng ta đều biết rằng các lỗi sẽ xuất hiện, vì vậy chúng ta sẽ cần cung cấp dự phòng hiệu quả, hoạt động thường xuyên nhất. Hết lần này đến lần khác, chúng tôi hoàn thiện (với tỷ lệ khoảng 1 trên 10 trong trường hợp của chúng tôi) một bản phát hành phổ biến nhất hoạt động ở mọi nơi theo cách đáng tin cậy nhất. Tổng số bản phát hành có thể nhiều nhưng nếu có bất cứ điều gì sai sót, phần dự phòng sẽ được chọn một vài và bạn không phải quay lại nữa. Một trong những cách đơn giản nhất để biết dự phòng tốt nhất là xem bản phát hành sớm nhất nào đã chạy lâu nhất trong sản xuất mà không gặp nhiều vấn đề.

3. Phân biệt các bản phát hành sửa lỗi rủi ro và ổn định hoặc nhỏ
Khi chúng tôi biết rằng chúng tôi có một thay đổi thuật toán lớn, nhiều khả năng các lỗi có thể xuất hiện trong các tình huống không phải là tất cả. Như có những lúc các vấn đề rất nhỏ (hoặc hiểu rõ) cũng như ít rủi ro. Làm KHÔNG câu lạc bộ chức năng như vậy và lỗi đơn giản trong cùng một phiên bản. Luôn luôn có một lỗi nhỏ hơn được sửa trước, phải đi bất cứ nơi nào cần thiết. Tạo các bản phát hành chuyên dụng cho các bộ tính năng đặc biệt, tốt nhất bạn có thể loại bỏ tính năng đó nhưng tất cả các lỗi quan trọng khác vẫn có sẵn trong bản phát hành trước.

4. Chi nhánh để phát triển tính năng quan trọng
Bất cứ điều gì liên quan đến thay đổi có ảnh hưởng đến thiết kế đều phải được thực hiện riêng trên một nhánh. Phát triển lớn hơn không được hoàn thành nhanh chóng so với các lỗi nhỏ hơn. Nếu chúng tôi giới thiệu các cam kết trung gian trong đó công việc 'một phần' liên quan đến tính năng vẫn chưa được sử dụng - là khu vực giới thiệu lỗi tiềm năng; các lỗi sẽ không phát sinh nếu toàn bộ công việc cho tính năng đã hoàn thành về mặt nguyên tử - do đó đây là các lỗi mà chúng tôi sẽ không phải giải quyết nếu có các nhánh.

5. Luôn lập kế hoạch phát hành dựa trên chủ đề
Nhiều lần có nhiều lỗi khác nhau đến các bản phát hành khác nhau - nhưng tốt nhất là tổ chức các lỗi (và tính năng) ảnh hưởng đến các mô-đun tương tự giúp giảm bớt công việc lặp lại và giảm thiểu số lượng lỗi xuất phát từ công việc đó. Luôn luôn chuẩn bị phát hành bản đồ đường trước; các lỗi liên tục đổ vào - và điều đó rơi vào các bản phát hành mục tiêu khác nhau để tối ưu hóa một nhóm các lỗi tốt sẽ được bắn cùng nhau trong một bản phát hành tốt. Khi các lỗi tương tự được kết hợp với nhau, nó luôn cung cấp cái nhìn sâu sắc hơn về các tình huống mâu thuẫn.

6. Mở rộng bất kỳ bản phát hành mới nào trước tiên cho một số khách hàng
Trong trường hợp của chúng tôi, chúng tôi thấy thử nghiệm nó trong một vài trang web trước tiên và tất cả các trang web khác chỉ được áp dụng một bản phát hành khi có nhu cầu về nó. Nhiều lần một số (hoặc hầu hết) người dùng sẽ chỉ chuyển từ bản phát hành ổn định sang bản phát hành ổn định khác mà thôi.

7. Kiểm tra hồi quy
Cùng với các dòng lỗi được thu thập - xây dựng phù hợp với hồi quy. Ngoài ra nếu có thể đánh dấu các lỗi nghiêm trọng và kiểm tra là quan trọng nhất trở thành tiêu chí đủ điều kiện tối thiểu để được kiểm tra trước khi một ứng cử viên phát hành thực sự trở thành một bản phát hành.

8. Tạm dừng và phản ánh
Khi nhiều thứ chạy hết tốc lực, cần có thời gian để nghỉ ngơi - tạm dừng và có các bản phát hành có chức năng không tốt hơn. Trong thực tế có kỳ nghỉ phát hành một thời gian. (thời lượng tỷ lệ nghịch với tần số). Ví dụ, nhiều lần chúng ta có những bản phát hành được gọi là "dọn dẹp" này không đạt được gì mới từ quan điểm chức năng - nhưng điều đó giúp ích rất nhiều trong việc duy trì mã. Hầu hết các bản phát hành như vậy là những điểm rơi tuyệt vời mà bạn gần như không bao giờ nhớ lại lịch sử trước đó.

9. Có lẽ điều kỳ lạ nhất
tôi thấy điều này khó thực hiện thường xuyên nhưng là một cú đánh chắc chắn tốt. Trao đổi chủ sở hữu của các mô-đun nhất định. Khi mọi người được yêu cầu đánh giá mã để được thực hiện, không có nhiều từ thực tiễn này. Nhưng khi bạn phải nghiêm túc xử lý mã mới đó, khi bạn trao đổi tác giả, các bệnh "xấu" tiềm năng sẽ được chú ý nhanh chóng trước khi chúng bắt đầu gây ô nhiễm mã. Tất nhiên, điều này làm giảm tốc độ - nhưng nếu bạn làm điều này thường xuyên, rất có thể mọi người thành thạo các phần khác nhau của mã và tìm hiểu về toàn bộ sản phẩm, điều rất khôn ngoan khác rất khó dạy.

10. Cuối cùng nhưng không kém phần
Học cách trở lại bảng trắng thường xuyên. Bạn càng nghĩ lại như thể tính năng này sẽ là một phần của thiết kế ban đầu nhất của chúng tôi, làm thế nào chúng ta sẽ nghĩ về thiết kế tại thời điểm đó? Đôi khi, thách thức lớn nhất với công việc gia tăng chỉ là chúng ta quá bị hạn chế bởi thứ tự chức năng chúng ta xây dựng trước tiên và thường không thể quay lại những điều cơ bản. Bí quyết là tiếp tục xem chúng ta sẽ khái quát như thế nào thay vì điều chỉnh tính năng hoặc kịch bản mới này. Điều này đòi hỏi thiết kế vẫn còn hiện hành và điều đó chỉ xảy ra nếu chúng ta thường xuyên quay lại bảng vẽ. Ngoài ra, khi các lập trình viên thế hệ mới tham gia, họ trở thành một phần của bể tư duy thay vì chỉ đưa ra các bản vá xung quanh.

EDIT
11. Theo dõi các khoảng trống làm việc và thiết kế.
Chúng tôi thường xuyên chịu áp lực của các mốc thời gian để sửa lỗi và phát hành trong sản xuất. Tuy nhiên, khi lỗi ở mức thiết kế, một số thứ cần thay đổi nhưng thường mọi người sẽ sửa bằng một số cách rút ngắn để đáp ứng thời hạn. Không sao đâu Tuy nhiên, khi nhiều công việc như vậy xung quanh các giải pháp tăng lên, mã trở nên dễ vỡ. Theo dõi đặc biệt về số lượng lỗ hổng thiết kế đã được sử dụng. Thông thường, khi bạn đàm phán các mốc thời gian với người quản lý dự án, tốt nhất là làm cho anh ấy / cô ấy cam kết rằng chúng tôi sẽ cung cấp điều này một cách ngắn gọn để tiết kiệm sản xuất nhưng chúng tôi cũng sẽ có dòng thời gian và nguồn lực để có được giải pháp lâu dài.


1
Thanh danh. Câu trả lời này tốt hơn nhiều so với hầu hết các hướng dẫn trực tuyến
Ubermensch

Đây là một số công cụ rất hữu ích và quan trọng khi giúp các nhóm "kháng nhanh" học cách trở nên nhanh nhẹn mà không nhất thiết phải cam kết mọi thứ cùng một lúc để thay đổi phương pháp đương nhiệm. Điểm thứ 9 của bạn thực sự mang đến cơ hội để xem xét mã, mà không cần quá trình xem xét chính thức hoặc chuyển sang lập trình cặp, nhưng đòi hỏi một tư duy không có lỗi để tránh sự phát triển ma sát không cần thiết. Tuy nhiên, khi phân nhánh, tôi khuyên bạn nên giảm thiểu điều này thành một nhánh duy nhất với mục đích sáp nhập trở lại tuyến chính càng sớm càng tốt ...
S.Robins

@DipanMehta Câu hỏi dường như là từ một người mới đến và nó đã đưa ra một câu trả lời có thể cho anh ta một viễn cảnh rộng lớn để xây dựng dựa trên những điều hiện có mặc dù quá cụ thể và câu trả lời của bạn thực sự gần với nó.
Ubermensch

1
... vì việc quản lý nhiều chi nhánh có thể trở nên nghiêm trọng khi quản lý theo thời gian, vì vậy bạn muốn giữ các thay đổi chi nhánh của mình nhỏ và phù hợp để giải quyết một vấn đề cụ thể, hợp nhất, tái phân nhánh, v.v. cho các không gian làm việc và phân biệt giữa "quảng cáo" được phiên bản và "giữ" không đảo ngược có thể giúp tránh phân nhánh hoàn toàn. Tuy nhiên, IMHO tốt hơn là làm cho quy trình đúng, và sau đó tìm các công cụ để phù hợp, thay vì khớp các quy trình với các công cụ.
S.Robins

+1 cho "tốt hơn là xử lý đúng quy trình và sau đó tìm công cụ phù hợp, thay vì khớp quy trình với công cụ"
Ubermensch

4

Tôi cũng làm việc trong một nhóm phát triển nhỏ (chỉ có 2 người chúng tôi) và chúng tôi đã gặp phải những vấn đề tương tự mà bạn đã đề cập. Vấn đề chính đối với chúng tôi là cả hai chúng tôi đều có xu hướng làm việc trên các nhiệm vụ riêng biệt và nó trở nên quá phổ biến đối với chúng tôi để hoàn thành một nhiệm vụ / tính năng, kiểm tra nó (chỉ được thử nghiệm bởi nhà phát triển) và phát hành nhanh chóng. Điều này đã dẫn đến rất nhiều bản phát hành nhỏ với người dùng báo cáo các lỗi nhỏ nên dễ dàng được chọn trong thử nghiệm.

Để cải thiện quy trình của chúng tôi, tôi đã bắt đầu bằng cách giới thiệu một bảng Kanban . Bảng rất đơn giản để bắt đầu và chỉ có một vài cột (thiết lập bằng bảng trắng, thẻ chỉ mục và nam châm màu):

Tồn đọng | Để làm | Làm xong

Tuy nhiên, điều này nhanh chóng phát triển để phản ánh quá trình thực tế của chúng tôi:

Tồn đọng | Phát triển | Nhà phát triển Kiểm tra | UAT | Xong | Phát hành

Cùng với hội đồng quản trị, chúng tôi có một quy tắc rằng mỗi Nhiệm vụ / Tính năng phải được kiểm tra bởi nhà phát triển khác (cũng như bởi nhà phát triển đã triển khai tính năng này). Vì vậy, tại thời điểm thẻ đạt đến cột 'Xong', nó đã được kiểm tra bởi ít nhất 2 nhà phát triển và Kiểm tra chấp nhận người dùng.

Có rất nhiều lợi ích khác khi sử dụng Kanban. Đối với chúng tôi, nó đã được cải thiện giao tiếp và giúp chúng tôi chia sẻ kiến ​​thức vì cả hai chúng tôi đều tham gia ở một mức độ nào đó trong mỗi nhiệm vụ. Nó cũng đã cải thiện quá trình phát hành của chúng tôi vì bây giờ chúng tôi có thể thấy chính xác những nhiệm vụ / tính năng nào đã sẵn sàng để phát hành / hoàn thành và đôi khi có thể ngừng phát hành nếu chúng tôi biết các taks khác sẽ sớm được thực hiện. Đối với những người bên ngoài nhóm, hội đồng quản trị cũng hoạt động như một tài liệu tham khảo nhanh để xem những nhiệm vụ chúng tôi đã lên lịch, công việc hiện tại đang diễn ra và những gì đã được phát hành gần đây.

Chỉ là một bên, chúng tôi sử dụng nam châm màu (một cho mỗi nhà phát triển) để gắn cờ cho thẻ chúng tôi đang làm việc nhưng một lựa chọn khác là thêm các làn bơi (hàng), một cho mỗi nhà phát triển và đặt thẻ Kanban vào các làn bơi có liên quan. Một lần nữa, điều này giúp làm tài liệu tham khảo nhanh để xem mỗi nhà phát triển hiện đang làm gì.

Các liên kết khác tôi thấy hữu ích:

Kanban ứng dụng vào phát triển phần mềm: từ Agile đến Lean

Hệ thống Kanban cho Kỹ thuật phần mềm - Video

Hy vọng Kanban sẽ giải quyết điểm 1. trong câu hỏi của bạn. Liên quan đến đánh giá mã, chúng tôi thực hiện việc này ở giai đoạn thử nghiệm dev để mọi thay đổi cần thiết sau khi đánh giá được dev kiểm tra lại trước khi chuyển sang UAT. Quay ngược lại tùy thuộc vào môi trường của bạn nhưng chúng tôi triển khai các tệp ứng dụng cho Máy chủ đầu cuối bằng cách sử dụng các tệp bó đổi tên các tệp hiện tại và sao chép qua các tệp mới từ máy chủ trung tâm và chúng tôi có thể quay lại khá dễ dàng bằng cách đặt sao lưu (các tệp trước đó) vào vị trí trung tâm và chạy lại các kịch bản.


4

Bạn đã xác định rằng bạn biết có vấn đề với các quy trình của mình ảnh hưởng đến chất lượng phần mềm của bạn và trong khi câu hỏi này sẽ gây ra một loạt câu trả lời, đề xuất của tôi sẽ là xem xét chủ đề về công nghệ phần mềm và thử và tìm hiểu xem các nhà phát triển trong chính đang thấy mình làm nhiều hơn và nhiều hơn trong lĩnh vực đó. Tôi đề nghị bạn nên bắt đầu đọc một vài tài nguyên tốt để khiến bản thân mình khởi động. Một vài điều mà tôi nghĩ đến:

  • Phát triển phần mềm tinh gọn của Mary và Tom Poppendeick cung cấp một bài đọc tuyệt vời cho những người quan tâm đến việc học cách xác định "chất thải" và phải làm gì để thay đổi các quy trình để trở nên gọn gàng và hiệu quả hơn.
  • Đầu tiên Phát triển phần mềm của Dan Pilone và Russ Miles giống như một trong những cuốn sách "cho người giả" thoạt nhìn, nhưng bằng cách nhìn qua một chút về phong cách trình bày hỗn loạn, nó chứa hầu hết các thông tin liên quan đến những điều cơ bản của công nghệ phần mềm và có một bài viết ngắn gọn về Phát triển hướng thử nghiệm.
  • Giới thiệu về BDD là trang của Dan North về việc tham gia vào Phát triển hướng hành vi, hoặc có lẽ bạn thích Wiki của BDD . Đây là các tài liệu tham khảo khởi đầu cho BDD và có lẽ bạn sẽ muốn xem xét các công cụ và khung để giúp bạn. Điều quan trọng cần hiểu là BDD có hiệu quả TDD được đưa lên một mức độ khái niệm cao hơn. Nó cho phép bạn suy nghĩ về việc kiểm tra khi bạn đang nghĩ về thông số kỹ thuật và kiểm tra bằng chính ngôn ngữ bạn sử dụng khi bạn viết thông số kỹ thuật. Các khung công tác thường tích hợp với các khung thử nghiệm đơn vị khác, do đó bạn sẽ có được cả hai thế giới tốt nhất nếu bạn quyết định rằng thử nghiệm của bạn có thể không nhất thiết được hưởng lợi từ cú pháp BDD.
  • Bài viết phát triển phần mềm Agile của Wikipedia là một bản tóm tắt tốt về phát triển phần mềm nhanh và cung cấp một số tài liệu tham khảo và liên kết hữu ích cho các bài viết của một số người được tôn trọng hơn trong cộng đồng phát triển.

Để cải thiện CÁCH LÀM VIỆC của bạn, bạn cần cho phép bản thân hoàn toàn cởi mở và sẵn sàng bước ra ngoài vùng thoải mái của mình để học cách cải thiện những điều bạn làm mà không cần bám vào một số khái niệm mà bạn có thể tìm thấy thoải mái hơn để treo lên Nói từ kinh nghiệm cá nhân, đây có lẽ là điều khó nhất để làm, hoặc để khuyến khích ở những người khác.

Thay đổi rất khó vào thời điểm tốt nhất, ngay cả khi bạn cảm thấy bạn đang tích cực tìm kiếm thay đổi, vì vậy lời khuyên tốt nhất mà tôi thực sự có thể cung cấp cho bạn là xem xét các phương pháp Agile khác nhau đã được phát triển trong nhiều năm qua để làm quen với các thực tiễn được coi là quan trọng nhất (ví dụ: Kiểm tra đơn vị, Tích hợp liên tục, Tái cấu trúc, v.v ...), sau đó chọn phương pháp có vẻ gần nhất với những gì bạn và nhóm của bạn sẽ cảm thấy thoải mái nhất. Khi bạn đã đưa ra quyết định của mình, hãy điều chỉnh các thực tiễn và quy trình phát triển của bạn sao cho phù hợp với cách nhóm của bạn thích làm việc, ghi nhớ những hiệu trưởng tinh gọn đó và cách bạn muốn làm việc để nhóm của bạn có thể tạo ra giá trị lớn nhất với ít lãng phí nhất Cuối cùng,

Nếu bạn cảm thấy các quy trình của mình chỉ cần điều chỉnh, nhưng bạn lo ngại rằng chuỗi công cụ của bạn không theo kịp nhu cầu của bạn, thì có lẽ nên tìm đến các cải tiến ở đó. Tối thiểu, một sản phẩm tích hợp liên tục (như Continuum, Cruise Control hoặc Hudson) và hệ thống Theo dõi sự cố (như Jira hoặc Redmine) nên được ưu tiên để giúp bạn tự động hóa một số quy trình xây dựng và phát hành của bạn, và để kiểm tra lỗi và yêu cầu tính năng của bạn.

Thực tế là cho dù quy trình của RAD có như thế nào, nếu bạn không đầu tư thời gian để làm mọi thứ "đúng" cho nhóm của mình, các vấn đề của bạn sẽ chỉ tiếp tục phát triển theo thời gian và nhận thức về thời gian khả dụng của bạn sẽ co lại cho phù hợp. Những thay đổi lớn thường không được đặt ra khi chịu áp lực thời gian lớn, nhưng hãy thử và tạo cho mình một "phòng ngọ nguậy" nhỏ để đặt các hệ thống vào vị trí để giúp bạn thực hiện các bước đi theo tầm nhìn của một nhóm về phương pháp lý tưởng.


Tôi đã đề cập đến nhóm của chúng tôi là nhóm các nhà phát triển "RAD" để nhấn mạnh thực tế rằng chúng tôi đang kinh doanh "Phát triển ứng dụng nhanh" trong đó các chu kỳ phát triển là rất ngắn. Vì vậy, không có gì để làm với các công cụ RAD hoặc IDE. Cảm ơn vì đã trả lời.
PeterT

@PeterT: À! Tôi xin lỗi vì sự hiểu lầm. Tôi phải đọc lướt đoạn 3 của bạn và bỏ lỡ bối cảnh. Tôi sẽ chỉnh sửa câu trả lời của mình cho phù hợp, tuy nhiên lời khuyên trong chính vẫn còn trong bối cảnh. :-)
S.Robins

2

Bất cứ khi nào tôi nghe về các khiếm khuyết, các câu hỏi đầu tiên của tôi là về nơi các khiếm khuyết bắt nguồn và nơi chúng được phát hiện và loại bỏ. Hiệu quả loại bỏ khuyết tật là một cách tốt để đo lường và theo dõi điều này. Bằng cách biết lỗi bắt nguồn từ đâu và làm việc để cải thiện các quy trình tại các giai đoạn đó, bạn có thể giảm thời gian và chi phí của một dự án. Người ta biết rằng rẻ hơn để sửa chữa các khiếm khuyết gần với điểm tiêm của họ, vì vậy một khi bạn biết các khiếm khuyết đến từ đâu, bạn có thể xem xét các thay đổi hoạt động để cải thiện các giai đoạn đó.

Khi bạn có thông tin về nơi các khiếm khuyết đến từ đâu, bạn có thể xem xét chính xác những kỹ thuật và công nghệ bạn muốn áp dụng. Đánh giá các yêu cầu, thiết kế và mã, kiểm tra tự động, phân tích tĩnh, tích hợp liên tục và thử nghiệm theo hướng người dùng mở rộng hơn có thể là các tùy chọn mà bạn nên xem xét, tùy thuộc vào giai đoạn nào tạo ra lỗi.

Để mở rộng mong muốn đánh giá mã, bạn cũng nên xem xét các cấp đánh giá mã khác nhau dựa trên mức độ ưu tiên và rủi ro của mô-đun. Rủi ro thấp, các mô-đun ưu tiên thấp có thể không cần xem xét mã, hoặc có lẽ chỉ cần kiểm tra bàn đơn giản, trong đó một nhà phát triển khác chỉ tự đọc mã và cung cấp nhận xét, sẽ hoạt động. Các kỹ thuật xem xét mã khác bao gồm lập trình cặp, hướng dẫn, phê bình và kiểm tra với nhiều nhà phát triển khác nhau.

Với mục đích quay trở lại, tôi sẽ tìm cách tự động hóa quá trình đó bằng cách sử dụng một số loại tập lệnh để làm cho nó nhanh hơn và ít bị lỗi hơn. Trong một thế giới hoàn hảo, tôi muốn tăng chất lượng của các sản phẩm được vận chuyển sao cho không cần phải quay lại và bạn có thể đạt được điều này. Có khả năng, mặc dù, có thể là một ý tưởng tốt, nhưng làm cho nó không đau đớn nhất có thể.


1

Như những người khác đã chỉ ra, việc thêm kiểm tra hồi quy sẽ giúp tránh các lỗi tương tự xuất hiện trong tương lai. Tuy nhiên, nếu bạn gặp phải các khiếm khuyết mới, thì có lẽ đã đến lúc thêm các xác nhận (còn gọi là hợp đồng) vào mã xác định các điều kiện trước, điều kiện sau và bất biến của các lớp và phương thức.

Ví dụ, nếu bạn có một lớp trong đó một phương thức chỉ có thể chấp nhận các số từ 10 đến 25 (đây được gọi là điều kiện trước), bạn sẽ thêm một câu lệnh khẳng định vào đầu phương thức. Khi xác nhận này thất bại, chương trình sẽ bị sập ngay lập tức và bạn sẽ có thể thực hiện theo chuỗi phương pháp dẫn đến thất bại đó.

Python, PHP và các ngôn ngữ lập trình khác được gõ động và không thêm nhiều điều kiện vào các phương thức. Tất cả những gì cần thiết cho một cái gì đó để làm việc là nó thực hiện một phương pháp cụ thể. Tôi nghi ngờ rằng bạn cần nhiều điều kiện hơn về phương pháp của bạn. Bạn cần xác định và kiểm tra để đảm bảo rằng một phương thức có thể thực sự hoạt động trong môi trường của nó.

Đối với các chương trình C / C ++, tôi thấy rằng việc thêm các xác nhận để kiểm tra cấp phát bộ nhớ là rất hữu ích trong việc giảm số lượng rò rỉ bộ nhớ trong chương trình.


Vâng, tôi đồng ý rằng việc xác nhận / kiểm tra bài / điều kiện trước là một thực hành lập trình tốt và cuối cùng sẽ được đền đáp, nhưng câu hỏi của tôi là nhằm cải thiện chất lượng của các bản phát hành rất thường xuyên, chứ không phải chất lượng của mã nói chung.
PeterT

Nó sẽ được đền đáp ngay lập tức vì bạn sẽ phải bắt đầu bằng việc thêm các xác nhận / kiểm tra điều kiện trong mỗi bản phát hành cho các tính năng mới / sửa lỗi. Sẽ là một nhiệm vụ lớn khi thêm các xác nhận vào toàn bộ dự án trong một lần; p
Rudolf Olah

Có một điều với các khẳng định mặc dù - điều gì sẽ xảy ra nếu nó sai. Điều gì sẽ xảy ra nếu chúng ta mặc dù phương thức chỉ chấp nhận các số trong khoảng từ 10 đến 25, nhưng trên thực tế, có thể mở rộng phạm vi lên [0; 50] và nó chỉ được tìm thấy sau khi bản phát hành mới được tung ra và được sản xuất cho ngày. Nếu một phương thức theo quesiton là một phương thức cấp thấp và được sử dụng ở nhiều nơi thì chúng ta không thể làm gì nhiều, nhưng để phát hành lại với một bản sửa lỗi. Tuy nhiên, nếu chúng tôi không thêm xác nhận ở cấp phương thức để sử dụng khối bắt thử cấp cao hơn thay vào đó chúng tôi có thể thoát khỏi chỉ với một phần chức năng ....
PeterT

... Không có sẵn vì vậy chúng tôi có thể mua cho mình một chút thời gian để thực hiện một bản phát hành "phù hợp" hoặc gọi nó là "bản phát hành theo lịch trình" một tuần sau đó. Tôi nghĩ rằng bạn nhìn thấy quan điểm của tôi. Cảm ơn bình luận của bạn.
PeterT
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.