Tôi tin rằng câu trả lời đúng là tiêu cực. Cần phân biệt các câu hỏi sau:
- Có thể viết một đặc tả phần mềm bằng ngôn ngữ tự nhiên không chứa sự mơ hồ?
- Có thể viết phần mềm bằng ngôn ngữ tự nhiên không chứa sự mơ hồ?
Sự khác biệt giữa câu hỏi thứ nhất và câu hỏi thứ hai liên quan đến mức độ chi tiết liên quan, mức độ giải thích cần thiết và các quy tắc áp đặt cho việc xây dựng câu trong ngôn ngữ tự nhiên cho mục đích viết phần mềm hoặc đặc tả phần mềm.
Câu trả lời cho câu hỏi thứ hai là khẳng định. Đưa ra một tập hợp con bị ràng buộc phù hợp của một ngôn ngữ tự nhiên với các quy tắc đã được thống nhất để xây dựng câu và ý nghĩa, mã có thể được viết bằng các câu tiếng Anh ngữ pháp. Chẳng hạn, ngôn ngữ sau đây rõ ràng cho phép viết câu lệnh gán:
Variables: x,y,z,...
Constants: 1,2,3,...
Rules: (1) if x is a variable and n a constant, then
"The variable x contains the number n" is a sentence.
(2) if x is a variable and n a constant, then
"Assign the number n to the variable x" is a sentence.
Đó là, chúng ta có thể dịch một cách có hệ thống mã được viết bằng ngôn ngữ lập trình chính thức sang ngôn ngữ tự nhiên bằng cách mô tả từng thủ tục. Mặt khác, một đặc tả phần mềm thường yêu cầu giải thích. Do đó, việc một đặc tả phần mềm có thể được cung cấp rõ ràng hay không phụ thuộc vào mức độ chi tiết liên quan đến đặc tả. Tuy nhiên, với một miền được chọn trong đó phạm vi thông số kỹ thuật, với các hoạt động cụ thể trên miền này được chọn, có thể thực hiện quy trình dịch tương tự. Ví dụ:
Over the domain D supporting operations f,g,h over elements a,b,c in relations
P,R,Q with properties φ,ψ,θ, design a program that does X,Y,Z.
trường hợp báo cáo X
, Y
, Z
chỉ chứa những mặt hàng nêu tại lời nói đầu của đặc điểm kỹ thuật và được viết bằng một hình thức phù hợp và thỏa thuận tập hợp con của một ngôn ngữ tự nhiên. Sự mơ hồ sau đó sẽ liên quan đến cách thực hiện đặc tả - nhưng điều này sẽ được dự kiến.