Trong tổng hợp: làm thế nào chúng ta sẽ duy trì các hệ thống di sản? [đóng cửa]


15

NEW YORK - Với một vụ nổ khiến tòa nhà chọc trời run rẩy, một ống hơi 83 tuổi gửi một thông điệp mạnh mẽ rằng dặm ống, dây điện và sắt bên dưới New York và các thành phố khác của Mỹ đang ngày càng già đi và có thể trở thành một cách nguy hiểm không ổn định.

Tháng 7 năm 2007 Câu chuyện về một ống hơi Burst ở Manhattan


Chúng tôi đã nghe nói về thối phần mềmnợ kỹ thuật .

Và chúng tôi đã nghe từ những người như:

Vì vậy, chắc chắn cộng đồng kỹ thuật phần mềm nhận thức được những vấn đề này.


Nhưng tôi cảm thấy như xã hội tổng hợp của chúng ta không đánh giá cao làm thế nào những vấn đề này có thể làm hỏng các hệ thống và ứng dụng làm việc.

Như Steve McConnell lưu ý :

... Không giống như nợ tài chính, nợ kỹ thuật ít được nhìn thấy hơn, và vì vậy mọi người dễ dàng bỏ qua nó hơn.

Nếu điều này là đúng và tôi tin là như vậy, thì tôi sợ rằng chính phủ và doanh nghiệp có thể trì hoãn việc bảo trì và củng cố thường xuyên chống lại tin tặc cho đến khi quá muộn. [Giống như NYC và các ống hơi.]


Câu hỏi của tôi:

  • Có cách nào để chúng ta có thể tránh phần mềm tương đương với NYC và ống hơi không?

Câu trả lời:


12

Một vấn đề quan trọng liên quan đến việc bảo trì các hệ thống cũ là thiếu những người a) tăng tốc trên các hệ thống đó và b) sẵn sàng tiếp tục duy trì chúng.

Gần đây tôi đã hỏi một câu hỏi dọc theo các dòng tương tự liên quan đến việc liệu các lập trình viên trẻ có quan tâm đến máy tính lớn hay không. Sự đồng thuận nghiêng về không.

Duy trì các hệ thống di sản được coi là tự sát nghề nghiệp. Trong rất nhiều công ty có quy tắc quán tính, có rất ít sự đầu tư vào đào tạo nhân viên để luôn đứng đầu các hệ thống đó, dẫn đến những điểm thất bại duy nhất về phía nhân sự. Rất nhiều người tôi biết, những người làm việc trên các hệ thống tương tự đang tìm kiếm các tuyến đường vì họ không thấy tương lai lâu dài trong các hệ thống và họ chỉ thấy bất lợi cho sự nghiệp.

Trong một số ngành công nghiệp, các quy định về xuất xứ dữ liệu có thể là một yếu tố chính đảm bảo rằng các hệ thống kế thừa được theo dõi hợp lý. Điều này đặc biệt là vấn đề trong ngành tài chính tôi nghĩ. Những quy định đó - theo như tôi biết - nói chung là có giới hạn thời gian.

Tuy nhiên, tôi nghĩ trong thực tế, điều sẽ xảy ra là:

Sẽ có một điểm trên biểu đồ trong đó chi phí cắt cho một hệ thống hiện đại hơn cho phép bạn định tuyến xung quanh những nhược điểm của hệ thống cũ sẽ giảm xuống dưới mức chi phí duy trì hệ thống cũ vì nó rẻ hơn.

Hiện tại IBM đang bán rất nhiều máy tính lớn và họ đang làm việc rất chăm chỉ để đảm bảo rằng các máy móc lớn của họ không loại bỏ được các chuyên gia trẻ tuổi. Nhưng tôi không nghĩ rằng nó đủ ở giai đoạn này. Họ có một số USP về lượng khí thải carbon và sức mạnh xử lý thực tế.

Tuy nhiên, với mỗi người sẽ mua máy tính lớn của IBM vì bạn có thể chạy Linux trên nó, nó tốn ít tiền điện hơn và hiệu quả cao, bạn sẽ có thêm một vài người sẽ chọn trang trại máy chủ vì họ quen thuộc với thế giới đó hơn và nhiều lập trình viên cũng vậy.

Cuối cùng rất nhiều phụ thuộc vào ngành công nghiệp liên quan. Tôi làm việc trong một ngành cụ thể đã phụ thuộc rất nhiều vào máy tính lớn trong nhiều năm và chúng vẫn được sử dụng rộng rãi. Nhưng các giải pháp lưu trữ đang trở nên phổ biến hơn, cho phép củng cố các kỹ năng trong các công ty lớn hơn - điều này loại bỏ một số vấn đề mà các công ty riêng lẻ gặp phải về các điểm thất bại - và ngoài ra, một số nhà cung cấp đang rất xem xét các giải pháp dựa trên máy tính lớn. cho những vấn đề cố hữu trong ngành công nghiệp đó.

Vì vậy, tôi đoán tóm tắt những gì tôi đang nói là, nói chung, sẽ có một động thái hướng tới di cư từ các hệ thống cũ ngay khi một điểm bảo trì kinh tế so với di cư rơi vào sự di cư. Tuy nhiên, nó sẽ phần lớn là vô hình đối với nhiều người vì nó không mới và vui nhộn và không có khuôn mặt rất công khai theo cách mà một điều lớn lao tiếp theo làm. Việc di chuyển đó có thể là các nhà cung cấp dịch vụ hoặc công nghệ mới hơn (đặc biệt là nơi các nhà cung cấp dịch vụ là những người bị ảnh hưởng trực tiếp).

Kinh nghiệm của tôi - đặc biệt là trong các mạng - là có một động thái để loại bỏ sự phụ thuộc vào các hệ thống cũ.


+1 cho việc từ bỏ những thứ chết tiệt. Tại một thời điểm nhất định phải trả 90 nghìn một năm cho hỗ trợ 24/7 và 250 nghìn / năm cho các lập trình viên cũ yếu, tất cả để duy trì một hệ thống có thông số kỹ thuật phù hợp với máy tính bỏ túi hơn máy chủ hiện đại, không còn ý nghĩa kinh doanh. Mọi người sợ thay đổi, nhưng thay đổi có thể là tốt. Máy tính lớn có một hốc. Đó là một ngách đẹp. Nhưng đó là tắt các quá trình không thể dễ dàng thực hiện song song. Tôi thấy công ty đặt dữ liệu tài chính của họ trên mới máy tính lớn, chỉ vì họ đang đắt tiền, và họ nghĩ rằng đắt tiền là tốt hơn, và nó chỉ là không đúng sự thật.
Satanicpuppy

1
trở thành anh chàng bảo trì cho hệ thống Cobol 30 tuổi thực sự là tự sát nghề nghiệp. Bạn không cần kỹ năng mới, vì vậy không có ngân sách đào tạo vì chỉ dành cho những thứ bạn cần cho công việc trong tay hoặc dự đoán (và dự đoán bạn sẽ tiếp tục làm việc đó mãi mãi). Bạn không bao giờ có được liên hệ với các công cụ và kỹ thuật mới, bởi vì không có sự phát triển nào đủ gần với hệ thống của bạn đang được bảo trì để có liên quan đến nó. V.v. Nếu sau 5 năm, bạn cố gắng kiếm một công việc khác bằng công nghệ hiện đại hơn, bạn bị xem là lỗi thời và đã qua, vì vậy bạn bị mắc kẹt.
năm11

12

