Những định luật nổi tiếng trong phát triển phần mềm
- Định luật Murphy:
- Nếu một tình huống xấu có thể xảy ra, thì nó sẽ xảy ra (If something can go wrong, it will).
Defensive programming, version control, TDD, MDD,… đều là các nguyên tắc, kỹ thuật được sử dụng để phòng trách các sự cố liên quan đến định luật Murphy.
- Định luật Brook:
- Gia tăng nhân lực cho một dự án chậm tiến độ càng làm nó chậm tiến độ hơn (Adding manpower to a late software project makes it later).
- Định luật Hofstader:
- Ngay cả khi bạn đã ý thức được điều này, thì mọi việc vẫn luôn mất nhiều thời gian hơn bạn dự tính (It always takes longer than you expect, even when you take into account Hofstadter’s Law).
Đây là lý do mà bạn nên luôn luôn dự trù thêm một khoảng thời gian khi ước tính khả năng hoàn thành công việc, bất kể độ phức tạp ít hay nhiều.
- Định luật Conway:
- Bất kỳ phần mềm nào cũng đều phản ánh đúng cấu trúc của tổ chức tạo ra nó (Any piece of software reflects the organizational structure that produced it).
- Định luật Postel:
Đây là nguyên tắc đã được Postel nhấn mạnh trong thiết kế giao thức TCP:
- Cẩn trọng với những gì gửi đi, tự do với những gì nhận lại (Be conservative in what you send, be liberal in what you acceptons)
- Nguyên tắc 80-20:
- 80% kết quả phần lớn đến từ 20% nguyên nhân (For many phenomena, 80% of consequences stem from 20% of the causes).
Có một vài cách hiểu khác đối với nguyên tắc này: 80% bug bắt nguồn từ 20% code; hoặc 80% khối lượng công việc của một công ty được hoàn thành bởi 20% nhân viên, vấn đề là bạn không biết được nhóm 20% nhân viên đấy là những ai mà thôi.
- Nguyên tắc Peter:
- Trong một sơ đồ tổ chức, mọi nhân viên đều có xu hướng thẳng tiến đến một ngưỡng mà họ không thể phát triển thêm được nữa (In a hierarchy, every employee tends to rise to his level of incompetence).
- Nguyên tắc Kerchkhoff:
- Một hệ thống mã hóa phải an toàn ngay cả khi tất cả thông tin về hệ thống đó đều đã được công bố ra ngoài. Bí mật duy nhất của hệ thống là một khóa ngắn.
- Định luật Linus:
- Quan sát đủ kỹ, tìm bug khó gì (Given enough eyeballs, all bugs are shallow).
Ứng dụng thực tế là các phần mềm nếu được công khai mã nguồn mở để thử nghiệm, xem xét kỹ lưỡng thì mọi lỗi đều sớm được phát hiện
- Định luật Moore:
- Số lượng transistor trên mỗi mạch tích hợp sẽ tăng lên gấp đôi sau mỗi 18 tháng (The number of transistors on an integrated circuit will double in about 18 months).
- Định luật Wirth:
- Tốc độ phát triển của phần cứng không bằng tốc độ thoái hóa của phần mềm (Software gets slower faster than hardware gets faster).
- Định luật 90-90:
- Bạn chỉ cần 10% thời gian để code 90% phần đầu, 10% còn lại chiếm đến 90% thời gian của bạn.
13.Nguyên tắc về tối ưu của Knuth:
- Tối ưu hóa sớm là căn nguyên của mọi tội ác (Premature optimization is the root of all evil).