Software construction
This page describes the organizational forces that limit change.  It explains how to overcome them when necessary. 

Power& tradition holding back progress
This page uses an example to illustrate how:
  • A business can gain focus from targeting key customers,
  • Business planning activities performed by the whole organization can build awareness, empowerment and coherence. 
  • A program approach can ensure strategic alignment. 
Be responsive to market dynamics
This page uses the example of HP's printer organization freeing itself from its organizational constraints to sell a printer targeted at the IBM pc user. 
The constraints are described. 
The techniques to overcome them are implied. 
Overcome reactionaries
Primary Navigation

A critique of software construction

Summary
Bertrand Meyer develops arguments, principles and strategies for creating modular software.  He concludes that abstract data types and inheritence make object orientation a superior methodology for software construction.  Complex adaptive system (
This page introduces the complex adaptive system (CAS) theory frame.  The theory is positioned relative to the natural sciences.  It catalogs the laws and strategies which underpin the operation of systems that are based on the interaction of emergent agents. 
John Holland's framework for representing complexity is outlined.  Links to other key aspects of CAS theory discussed at the site are presented. 
CAS
) theory suggests
Plans are interpreted and implemented by agents.  This page discusses the properties of agents in a complex adaptive system (CAS). 
It then presents examples of agents in different CAS.  The examples include a computer program where modeling and actions are performed by software agents.  These software agents are aggregates. 
The participation of agents in flows is introduced and some implications of this are outlined. 
agents
provide an alternative strategy to the use of objects. 
Object-oriented Software Construction
In Bertrand Meyer's influential book 'Object-oriented Software Construction' he advocates an object oriented approach to computer software design and development. 

Meyer's arguments are influential in current software engineering practices and computer science theories.  We will summarize these arguments and then show how they both allow the development of a schematic structure, the abstract data type, and a contractual mechanism to constrain mutation.  As such Meyer's arguments align with mainstream software engineering diverging from complex adaptive system
This page introduces the complex adaptive system (CAS) theory frame.  The theory is positioned relative to the natural sciences.  It catalogs the laws and strategies which underpin the operation of systems that are based on the interaction of emergent agents. 
John Holland's framework for representing complexity is outlined.  Links to other key aspects of CAS theory discussed at the site are presented. 
(CAS) theory
, and they
This page reviews the inhibiting effect of the value delivery system on the expression of new phenotypic effects within an agent. 
direct alignment
away from
This page discusses the mechanisms and effects of emergence underpinning any complex adaptive system (CAS).  Key research is reviewed. 
emergence
.  His implementation of a schematic structure should enable adaptive
The agents in complex adaptive systems (CAS) must model their environment to respond effectively to it.  Samuel modeling is described as an approach. 
learning


Meyer bases his argument on an analysis of the problems of ensuring a software system correctly corresponds to its specification, and that it responds robustly to the environment beyond the specification.  With the inevitable changes to the specification the software must be able to extend to match.  Meyer asserts that software extensibility is improved by design simplicity and decentralization.  He argues that this is due to these properties increasing the autonomy and localization of change efforts. 

Based on surveys of the cost of software engineering activities Meyer concludes that maintenance is of key significance since at that time it was seventy percent of the cost.  This reflected the current difficulty of changing software and fixing bugs.  Meyer introduces object orientation with its aim of making modification easier.  Data format changes were notably costly.  Meyer asserts that this reflects the way current software engineering practices resulted in data format dependencies spread throughout the program.  Meyer argues that data formats can be localized by using abstract data types where data is accessed via its external properties instead of its implementation. 

Meyer also argues that software component reuse had to be improved.  Common patterns should be thoroughly researched and implemented and then the components leveraged in software systems.  Reuse would then reduce the overall amounts of software having to be written resulting in:
  • Reduced costs.  
  • Improved quality. 
  • Required compatibility. 
Meyer suggests that software should be designed to be modular where that must result in: autonomy, coherence, and organization into a robust architecture.  Meyer introduces five modularity criteria:
  1. Decomposability. 
  2. Composability.  
  3. Understandability. 
  4. Continuity. 
  5. Protection. 
From these he defines five principles of modularity which are:
  1. Linguistic modular units - he requires that modules correspond to syntactic units in the language used. 
  2. Few interfaces - every module should communicate with as few others as possible.
  3. Weak coupling - if two modules communicate at all they should exchange as little information as possible. 
  4. Explicit interfaces - whenever two modules communicate, this should be obvious from the text of one or both. 
  5. Information hiding - all information about a module should be private to the module unless it is specifically declared public. 
