Chủ Nhật, 15 tháng 4, 2012

Vòng đời tính năng và những đặc tính của mô hình phát triển nguồn mở


Trong số tháng 03/2012 của tạp chí Tin học & Đời sống, chúng ta đã làm quen với mô hình phát triển phần mềm tự do qua bài Tìm hiểu mô hình phát triển phần mềm tự do nguồn mở”. Trong số này, chúng ta sẽ làm quen với vòng đời tính năng và những đặc tính của mô hình phát triển này.
A. VÒNG ĐỜI TÍNH NĂNG CỦA NGUỒN MỞ
1. Qui trình yêu cầu tính năng
Các yêu cầu tính năng thường được theo dõi và được ưu tiên bằng việc sử dụng các qui trình nhìn thấy được đối với phần còn lại của cộng đồng phát triển. Điều này đảm bảo cho một sự hiểu biết chung về những tính năng nào đã được yêu cầu, ưu tiên tương đối của chúng, tình trạng phát triển của chúng, các lỗi và các rào cản có liên quan, và khi nào chúng được lên kế hoạch để phát hành.
Hình 2: Vòng đời của tính năng trong mô hình phát triển nguồn mở
Hình 3: Dòng chảy của mã nguồn từ những người đóng góp cho tới phiên bản dòng chính cho tới thị trường
Hình 3 chỉ ra qui trình đặc trưng được sử dụng để đảm bảo rằng các yêu cầu tính năng được theo dõi, được ưu tiên, được phát triển và được phát hành một cách tỉ mỉ chính xác.
Các yêu cầu tính năng có thể bắt đầu bằng một đề xuất tới một danh sách thư, một thảo luận trên trình chat có độ trễ trên Internet IRC (Internet Relay Chat), hoặc như một yêu cầu tính năng trong một chương trình quản lý lỗi phát sinh bugzilla của dự án. Yêu cầu đó thường được ai đó thực hiện mà người đó thường là người dẫn dắt triển khai công việc đó. Mục đích của yêu cầu là để lưu ý cho những người khác về nhu cầu, đề xuất xin ý kiến phản hồi, có được sự chấp nhận cho ý tưởng, và đi tới được một sự đồng thuận trong các bước tiếp sau.
Những người đóng góp và những người duy trì dự án sau đó đánh giá yêu cầu đó, và xác định liệu nó có nên là một ứng viên cho một phát hành trong tương lai hay không. Sẽ thường có những thảo luận giữa người đưa ra yêu cầu và cộng đồng phát triển để làm sáng tỏ các nhu cầu và các yêu cầu. Nếu yêu cầu được chấp nhận, thì một phát hành đích sẽ được thiết lập, và sự phát triển bắt đầu.
2. Thảo luận về kiến trúc và thiết kế
Một trong những yếu tố đóng góp chính cho thành công của mô hình phát triển nguồn mở là sự minh bạch của nó, và khả năng dàn xếp sự cộng tác phân tán giữa các đội dự án. Điều này được hoàn thành bằng việc sử dụng các phương pháp giao tiếp truyền thông có khả năng truy cập được đối với tất cả mọi người trong cộng đồng của dự án để đưa ra quyết định chiến lược, những thảo luận về kiến trúc và rà soát lại mã nguồn.
Các danh sách thư là một trong những kênh giao tiếp thường được sử dụng nhất vì chúng là tự ghi thành tài liệu, minh bạch, và thường bất kỳ ai có liên quan trong dự án đều có thể tham gia. Điều này bao gồm cả những người sử dụng đầu cuối, những người có thể đang giám sát các danh sách để hiểu được các tính năng trong tương lai khi chúng tiến hóa hoặc để đưa ra những ý kiến phản hồi thực tế.
Bổ sung thêm vào với các danh sách thư của dự án, nhiều đội phân tán sử dụng IRC cho thảo luận trực tiếp và các cuộc gặp. Vì bản chất tự nhiên chỉ là văn bản của nó, IRC là hữu dụng cho các cuộc gặp về thiết kế và hỗ trợ của những người sử dụng, đặc biệt khi mà tiếng Anh không phải là ngôn ngữ đầu tiên được nói của tất cả những người tham gia.
3. Cộng tác trong triển khai
Mô hình phát triển nguồn mở nhấn mạnh mạnh mẽ vào sự phát triển cộng tác và rà soát lại ngang hàng, từ ý tưởng đầu tiên cho tới sự chấp nhận cuối cùng. Vì nó có liên quan trong việc hỗ trợ cho các đội được phi tập trung hóa cao độ, nơi mà những người đệ trình không phải tất cả đều được rõ về cá nhân những người duy trì, nên mô hình này có lợi cho những ai làm việc với những người khác về thiết kế và triển khai trong khi vẫn giao tiếp được rõ ràng với các kế hoạch của họ.
Bổ sung thêm, hầu hết các dự án nguồn mở sử dụng các công cụ đã tiến hóa để hỗ trợ đóng góp mã nguồn từ nhiều cộng tác viên phân tán và cùng một lúc. Ví dụ, hệ thống kho git nguồn mở đã được tạo ra đặc biệt để hỗ trợ cho sự phát triển của Linux, nơi mà hàng ngàn người đóng góp đang đệ trình mã nguồn cho bất kỳ phát hành nào được đưa ra. Mỗi lập trình viên làm việc để phát triển, dò tìm lỗi, xây dựng, và kiểm tra tính hợp lệ mã nguồn của riêng họ so với cơ sở mã nguồn hiện hành, sao cho khi tới thời gian để tích hợp vào dự án dòng chính, thì những thay đổi của họ áp dụng rõ ràng được và với một số nỗ lực hòa trộn tối thiểu. Nếu có một vấn đề chưa được thấy trước với mã nguồn, thì bất kỳ sự đề xuất cá nhân nào cũng có thể dễ dàng được đưa trở về tình trạng cũ trước đó.
4. Đệ trình mã nguồn
Vòng đời của một đệ trình mã nguồn mới, được minh họa trong Hình 4, thường hay là lặp đi lặp lại.
Qui trình này bắt đầu với sự phát triển cộng tác trong một tập hợp phụ các lập trình viên, những người đã nắm lấy quyền sở hữu cho việc đưa ra tính năng đó. Khi mã nguồn hoạt động và áp dụng một cách sạch sẽ so với dự án dòng chính, thì đội dự án đệ trình mã nguồn đó cho một người duy trì dự án qua danh sách thư của dự án.
Hình 4: Dòng chảy đặc trưng của mã nguồn từ người đóng góp cá nhân tới phiên bản dòng chính
Người duy trì và những người tham gia khác của dự án có thể đưa ra những ý kiến phản hồi về sự đệ trình và từ chối chấp nhận nó, trong trường hợp đó thì đội triển khai có thể sẽ rà soát lại và đệ trình lại mã nguồn đó.
Vì các bản vá nhỏ hơn là dễ dàng hơn để hiểu và kiểm thử, những người đệ trình thường được khuyến khích đệ trình những thay đổi nhỏ nhất có thể từng tí một. Những bản vá nhỏ hơn ít có khả năng gây ra những hậu quả ngoài ý muốn, và nếu chúng có, thì việc có được lý do gốc rễ của một vấn đề là dễ dàng hơn nhiều.
Khi người duy trì chấp nhận mã nguồn được đệ trình, thì nó sau đó sẽ được tích hợp vào trong cây phát triển của anh hoặc chị ta. Trong một dự án lớn, nhiều lớp, thì người duy trì có thể sau đó sẽ có trách nhiệm cho việc đệ trình nó cho những người duy trì bổ sung tiếp theo lên trên cây. Khi mã nguồn đã được người duy trì cao nhất phê chuẩn, thì nó sẽ được tích hợp cho sự phân phối trong phát hành dòng chính.
5. Kiểm thử và tích hợp liên tục
Vì công việc có thể là phân tán cao độ, mô hình phát triển nguồn mở đặt sự nhấn mạnh vào việc dò tìm ra các vấn đề sớm và sửa chúng nhanh chóng. Nhiều dự án lớn hơn tạo ra những bản xây dựng theo qua đêm và theo tuần có sử dụng một bộ xây dựng tự động, đánh giá mã nguồn sớm nhất có thể sau khi tích hợp.
Bổ sung thêm vào các bộ xây dựng tự động, một số dự án cũng tạo ra các bộ kiểm thử tùy biến để dò tìm ra các vấn đề về chức năng khi chúng xảy ra trong quá trình phát triển tích cực. Những bộ kiểm thử này thường cũng là nguồn mở nốt.
Mô hình phát triển nguồn mở có lợi cho những thay đổi nhỏ, từng tí một, mà có thể làm cho việc chuẩn đoán các vấn đề xây dựng, các lỗi, các lỗ hổng an ninh, và những hồi qui giật lùi dễ dàng hơn nhiều. Điều này đảm bảo rằng mã nguồn mở không ảnh hưởng tới sự tập trung tổng thể của dự án vào mã nguồn an ninh và chất lượng cao.
6. Phát hành mã nguồn
Với một ít ngoại lệ, các dự án sử dụng mô hình nguồn mở tạo nên hình ảnh chụp nhanh ổn định của phát hành mới nhất và cây phát triển sẵn sàng hiện hành. Điều này giúp đảm bảo rằng những người sử dụng có thể tìm kiếm để sử dụng được phát hành ổn định gần nhất, trong khi các lập trình viên có thể làm việc từ mã nguồn hiện hành nhất.
Những thực tiễn quản lý phát hành là khác nhau từ dự án này sang dự án khác, nhưng hầu hết đều đề cử một cá nhân hoặc đội để đánh giá độ chín của các tính năng trong cây phát triển, và giám sát các đo đếm về đảm bảo chất lượng (QA). Khi các tiêu chí của phát hành đạt được, thì đội này sẽ công bố phát hành đó là hoàn thành và phân nhánh cho cây phát triển.
B. NHỮNG ĐẶC TÍNH CỦA MÔ HÌNH PHÁT TRIỂN
1. Chu kỳ phát triển đan xen
Mô hình phát triển nguồn mở được đặc trưng bằng một loạt các qui trình đan xen, chúng liên tục cải thiện chất lượng của mã nguồn, thay vì một sự tiến bộ chính xác tuyến tính tới một phát hành. Không giống như “sự khám phá to lớn” thường đi kèm với mô hình phát triển phần mềm truyền thống, mô hình nguồn mở khuyến khích sự phát triển các tính năng liên tục và độc lập. Điều này cho phép những tính năng mới được tích hợp khi chúng sẵn sàng, mà tới lượt nó cho phép những lập trình viên khác xây dựng được trên chúng nhanh hơn và sản sinh ra một sản phẩm cạnh tranh hơn.
2. Phát hành sớm và thường xuyên
Phát hành sớm và thường xuyên” tham chiếu tới thực tế phát triển của việc xuất bản mã nguồn alpha cho cộng đồng phát triển để rà soát lại tốt trước phát hành cuối cùng. Điều này làm cho sự phát triển lặp đi lặp lại cao độ, và giảm tối thiểu số thay đổi giữa các phát hành trong sự phát triển, làm cho những sự thoái lui và những chỗ đứt đoạn dễ dàng hơn để chuẩn đoán.
Triết lý phát hành này cho phép sự rà soát lại ngang hàng liên tục, nơi mà tất cả các thành viên của cộng đồng có cơ hội bình luận và đưa ra những gợi ý và các sửa lỗi. Nó cũng khuyến khích những thay đổi nhỏ, từng tí một, chúng là dễ dàng hơn để hiểu và kiểm thử trong khi các lập trình viên tham gia tích cực vào, hơn là được phát hiện ra trong một chu kỳ kiểm thử cuối cùng riêng biệt.
Một lợi ích phụ là việc mã nguồn thường xuyên được rà soát lại về sự tôn trọng kiểu lập trình và mã nguồn dễ vỡ hoặc không mềm dẻo có thể được thấy và được cải thiện sớm trong chu kỳ phát triển.
3. Rà soát ngang hàng
Qui trình phát triển nguồn mở nhấn mạnh sự rà soát lại ngang hàng xuyên qua khắp toàn bộ vòng đời phát triển. Các lập trình viên được mong đợi sẽ đệ trình mã nguồn của họ tới các danh sách thư của dự án cho việc rà soát lại ngang hàng công khai theo chu kỳ, đặc biệt khi một chức năng đạt được một cột mốc phát triển. Điều này giúp đảm bảo rằng những người khác bên ngoài đội phát triển nhận thức được về những thay đổi, và có thể đưa ra những ý kiến phản hồi trước khi thiết kế là cuối cùng và sự triển khai hoàn tất. Những thành viên khác của dự án nguồn mở rà soát lại mã nguồn, đưa ra các bình luận và ý kiến phản hồi để cải thiện chất lượng và chức năng, và kiểm thử để bắt các lỗi và đưa ra những cải tiến sớm nhất có thể trong chu kỳ phát triển.
Khi một tính năng hoàn tất và sẵn sàng để được xem xét cho sự tích hợp, thì ngươi duy trì của dự án cũng đưa ra một mức rà soát lại trước khi chấp nhận mã nguồn đó. Vào lúc mã nguồn được tích hợp vào sản phẩm chính, thì nó đã trải qua một số sự kiểm tra chi tiết của những người khác bên ngoài đội phát triển. Kết quả được cải thiện, mã nguồn có chất lượng cao hơn.
C. LỜI KẾT
Cùng với bài “Tìm hiểu mô hình phát triển phần mềm tự do nguồn mở”, chúng ta đã thảo luận về những yếu tố chính của vòng đời phát triển nguồn mở, và đã mô tả những đặc tính đặc trưng của phát triển nguồn mở. Mô hình phát triển nguồn mở đã được chứng minh là rất thành công, với hàng trăm câu chuyện thành công. Mô hình phát triển này có những đặc tính đặc biệt cho phép sự phát triển nhanh hơn của những đội phân tán một cách rộng khắp, sự kiểm thử liên tục và tỉ mỉ, đổi mới sáng tạo nhanh hơn, nhiều lớp rà soát lại ngang hàng, và toàn bộ tính mở và sự minh bạch xuyên suốt cả dự án.
Để có khả năng áp dụng được mô hình phát triển nguồn mở vào trong các doanh nghiệp phần mềm của Việt Nam trong tương lai, khi mà hầu hết những doanh nghiệp đó là vừa và nhỏ, tiềm lực rất hạn chế về cả nhân lực và vật lực, chưa quen với mô hình này, thì phải biết đứng trên vai của những người khổng lồ để phát triển mà để làm được điều này, các công ty phần mềm của Việt Nam rất nên làm việc với các dự án nguồn mở đã và đang có sẵn trên thế giới. Trong trường hợp này, một yếu tố quan trọng khác mà các doanh nghiệp phần mềm cần phải nắm vững và triển khai trong thực tiễn khi phát triển phần mềm là: ngược lên dòng trên. Ngược lên dòng trên là gì và tại sao lại phải ngược lên dòng trên là những nội dung chúng ta sẽ đề cập tới ở các bài tiếp sau của loạt bài này.


