Trong thế giới công nghệ phần mềm, Định luật Lehman về Tiến hóa Phần mềm được công nhận rộng rãi như một khuôn khổ cơ bản để hiểu cách các hệ thống phần mềm phát triển theo thời gian. Những định luật này được giới thiệu bởi nhà khoa học máy tính người Anh, Meir Lehman, từ năm 1974 và tiếp tục được hoàn thiện bổ sung trong vòng hơn 20 năm và chúng vẫn còn phù hợp cho đến ngày nay.
Định luật Lehman mô tả cách các hệ thống phần mềm phát triển và cách chúng có thể được quản lý trong suốt vòng đời của chúng. Phiên bản bài báo ban đầu chỉ gồm 5 quy luật, sau đó được bổ sung chỉnh sửa và hiện nay có tất cả 8 quy luật.
Luật Lehman đầu tiên – “Continuing Change” – phát biểu rằng các hệ thống phần mềm phải phát triển nếu không chúng sẽ dần dần trở nên ít hữu dụng hơn. Luật này cho rằng phần mềm phải thích ứng và phát triển để đáp ứng nhu cầu luôn thay đổi của người dùng cũng như những tiến bộ công nghệ. Một phần mềm không phát triển dẫn đến việc nó giảm tính hữu dụng hoặc thậm chí lỗi thời. Điều này có nghĩa là việc phát triển các hệ thống phần mềm không bao giờ kết thúc, hoặc chúng trở nên lỗi thời hoặc chúng phải thay đổi trong phiên bản tiếp theo.
Luật Lehman thứ hai – “Increasing Complexity” – phát biểu rằng độ phức tạp của hệ thống phần mềm sẽ tăng theo thời gian trừ khi chúng được giảm đi một cách chủ động. Khi các hệ thống phần mềm phát triển, chúng trở nên phức tạp hơn, điều này có thể khiến chúng khó bảo trì, khó gỡ lỗi và khó mở rộng hơn. Sự phức tạp này cũng có thể dẫn đến sự gia tăng các khiếm khuyết trong thiết kế và sai sót kĩ thuật. Để chống lại điều này, điều cần thiết là phải thực hiện các bước tích cực để giảm độ phức tạp và hợp lý hóa các hệ thống phần mềm. Điều này dẫn đến một khái niệm khác trong phát triển phần mềm, đó là nợ kỹ thuật (technical debt).
Luật Lehman thứ ba – “Self Regulation” – Hệ thống phần mềm có tính chất tự điều chỉnh, chúng tiến hóa và thích ứng trong các giới hạn nhất định. Quá trình tiến hóa phần mềm duy trì sự cân bằng giữa sự ổn định và sự thay đổi để đảm bảo tính hữu ích của phần mềm.
Luật Lehman thứ tư – “Conservation of Familiarity” – Bảo tồn sự quen thuộc: Luật này nói rằng hệ thống phần mềm có xu hướng bảo tồn các đặc điểm quen thuộc của nó. Điều này cho phép các nhà phát triển và người dùng duy trì các mô hình tư duy và hiểu biết đã có về hệ thống khi nó tiến hóa.
Luật Lehman thứ năm – “Continuing Growth” – Sự tăng trưởng liên tục: Hệ thống phần mềm thường tăng kích thước và chức năng theo thời gian. Các tính năng mới và các cải tiến được thêm vào, dẫn đến tăng tính phức tạp và yêu cầu tài nguyên.
Luật Lehman thứ sáu – “Declining Quality” – Sự giảm chất lượng: Luật này cho rằng theo thời gian, chất lượng của hệ thống phần mềm có xu hướng giảm đi trừ khi nó được bảo trì và cải thiện một cách tích cực. Khi hệ thống tiến hóa, lỗi, khuyết điểm thiết kế và nợ kỹ thuật có thể tích tụ, ảnh hưởng đến chất lượng tổng thể của nó.
Luật Lehman thứ bảy – “Feedback System” – được giới thiệu từ năm 1974 nhưng chỉ được hoàn thiện 22 năm sau – 1996; đây cũng là luật tạo cảm hứng cho quy trình phát triển agile; luật phát biểu rằng một hệ thông phần mềm phát triển thành công nhất định phải là một hệ thống “phản hồi” từ nhiều cấp độ, nhiều lần thử và nhiều tác nhân. Trong khi đó, quy trình agile cho rằng hệ thống phần mềm được điều chỉnh theo yêu cầu thay đổi của người dùng, chủ sở hữu sản phẩm và các bên liên quan khác. Bằng cách sử dụng (thử) hệ thống, người dùng tìm ra những gì họ thực sự muốn làm với hệ thống. Quản lý và chủ sở hữu sản phẩm ưu tiên các tính năng mới theo môi trường thay đổi và nhóm khám phá ra những cách tốt hơn để thực hiện mọi việc bằng cách thu thập kiến thức và kinh nghiệm về lĩnh vực ứng dụng phần mềm.
Luật Lehman thứ tám – “Conservation of Stability” – Bảo tồn sự ổn định: Hệ thống phần mềm cố gắng duy trì sự ổn định trong quá trình tiến hóa của nó. Sự ổn định cho phép dự đoán và đáng tin cậy, cho phép người dùng phụ thuộc vào hệ thống trong khi thực hiện các thay đổi. Tuy nhiên, sự ổn định đôi khi có thể làm trở ngại cho những thay đổi và sự thích ứng cần thiết.
Tổng kết, luật về tiến hóa phần mềm của Lehman cung cấp một khuôn khổ có giá trị để hiểu cách các hệ thống phần mềm phát triển theo thời gian. Bằng cách nhận ra bản chất liên tục của phát triển phần mềm và vai trò của con người, kiến trúc và phản hồi trong việc định hình quá trình phát triển phần mềm, các nhà phát triển có thể tạo ra các hệ thống phần mềm mạnh mẽ và dễ thích ứng hơn.
Nguồn: txnam.net