One of the things that bothers me about academics is their love affair with complexity for complexity's sake. I personally like simple solutions. I believe that COSA is a simple solution to the software reliability problem and I would not have it any other way. Some have written to advise me that COSA needs a formal mathematical description in order to be accepted by the computer science community. To that I say, phooey! COSA needs no such thing. If the academic community thinks that COSA is too simple or simplistic for their taste, that is too bad.
Aside from its synchronous and concurrent nature, there are two other concepts in COSA that I consider essential to the model. One is the automatic elimination of blind code and the other is the automatic discovery of temporal constraints. While the former effectively solves the problem of event or data dependencies, the latter insures that a system under development remains consistent and free of logical contradictions. This, in my opinion, is the most important aspect of the COSA model because it introduces the counterintuitive notion that design correctness is proportional to complexity. In other words, since additions and modifications are not allowed to break the existing design of a COSA application and since the number of constraints is proportional to the complexity of the application, therefore the more complex the application, the more correct it gets. This enables us to build applications of arbitrary complexity without the burden of unreliability, something that was impossible until now. This, in my opinion is what will truly bring us into the golden age of computing and automation. I will explain the mechanism of constraint discovery and enforcement in my next article. Like everything else in COSA, it is neither magic nor rocket science. Its power lies in its simplicity.