Software Architecture Workshop
This workshop focuses on architects architecting architecture:
architecture, answering the question: "what is software architecture?", addressing the concepts and concerns of architecture design work, and introducing architectural patterns, principles and mechanisms.
architecting, that is the process of creating and evolving an architecture. The major emphasis of the workshop is on system design. We move between probing what the system needs to become, to better fit its context and purpose, and determining how best to design the system to do that. We create drafts of the various architecture views and related decision sets, to convene discussions, share techniques, heuristics and insights, and practice architecture work. It creates a forum for instructor and peer mentoring, and allows questions to be raised in situ, providing contextual grounding for advice.
architects, focusing on the role and responsibilities of the architect, expanding the focus of personal development from code to systems design and technical leadership, including strategic acuity. We also discuss architecture responsibilities and the architect role within the organization.
2017 Open Enrollment Schedule
Please call us at (812) 335-1653 or email email@example.com for more information or to enroll.
Why Do It?
We increasingly recognize that software is critical to competitive advantage even in industries we don't traditionally associate with software, from insurance and banking to automotive and shipping. Moreover, we're realizing that great design distinguishes top competitors. Software architecture is design to deliver service and product capabilities, address system complexity, and ensure we build the right system right. And evolve the system to maintain fit to purpose and to context, as the business needs shift and technology evolves.
Software architects are thus poised to play a critical role in an organization’s business success, shaping technical strategy and designing the technology capabilities that enable business initiatives, product or service capabilities, and responsiveness to change. This workshop addresses the concepts, techniques and lessons from experience that helps architects be more effective.
We have considerable experience helping architects and their organizations grapple with system design challenges and transition to higher levels of architectural competency. The software architecture workshop integrates extensive architecture experience, and builds on twenty years of working with architects and teaching software architecture workshops.
And it's fun!
This is a workshop, and small teams work on creating a draft architecture drawing on the models and guidance in Visual Architecting. We follow the iterative architecting process, and weave concepts and architecting techniques into lectures/discussion that bookend work sessions. The lecture topics are driven by the concerns that are being addressed at that stage of the architecting process. This makes it a "non-traditional" format, but it is one that works well as it allows us to work end-to-end through the creation of a draft architecture.
As we iterate through architecture design with its trade-offs, decision making, modeling and specification, we grapple with:
- system design: systems concepts, uncertainty and complexity, context, framing, constraints, forces and trade-offs.
- technical strategy: innovation and strategy concepts; technology landscape mapping; technical direction and architectural vision; architectural style and principles
- architectural patterns: structural patterns such as layers, hexagonal architecture, and microservices, and mechanisms that may be architecturally significant in various contexts (such as adapters, facades and bridges or mechanisms related to event driven architectures, etc.).
- architecture modeling including an introduction to (just enough, as relevant) Unified Modeling Language (UML), but drawing on other templates and modeling as appropriate to the design stage and its decision focus.
- architectural views: structural views help document and communicate the architecture in terms of the components and their relationships, and are useful in assessing architectural qualities like extensibility. Behavioral views are useful in thinking through how the components interact to accomplish their assigned responsibilities and evaluating the impact of what-if scenarios on the architecture. Behavioral views are especially useful in assessing run-time qualities such as performance and security. Execution views help in evaluating physical distribution options and documenting decisions.
- component specification: components are identified and assigned responsibilities that client components access through "contracted" interfaces (APIs, promises). Component interconnections specify communication and control mechanisms and allow component interactions to accomplish system behavior.
- key architectural design principles including abstraction, separation of concerns, postponing decisions, and simplicity, and related techniques such as interface hiding and encapsulation, as well as system decomposition principles, factoring and refactoring, and good interface design.
See our white paper titled "Software Architecture: Central Concerns, Key Decisions" for an introduction to our approach to architecture. Our slidedeck, The Architect's Clue Bucket, also provides an indication of our approach.
The Architecting Process
The principle focus of the workshop is doing architecture work. We cover:
- System Context: strategy and vision setting, and situational awareness through business and technology context mapping (the ecosystem: value flows and relationship networks, competitive landscape, trends and evolution; the business/ organization: capabilities, internal value flows and transformations, history).
- System Capabilities: eliciting needs/concerns and designing system capabilities -- that is, functional (i.e., behavioral) requirements and non-functional requirements (i.e., system properties including run-time qualities such as performance and reliability, and development-time qualities such as evolvability/extensibility and reusability).
- Architecture Design and Specification: iterating through technical strategy, and conceptual, logical and execution architecture views and decisions, we identify and address the various architectural concerns and challenges that typify each (including principles, styles, analogies; system decomposition and responsibility factoring, and mechanism sketching; API and mechanism design; system topology and distribution). We gain practice with various architectural models (noting that code is a key medium for design expression, but not the only one), evaluate architectural trade-offs, and document the system using different views. We explore heuristics and approaches to agility (responsiveness, adaptability, elasticity), system integrity and resilience, and sustainability (technical, economic, social and environmental).
- Architecture Improvement: decision traps and cognitive biases, fallacies, perceptual errors and what they mean for architectural design and improvement; checklists and other means to assess the system; deliberate discovery and sketch prototypes, pretendotypes, propotypes and evolutionary development; software visualization, reflection and ongoing design improvement.
We focus on experiencing these different facets of architecting, to anchor a discussion of architecture within the software development lifecycle, and implications of and for agile development.
This workshop assumes a programming background, and we focus on complementing our code design skills with system-focused design topics and techniques. We draw out what architects, and a focus on technical strategy and architecture, adds to the development process throughout evolutionary lifecycle of systems.
The Role and Responsibilities of Architects
Being (ultimately) responsible for shaping and leading system design, architects are boundary spanners -- working on code, but well beyond too. This section relates the technical and "non-technical" responsibilities and associated skills and orientations of architects, such as:
- Strategy: strategy concepts, contextual understanding/situational awareness; the architect's center of gravity shifts from a technical focus, to creating business opportunity and competitive differentiation through technology, bringing technical insight to product/service (and for more senior architects business) strategy, and setting technical direction given keen understanding of business direction and context
- Leadership: what leadership means and how to be effective; leading teams and leading up and across in the organization
- Organizational effectiveness: organizational politics and the challenges it raises for architects; empathy and listening; persuasion and influence; negotiating and resolving tensions between divergent vested interests
- Consulting/coaching: coaching developers in design; model storming, pair programming and other techniques for sharing the architecture decisions and improving the architecture and system design.
See our white paper titled "The Role of the Architect" for an overview of the architect competency framework that organizes our approach to this section. It is also covered in this executive report: What It Takes to Be a Great Enterprise Architect, by Dana Bredemeyer and Ruth Malan
If you've read this far, it's safe to let you in on the real deal here: we ostensibly work on the draft architecture for a system, but it's really a lab for working on the next iteration of your self as architect. Bring your experience. Share it. Leave with your experience set in context, and added to by the working sessions and discussions with peer architects! It's as good a thing as we all make it together. Which is typically awesome! This workshop has a track record of attracting those who are constantly learning (not that surprising given that it requires a commitment of 4 days), with enough experience to direct their learning meaningfully, and we each have a lot to give and gain from each other. It's fun! Bright, energetic, challenging fun!
Exercises form a large component of this four-day workshop, which is oriented toward building skills rather than simply exposing participants to new concepts. Also, case studies and stories from our experience are used to integrate real-world lessons into the workshop.
This workshop is designed for architects (those doing architecture work, whatever their title) and senior system design engineers. Managers of architecture teams will also benefit. Product owners may be interested too.
In-house: Pricing depends on number of students taking the class. Please contact us for details.
US Open Enrollment: The fee for the 4-day workshop is US$2,500.00 per student.
Europe Open Enrollment: The fee for the 4-day workshop is US$2,600.00 per student. This fee takes into account the higher cost structure when we run classes in Europe.
Early enrollment discount: 10% discount for enrollments completed (paid) by January 15th, 2017 for both the Eindhoven workshop and the Chicago-Schaumburg workshop.
Note: We only accept a maximum of 16 participants, so register early to avoid disappointment. Workshop participants are responsible for their own accommodations.
For open enrollment workshops: we offer a 10% discount when you enroll 3 or more people from the same company in the same workshop at the same time.
- TNO, Eindhoven, The Netherlands, December 12-15, 2016
- Eindhoven, The Netherlands, March 27-30, 2017
Instructor: Dana Bredemeyer
Enrollment fee: $2,600.00 (less 10% if paid before 1/15/17)
Please call us at (812) 335-1653 or email firstname.lastname@example.org for more information.
- Chicago/Schaumburg, April 4-7, 2017
Instructor: Ruth Malan
Enrollment fee: $2,500.00 (less 10% if paid before 1/15/17)
Please call us at (812) 335-1653 or email email@example.com for more information.
Most of our workshops are run on-site with clients, helping to ramp up an architecture focus, providing training for architects, running new product incubators with a core group of product owner/architects/developers, and so forth.
If 6 or more people from your company would like to attend this class, you may find it more cost effective (taking travel costs into account) to hold the class at your company site.
Suggest a venue: If there is a location and timing that you are particularly interested in, please let us know.
Copyright © 1999-2016 by Bredemeyer Consulting
Page Created: November 1999
Last Updated: December 5, 2016