Khả năng bảo trì được của Kernel Linux P2.

5. KẾT QUẢ

 

Báo cáo kết quả của các tác giả khá chi tiết và phức tạp nên tôi không trình bày ra đây (chủ yếu chỉ là công thức, cách tính giá trị, làm tròn, vẽ biểu đồ … ). Sau đây là một số kết quả hiển thị trên biểu đồ.

 

Các common coupling thống kê được biểu diễn bằng đường đứt nét còn các đường dự báo couling được biểu diễn bằng đường liền nét. Các tên ví dụ Sys.c, printk.c là tên các file được khảo sát.

 

 

 

 

 

5.1 Lines of Code

 

Đường biểu diễn của lines of code (LOC) trên biểu đồ gần như là một đường thẳng tuyến tính với version numer.

 

5.2 Common Coupling

 

Một điều thể hiện rõ trên biểu đồ là đường biểu diễn common coupling của các module tăng theo dạng hàm mũ theo version number.

 

6. KẾT LUẬN

 

Sau khi làm những công việc khá “cày cuốc” như trên, họ rút ra hai kết luận chủ yếu sau đây:

 

Đầu tiên là phát hiện ra phụ thuộc tuyến tính giữa LOC và version number với độ chính xác đến 99.99%; 95.1% trong sự phụ thuộc đó có thể giải thích bởi ba tác động: version number, module và sự tương tác giữa chúng. Nói cách khác, số LOC trong mỗi kernel module tăng tuyến tính với version number, và không cần giải thích gì thêm nữa; đó là một đặc tính thừa kế của các successive version của Linux. Kết quả này cũng không gây ngạc nhiên, vì suy cho cùng các phiên bản kế tiếp của Linux cung cấp nhiều chức năng hơn nên code nhiều hơn cũng là hợp lý.

 

Thứ hai là phát hiện sự tăng theo dạng mũ giữa số common coupling với version number. Kết quả này cũng chính xác đến 99.99%. Trong trường hợp này, 94.6% có thể được giải thích bởi ba tác động: version number, module, và tương tác giữa chúng. Có nghĩa là, đường biểu diễn dạng mũ đó lại là đặc tính thừa kế của successive versions của Linux.

 

Trong phần 2, ta đã thấy được sự liên quan giữa common coupling và fault-proneness. Do đó, kết hợp với 2 kết quả các tác giả trên vừa thu được ta thấy một điều đáng lo ngại: Mặc dù số LOC trong kernel chỉ tăng tuyến tính, số thể hiện của common coupling giữa mỗi kernel module và tất cả các module khác của Linux lại tăng theo dạng mũ. Giả sử mỗi dòng lệnh được thêm vào một kernel module là một lời gọi đến một module khác, thì số thể hiện common coupling mới xuất hiện cũng chỉ được phép tăng theo dạng tuyến tính. Nhưng vì đặc tính clandestine common coupling đã được đề cập ở trên, common coupling tăng theo dạng mũ!

 

Common coupling đã xuất hiện trong Linux ngay từ những ngày đầu, và chẳng có gì phải nghi ngờ là nếu không được xây dựng lại với số common coupling tối thiểu thì trong tương lai nó sẽ tăng không hề chậm lại. Để có thể xây dựng lại một sản phẩm khổng lồ như vậy có nghĩa là việc phát triển Linux sẽ phải đình trệ trong nhiều tháng cho đến khi hòan tất việc “thay máu”. Mặt khác, nếu không tiến hành việc xây dựng lại thì vào 1 ngày nào đó, sự phụ thuộc giữa các module được common coupling tạo ra sẽ làm cho Linux rất khó để thay đổi một phần mà không tạo ra lỗi regression (tạm dịch là hồi quy) nằm đâu đó trong sản phẩm mà nhìn bên ngòai thì có vẻ chẳng liên quan gì đến. Kết quả là nếu đợi đến lúc đó mới xây dựng lại thì thậm chí công việc phải làm còn lớn hơn nhiều!

 

Nói chung, những thí nghiệm và kết luận trên có chiều hướng nghiêng về ủng hộ cho ý kiến của Ken Thompson. Tuy nhiên, không như những ý kiến “vô thưởng vô phạt” mà đại đa số người dùng đưa ra để bài xích Linux, các tác giả đã chỉ ra là những vấn đề về lâu dài của Linux có thể được ngăn chặn ngay từ bây giờ bằng cách tổ chức lại theo hướng giảm common coupling đến tối thiểu, và phải có một chế độ theo dõi cẩn thận để bảo đảm không xuất hiện thêm thể hiện nào của common coupling sau khi thực hiện việc tái tổ chức.

 

Đây cũng là một vấn đề chung cần được quan tâm trước khi quá muộn của tất cả các phần mềm mã nguồn mở.

 

 

Sun,Aug,14,2005

Đông Thao

 

 

Tài liệu tham khảo

 

Maintainability of the Linux Kernel — Stephen R. Schach, Bo Jin, David R. Wright, Gillian Z. Heller, A. Jefferson Offutt

About dongthao

The best things in life, they are free ... (Cry on my shoulder lyric)
This entry was posted in FOSS, Linux Tutorial. Bookmark the permalink.

Có 1 phản hồi tại Khả năng bảo trì được của Kernel Linux P2.

  1. Thanks for the great list with plugins, i have several favourites to, like the all known “All IN SEO “and also the easy privacy policy and also SEO friendly images (got some great results with it)and finally pretty links (great for cloacking) affiliate links…

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s