Ngôn ngữ mô hình hóa UML được sử dụng phổ biến nhất trong công nghệ phần mềm nhưng lại không đủ chặt chẽ và chưa có công cụ hỗ trợ kiểm tra tính đúng đắn của đặc tả. Do vậy, chúng ta thường phải kết hợp với các ngôn ngữ đặc tả khác để thu được bản đặc tả hệ thống vừa trực quan, dễ hiểu vừa có ngữ nghĩa chặt chẽ, được kiểm tra tự động bởi các công cụ. Và trong quá trình áp dụng các mẫu thiết kế để thu được một mô hình thiết kế tối.