Techniques For Complex Domains

Two day workshop with Prof. David West

Techniques For Complex Domains

No dates are scheduled for this workshop. Let us know if you think we should organize it near you, or if you'd like to book it on premise in your organisation.


About the workshop

Complexity changes everything.

For fifty plus years software development has used abstraction and simplification to define domains and problems that were amenable to formal, engineering, solutions.

The engineering approach with its artificial domains must give way to an understanding of complex domains and the challenges they present to the software and system developer.

What you'll learn

This workshop begins with a discussion of the differences between ‘artificial’ (complicated) and natural (complex) systems. This will lead to an understanding of the characteristics of complex systems and the challenges they present for software developers. Attendees are likely to have already encountered some of these challenges.

The workshop will address specific techniques, both design and coding, for architecture, for modularity, for autonomy, and for adaptability.

Most aspects of the development process will require modification to successfully meet the demands of complexity. Recommendations for making those modifications, based on existing best practices and overlooked techniques from past approaches, will be covered.

Covered topics:

  • A brief overview of ultra-large scale and complex adaptive systems
  • "Wicked Problems" and specific, critical, challenges posed by ultra-large scale complex systems.
  • Techniques for analyzing, modeling and understanding complex systems
    • Lessons from General Systems
    • Simple tools for modeling complex systems
    • How to isolate targets for change without losing context and connection to the rest of the system
  • Techniques for designing ‘solutions’ posed by complex systems and modifications to complex systems
    • Identifying the behavior of individual elements and relationships participating in the complex system; i.e. what behavior do they contribute to the system and/or other elements within that system.
    • Identifying ‘dependencies” and therefore ‘side-effects’ that can/will arise from introducing change
    • Isolating and initiating change
  • Techniques for implementing your designs, including code
    • Programs and code that is as adaptable as your system (changeable as rapidly as your system changes)
    • Revisiting the Object model for code
  • Techniques for establishing development processes compatible with complex systems design and managing those processes
    • Team development and discrete developmental tasks
    • What to do when things blow up in your face
    • Managing the work — lessons from Extreme Programming
    • Individual challenges and how you can be a better designer/developer
Prof. David West

About Prof. David West

David West has enjoyed a dual, parallel, career as a professional software developer and academic. His professional career started in 1968 (same year the discipline of Software Engineering was invented) as a COBOL and Assembler programmer. He has held almost every job title in the profession since then: Analyst, Architect, and even CIO.

As an academic he has created several innovative programs; introducing object-oriented development to the world’s largest software engineering program to an award winning software apprenticeship program.

His undergraduate education was in Asian Philosophy — his graduate education included an MS in Computer Science, MA in Cultural Anthropology, and a Ph.D. in Cognitive Science.

He is the author of Object Thinking (2006) and co-author with Rebecca Rikner of Design Thinking (2018). He has also published more than fifty papers on topics ranging from object-orientation to Agile, Patterns, Design, and Complexity.

No dates are scheduled for this workshop. Let us know if you think we should organize it near you, or if you'd like to book it on premise in your organisation.


Also check out