Hầu hết các doanh nghiệp đã không biết gì về nợ kỹ thuật và thậm chí không nhận ra mọi thứ là tồi tệ cho đến khi nó sụp đổ theo nghĩa đen và khiến họ phá sản (nếu nó đã đến thời điểm đó). Tôi thực sự đã thấyĐiều đó xảy ra, và nó không đẹp; Điều làm cho nó tồi tệ hơn là thực tế tôi đã nhiều lần cố gắng làm cho các chủ doanh nghiệp nhận thức được về nợ kỹ thuật và nó sẽ phải được sửa chữa, và mỗi lần nó bị từ chối do không sẵn sàng dành thời gian và nguồn lực cần thiết để khắc phục nó Kết quả cuối cùng là sau hơn 10 năm, hệ thống cuối cùng đã thất bại thảm hại (sau khi tôi ra đi) và họ không thể phục hồi, và đã phá sản, vì họ quá ngu ngốc khi nhận ra rằng trong mười năm đó đã tiêu một chút tiền khắc phục vấn đề sẽ tốt hơn là bỏ qua nó hoàn toàn. Tôi có thể giận dữ hàng giờ về sự ngu ngốc ngớ ngẩn của công ty đó, và điều khiến tôi đau đớn nhất là nó có thể tránh được hoàn toàn nếu chủ sở hữu không chỉ ra để kiếm tiền nhanh chóng bằng cách cắt mọi thứ khác hoàn toàn.

Thật khó khăn khi cố gắng nói với một doanh nghiệp nếu hệ thống của họ được viết xấu và cần một số cấu trúc lại nặng nề (nếu không phải là viết lại hoàn toàn thường là như vậy bởi vì nó xấu). Hầu hết thời gian họ sẽ bắn hạ bạn ngay cả khi bạn cảnh báo họ rằng thật khó để thực hiện thay đổi hoặc thêm các tính năng mới (theo cách đúng, ý tôi là, không chỉ đặt nhiều thứ tào lao lên đống), hoặc thậm chí coi bạn là gây bất lợi cho doanh nghiệp vì bạn thấy vấn đề với hệ thống ở trạng thái hiện tại.

Tôi thành thật đi đến kết luận đó là một trận thua, và một trận không đáng để chiến đấu. Những người đủ thông minh để biết về nợ kỹ thuật không cần phải nói hai lần về nó và nhận thức được những nguy hiểm ngay từ đầu, và mọi người khác sẽ không nghe bất kỳ lý do hay cảnh báo nào cho đến khi quá muộn. Tùy chọn tốt nhất (và tất nhiên, không thực tế nhất) sẽ là để cho chọn lọc tự nhiên bắt đầu và để những người thiếu hiểu biết bị tuyệt chủng, chỉ còn lại những người thông minh. Tôi không biết cách xử lý nào khác nữa, bởi vì mọi thứ tôi từng thử trong quá khứ đều bị bỏ qua hoàn toàn, làm giảm giá trị của tôi trong mắt công ty (vì "phàn nàn") hoặc thậm chí dẫn đến việc tôi bị chấm dứt vì tôi "quá tập trung" vào việc sửa "cái gì không" tan vỡ và không ai khác có trạng thái tâm trí thích hợp để thấy nó bị phá vỡ.


3
+1 - hoàn toàn đồng ý và cũng khó thuyết phục mgmt có một vấn đề khi rất nhiều mgmt cũ là nhà phát triển sớm trong sự nghiệp của họ. Họ mang nó cá nhân khi bạn nói với họ mã được viết 15 năm trước sẽ không cắt giảm nữa - thay vì chấp nhận thay đổi thời gian và mã cũ cần được sửa đổi - họ đặt đầu lên cát và nói với bạn rằng bạn cần phải trở thành một người chơi trong đội, v.v.
MDV2000

7

Dặm ống, dây điện và sắt bên dưới New York và các thành phố khác của Mỹ đang ngày càng già đi và có thể trở thành một cách nguy hiểm không ổn định.

Đối với giai thoại, lập luận tương tự đã được đưa ra ở Paris trong thế kỷ 16-17. Vì vậy, nhiều lỗ và đường hầm đã được đào bên dưới nó (ngoài các lỗ tự nhiên do địa chất của khu vực) mà một tòa nhà thỉnh thoảng sẽ sụp đổ.

