Q1: What are properties of simple and complex software systems? (Ref: 1.1, p.4)
What the author is interested in is how to develop complex software systems, and not to simple ones. Here simple and complex systems are:
Q2: Why is software inherently complex? (Ref: 1.1, p.5)
The complexity seems to be an essential property of all large software system. This inherent complexity derives from four elements:
Q3: What are common to all complex systems? (Ref: 1.2, p.12)
There are five attributes common to all complex systems:
Q4: How to bring an order to a complex system? (Ref: 1.3, p.16)
There are following three ways to dealing with complexity. You can bring an order to complexity by using these.
Combining the concept of the class and object structure together with the five attributes of a complex system, Booch says that virtually all complex systems take the same canonical form like this.
Q5: How to construct a complex software system? (Ref: 1.4, p.23)
There is no magic, no "silver bullet", that can unfailingly lead the software engineer down the path from requirements to the implementation of a complex software system. In fact, the design of complex software systems does not lend itself at all to cookbook approaches. Rather, the design of such systems involves an incremental and iterative process.
In every engineering discipline, design encompasses the disciplined approach we use to invent a solution for some problem, thus providing a path from requirements to implementation.
The products of design are models that enable us to reason about our structures, make trade-offs when requirements conflict, and in general, provide a blueprint for implementation.
The building of models has a broad acceptance among all engineering disciplines, largely because model building appeals to the principles of decomposition, abstraction, and hierarchy. In order to express all the subtleties of complex system, we must use more than one kind of model.
Q6: What is object-oriented analysis and design? (Ref: 1.4, p.24)
Object-oriented analysis and design is the method that leads us to an object-oriented decomposition; object-oriented design defines a notation and process for constructing complex software system, and offers a rich set of logical and physical models with which we may reason about different aspects of the system under consideration.