Như mọi người thường rất nhanh chóng chỉ ra, một trong những lợi ích của phần mềm là nó được cho là dễ dàng và tương đối rẻ để thay đổi so với phần cứng. Điều này đặc biệt quan trọng khi bạn nhận ra muộn rằng bạn đã có một cái gì đó sai về cơ bản. Làm tương tự với phần cứng và bạn mất một triệu đô la, vì vậy như bạn đã nói, bạn sử dụng trình giả lập của mình, v.v. và bạn kiểm tra bazeda từ nó. Điều này tôi nghĩ là nơi mô hình thất bại phần nào khi bạn chuyển sang phần mềm.
Hãy đi vào đầu của nhà phát triển phần mềm trung bình và những gì bạn có là một người rất bận rộn với thời hạn cực kỳ chặt chẽ. Người quản lý của anh ta nói rằng không sao để lại một vài lỗi vì bạn luôn có thể sửa nó sau. Các thử nghiệm thường là một suy nghĩ, nhưng ngay cả trong kịch bản hướng đến thử nghiệm, các thử nghiệm được giữ ở mức tối thiểu và mã được viết ở mức tối thiểu của các thử nghiệm và thường được thực hiện các phím tắt để có thể bỏ qua nhiều trường hợp ranh giới. Hệ thống có thể được kiểm tra kỹ lưỡng đơn vị nhưng hiếm khi được kiểm tra nghiêm ngặt nói chung, và hiếm khi căng thẳng được kiểm tra ở bất kỳ mức độ lớn nào. Thêm vào đó là bạn viết phần mềm từ đầu, và có rất ít cơ hội để mô phỏng phần mềm trước khi bạn cam kết viết nó, chủ yếu vì chúng tôi hiếm khi viết phần mềm từ cùng một khối xây dựng hạt mịn mà bạn sẽ tìm thấy trong phần cứng.
Quay lại câu hỏi của OP. Bạn có thể định nghĩa một hệ thống các khối xây dựng để lấy toàn bộ phần mềm của mình không? Có thể. Nó sẽ rất hiệu quả chi phí? Có lẽ là không, bởi vì đến lúc bạn bắt đầu phát triển một hệ thống đủ các thành phần, thử nghiệm và các vật liệu khác để hỗ trợ lý tưởng nàyHệ thống lập trình, bạn sẽ thấy rằng sự cạnh tranh của bạn đã đánh bại bạn trên thị trường, và thậm chí tệ hơn, từ quan điểm của lập trình viên trung bình, bạn có thể sẽ thấy một hệ thống lập trình kiểu "cắt cookie" rất hạn chế và rất có thể rất nhàm chán. Cá nhân tôi làm việc trên một API, trong đó phần lớn mã mô-đun đã được tinh chỉnh và chuẩn hóa hoàn toàn, tất cả những gì tôi làm bây giờ là tạo một mẫu mã và điền vào chỗ trống. Hầu hết thời gian của tôi có thể được dành để viết mã trình kết nối đơn giản và đưa các mô-đun ra khỏi cửa càng nhanh càng tốt. Đó là suy nghĩ nghiêm túc. Có rất ít cơ hội để làm nhiều hơn là chỉ viết mã các loại tương tự lặp đi lặp lại, vì vậy khi một cơ hội dự án khác xuất hiện, tôi nhảy vào cơ hội để có thể làm BẤT CỨ điều gì khác.
Vì vậy, làm thế nào bạn có thể nhận được để cung cấp phần mềm chất lượng cao và có nhiều yếu tố, nhưng thực sự thích bản thân bạn làm điều đó? Tôi tin rằng điều này tùy thuộc vào sự lựa chọn của bạn về các công cụ và phương pháp. Đối với tôi, câu trả lời là sử dụng API BDD tốt, bởi vì nó đã cho phép tôi tạo mã rất dễ đọc nhưng rất chi tiết. Tôi có thể xây dựng một bộ thử nghiệm trong số ít phương pháp có thể sử dụng lại và mô tả các thử nghiệm của mình bằng ngôn ngữ của thông số kỹ thuật. Theo cách này, tôi đến gần với cách tiếp cận phát triển nhiều thành phần hơn, ngoại trừ thực tế là tôi chịu trách nhiệm thiết kế và kiểm tra các khối xây dựng. Ngoài ra, đầu ra kiểm tra xác định chính xác phần chính xác của thử nghiệm khi xảy ra lỗi, do đó tôi không phải đoán xem các lỗi đó có nằm trong thiết lập hay xác nhận hay không.
Điều chỉnh phương pháp của bạn cũng giúp. Tôi là một người ủng hộ lớn cho việc áp dụng các hiệu trưởng phát triển tinh gọn, và kết hợp chúng với nhiều kỹ thuật và hiệu trưởng khác mà phong trào Agile đã gây tiếng vang trong nhiều năm nay. Việc loại bỏ hầu hết các thực hành lãng phí mà tôi từng thấy rất bực bội đã giúp ích rất nhiều để phát triển thành một hoạt động thú vị hơn. Đôi khi tôi vẫn gặp phải vấn đề đó - nhưng hy vọng không quá thường xuyên - các lỗi sẽ xuất hiện trong mã của tôi, tuy nhiên giờ đây tôi thấy mình có nhiều thời gian hơn và thậm chí còn có nhiều động lực hơn để dành nhiều thời gian hơn để viết các bài kiểm tra mạnh mẽ hơn và nhắm tới 100 % Kiểm tra vùng phủ sóng. Thậm chí tốt hơn, cảm giác thực sự tuyệt vời khi thấy tất cả những ánh sáng màu xanh lá cây đó xuất hiện vào cuối ngày của tôi,