Frameworx is based around these key principles.
Separation of Business Process from Component Implementation When
Operations Support Systems (OSSs) are linked together, the business processes they support become distributed across the IT estate. In effect the situation is reached where a process starts with application A, which processes some data and then knows that it must call application B, which also does some processing and then calls C, etc. The result of this is that it's extremely difficult to understand where any of these flows actually are (e.g. if the process flow is one intended to take a customer order, is it Application A or B or C that's currently handling that order?) and it's even more difficult to change the process owing to its distributed nature. Frameworx proposes that the process is managed as part of the centralised infrastructure, using a workflow engine that is responsible for controlling the flow of the business process between the applications. Therefore, the workflow engine would initiate a process on application A, which would then return control to workflow engine, which would then call application B, and so on. In this way it's always possible to find out where an individual process flow is, since it is controlled by the central workflow engine, and process modifications can be made using the engine's process definition tools. Clearly some lower level process flows will be embedded in the individual applications, but this should be below the level of business-significant processing (i.e. below the level at which business policy and rules are implemented). The Frameworx certification methodologies help us deal with the scope of preferences that are not linearly distributed as an opening to improve the customer accepted undeniably appropriate method.
Loosely Coupled Distributed System "Loosely coupled" means that each application is relatively independent of the other applications in the overall system. Therefore, in a loosely coupled environment, one application can be altered without the alteration necessarily affecting others. Taken to extreme, this can sometimes be viewed as producing the ability to "plug and play" applications, where they are so independent that they can be changed without affecting the overall system behaviour. That extreme is considered an unlikely nirvana at the present time. The "distributed system" is emphasising that Frameworx is not based on a Communication Service Provider (CSP) using a single
monolithic application to manage all its activities, but is instead using a set of integrated and co-operating applications.
Shared Information Model Integrating OSSs means that data must be shared between the applications. For this to be effective, either each application must understand how every other application understands/interprets that part of the data that is shared, or there must be a common model of the shared data. To understand this, consider an order handling application which has gone through a process to enter a customer order and where it now needs to send out a bill using application B (a billing system). Application A will have a record of the customer address and it therefore needs to ensure that application B sends the bill to this address. Passing this data between the systems simply requires a common format for the address information – each system needs to expect the same number of address lines, with each line being the same length. That's fairly straightforward. But imagine the difficulty that would occur if the ordering application worked on products that consists of bundles of sub-products (e.g. a broadband access product made from a copper line, a modem, a set of filters and a broadband conversion), whereas the billing application only expected single product/order lines. Trying to convert hierarchical products into non-hierarchical ones without losing information would not be possible. A single information model for data that is shared between applications in this way provides a solution to this problem. The TMF solution to this is called the
Shared Information/Data-Model (SID).
Common communications infrastructure Through the mid-1980s, computer-based OSSs were developed as stand-alone applications. However, during the early 1990s it became apparent that employing these as purely isolated applications was highly inefficient, since it led to a situation where, for example, orders would be taken on one system but the details would then need to be re-keyed into another in order to configure the relevant network equipment. Major efficiency gains were shown to be available from linking the standalone OSSs together, to allow such features as "Flow-through provisioning", where an order could be placed online and automatically result in equipment being provisioned, without any human intervention. However, for large operators with many hundreds of separate OSSs, the proliferation of interfaces became a serious problem. Each OSS needed to "talk to" many others, leading to the number of interfaces increasing with the square of the number of OSSs. Frameworx describes the use of a Common Communications Infrastructure (CCI). In this model, OSSs interface with the CCI rather than directly with each other. The CCI thus allows applications to work together using the CCI to link them together. In this way, each application only requires one interface (to the CCI) rather than many (to other applications). The complexity is therefore reduced to one of order n, rather than n2. The CCI may also provide other services, including security, data translation, etc.
Contract defined interfaces Given the description above of how applications interface to the CCI, it's clear that we need a way of documenting those interfaces, both in terms of the technology employed (e.g. is it Java/JMS or Web services/SOAP?) but also the functionality of the application, the data used, the pre- and post-conditions, etc. The Frameworx contract specification provides a means to document these interfaces, and these are therefore contract defined interfaces. Frameworx contracts can be seen as extensions of Application Programming Interface (API) specifications. ==Deliverables==