It makes perfect sense. To account for every edge or use case for a requirement you'd have to create many different interfaces/points of contact to suit every need. For example, if I want to create a dating app, the interface and underlying code for a mobile device will break consistency with the interface and underlying code of a web page. You could be consistent with a translation layer, but then the interface or code will be incomplete for that particular use case.
> Formal analysis can be used to show the absence of bugs, but never to show the correctness of the specification.
Working in a horizontally stratified organization where the programmer doesn't learn the business domain is ill advised. Often the programmer has the most context and understanding of both the business processes as they are being formalizaed into code. Additionally your understanding of the specification may be flawed or simply written incorrectly, and this can never be formally analyzed.
> Programs can exhibit “faults in construction” that would be forbidden by a modernist approach.
In other words, a program can have a bug as a feature, or something that is wonky, but tolerated.