Lecture of 17 January 1995
Administrivia
- Book Situation
- Hub -- 67 more copies any day now
Structure of Complex Systems
Examples of Such Systems
- Personal Computers have several major functional elements,
each of which is a complex subsystem in itself.
- Plants and Animals are complicated organisms. They comprise
many different organs and functional systems. These parts (usually)
interact in well-defined and complementary ways.
- The Structure of Matter as viewed by physicists represents a
complex interaction of components. Some would argue that the organization
we see in the structure of matter provides more information about us than
about matter, but only a solipsist would argue that there is no structure
to matter beyond what we impose upon it.
- The Structure of Social Institutions, while clearly a
product of human endeavor, provide complex and systems with many interacting
agents.
Five Attributes of a Complex System
Largely drawn from Simon, H. The Sciences of the Artificial, MIT Press,
1982
- Hierarchical Form
- Choice of which components to view as primitive is relatively
arbitrary
- Intracomponent linkages are stronger than intercomponent linkages
- Composed of a few different kinds of subsystems in various combinations
and arrangements
- Working ones evolved from simpler systems that worked
Organized and Disorganized Complexity
Form of a Complex System
Hierarchies formed by two kinds of relationships:
-
is-a
Gives the hierarchy of object structures in the system
-
has-a (or part-of)
Gives the hierarchy of class structures in the system
Limitations of Humans in Dealing with Complexity
- One is obliged to reference Miller, G. The Magical Number Seven,
Plus or Minus Two: Some Limits on Our Capacity for Processing Information.
The Psychological Review, vol. 63(2), p.86. People don't deal
well with large systems containing many different objects. They need
hierarchies to simplify the problem.
Bringing Order to Chaos
Role of Decomposition
-
We must employ the method of divide et impera (divide and rule,
often glossed as divide and conquer).
Algorithmic Decomposition
- This is the classical top-down structured design approach.
- In this approach, the system is decomposed using a state-machine approach.
We decompose the large mapping from initial to final state by subdividing
it into subcomponent state mappings, then further refining these state
mappings, until we have gotten down to primitive instructions (which provide
the finest granularity of state mapping specifiable on our computer).
Object-Oriented Decomposition
- In this alternative approach, we think of the system in terms of objects.
- We consider the whole system a single object, and decompose it into its
relevant object parts. These objects have specific responsibilities with
respect to the system as a whole, respond to specific stimuli, and interact
in well-defined ways.
Algorithmic vs. Object-Oriented Decomposition
- Algorithmic view emphasizes the sequencing of events
- Object-oriented view emphasizes the agents who are partaking in these
events
- Neither view is the one true way. We must employ multiple
views if we want to solve complex problems with elegant, simple solutions.
- Experience indicates it is better to take the object-oriented view
first when designing
Role of Abstraction
-
We remove complexity by clustering information together.
Role of Hierarchy
-
Hierarchies give us a way to reveal or obscure the elements from which
an abstraction is constructed.
Designing Complex Systems
Engineering as a Science and an Art
-
We must make software work, yet we must also apply an artistic aesthetic when
constructing software
The Meaning of Design
Systems must satisfy
- Functional Specifications
- Limitations of the target media
- Performance requirements and resource limitations
- Constraints on form
- Restrictions on the design process
Model Building
- Models appeal to the principles of decomposition, abstraction, and
hierarchy.
- Different models can be employed to describe different aspects of a
system.
- Successful system design processes involve multiple models.
Elements of Software Design Methods
-
Notation
A language in which to express the models
-
Process
Activities that lead to construction of the system models
-
Tools
Specific artifacts that are employed to provide support for the
creation of models
Models of Object-Oriented Development
- Two Orthogonal Considerations:
- Static vs. Dynamic nature of a model
- Logical vs. Physical nature of a model
- When we discuss the physical nature of a model, we mean this
in a metaphorical sense. Madsen, Moeller-Pederson, and Nygaard
describe this metaphor as follows:
In computerized physical models, objects are the material used for representing
physical phenomena from the application domain.
Objects are thus considered as similar to cardboard, sheets, Lego bricks, etc.,
in the sense that objects are physical material that may be used for
representing (or modeling) physical phenomena.
Objects are computerized material.
The Object Model
My guess is that object-oriented programming will be in the 1980s what
structured programming was in the 1970s.
Everyone will be in favor of it.
Every manufacturer will promote his products as supporting it.
Every manager will pay lip service to it.
Every programmer will practice it (differently).
And no one will know just what it is. (T. Rentsch)
Evolution of the Object Model
Trends in Software Engineering
Programming Language Generations
- From early to later programming languages, we have seen a shift of
increasing support for abstraction mechanisms and access control (or
encapsulation).
- These trends have led to the development of object-oriented and
Object-Based languages such as Smalltalk, Object Pascal, C++, CLOS,
Ada, and Eiffel.
Foundations of the Object Model
-
The Object Model represents an evolutionary development in programming
languages, not a revolutionary one.
OOP, OOD, and OOA
-
Objects have state and identity.
They can change state, behave, be manipulated, or stand in relation to other
objects in self-consistent ways.
That is, objects have integrity.
If a programming construct does no have this kind of integrity, it does
not correspond to an object.
OOP
- Object-oriented programming involves organizing programs as cooperative
collections of objects.
- It is of value to use and object-oriented language to write
object-oriented programs
OOD
-
Object-oriented design uses object-oriented decomposition (as opposed to
algorithmic decomposition) and depicts the Logical/Physical and
Static/Dynamic models of a system
OOA
-
Object-oriented analysis is the method of examining requirements from
the perspective of the classes and objects found in the vocabulary of the
problem domain.
This document is copyright 1995 by Joseph N. Wilson.
$Id: Jan.17.html,v 1.1 1995/01/16 20:28:09 jnw Exp jnw $