1. A method performed by a computer system for enabling static analysis of software source code, comprising: receiving clarified source code, the clarified source code containing a coordination primitive that encapsulates interactions between at least two asynchronous components, the coordination primitive having a coordination interface and including an expression of a coordination protocol that defines coordination between the two asynchronous components, the coordination protocol expressed by a portion of the coordination primitive; transforming the received clarified source code into standard source code wherein the standard source code is expressed in an imperative programming language and the coordination primitive is not part of the imperative programming language wherein the standard source code can be compiled to produce object code containing the at least two asynchronous components, one of the two asynchronous components for communicating with the other asynchronous component asynchronously, and wherein the clarified source code is analyzable by a static analysis tool to model interactions between at least two asynchronous components but the generated standard source code is not analyzable by the static analysis tool to model the interactions.