Meyer adds a further requirement of a modular decomposition technique.  It must allow modules to be extended, while ensuring that they fulfill the contract consistently with the requestors - a property Meyer calls open-closed.  Current software engineering practice, as reviewed by Meyer, was struggling to overcome the lack of such a capability.  Meyer argues that only inheritance, which was provided by object oriented infrastructure like Meyer's Eiffel, provides this facility.  In fact emergent systems, such as businesses, already obtained this capability through schematic
Plans are interpreted and implemented by agents.  This page discusses the properties of agents in a complex adaptive system (CAS). 
It then presents examples of agents in different CAS.  The examples include a computer program where modeling and actions are performed by software agents.  These software agents are aggregates. 
The participation of agents in flows is introduced and some implications of this are outlined. 
aggregation of agents
and use of a
Plans emerge in complex adaptive systems (CAS) to provide the instructions that agents use to perform actions.  The component architecture and structure of the plans is reviewed. 
generalized schematic data representation


Meyer examines issues with reuse of software.  He argues that it was impacted by: economic, organizational, psychological and technological issues.  He viewed the then current technological constraints as undermining work in the other areas, and identified object oriented technologies as ways to remove the technological constraints. 

Meyer sees reuse of personnel, design, source code and object code as potential points of improvement.  Meyer stresses that design reuse highlights the need for reusable components to be of a conceptually high level and generality.  Meyer identifies five issues that module structures must solve to support effective reuse:
  1. Module use should be independent of variation in types. 
  2. Module use should be independent of variation in data structures and algorithms. 
  3. A module should be associated with all supporting routines. 
  4. Module use should be implementation independent. 
  5. Modules should be easily extended and changed. 
Meyer demonstrates the limitation of then current techniques for solving these problems including computer programming language Ada refers to Ada Byron, Countess of Lovelace and, in deference to her memory, is the name of a computer programming language used in developing military systems during the late 1970s and beyond.  's packages, overloading and genericity.  Object-oriented design's solution based on abstract data types and inheritance is viewed as superior.  Meyer suggests that objects are natural descriptions of operational models of the world that is being computerized.  Abstract data types provide a method of describing the objects without binding in the physical representation, by associating a list of services, with their formal properties, instead.  For Meyer this ensures that the essential properties are captured without over specifying.  Meyer sees objects and inheritance as encouraging the use of simple elegant algorithms. 

Meyer suggests that seven steps are needed to reach a truly object-oriented system:
  1. Object-based modular structure - systems should be modularized on the basis of their data structures. 
  2. Data abstraction - objects should be described as implementations of abstract data types. 
  3. Automatic memory management - unused object should be de-allocated by the underlying language system, without programmer intervention. 
  4. Classes - every non-simple type is a module, and very high-level module is a type.  
  5. Inheritance - a class may be defined as an extension or restriction of another.  Classes may be specified but the implementations deferred. 
  6. Dynamic binding - Program entities should be permitted to refer to objects of more than one class, and operations should be permitted to have different realizations in different classes. 
  7. Multiple and repeated inheritance - It should be possible to declare a class as heir to more than one class, and more than once to the same class. 
Meyer describes the run time computing structures generated by Eiffel: these are objects, structures which use references to link runnable code, and data structures together.  Each object is a run time instantiation of a compiled class description of each of the data and code components that together equate to an abstract data type.  He sees it as possible to define a contract between a client and an object.  If the client fulfills all the preconditions defined in the class, which can be verified by the compiler, then the object will produce a result that conforms to the post conditions.  Meyer sees this strategy as significantly improving the robustness of program development. 

