Table of Contents
Khi duy trì và cải thiện hệ thống kỹ thuật, các tổ chức thường phải đối mặt với một quyết định quan trọng: họ nên sửa đổi các thành phần hiện có hoặc viết lại hoàn toàn? hiểu được sự khác biệt, lợi thế và bất lợi của mỗi cách tiếp cận là thiết yếu để có những lựa chọn có hiểu biết về mục tiêu dự án và hạn chế tài nguyên. bài này cung cấp một khuôn khổ toàn diện để đánh giá các vụ trao đổi, sử dụng những ví dụ thực tế và những sự thấu hiểu thấu hiểu về các chuyên gia để hướng dẫn quyết định của bạn.
Hiểu được sự đền đáp
Đáp ứng bao gồm việc cải thiện các hệ thống hiện có mà không thay đổi chức năng chính của chúng. Mục tiêu tăng chất lượng mã, khả năng đọc và duy trì trong khi bảo tồn hành vi của hệ thống. phương pháp này thường được dùng để giảm các khoản nợ kỹ thuật và chuẩn bị hệ thống cho sự phát triển tương lai. Làm hài lòng không phải là thêm tính năng; mà là cải thiện cấu trúc nội bộ của mã để cho tương lai dễ dàng hơn, an toàn hơn và nhanh hơn.
Tăng cường và tăng cường mật mã có mùi
Đáp ứng mục tiêu thông thường "nhọc mùi mã" - chỉ thị khuôn mặt thường tương ứng với các vấn đề sâu hơn trong hệ thống. Thí dụ bao gồm các tính năng phân tích tĩnh và ID tương ứng với các tính năng tái tạo (v. d., thay thế, Thay thế, Phương pháp in, kéo lên) giúp tự động hóa nhiều biến đổi này.
Khi nào nên đền bù
Giải quyết hiệu quả nhất khi hệ thống hiện có vẫn còn âm thanh nhưng đã tích lũy nợ kỹ thuật vừa phải. Cũng thích hợp khi logic của doanh nghiệp là phức tạp và được mở rộng, như việc viết lại rủi ro mất đi kiến thức miền khó chịu. Đội thực hành tái tạo liên tục như một phần của chu kỳ phát triển (v. g., quy tắc "cậu bé trinh sát" thấy rằng các mã số vẫn còn khỏe mạnh và nhu cầu tái tạo lớn. Tính toán giảm thiểu rủi ro vì bạn có thể hiệu lực sửa chữa tính năng hiệu quả qua các thử nghiệm và hoạt động nhỏ.
Hiểu cách viết lại
Mặt khác, việc viết lại bao gồm việc phát triển một hệ thống mới từ đầu hoặc quá tải một cách đáng kể. Phương pháp này thường được chọn khi hệ thống hiện tại đã lỗi thời, quá phức tạp, hoặc không còn đáp ứng các nhu cầu kinh doanh nữa. Viết lại có thể cung cấp một khởi đầu mới, cho phép kiến trúc hiện đại và công nghệ được thực hiện. Tuy nhiên, nó cũng có nghĩa là bỏ đi những năm sửa chữa lỗi, tối ưu hóa, và kiến thức tập thể được chôn vùi trong mã cũ.
Phần mềm viết lại cho Greenfield
Một trường hợp viết lại xanh lá cây bắt đầu với một bảng trắng, xây dựng lại hệ thống trong một môi trường hoàn toàn mới. Điều này thường xảy ra khi nền tảng gốc đã cũ (v. d., di chuyển từ Cobol đến Java) hoặc khi hệ thống phải được sắp xếp lại hoàn toàn cho phép tính toán tính toán. Một verfield tái tạo lại dần các phần của hệ thống hiện có, trong khi giữ cho những phần khác hoạt động (một số khác chạy theo kiểu tượng tượng tượng tượng bằng ngón tay). Cách tiếp cận này giảm nguy cơ bị di trú theo giai đoạn.
Khi nào nên viết lại
Viết lại được hợp lý khi hệ thống hiện thời đạt tới điểm mà việc sửa đổi sẽ tốn kém hơn việc xây dựng lại. Chỉ thị bao gồm: cơ sở mã không thể kiểm tra được, cấu trúc ngăn chặn các thay đổi cần thiết (v. d., không thể được phóng to theo chiều ngang), hoặc chồng công nghệ không còn được hỗ trợ thêm nữa. Một trường hợp khác là khi mô hình kinh doanh đã thay đổi một cách đáng kể đến nỗi hệ thống di sản không thể thích nghi mà không thể hoàn chỉnh lại hoàn chỉnh. Viết lại cũng có thể là một chiến lược để có lợi thế cạnh tranh bởi việc áp dụng các mô hình nhỏ như dịch vụ hay máy phục vụ vô hạn.
So sánh rủi ro và phí tổn
Hiểu được những điều này giúp các nhóm điều chỉnh sự lựa chọn của họ với sự chấp nhận và chu kỳ ngân sách.
Yếu tố rủi ro
Để đáp ứng rủi ro:) rủi ro lớn nhất là việc sửa chữa không bao giờ hoàn tất nó trở thành một chu kỳ vô tận của những cải tiến nhỏ trong khi các vấn đề cơ bản vẫn tiếp tục. Một rủi ro khác là "làm hài lòng với mệt mỏi," khi đội mất động lực vì tiến bộ chậm và vô hình đối với người giữ cọc. Tuy nhiên, việc phục hồi thông thường có rủi ro thấp hơn vì mỗi thay đổi là nhỏ và có khả năng vượt qua.
rủi ro:) Lời cảnh báo nổi tiếng nhất đến từ bài báo của Joel Spolsky " Những gì bạn nên không bao giờ làm, phần I , nơi ông cho rằng việc viết lại thường dẫn đến việc vận chuyển một xe ngựa, thay thế tính năng kém kém hơn. Viết ra có thể mạo hiểm (hệ thống mới có thể mất nhiều thời gian hơn dự kiến), kiến (có thể có nguy cơ bị mất đi trong việc dịch, và có nguy cơ bị mất tích) (thông tin về sự di cư và các hệ thống khác.
Chi phí phân tích
Giải quyết chi phí theo thời gian. Một nghiên cứu của Viện Kỹ thuật Phần mềm cho thấy việc sửa chữa lỗi nào sau khi phát hành chi phí hơn là sửa chữa nó trong khi thiết kế nhưng sửa chữa lại có thể bắt gặp nhiều lỗi khi sớm bằng cách cải tiến bộ mã. Viết ra yêu cầu một đầu tư lớn: bạn cần phải tái phân tích, tái thiết kế, mã hóa và kiểm tra lại mọi thứ. Tổng giá trị của quyền sở hữu (TCO) cho một sự tái tạo vượt quá mức cần thiết hơn một chân trời hơn 3–5 năm, trừ khi hệ thống di sản thực sự không bền vững. Tuy nhiên, bạn có thể giảm chi phí hoạt động (v. d. d. d.: một đám mây hoạt động có thể tái tạo, một lần vận hành cơ sở hữu, đã triển.
Quyết định khung làm việc cho các nhà lãnh đạo kỹ thuật
Lựa chọn giữa việc sửa chữa và viết lại tùy thuộc vào những yếu tố khác nhau như sự phức tạp hệ thống, ưu tiên doanh nghiệp, nguồn tài nguyên sẵn có và mục tiêu lâu dài.
Sự phân tích sức khỏe hệ thống
Thực hiện một phân tích hệ thống của mã cơ sở dữ liệu sử dụng các số đo lường như sự phức tạp, mật độ mã, kết nối và mật độ của các khiếm khuyết. Công cụ như SonarQube hoặc CodeClimate có thể cung cấp dữ liệu khách quan. Nếu hệ thống này có khả năng duy trì không tốt nhưng logic của doanh nghiệp là đủ ổn định, điều kiện thích hợp có thể là đủ. Nếu cấu trúc cơ bản bị lỗi (v. d., mì spaghetti dạng khối u không thể tính theo mô phỏng), một hệ thống có thể cần thiết.
Mục tiêu làm ăn bị giới hạn
Nếu mục tiêu là tăng tốc sản phẩm trong quý tới, tính năng sẽ an toàn hơn. Nếu mục tiêu là vào một thị trường mới đòi hỏi một thị trường khác nhau hoặc tăng cường tính năng khác nhau, một bản viết lại có thể được hợp lệ. Tham gia chủ sản phẩm và các cổ phần đóng góp để làm rõ "tại sao" ví dụ, một người khởi động có thể chọn viết lại để quay lại nhanh chóng, trong khi một doanh nghiệp với hệ thống di sản quan trọng có thể thích sử dụng tính năng tái tạo để tránh thời gian giảm.
Hợp nhất về khả năng và sự hiểu biết về tổ chức
Giải mã phụ thuộc rất nhiều vào việc hiểu hệ thống đã tồn tại. Nếu tác giả gốc vẫn còn ở trên nhóm, việc sửa chữa sẽ hiệu quả hơn. Nếu cơ sở mã là hộp đen với tài liệu nhỏ, một bản viết lại có vẻ hấp dẫn- nhưng có nguy cơ lặp lại lỗi đã có. Trong trường hợp đó, hãy xem xét một « viết bằng cách bảo tồn »: xây dựng hệ thống mới song song, nhưng lấy các quy tắc kinh doanh từ mã cũ qua việc đọc cẩn thận và tự động kiểm tra trước khi bỏ hệ thống cũ.
Ví dụ thế giới thực
Xem xét cách các tổ chức khác định hướng lựa chọn này có thể cung cấp những sự hiểu biết thực tế.
Ví dụ: "Bầy cá ngựa"
Khi phát triển dịch vụ email này, nhóm của Ba Lan đã chọn phục hồi mã Rails thay vì viết lại từ đầu. Họ đã chiết xuất một cách có hệ thống logic miền vào các đối tượng dịch vụ, cải tiến việc kiểm tra, và loại bỏ mật mã đã chết. Điều này cho phép họ vận chuyển sản phẩm theo thời gian biểu trong khi giữ mã hóa. [FLT: 0] Đội đã ghi lại phương pháp của họ [FL:1], nhấn mạnh rằng cải tiến là chìa khóa để duy trì sự hiểu biết sâu sắc về các email xử lý.
Ví dụ:
Sách mới nhất, một công ty phần mềm kế toán, đã nổi tiếng thay đổi toàn bộ nền tảng của họ từ một ứng dụng PHP khối đá, sang một hệ thống hiện đại, có khả năng mở rộng. Quyết định đến sau nhiều năm đấu tranh với hiệu suất và hạn chế kiến trúc mà không thể sửa chữa được. Việc viết lại đã mất hơn 2 năm và chi phí hàng chục triệu đô la, nhưng nó cho phép họ phục vụ khách hàng lớn hơn và giảm chi phí hỗ trợ. CEO ghi nhận rằng việc viết lại là "điều khó khăn nhất mà chúng ta đã từng làm" nhưng nó cần thiết để kinh doanh tồn tại. [T: 0] Sau khi nó được viết ra, sau khi đã mất hàng chục triệu đô la, nhưng nó cho phép họ có thể nhấn mạnh tầm nhìn kỹ thuật và sự sắp xếp lại tầm nhìn kỹ thuật.
Ví dụ: sự phục hồi cộng đồng của Martin Hội
Martin Hội Nghị Địa Hạt, tác giả của sách có tính chất cao [FLT: 0], ông cho rằng phần lớn hệ thống có thể được cải tiến nếu các đội đầu tư tự động và liên tục kết hợp. Ông [FL: 1] đưa ra danh mục [FL:] cho thấy bất kỳ nhóm nào có thể áp dụng. Quan điểm của Hội nghĩ rằng việc soạn thảo nên là một biện pháp cuối cùng, không phải bản năng.
Kết luận: Chọn đúng
Cả hai cách sửa chữa và viết lại đều có chỗ của mình trong bộ quản lý hệ thống kỹ thuật. Một đánh giá cẩn thận về tình trạng cụ thể sẽ hướng các tổ chức hướng về chiến lược hiệu quả nhất, rủi ro cân bằng, chi phí và sự sẵn sàng trong tương lai. Đường dẫn đúng thường bao gồm một tổ hợp: bù đắp các phần có thể cứu chữa, và viết lại chỉ những thành phần nằm ngoài sự sửa chữa. Hãy dùng khung được liệt kê ở đây để đánh giá sức khỏe của bạn, tương đối với mục tiêu kinh doanh, và sự hiểu biết đòn bẩy. Bằng cách đưa ra một sự lựa chọn có hiểu biết đầy đủ, bạn có thể dẫn tổ chức của bạn đến những hệ thống mạnh mẽ hơn, hiệu quả và thích ứng mà hỗ trợ sự tăng trưởng không bị sập vào bẫy quá sớm hoặc tái tạo lại không ngừng hoặc không ngừng.