Vào thời điểm toàn bộ các khối thành phố sụp đổ xuống đất, các chỉ thị đã được đưa ra để lấp đầy các lỗ hổng và đường hầm không cần thiết bằng sỏi và xương (chúng cũng có vấn đề về nghĩa địa quá đông đúc). Thành phố tồn tại theo cách đó cho đến khi bê tông được phát minh.

Quan điểm của tôi ở đây là nhiều tổ chức có xu hướng chờ đến phút cuối để thực hiện bất kỳ bảo trì phần mềm nào, nhưng các lập trình viên (như kỹ sư dân sự) rất nhiều đã hoàn thành công việc, nhanh chóng và tốt.

Chúng tôi đã sống sót sau lỗi Y2k. Lỗi Y2036 sẽ buộc nhiều tổ chức nâng cấp phần cứng và phần mềm. Thế giới có thể kết thúc vào năm 2012. Nhưng các nhà khoa học máy tính không phải là nhà xã hội học hay nhà phê bình văn học .

Ồ, và như người ta vẫn nói: hãy viết mã như thể người duy trì tiếp theo là một kẻ tâm thần độc ác biết bạn sống ở đâu.


5
"viết mã như thể người duy trì tiếp theo là một kẻ tâm thần độc ác biết bạn sống ở đâu." - ý bạn là, tệ đến mức họ sẽ liếc mắt ra sau khi nhìn thấy nó? Rốt cuộc phải bảo vệ chính mình. Điều đó sẽ giải thích một số mã tôi đã thấy.
MSalters

Một cái gì đó như thế, vâng. : D
Denis de Bernardy

4

Tôi quên, những gì chúng ta xem xét mã di sản những ngày này? Mã năm ngoái, mã của thập kỷ trước hoặc mã của thế kỷ trước?

Tiền thúc đẩy cuộc trò chuyện xung quanh việc bảo trì các hệ thống cũ. Nợ kỹ thuật có hình thức như một chi phí gia tăng để thay đổi hệ thống.

Tôi đã làm việc với các hệ thống được thiết kế kém và được thiết kế thông minh. Điều thú vị là chi phí để duy trì chúng không thay đổi nhiều như vậy. Vấn đề lớn nhất là kiến ​​trúc không chính xác cho việc sử dụng hiện tại, thường xuất hiện trong các vấn đề mở rộng hoặc khi muốn có một thay đổi lớn. Bạn không dễ dàng chuyển đổi một khu vực chính của mã từ đơn luồng sang đa luồng.

Các vấn đề quan trọng nhất tôi gặp phải là các ngôn ngữ phát triển được sử dụng. Các hệ thống cũ hơn được viết bằng các ngôn ngữ ít phổ biến hiện nay, do đó bạn phải đào tạo nhiều hơn hoặc thuê các tài nguyên quý hiếm và đắt tiền hơn. Trong cả hai trường hợp, vì nhóm nhỏ hơn, bạn cũng phải vật lộn để tìm kiếm những cá nhân có kỹ năng có xu hướng dẫn đến nhiều vấn đề như giải pháp.

Đối với việc viết lại được hứa hẹn, hầu hết các hệ thống đã có khoản đầu tư lớn không biện minh cho việc viết lại. Thật đáng ngạc nhiên khi phần mềm có thể được duy trì hoạt động và nâng cao. Thay đổi phần cứng (một số hệ thống mà công ty tôi hỗ trợ sử dụng phần cứng chuyên dụng) có xu hướng là vấn đề lớn nhất của chúng tôi. Khả năng nâng cao thường chỉ bị giới hạn bởi các cơ chế để tích hợp mã kế thừa với các tính năng mới.


4

Đây đã là một vấn đề lớn. Và nó cho thấy không có dấu hiệu thay đổi.

Trong thập niên 60 và 70, các tổ chức lớn thuộc mọi thể loại đã chuyển từ làm kế toán trên giấy sang làm kế toán trên các hệ thống máy tính. Quá sức chịu đựng, họ đã chọn COBOL. Hầu hết vẫn đang sử dụng các phiên bản cập nhật của các hệ thống COBOL đó. Xem http://cis.hfcc.edu/faq/cobol để biết một số thống kê về điều này

