Dynamic
With the diverse set of network services, emerging standards for media, protocols and networks and the variety of devices seeking to leverage these capabilities, the need to be flexible and configurable is especially relevant. To date, defining "what" a device should do has required detailed understanding and programming of "how" it should do it. But given the unpredictable and changing requirements of "what" should be done, applications can no longer rely on a static set of logic and control to define the "how". And without the appropriate infrastructure to enable dynamic applications, OEMs and ISVs have been left with no other choice than building costly one-off designs that are inflexible, hard to manage and limited in reuse.
Separating the "What" and the "How"
Strings directly addresses the need to be dynamic by separating the "what" and the "how". Given a declaration of "what" an application should do, Strings dynamically determines the optimal "how". This flexibility is achieved by breaking up application logic into discrete software services called Beads. By understanding the capabilities of these services Strings can dynamically assemble the optimal set of Beads to facilitate efficient and optimal communication in a system. In addition, the flexibility, and ultimately the efficiency of Strings based applications increases with scale, meaning that applications no longer have to trade efficiency for flexibility.
Runtime Configuration
Beads can be added to a running system at any time, augmenting an application's capabilities and ensuring that it stays future-proof. While many platforms have the ability to update components, the complete decoupling of services in Strings makes it possible to update a system while it is running. Furthermore because the control and logic of an application are separated, the behavior of an application can be significantly modified at runtime without requiring any change to the application logic. This provides Strings with unparalleled flexibility in runtime application configuration.