BABW Lean IT Enablement Content x Architecture What is Software Architecture? Module 1
BABW Lean IT Enablement Content
xArchitecture
What is Software Architecture?Module 1
2Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Architecture course learning objectives
Module 1 What is Software Architecture?Module 2 Architect RolesModule 3 The Practice of ArchitectingModule 4 Identifying Architectural Requirements
Module 5 Shaping the System
Module 6 Architecture Work Products
Module 7 Architecture Across the Lifecycle
Module 8 Evolving the Architecture Implementation
Module 9 Testing the Architecture
3Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
What is “software architecture”?
• A systematic response to dealing with technical risks
• A recognition that while every system is unique, there are commonalities between them
• A way to avoid every project team (or team member) from having to solve fundamental problems
• A framework of common assumptions under which applications interoperate
Developing a software architecture is still a mixture of art and science - the art is in knowing what risks are significant, and the science is in the systematic eradication of those risks.
4Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Software architecture – some definition extracts
• ANSI/IEEE Std 1471-2000─ The fundamental organization of a system, embodied in its
components, their relationships to each other and the environment and the principles governing its design and evolution
• Boehm et al., 1995─ A collection of system stakeholders' need statements─ A collection of components, connections and constraints─ A rationale which demonstrates that the components, connections
and constraints define a system that, if implemented, would satisfy the stakeholders' need statements
• Kruchten ─ The result of assembling . . . architectural elements . . . to satisfy the
major functionality and performance requirements of the system, as well as . . . non-functional requirements.
5Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Software architecture – some definition extracts (continued)
─ Deals . . . with style and aesthetics
• Jacobson, Booch, Rumbaugh─ The set of significant decisions about the organization of a software
system, the selection of the structural elements and their interfaces by which the system is composed
─ The behavior of these elements as specified in their collaborations─ The architectural style that guides this organization, these elements
and their interfaces, their collaborations and their composition─ Also concerned with usage, functionality, performance, resilience,
reuse, comprehensibility, economic and technology constraints and trade-offs and aesthetic concerns
• Eoin Woods─ The set of design decisions which, if made incorrectly, may cause
your project to be cancelled
6Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
What is software architecture?
• The significant decisions, principles andtrade-offs made regarding the system
• The blueprints that enable a multi-discipline team to work together toproduce a quality solution
• Includes the most important:─ Scenarios and non-functional requirements─ Information and relationships─ Patterns and frameworks─ Common components and mechanisms─ Connections between things
• The stuff that, if changed, would have significant and pervasive impact
The architecture of a software system represents the fundamental, irreducible choices made by the designers of the system as they work to balance a large set of trade-offs.
7Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Architecture: a balance between forces
• Architecture goals─ Stability, availability, cost of ownership, maintainability, consistency
across applications, recoverability, supportability, testability, extensibility, adaptability, compatibility, configurability, serviceability, scalability, deployability, internationalization . . .
• Architecture constraints• Platform standardization • Resource constraints• External interfaces and
dependencies betweensystems
8Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Architecture: a balance between forces (continued)
• Critical system requirements• Scalability and throughput at peak load• Needs for business flexibility; anticipation of needs• Business-critical functionality
9Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
What do developers do with architecture?
• Use as starting point for initial development work─ The "Candidate Architecture"─ Adapt “frameworks” where they exist to establish overall approach─ Adapt “patterns” where they apply─ Utilize common components to solve recurrent problems─ Architecture constrain the developer’s design space
• Add to it through refinement, refactoring─ Complete the feedback loop by engaging with the architecture team─ The architecture team works to generalize solutions and re-
baseline the architecture
10Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Benefits of a good architecture
• Increased flexibility and resilience to change─ Enable system to be maintained over time
• Minimize risk of significant late design breakage and rework─ Make the “critical” decisions early, and validate that they are correct
• Ensure a cost-effective solution approach is adopted─ Buy / build / reuse decisions─ Reduces the chance of solving the same problem in different ways
• Enable efficient parallel development─ Minimize “destructive interference” between teams and team
members
11Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Benefits of a good architecture (continued)
• Increase mobility of resources across teams─ Easier to work on other applications that share the same
architecture
• Increase predictability of outcome and reliability of estimates─ Estimates are more reliable once the architectural risks are retired
12Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
How does architecture emerge?
• Top-down─ Recognition of common solution patterns─ Reflection of standards, especially related
to security, recoverability, information integrity
─ Refactoring across projects
• Bottom-up─ Organic responses to technical risks and
mitigation strategies, project-specific needs
─ Refactoring within the project design and code spaces- But refactoring alone is usually insufficient
to shape the architecture
13Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Different levels: enterprise vs. project
• At an enterprise level, it deals with mitigating technical risks that are common across many projects ─ So that each team does not have to develop their own solution
• At project level, it deals with mitigating technical risks that are specific to the project─ Because the enterprise architecture will not solve all problems
“Enterprise” “Project”
14Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Benefits of good software architecture
• Helps ensure the following are met─ Business case─ Stakeholder needs─ Solution lifetime objectives
• Ensures a cost-effective solution approach is adopted─ Buy / build / reuse decisions─ “Minimize unnecessary creativity” – ensure wheels are not
reinvented within the project
• Increased flexibility and resilience to change─ Enable system to be maintained over time
15Company Confidential | For Internal Use Only | Do Not Copy
BABW Lean IT
Architecture – Module 1: What is Software Architecture?
Benefits of good software architecture (continued)
• Enables efficient parallel development─ Minimize “destructive interference” between teams and team
members─ Increases mobility of resources across teams─ Minimizes risk of significant late design breakage and rework
• Increases predictability of outcomes and reliability of estimates