Complex adaptive system
This page introduces the complex adaptive system (CAS) theory frame.  The theory is positioned relative to the natural sciences.  It catalogs the laws and strategies which underpin the operation of systems that are based on the interaction of emergent agents. 
John Holland's framework for representing complexity is outlined.  Links to other key aspects of CAS theory discussed at the site are presented. 
(CAS) theory
suggests alternative strategies to Meyers.  Whereas Meyer promotes object based tools and methods to transform a specification into contractually constrained accurate code, and to cope with errors and changes to the specification CAS developments aim to
Walter Shewhart's iterative development process is found in many complex adaptive systems (CAS).  The mechanism is reviewed and its value in coping with random events is explained. 
improve an initially tentative plan iteratively
.  This enables
The agents in complex adaptive systems (CAS) must model their environment to respond effectively to it.  Samuel modeling is described as an approach. 
learning
based on the
This page reviews the implications of selection, variation and heredity in a complex adaptive system (CAS).  The mechanism and its emergence are discussed. 
evolution
of
Plans emerge in complex adaptive systems (CAS) to provide the instructions that agents use to perform actions.  The component architecture and structure of the plans is reviewed. 
schematic plans
.    Local state and
Agents use sensors to detect events in their environment.  This page reviews how these events become signals associated with beneficial responses in a complex adaptive system (CAS).  CAS signals emerge from the Darwinian information model.  Signals can indicate decision summaries and level of uncertainty. 
external signals
drive the selection of schemata by the agents. 

Comparing Meyer's discussion of quality as correctness and robustness with the approaches of global systems that demonstrate efficiency and effectiveness over time raises doubts about the legitimacy of his conclusions.  Both the Internet engineering task force (IETF) process, with its open RFC is request for comment, the IETF's name for its specifications. 
s and the resulting Internet protocol (IP), a datagram based connectionless protocol specified by the IETF.  It can be used by TCP as its network layer protocol when sending and receiving data packets.   servers, and the Deming based improvements realized by Japanese car manufacturers, use adaptive processes to iteratively improve their plans and implementations.  The IETF, the internet engineering task force controls the processes that manage the architecture of the internet.   is particularly troubling for Meyer's principles of
This page discusses the strategy of modularity in a complex adaptive system (CAS).  The benefits, mechanism and its emergence are discussed. 
modularity
.  In contradiction to his recommendations to enforce information hiding and few interfaces, the IETF use open specifications and a suite of protocols that enable the deployment of a robust, and highly interconnected
This page discusses the effect of the network on the agents participating in a complex adaptive system (CAS).  Small world and scale free networks are considered. 
network
of clients and services.  Baldwin & Clark have since written about
Using John Holland's theory of adaptation in complex systems Baldwin and Clark propose an evolutionary theory of design.  They show how this can limit the interdependencies that generate complexity within systems.  They do this through a focus on modularity. 
CAS based modular design
.   They, like Meyer, are advocates of information hiding. 

In the biological world the
Representing state in emergent entities is essential but difficult.  Various structures are used to enhance the rate and scope of state transitions.  Examples are discussed. 
neuronal architecture
and the brain composed from a network, a network of interconnected neurons which perform signalling, modeling and control functions.  In Cajal's basic neural circuits the signalling is unidirectional.  He identified three classes of neurons in the circuits:
  • Sensory, Interneurons, Motor; which are biochemically distinct and suffer different disease states. 
of neurons, specialized eukaryotic cells include channels which control flows of sodium and potassium ions across the massively extended cell membrane supporting an electro-chemical wave which is then converted into an outgoing chemical signal transmission from synapses which target nearby neuron or muscle cell receptors.  Neurons are supported by glial cells.  Neurons include a:
  • Receptive element - dendrites
  • Transmitting element - axon and synaptic terminals
  • Highly variable DNA schema using transposons. 
seems at odds with Meyer's principles and strategies. 

At a basic level Meyer is promoting systems where formal methods and contracts support correct program development.  Meyer's view of contracts as propositions that can be verified is at odds with the CAS view of developers exploration of initially ill-defined competitive niches.  Niches with attributes like relative performance, and cost, and strategies like repurposing would need judges to decide if the contracts have been fulfilled!  Rather than absolute correctness CAS agents must use relative advantage in speed, efficiency, focus or other hard to quantify attributes to gain access to sustaining niches. 

Meyer's use of deferred classes allows abstract data types to specify a design while its implementation is associated at runtime through inheritance, providing the abstract data type with schematic properties.  The abstract data type can be altered to reflect additional learning by the architects.  Different inherited implementations can introduce variation into the system. 

The localization of data to specific objects is also inconsistent with CAS use of
This page reviews the implications of reproduction initially generating a single child cell.  The mechanism and resulting strategic options are discussed. 
shared schemata deployed through a developmental bottleneck
.  Further
This page discusses the interdependence of perception and representation in a complex adaptive system (CAS).  Hofstadter and Mitchell's research with Copycat is reviewed. 
perception and representation
appears essential for a system to adapt and learn in an uncontrolled environment.  But perception and representation architectures utilize sharing of perceptions among different agents. 

