Shahzad Bhatti

May 20, 2005

Booch Presentation on Complexity

Filed under: Computing — admin @ 2:58 pm

Booch Presentation on Complexity

Complexity of the problem domain
Difficulty of managing the development process
Fluidity of software
Fundamental challenges of discrete systems
Volume of requirements
Presence of competing/contradictory requirements
Non-functional requirements that push the limits of software
Requirements churn
Difficulty of communicating requirements
Impedance mismatch among stakeholders
Unrestrained external complexity
Software drag

Size up
Increasing database size by a factor of x increases query response time by at most a factor of x.

Speed up
Increasing the capacity of your hardware configuration by a factor of x decreases your query response time by no less than a factor of x.

Scale up
Increasing the workload on your system by a factor of x while maintaining response time and/or throughput requires increasing your capacity by a factor of no more than x.

Scale out
Increasing workers by a factor of x requires replicating your capacity by a factor of at most x.

Fluidity of software
Software springs from pure thought and is intrinsically malleable, yet it can be made manifest in our hardware systems, limited only by our vision (and certain immutable laws of physics and software)

Fundamental challenges of discrete systems
Non-continuous behavior of discrete systems
Combinatorial explosion of states
Corruption from unexpected external events
Lack of mathematical tools and intellectual capacity to model the behavior of large discrete systems

Essential complexity
.Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer. Much of the complexity that he must master is arbitrary complexity.. [Brooks]
We may master essential complexity, but we can never make it go away.

Attributes of a complex system
.Frequently, complexity takes the form of a hierarchy, whereby a complex system is composed of interrelated subsystems that have in turn their own subsystems, and so on, until some lowest level of elementary components is reached.. [Courtois]
Hierarchic systems are decomposable if they can be divided into identifiable parts; they are nearly decomposable if their parts are not completely independent. [Simon]
The choice of what components in a system are primitive is relative arbitrary and is largely up to the discretion of the observer of the system.
As systems evolve, objects that we once considered complex become the primitive objects upon which more complex systems are built.
Intracomponent linkages are generally stronger than intercomponent linkages. This fact has the effect of separating the high-frequency dynamics of the components . involving the internal structure of the components . from the low-frequency dynamics – involving interaction among components. [Simon]
Hierarchic systems are usually composed of only a few different kinds of subsystems in various combinations and arrangements. [Simon]

Decomposible and nearly-decomposible systems

May 17, 2005

A few articles and useful links:

Filed under: Computing — admin @ 11:04 am

A few articles and useful links:
The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software

Powered by WordPress