Apart from facilitating the development of software applications by combining existing software components, SYNTHESIS has the potential of assisting the development of new applications from scratch.

SYNOPSIS can be used to sketch a decomposition of a system into generic activities, which can then be specialized and refined as more insight about the system is gained. SYNTHESIS can store repositories of alternative domain-specific architectures that can further assist designers both in specifying and in refining the functional decomposition of their systems.

Once designers have finalized the decomposition of an application into patterns of activities and dependencies, atomic activities must then be manually implemented. If the decomposition is sufficiently detailed, atomic activites will have been defined at a granularity fine enough, to allow for a straightforward implementation. SYNTHESIS can assist the selection of coordination processes for managing dependencies through the process described in Chapter 5 of the thesis.

Finally, when the previous step is complete, SYNTHESIS can automatically generate coordination code, package components into procedures and executables, and produce the final executable system.

The development of systems using this approach has the following advantages:

Benefits to initial application development

Independent selection of components. Designers will be able to select components to implement activities independently of one another. Potential mismatches will generally be handled by coordination processes.

Routine management of dependencies. Dependencies will be routinely managed by coordination processes based on systematic design frameworks.

Insight into alternative implementations. Design handbooks will be able to suggest alternative ways of implementing activities and dependencies.

Benefits to application maintenance

Easy replacement of components with alternative implementations. Designers often need to change the implementation of activities, in order to reflect changes in functional requirements. Applications will be easily reconstructed after such changes, by reusing the same architectural diagram and simply managing again the dependencies of the affected activities with the rest of the system.

Easy porting of applications to new configurations. When applications are ported to a new environment, their abstract architecture (activities and dependencies) remains unaffected. However, the use of different coordination processes might be required. By making the step of dependency management a routine one, it will be easy to manage them again for the new environment and construct a new application from the original architectural description and functional components.

Continue on to References