1. A computer-implemented method for generating code, the computer-implemented method comprising: generating an abstraction of an interface object model, the interface object model being specified in an Interface Description Language of a given middleware platform, the abstraction preserving application semantics expressed in the Interface Description Language, the abstraction being independent of the given middleware platform, the abstraction concealing middleware related information while preserving application functionality; receiving input at a software development system, the input being a non-functional requirement, the software development system configured to generate code based on aspect-oriented programming; generating code, via the abstraction, that performs an operation of implicitly propagating authenticating context between a client component and an invoked component which the client component invokes in a component server, the authenticating context enabling the invoked component to authenticate the client component; generating a function, via the abstraction, that allows specifying a timeout between the client component and the invoked component that the client component invokes in the component server, the timeout function receiving a user-defined timeout value to be applied to for interface invocations between the client component and the invoked component; generating code, via the abstraction, that includes a function declaration that, upon execution, discloses a target component identity between the client component and the invoked component that the client component invokes in the component server, the target component identity specifying a specific identity of a target computer system to which an interface invocation between the client component and the invoked component is directed, the target component identity being disclosed in lieu of emitting middleware specific information; and generating an implementation of the abstraction for the given middleware platform, the implementation of the abstraction being enabled to generate code and generate functions in a software development environment.