Synthesis is a methodology for analyzing and designing object-oriented systems. It is a response to the needs of the object-oriented business community, whose systems are much more complex than systems created with traditional software-engineering techniques.
The Synthesis methodology comprises a set of activities, which, when executed in an appropriate order, yield a working system and repository of software for future needs. Each activity is carried out using one or more techniques to produce that activitys deliverable. Each deliverable is expresses in a notation that is a combination of diagrams and textual definitions.
Synthesis takes the most important and resilient software-engineering ideas of the past three decades and synthesizes them with the fundamental ideas of object-orientation. This yields a methodology whose foundations are based in proven techniques but which is also capable of meeting the sophisticated needs of object-orientation. Synthesis therefore provides software engineers with a way to adapt, improve and extend software skills into the object-oriented realm of the coming century.
Although Synthesis was developed for projects whose systems are coded in fully object-oriented languages (such as C++, Java, Smalltalk or Eiffel), you may also use some aspects of the Synthesis approach on projects using non-object-oriented languages.
Thus, Synthesis:
- Comprises project activities with techniques that capitalize on what you already know about software engineering
- Is equally weighted towards the gathering of system requirements and the design of a system solution
- Marries the process and data views of a system, an idea thats central to object orientation
- Encourages the separation of essential and technological concerns
- Provides notations for the system designer and the requirements analyst
- Provides a vital framework for projects that intend to build realistic object-oriented or object-based applications for the business world, especially those with a graphical user interface