With the development of the Internet and Web the organizational constraints on reuse, identified by Meyer, have been weakened, as demonstrated by the emergence of open source.  But these new methods also demonstrate how beneficial open access to source code is.  Meyer's high prioritisation of information hiding is undermined. 

Meyer's positioning of top down functional design and object oriented design as the key alternatives to consider to the technological processes of software construction reflects the environment he faced.  But as the availability of computing resources has expanded more dynamic solutions aligned to CAS principles can be added. 

The problem of software engineering stretches across the whole
The complex adaptive system (CAS) nature of a value delivery system is first introduced.  It's a network of agents acting as relays. 

The critical nature of hub agents and the difficulty of altering an aligned network is reviewed. 

The nature of and exceptional opportunities created by platforms are discussed. 

Finally an example of aligning a VDS is presented. 
value chain
from research and development at one end to the users of the software products at the other.  Effective solutions have to address the interrelated challenges of
Plans emerge in complex adaptive systems (CAS) to provide the instructions that agents use to perform actions.  The component architecture and structure of the plans is reviewed. 
schematic
The agents in complex adaptive systems (CAS) must model their environment to respond effectively to it.  Samuel modeling is described as an approach. 
learning
disconnects, functional silos,
This page discusses the effect of the network on the agents participating in a complex adaptive system (CAS).  Small world and scale free networks are considered. 
network flow
and
Flows of different kinds are essential to the operation of complex adaptive systems (CAS). 
Example flows are outlined.  Constraints on flows support the emergence of the systems.  Examples of constraints are discussed. 
control
effects,
This page reviews the catalytic impact of infrastructure on the expression of phenotypic effects by an agent.  The infrastructure reduces the cost the agent must pay to perform the selected action.  The catalysis is enhanced by positive returns. 
infrastructure
and
This page reviews the strategy of setting up an arms race.  At its core this strategy depends on being able to alter, or take advantage of an alteration in, the genome or equivalent.  The situation is illustrated with examples from biology, high tech and politics. 
evolutionary amplification
effects, and
This page reviews the inhibiting effect of the value delivery system on the expression of new phenotypic effects within an agent. 
extended phenotypic alignment
impacts.  Meyer's object oriented software tools and methodologies focus on ways to respond to requirement goals and changes, but their phenotypic alignment effects undermine alternative CAS approaches.  They do little to link the agents across the value chain.  If they did the 'system' may adapt and help agents to identify and enter new high value niches. 

The Eiffel run time object can be seen as analogous to the CAS agent.  However, with the use of references rather than
This page describes the Smiley infrastructure that supports the associative binding of schematic strings to codelets defined in the Meta file and Slipnet. 
The infrastructure supporting the associations is introduced. 
The role of Jeff Hawkins neocortical attributes is discussed. 
Relevant Slipnet configurations are included. 
The codelets and supporting functions are included. 
associations
the call path is predetermined.  The schematic plan is represented by abstract data types with deferred classes which Meyer contractually constrains to be predefined during the design phase.  Instead adaptive system agents actually
This page discusses the mechanisms and effects of emergence underpinning any complex adaptive system (CAS).  Key research is reviewed. 
emerge
from aggregations which reflect the state that can be represented in the enclosed agent and the plan that is shared by every agent in the system.  


Market Centric Workshops
The Physics - Politics, Economics & Evolutionary Psychology
Politics, Economics & Evolutionary Psychology

Business Physics
Nature and nurture drive the business eco-system
Human nature
Emerging structure and dynamic forces of adaptation


integrating quality appropriate for each market
 
This page looks at schematic structures and their uses.  It discusses a number of examples:
  • Schematic ideas are recombined in creativity. 
  • Similarly designers take ideas and rules about materials and components and combine them. 
  • Schematic Recipes help to standardize operations. 
  • Modular components are combined into strategies for use in business plans and business models. 

As a working example it presents part of the contents and schematic details from the Adaptive Web Framework (AWF)'s operational plan. 

Finally it includes a section presenting our formal representation of schematic goals. 
Each goal has a series of associated complex adaptive system (CAS) strategy strings. 
These goals plus strings are detailed for various chess and business examples. 
Strategy
| Design |
This page uses an example to illustrate how:
  • A business can gain focus from targeting key customers,
  • Business planning activities performed by the whole organization can build awareness, empowerment and coherence. 
  • A program approach can ensure strategic alignment. 
Program Management
| Home

Profiles | Papers | Glossary | E-mail us