Mỗi khi chúng ta thường nhận được những lời nhắc nhở ngẫu nhiên về điều này, chẳng hạn như khi Arnold Schwarzenegger phát hiện ra một vài năm trước rằng anh ta không thể đơn giản cắt giảm 200.000 công nhân nhà nước mà không cần 6 tháng phát triển trước tiên (xem http: //www.infoworld. com / d / developer-world / californiaias-cobol-conundrum-067 để xác minh).

Với những rủi ro của việc chuyển đổi, rất khó để biện minh cho việc thay đổi các hệ thống này. Không bao giờ. Đó là thực tế cho cuộc sống của tôi. Nhưng tôi thấy không có lý do gì để thực tế đó thay đổi trong cuộc đời của con tôi. Hoặc cuộc sống của con cái họ cũng vậy.

Tôi có những người bạn đã duy trì mã cũ hơn họ. Tôi có một người bạn quay trở lại một công ty 30 năm sau khi cô làm việc ở đó lần đầu tiên, để thấy rằng các chương trình của mình vẫn chạy, không thay đổi, trong một ngôn ngữ mà cô thậm chí còn không nhớ!

Hãy để tôi kết thúc với một câu chuyện có thật về những gì cả hai có thể xảy ra.

Vào những năm 1970, một công tyđược thành lập để cung cấp một thị trường trực tuyến cho các thương nhân. PDP-11 là một mức giá tốt / hiệu suất phù hợp với họ, vì vậy họ đã chọn nó. Họ đã đẩy các ranh giới hiệu suất của một cỗ máy, vì vậy họ đã viết hệ thống của họ trong tổ hợp PDP-11 được tối ưu hóa cao. Vài năm sau, PDP-11 ngừng bán. Tuy nhiên, việc kinh doanh rất tuyệt vời, các máy móc đã tồn tại và việc thay thế hàng cũ rất dễ dàng. Họ giữ nền tảng của họ. Một số năm sau đó, sự thay thế trở nên khó khăn hơn. Một dự án lớn đã được thực hiện để thay thế nền tảng giao dịch. Nó đã thất bại. Họ đã thử lại. Và lại thất bại. Một nguyên nhân chính của sự thất bại là không ai biết hệ thống giao dịch của họ hoạt động như thế nào và không ai có thể đọc lắp ráp PDP-11 nữa. Rồi cứu rỗi đánh. Ai đó đã tạo một trình biên dịch PDP-11 chạy trên Linux.

Do đó, vào năm 2000, các giao dịch kinh doanh hàng tỷ đô la / năm đã chuyển sang các máy Linux, qua cầu nối ethernet, để mô phỏng các máy PDP-11 thực hiện giao dịch trên hệ thống phần mềm được viết bằng PDP được tối ưu hóa cao 11 lắp ráp. Đối với tốc độ.

Tôi đã không có kết nối với công ty cho biết trong thập kỷ qua. Vì vậy, tôi không thể cho bạn biết liệu họ có còn chạy trên các PDP-11 giả lập hay không. Tôi biết rằng số thập phân đã làm giảm biên của họ một cách đau đớn, vì vậy họ đã có một nỗ lực khác để di chuyển. (Tôi chỉ biết được câu chuyện vì tôi đã phỏng vấn một số người đã bị sa thải từ đó và tôi đã hỏi chuyện gì đã xảy ra.) Tuy nhiên, với những thất bại trước đó, tôi sẽ cho nó tốt hơn cả những tỷ lệ mà họ đã không thay thế thành công hệ thống đó.


Các hệ thống chạy trong trình mô phỏng, (Và các lớp mô phỏng) chạy các ứng dụng quan trọng trong cuộc sống hiện nay. Thật dễ dàng để xác nhận một trình giả lập PDP-11 hoặc 6805 so với việc viết lại chương trình trình biên dịch kế thừa với khả năng tương thích chức năng được đảm bảo 100%. Đó là một cách hoàn toàn hợp lệ để giải quyết vấn đề đặc biệt này.
mattnz

@mattnz: Tôi tin rằng thời gian giao dịch tối thiểu của họ vào năm 2000 là 1 giây. Ngoài ra chi phí của họ cao hơn đáng kể so với đối thủ cạnh tranh của họ. Decimalization hạ thấp lợi nhuận của họ, do đó vòng sa thải dẫn đến việc tôi phỏng vấn một số người từ công ty. Họ chỉ sống sót bởi vì họ có lợi thế đầu tiên trong một trong số ít các loại ứng dụng mà Luật Metcalfe nắm giữ (đấu giá). Trong khi cá nhân các quyết định là hợp lý, kết quả cuối cùng đã được quyết định dưới mức tối ưu.
btilly

3

Âm thanh như một mối quan tâm rất chính hãng từ quan điểm của người dùng. Để mục nát bị trì hoãn, hoặc tốt hơn, tránh được, phần mềm được đề cập cần phải không có xiềng xích. Các nhà xuất bản của nó nên đặt mã nguồn miễn phí hoặc trong công việc duy trì và nâng cấp các nguồn cho đến khi người dùng cuối cùng ngừng sử dụng nó. Mặt khác, rất có khả năng họ có thể rời khỏi doanh nghiệp do các mục tiêu tương tự trong thế giới kinh doanh, do đó, để phần mềm hoàn toàn mở cho các mục.

Điều đó có nghĩa là, thời hạn của bản quyền phần mềm và hạn chế giấy phép nên rất ngắn, cuối cùng, phần mềm và cơ sở mã của nó đi vào phạm vi công cộng và ở đó. Do đó, làm cho người dùng có thể tiếp tục nâng cấp các nguồn hoặc thuê một người nào đó để làm điều đó, do đó, trì hoãn và / hoặc tránh các mục nát.

Hoặc, nếu bạn có một chút cởi mở với ý tưởng về phần mềm miễn phí, bạn có thể viết chương trình của mình theo giấy phép miễn phí như AGPL hoặc GPL hoặc giấy phép phần mềm miễn phí khác. Từ những gì tôi đã thấy, khi các nguồn của một phần mềm không thu hút được sự quan tâm của các nhà phát triển để cải thiện nó vì bất kỳ lý do gì, cơ sở nguồn sẽ bị mất quyền và có được cuộc sống mới. Các gói trong hệ điều hành Debian có xu hướng theo vòng đời này, theo như tôi đã thấy.


1
+1 Ít nhất một tầm nhìn làm thế nào vấn đề có thể được giải quyết bằng cách làm cho phần mềm miễn phí sau một thời gian nhất định và hy vọng rằng cộng đồng sẽ giải quyết vấn đề. Tuy nhiên tôi nghi ngờ rằng điều này có thể trở thành hiện thực vì vấn đề tài chính
k3b

Phần mềm miễn phí hay không, làm thế nào để ngăn chặn sự thối rữa luôn có thể được thực hiện. Đó là lĩnh vực kỹ thuật, sau tất cả. Có hay không việc thối rữa sẽ luôn là câu hỏi đối với doanh nghiệp.
vpit3833

2

Đã hỗ trợ một loạt các ứng dụng của chính phủ và công nghiệp tư nhân, tôi sẽ nói rằng hầu hết các công ty và ít nhất là Chính phủ Hoa Kỳ nhận thức rõ về sự nguy hiểm của việc để mã bị thối rữa và không đi đầu trong các xu hướng bảo mật mới nhất.

Chúng tôi thường xuyên phải có được phần mềm được chứng nhận về các mức độ nhạy cảm khác nhau và hầu hết các hệ thống điện tử của chính phủ, ngay cả những hệ thống cũ, nhận được cập nhật thường xuyên để giữ an toàn cho chúng.

Tất nhiên cũng có trường hợp ngoại lệ, và tin tặc luôn luôn di chuyển, nhưng về tổng thể tôi nghĩ mọi người khá biết rằng bạn không thể ném thứ gì đó ra khỏi đó và không bao giờ chạm vào nó nữa.


1

Cảnh báo: Đây sẽ là một dạng tự do ...

Tôi nghĩ có 2 cách để xem xét mối quan tâm của bạn.

Nếu bạn nghĩ về nó, một số tàu con thoi và vệ tinh đã chạy cùng một mã ban đầu đã đưa ra chúng. Mặt khác, một số đã được thiết kế để được cập nhật ngay cả khi chúng ở (rất) từ xa.

Vấn đề là môi trường. Rõ ràng, miễn là bạn không sửa đổi môi trường, mã của bạn sẽ không bị lỗi thời. Trong trường hợp này, thối mã không thực sự tồn tại: bản thân mã (hoặc nhị phân được sản xuất) không thể thối. Nó có thể vỡ nếu bạn bắt đầu tấn công nó từ một góc độ hoàn toàn khác. Không phải là nó mục rữa, mà là nó không thích nghi với môi trường của nó. Hãy nghĩ về nó như là một vấn đề tiến hóa.

Nhưng môi trường của chúng ta thay đổi. Và bằng cách nào đó, chìa khóa cho vấn đề của bạn cũng là giải pháp. Môi trường của chúng ta thay đổi quá nhanh, đến nỗi ngày nay chúng ta sẽ không mong đợi một giải pháp phần mềm sẽ không phát triển theo thời gian. Chúng tôi bỏ qua các dự án phần mềm chưa được cập nhật trong năm qua và sẽ than vãn về hỗ trợ khách hàng và sản phẩm không tạo ra lộ trình rõ ràng. Và ngay cả khi điều này hoạt động tốt - bạn có được lộ trình rõ ràng, hỗ trợ tốt, cập nhật thường xuyên ... - luôn có cơ hội rằng một kẻ thách thức sẽ xuất hiện, với sự tăng trưởng theo cấp số nhân. Chúng ta thường mắc sai lầm khi nghĩ rằng các công ty lớn được thành lập sẽ luôn chiếm ưu thế, chính xác là vì họ thống trị. Tuy nhiên, giống như cách mà yếu tố chi phối trong đàn già đi, phần mềm / phần cứng siêu lớn / bất cứ nhà cung cấp nào cũng già đi. Hoặc chỉ là một chút lười biếng. Và một kẻ thách thức bước vào và biến mọi thứ xung quanh nhanh hơn cả sự thống trị đã được thiết lập có thể đã làm điều đó 5 hoặc 10 năm trước. Hoặc người thống trị sẽ chỉ đánh bại tốt, hầu như không sống sót trong khi chúng ta thấy sự gián đoạn trên thị trường (nói về kinh tế, với các tác động trên các lĩnh vực khác nhau), và sau đó mọi thứ sẽ tiếp tục. Có thể điều đó có vẻ không hoàn hảo, nhưng bản thân nó là một quá trình hữu cơ.

Vì vậy, từ góc độ của người dùng, tôi đoán vấn đề không phải là lớn. Việc quay mã sẽ không xảy ra theo quan điểm của người dùng, vì anh ta sẽ sử dụng một giải pháp thay thế (có thể với sự chuyển đổi / di chuyển liền mạch ... hy vọng).

Bây giờ giả sử chúng ta không nhìn thấy mọi thứ từ quan điểm của người dùng, hoặc chúng ta đang nói về một hệ thống miễn dịch - vì những lý do chưa biết, phát triển chính phủ, du lịch spac, v.v ... - để cạnh tranh và thực sự được cho là để được xây dựng để sống / tồn tại trong một thời gian rất dài, chúng ta cần xem xét các văn bản mà bạn tham chiếu. Và có lẽ một số tài liệu thêm về các hệ thống đáng tin cậy và hệ thống chịu lỗi. Mặc dù chúng tôi có thể muốn đẩy xa hơn. Chúng tôi không chỉ muốn chịu lỗi, chúng tôi muốn các hệ thống tiến hóa.

Vấn đề với sự tiến hóa, là nó giới thiệu những thay đổi, và những thay đổi giới thiệu những điểm thất bại. Bây giờ chúng ta hãy xem xét những điều này và những gì chúng ta có thể làm để giải quyết chúng.

Chúng ta vẫn có thể dựa vào phép ẩn dụ về cơ sở hạ tầng / kiến ​​trúc / kiến ​​trúc trong khi chúng ta làm như vậy (xét cho cùng, tất cả chúng ta đều là kỹ sư phần mềm, mặc dù hiện tại không có thứ gì gọi là kỹ thuật phần mềm ... Có một lý do trong khi hệ thống ống vẫn hoạt động (với một số trục trặc), trong khi Big Ben vẫn hoạt động (với một số trục trặc) hoặc Tháp Eiffel vẫn đứng. Đó là bởi vì chúng tôi làm với các yếu tố quan trọng (hoặc không quá quan trọng) của cơ sở hạ tầng, điều chúng tôi nên làm với phần mềm cũng vậy: kiểm tra liên tục. Những thực thể này không nhất thiết được thiết kế để tồn tại lâu dài, nhưng đã được hưởng lợi từ sự giám sát vĩnh viễn và cải tiến và sửa chữa kịp thời khi cần thiết. Gọi đó là hotfix của bạn nếu bạn muốn.

Mặt khác, một số thiết kế có ý nghĩa kéo dài và chạy bền bỉ mà không bị gián đoạn, thậm chí biết rằng việc kiểm tra liên tục sẽ không thể thực hiện được. Trong trường hợp này, chúng tôi hướng tới thiết kế tốt và các mô hình chính thức. Các yếu tố của độ tin cậy (Tính khả dụng, Độ tin cậy, An toàn, Tính toàn vẹn, Khả năng duy trì) có thể được định lượng - cho một môi trường nhất định. Số liệu thống kê làm phần còn lại để lập kế hoạch cho phần còn lại và tương lai. Điều này mang đến câu hỏi: chúng ta thậm chí có thể xây dựng các hệ thống sẽ tiến hóa, theo nghĩa thực không?


0

Jeff Langer trong Clean Code hỏi một câu hỏi tương tự ... mà không cần tham khảo các ống hơi :)

Điều gì xảy ra nếu có bốn quy tắc đơn giản mà bạn có thể tuân theo sẽ giúp bạn tạo ra các thiết kế tốt khi bạn làm việc? Điều gì sẽ xảy ra nếu bằng cách tuân theo các quy tắc này, bạn đã hiểu rõ hơn về cấu trúc và thiết kế mã của mình, giúp việc áp dụng các nguyên tắc như SRP và DIP dễ dàng hơn? Điều gì nếu bốn quy tắc này tạo điều kiện cho sự xuất hiện của các thiết kế tốt?

Nhiều người trong chúng ta cảm thấy rằng bốn quy tắc Thiết kế đơn giản của Kent Beck là những trợ giúp đáng kể trong việc tạo ra phần mềm được thiết kế tốt.

Theo Kent (trong Extreme Lập trình giải thích), một thiết kế là đơn giản, nếu nó tuân theo các quy tắc sau:

  • Chạy tất cả các bài kiểm tra
  • Không chứa sự trùng lặp
  • Thể hiện ý định của lập trình viên
  • Giảm thiểu số lượng các lớp và phương thức

Để chạy tất cả các bài kiểm tra ... chúng tôi cần chạy thử và đó là một chỉ số rất lớn về nợ kỹ thuật. Ví dụ: nếu có 10.000 trường hợp thử nghiệm trong một hệ thống như Trung tâm Chất lượng Sao Thủy và không có thử nghiệm nào trong số đó được tự động hóa, thì đó là một chỉ số rõ ràng về khoản nợ kỹ thuật đã được xây dựng.

Và đó là nơi Feathers và cuốn sách "Làm việc hiệu quả với Bộ luật kế thừa" của ông xuất hiện.


5
ngay cả khi các bài kiểm tra được tự động hóa, đó vẫn là nợ kỹ thuật - những bài kiểm tra đó không duy trì chúng!
gbjbaanb
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.