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.