Làm thế nào để bạn thường tiếp cận các vấn đề phụ thuộc quá độ xảy ra trong thời gian chạy trong các dự án phần mềm lớn?
Trong ba tuần qua, tôi đã cố gắng khởi động một thành phần của một phần mềm lớn bên trong một thành phần khác của phần mềm, nhưng nó bị chết liên tục do các vấn đề phụ thuộc quá độ chỉ được biết đến trong thời gian chạy.
Theo các vấn đề phụ thuộc quá độ, tôi có nghĩa là các phụ thuộc nhất định của các phụ thuộc của dự án nhất định xung đột với các phụ thuộc khác trong thời gian chạy, gây mất ổn định hoặc thất bại ngay lập tức.
Có hàng trăm, trên hàng trăm phụ thuộc được sử dụng và có khoảng 50 dự án con được liên kết với công cụ được các nhóm khác làm việc riêng rẽ, trong đó tất cả các mô-đun có các phụ thuộc lồng nhau sâu sắc. Không ai biết tất cả các dự án con được sử dụng để làm gì, với quy mô và mức độ phức tạp của dự án.
Trong tình huống này, bạn có cố gắng tạo ra một đại diện trực quan của DAG cho từng phụ thuộc của thành phần bị ảnh hưởng và cố gắng xác định nơi va chạm có thể xảy ra trong thời gian chạy không? Tôi không kiểm soát cách quản lý các phụ thuộc trong các dự án con khác và không thể thay đổi bất kỳ mã Java nào được viết bởi các nhà phát triển khác
Các giải pháp tôi đã đưa ra chỉ hoạt động trong một hoặc hai giờ và sau đó chúng ngừng hoạt động do những thay đổi trong các thành phần ngược dòng. Một ví dụ về một thành phần ngược dòng là một tạo tác mà dự án mà tôi đang làm việc phụ thuộc vào nó được xây dựng ở giai đoạn trước trong đường ống CI.
Theo yêu cầu của người khác , tôi sẽ đưa vào thông tin về công nghệ nào đang được sử dụng, có nguy cơ bị đóng câu hỏi vì cung cấp quá nhiều thông tin hoặc cơ thể trở nên quá dài:
- Maven được sử dụng để quản lý phụ thuộc; và
- Mùa xuân được sử dụng như một container DI;
- Hầu hết các vấn đề phụ thuộc liên quan đến bối cảnh đậu chồng chéo do bối cảnh của các mô-đun khác được tải vào thời gian chạy
- Sản phẩm hoạt động đúng, và có các thử nghiệm đơn vị và kiểm tra tích hợp để tránh sự đúng đắn về chức năng của chương trình
Nói chung, tôi đang tìm kiếm một cách tiếp cận bất khả tri về ngôn ngữ để xác định các cách giải quyết xung đột phụ thuộc mà không liệt kê thông qua tất cả các kết hợp có thể có của các phụ thuộc của dự án nhất định.
Tôi không thể tái kiến trúc dự án, thêm các cổng chất lượng bổ sung, thúc đẩy thay đổi mô hình trên toàn công ty hoặc chuyển đổi ngôn ngữ dưới dạng độ phân giải.