1. A method comprising: interrogating, by a first adapter, at least one element of at least one existing software system by invoking functionality provided by the at least one existing software system via an existing interface, discovering and identifying the at least one element of the at least one existing software system, and monitoring an ongoing state of the at least one element of the at least one existing software system by listening for software system events and changes to a state of the at least one existing software system, wherein the state of the at least one existing software system includes information relating to created objects of the at least one existing software system, and changes to the state of the at least one existing software system include creation or destruction of objects, and wherein the at least one existing software system and the existing interface have not been designed so as to be interrogated by the first adapter, have not been modified so as to be interrogated by the first adapter, and have not been extended so as to be interrogated; receiving a selection of at least two components of the at least one element of the at least one existing software system and receiving an indication of at least one interconnection to be made between existing interfaces of the selected components; and capturing properties of the selected components and generating a set of rules for each selected component that uniquely identifies the selected component; generating control and data flow information for the at least one interconnection; and creating an algorithm that includes the properties of the selected components, the set of rules for each selected component, and the control and data flow information for the at least one interconnection.