Thiết lập quyền sở hữu
Vì những đề xuất mã nguồn có thể tới từ bất kỳ ai, hầu hết các dự án có các thủ tục chính thức hiện diện để theo dõi quyền sở hữu mã nguồn khi một bản vá được đệ trình.
Dòng “Được ký bởi” đưa ra tên thực và thư điện tử của người có trách nhiệm đối với mã nguồn. Đây cũng là một thỏa thuận cho Chứng chỉ Gốc của Lập trình viên, nó đòi hỏi rằng người đệ trình có các quyền đóng góp mã nguồn. Ít nhất một dòng được-ký-bởi thường được yêu cầu, khi mà nó cho phép những người khác nhanh chóng xác định được ai đã đệ trình mã nguồn nếu bất kỳ lúc nào có một câu hỏi về gốc gác, giấy phép hoặc sự duy trì.
Theo cách tương tự, một số dự án cũng theo dõi những người rà soát lại. Dòng “Được tiến hành bởi” chỉ ra khi ai đó không phải là tác giả hoặc người duy trì đã đưa ra sự rà soát lại tỉ mỉ và tin tưởng nó sẵn sàng để tích hợp.
Trần Lê
Bài đăng trên tạp chí Tin học & Đời sống, số tháng 04/2012, trang 62-65.

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.