Nguyên lý Pareto và ảnh hưởng trong phát triển phần mềm

Tram Ho

Nguyên lý Pareto

Nguyên lý Pareto, quy luật pareto hay quy luật 80/20 chỉ ra rằng trong nhiều sự kiện, khoảng 80% kết quả là do 20% nguyên nhân gây ra.
Xuất phát từ việc nhà kinh tế học, xã hội học và triết học người Ý Vilfredo Federico Damaso Pareto người đã có đóng góp quan trọng trong nghiên cứu về phân phối thu nhập và những phân tích về sự lựa chọn cá nhân đã quan sát và chỉ ra rằng 80% đất ở Ý là thuộc sở hữu của 20% dân số.

Sau này ngành thống kê có sự phát triển mạnh mẽ. Bằng những kết quả thống kê thu thập được, nhà tư tưởng quản trị doanh nghiệp Joseph M. Juran nhận thấy quy luật 80/20 có tác động đến rất nhiều lĩnh vực đời sống khác đã đề xuất quy luật này và đặt theo tên của nhà kinh tế người Ý Vilfredo Pareto.

Cụ thể khi xét một thứ gì được sở hữu bởi một số lượng lớn vừa đủ người thì luôn tồn tại một số k (50 < k < 100) sao cho k% của thứ ấy là thuộc sở hữu của (100 – k)% số người trong đó. Tuy nhiên k sẽ thay đổi từ 50 trong trường hợp phân bố đều cho đến gần 100% khi một lượng rất nhỏ người sở hữu hầu hết tất cả tài nguyên. Không có điều gì đặc biệt đối với con số 80 nhưng nhiều hệ thống có số k có giá trị ở khoảng này.

Sở dĩ con số 80 xuất hiện nhiều như vậy là bởi về mặt toán học, quy tắc 80/20 tuân theo luật phân phối hàm lũy thừa (còn được gọi là phân phối Pareto) cho một tập hợp các tham số cụ thể và nhiều hiện tượng tự nhiên đã được chứng minh bằng thực nghiệm để thể hiện phân phối như vậy. Kết luận từ quan sát của Pareto cũng là phân phối dạng này và xã hội hiện đại bị chi phối rất nhiều bởi hàm lũy thừa khác với xã hội thời kỳ nguyên thủy không bị chi phối bởi hàm lũy thừa ( xã hội nguyên thủy tổ tiên loài người rất công bằng khi đi săn thành quả mang về sẽ không có TH 80% thành quả được chia về 20% những người có chức sắc nhất mà chia đều cho tất cả, do đó kết luận của Pareto sẽ không thể đúng trong thời kỳ này). Vậy nên, khi xã hội có sự phát triển hơn, hàm lũy thừa sẽ bị thay thế bởi 1 hàm số khác khi thể hiện sự phân phối, có thể là bước tiến bằng cách lùi về xã hội nguyên thủy để tất cả mọi thứ được phân phối công bằng qua cơ chế bao cấp nếu XHCN thành công trên toàn thế giới =))

Nhưng chúng ta đang sống trong một xã hội hiện đại, nơi mà 82,7 % thu nhập thế giới thuộc về 20% nhóm dân số giàu nhất nên chúng ta hãy nên nhìn lại một số ảnh hưởng của quy luật Pareto (Pareto efficiency) trong các lĩnh vực của đời sống. Còn trong bài viblo này với tinh thần monthly report mình sẽ lấy một số ví dụ của Pareto efficiency đối với ngành phát triển phần mềm. Tất nhiên, đối với mỗi ví dụ dưới đây đều có mẫu có số lượng đủ lớn và chịu sự ảnh hưởng của Pareto efficiency. Khi không đáp ứng 2 điều kiện trên thì con số 80 không còn giá trị nữa.

1. Capacity estimation

Chúng ta có 1 hệ thống rút gọn link shortening URL. Đây là hệ thống read-heavy. Số lượng request yêu cầu redirect lớn hơn nhiều so với số lượng request yêu cầu tạo shortening URL. Giả sử tỷ lệ này là 100:1 giữa đọc và ghi.

Lúc này chúng ta cần sử dụng cache để giúp cho hệ thống hoạt động thực sự hiệu quả, giả sử hệ thống đáp ứng 20. 000 requests/s. Như vậy số lượng requests trong 1 ngày sẽ là:

20K * 3600 seconds * 24 hours = ~1.7 billion

Để caching toàn bộ số requests này ta cần đến dung lượng bộ nhớ ram lên tới 1.7 TB (với mỗi request sử dụng 1MB bộ nhớ) một con số rất lớn dẫn tới gia tăng chi phí server. Hơn thế không phải toàn bộ 1.7 B requests này đến từ 1.7 B shortened URL khác nhau mà k% requests tới từ (100-k) hotest URL. Áp dụng quy luật pareto ta có 80% requests sẽ tới từ 20% hotest URL. Do đó lúc này dung lượng bộ nhớ ram cần dùng để cache là:

0.2 * 1.7B * 1M = 340GB.

2. Fix bugs

Khi release 1 sản phẩm phần mềm tới khách hàng thường luôn có 1 tính năng đi kèm đó là nhận feedback, các feedback thường chủ yếu là các lỗi (bugs) liên quan tới phần mềm. Khi nhận được feedback các kỹ sư sẽ tìm cách khắc phục nó tuy nhiên sẽ có rất nhiều bugs có quan hệ với nhau dẫn đến khi ta fix xong 1 bug thì một số bugs cũng được khắc phục. Và khi danh sách feedback này trở lên quá dài và các kỹ sư không đủ sức để giải quyết hết toàn bộ thì sao ?

Để tối ưu hóa nỗ lực fix bugs, chúng ta có thể áp dụng quy luật Pareto bằng cách chọn ra 20% bugs được report nhiều nhất để ưu tiên xử lý. Khi xử lý triệt để 20% bugs này thì 80% bugs liên quan sẽ triệt tiêu.

Và Microsoft với hệ sinh thái khổng lồ của mình, là nơi tiếp nhận số lượng feedback có thể nói là nhiều nhất thế giới cũng đã chỉ ra điều này cùng với quan điểm rằng có đến 80% code của 1 phần mềm được viết bằng 20% tổng thời gian của dự án hoặc 80% tổng thời gian dự án là để code 20% khó nhằn nhất.

3. Testing

Áp dụng quy luật Pareto trong các hoạt động QA cũng giúp cho chúng ta giảm thời gian kiểm thử và tăng hiệu suất. Chẳng hạn trong quá trình kiểm thử chúng ta có thể áp dụng một số cách được mô tả như trong link dưới đây:
https://blog.qatestlab.com/2011/02/25/pareto-principle-in-software-testing/

4. Kết luận

Ở trên mình có nêu về tác động của tỷ lệ 80/20 hay quy luật Pareto thực sự có ảnh hưởng tới nhiều lĩnh vực đời sống. Tuy nhiên, phải nói lại, quy luật Pareto và tỷ lệ 80/20 không nên là thứ mà ta nên theo đuổi chính xác tức cố gắng áp đặt một cách chính xác tỷ lệ này vào mọi vấn đề cần giải quyết mà chỉ nên theo đuổi đuổi tính hiệu quả của nó.

Tham khảo: https://vi.wikipedia.org/wiki/Nguyên_lý_Pareto

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo