Fifty years of software engineering have taught us how to understand, model, and design 'ordinary' systems — even those that are large scale and highly complicated.
The next fifty years will demand something quite different from the software/systems community: the design of ultra-large scale, complex adaptive systems.
Examples of such systems would include the Web, a traffic management system for a city, computer-based system for employment (re)training, a unified medical information system, etc. Not to mention systems that might support solutions to critical global problems like climate change.
This workshop will provide a practical approach for understanding, modeling, and designing complex systems for deployment in complex domains. 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
- 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
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
About the instructor
Dave West began his computing career as a Computer Operator / Programmer in 1968 — the same year that “Software Engineering” became a profession. He has participated in every movement and revolution in computing since then, including: structured development, databases- and data-driven development, object development, agile development, patterns, domain-driven design, and design thinking. He pursued simultaneous careers as a professional developer and academic. Today he provides mentoring, training, coaching, and consulting services to teams and organizations seeking transformative change.