This is a very good thesis on Synthesis-Based Software Architecture Design. I have pasted the Chapter titles and the abstract from the paper below.Chapter 1 - Introduction
Chapter 2 - On the Notion of Software Engineering: A Problem Solving Perspective
Chapter 3 - Classification and Evaluation of Software Architecture Design Approaches
Chapter 4 - Architecture Synthesis Process
Chapter 5 - Balancing Architecture Implementation Alternatives
Chapter 6 - ConclusionsAbstract:
With the introduction of the first programming languages in the late 1940s and the early 1950s, software development has undergone several evolutionary changes, which provided opportunities for building larger and more complex software systems. This increased potentiality was soon followed by the realization that software is difficult to deliver on time, within the available budget and with the required quality factors such as reliability, stability and adaptability. To cope with this so-called software crisis an engineering approach to software development was proposed.
Many different attempts, ranging from improved programming languages to CASE tools, have been carried out during the last three decades to tackle the problems in software engineering that directly or indirectly lead to the symptoms of the software crisis. In the last decade, software architecture has gained a wide popularity as a fundamental concept in software engineering to support software quality factors. Software architecture embodies the overall structure of the system and likewise has a substantial impact on the quality aspects of the whole software system. Notwithstanding these various attempts developing high quality software systems still remains a difficult task.
To grasp the essence of software engineering and understand its inherent problems, this thesis provides a thorough and critical analysis of software engineering from abroad perspective. To this aim, software engineering is considered as a problem solving process whereby software solutions are produced for given technical problems. To explicitly reason about the concepts of problem solving, this thesis provides a model for problem solving that may be used for analyzing various problem-solving activities. In this thesis, this model is used for analyzing problem solving in software engineering and comparing it with the more mature problem solving disciplines of philosophy and traditional engineering, such as electrical engineering, mechanical engineering, civil engineering and chemical engineering. This conceptual and comparative analysis has resulted in a set of useful lessons and concepts that are essential for providing high-quality software but notably are missing in current software engineering practices.
A basic concept that is derived from our analysis process that may be essential for software engineering, is the concept of synthesis. Synthesis is a well-known problem solving process that is broadly and successfully applied in the traditional engineering disciplines. It includes explicit processes for technical problem analysis, solution domain analysis and alternative space analysis. In the technical problem analysis process, technical problems are identified and structured into loosely coupled sub-problems that are first independently solved and later integrated in the overall solution. In the solution domain analysis process, solution abstractions are extracted from the corresponding solution domains. In the alternative space analysis process different alternative solutions are searched and evaluated against explicit quality criteria.
In current software engineering practices the synthesis concept is not known and the three processes are not fully integrated. Since synthesis is a useful concept in mature problem solving it is worthwhile to integrate this in software engineering.
This thesis focuses on the software architecture design phase and attempts to improve the understanding on this subject by classifying and evaluating the current state-of-the-art software architecture design approaches. It appears that these approaches derive solution abstractions basically from the requirement specifications and the management of design alternatives is an implicit process. This causes a number of problems such as the difficulty in finding stable abstractions, difficulty in leveraging the architecture boundaries and poor semantics of the architectural components.
To address the problems of the state-of-the-art, the concept of synthesis is applied to software architecture design, resulting in a novel approach that we termed synthesis based software architecture design. In this approach, the architectural abstractions are derived from the solution domains and the design alternatives are explicitly depicted and managed. This approach is illustrated with the design of an atomic transaction architecture for a distributed car dealer information system.
The architecture design can be realized by applying object-oriented analysis and design methods in which a set of heuristic rules are provided to guide software engineers to analyze, design and implement object-oriented software systems. This thesis introduces a new formalism, called design algebra, which provides techniques for explicitly depicting the set of architecture implementation alternatives, prioritizing these alternatives and selecting these based on quality factors. The techniques represented by design algebra can be integrated with the current object oriented analysis and design methods and have been implemented as a set of tools.
Get it here
There are also some summaries of Synthesis-Based Software Architecture Design in the form of chapters available here