Trong biểu đồ UML, một sơ đồ như sơ đồ lớp chẳng hạn, không đủ để đặc tả tất cả các khía cạnh liên quan. Các ràng buộc liên quan đến các đối tượng trong sơ đồ cần được mô tả chính xác và đầy đủ. Các ràng buộc này thường được mô tả bằng ngôn ngữ tự nhiên. Thực tế đã chỉ ra rằng việc mô tả các ràng buộc bằng ngôn ngữ tự nhiên dẫn đến sự nhập nhằng và cần một ngôn ngữ hình thức để mô tả sao cho cả những người không có kiến thức toán học tốt cũng có thể dễ dàng hiểu được. Ngôn ngữ ràng đối tượng (Object Constraint Language – OCL) đã được phát triển để thực hiện mục tiêu trên. Nó đã được phát triển như là một ngôn ngữ mô hình hóa kinh doanh bên trong phân khu bảo hiểm của IBM, có tiền thân từ phương pháp Syntropy [7].
OCL là một ngôn ngữ đặc tả thuần túy, do đó một biểu thức OCL được đảm bảo không có hiệu ứng phụ. Khi một biểu thức OCL được định giá, nó trả lại một giá trị. Nó không thể thay đổi bất kỳ thứ gì trong mô hình. Điều này có nghĩa là trạng thái của hệ thống sẽ không bao giờ thay đổi vì sự định giá của các biểu thức OCL, thậm chí một biểu thức OCL có thể được sử dụng để đặc tả một thay đổi trạng thái (ví dụ trong một post-condition).
OCL không phải là một ngôn ngữ lập trình, vì thế không thể viết lôgic chương trình hay điều khiển luồng trong OCL. Không thể gọi các tiến trình hay kích hoạt các thao tác phi truy vấn trong OCL. Vì vị trí ban đầu của OCL là một ngôn ngữ mô hình hóa nên các biểu thức OCL không được khai báo để thực thi trực tiếp.
OCL là một ngôn ngữ định kiểu, do vậy mỗi biểu thức OCL có một kiểu. Một biểu thức OCL phải tuân theo các luật tương thích kiểu của ngôn ngữ. Ví dụ, không thể so sánh một kiểu Integer với một kiểu String. Sự định giá của một biểu thức OCL là tức thời. Điều này có nghĩa là các trạng thái của các đối tượng trong một mô hình không thể thay đổi trong quá trình định giá.
OCL được dùng với nhiều mục đích khác nhau. Chương này tập chung vào kiểm chứng bất biến của các lớp. Do vậy, phần này tập trung vào mô tả bất biến của các lớp được biểu diễn trong OCL như thế nào.