Object-Oriented Analysis and Design With Applications
Written by GRADY BOOCH
Published by Addison-Wesley Pub Co; ISBN: 0805353402
Study Notes Compiled By Donald Cameron
Unless noted otherwise, all word definitions excerpted from The American Heritage® Dictionary of the English Language, Third Edition © 1996 by Houghton Mifflin Company. Electronic version licensed from INSO Corporation; further reproduction and distribution in accordance with the Copyright Law of the United States. All rights reserved.
- : COMPLEXITY
- The Inherent Complexity Of Software:
The Properties of Simple and Complex Software Systems p.3
“Software” complexity is arbitrary
God is meaningfully complex
man is arbitrarily complex
“Industrial Strength Software Development” – (really big stuff) is intensely difficult and the “whole system” is beyond the comprehension of any single person.
The Complexity Of The Problem Domain p.5
raw functionality / usability / performance / cost / survivability / reliability / users generally cannot express needs in a form that developers require.
introduction of the early application changes the problem domain, because it helps (forces) users to better understand their needs.
Software maintenance (just correcting code errors)
Software evolution (responding to changing needs)
Software preservation (adding patches to old software to keep it coping)
The Difficulty Of Managing The Development Process p.6
large projects demand many different solutions and require teams
teams come with their own set of problems – primarily unity
The Flexibility Possible Through Software p.7
software compares to home building where the contractors start with a forest and an abstraction called a blueprint.
The Problems Of Characterizing The Behavior Of Discrete Systems p.7
life is analog (contiguous events – all events determined directly by previous events), software is discrete (non contiguous predetermined isolated events – initiated simply by activating them – non-deterministic), when we separate the different concerns in a system by creating discrete events one can never be sure all the possible combinations of interactions between these separated elements (concerns) of the software system will always behave as expected, exhaustive testing is impossible; one must employ design methods that foster acceptable levels of confidence in the system’s reliability.
The Consequences Of Unrestrained Complexity p.8
catastrophic system failures – chronic minor breakdowns – squandering of human resources in reacting to failures and maintaining “geriatric code” – taking precious time away from new projects, and new problems (evolution becomes crippled).
- The Structure Of Complex Systems
Examples Of Complex Systems
The Personal Computer (moderately complex) p.9
major parts of this moderately complex system are separate modules that work together
hierarchy from the most primitive (low level) constructs (abstractions) – gates magnetic molecules – to the more highly evolved constructs (abstractions) – disk drives video cards
information and function flow up through these hierarchical abstractions and then out to the other hierarchical abstractions (modules).
The Structure Of Plants And Animals (highly complex) p.10
complexity of these are discovered through the study of morphology and zoology
this is possible because both are comprised of many systems with well defined roles and behaviors
the systems within each work together but are quite different
roots feed stems which hold leaves
mouths chew food to pass to the stomach to pass into the body
at cell level great differences
sufficient similarity for meaningful classification and grouping
As well as many differences and similarities within each field there are many differences and similarities between them
both plants and animals require water, food, oxygen
both are living, both are made up of cells
animals are ambulatory plants are not, plants have sap animals have blood
The Structure Of Matter (extremely complex) p.11
planets -> solar systems -> galaxies -> local groups
atom <- protons and neutrons <- quarks <- ???
atom <- electrons <- photons? <- ????
The Structure Of Social Institutions (profoundly complex) p.11
arise as people group together to do things no individual can accomplish alone
some groups are temporary and others endure beyond a normal human life span
distinct hierarchies develop as institutions grow larger
all members share some resources – the phone system, pay roll, plumbing, electricity
interactions within a hierarchical level more frequent and similar than interaction between hierarchies – one post office may operate quite differently from the next although they report to the same manager.
The Five Attributes Of A Complex System p.12
- Frequently a hierarchy is composed of interrelated subsystems with their own subsystems, and so on, down to some level of elementary component.”
this nearly decomposable, hierarchic structure is a major facilitator to understanding, describing, and seeing such systems and their parts
The value added by a system must come from the relationships between the parts, not from the parts themselves.”
- choice of primitives is relatively arbitrary and largely up to the discretion of the observer
- “Intracomponent linkages are generally stronger than intercomponent linkages. high-frequency dynamics of the components – involving the internal structure of the components – versus the low-frequency dynamics – involving interaction among components.”
- “Hierarchic systems are usually composed of only a few different kinds of subsystems in various combinations and arrangements.”
- “A complex system that works is invariably found to have evolved from a simple system that worked … A complex system designed from scratch never work and cannot be patched up to make it work. You have to start over, beginning with a working simple system.”
Point of sanity (reality check) -> … we can never craft these primitive objects correctly the first time; we must use them in context first, and then improve them over time as we learn more about the real behavior of the system.
“Borland Delphi version 1” Object Pascal Language Guide EN Courtesy… Embarcadero