Software Architecture: The Many Contexts of Software Architecture
Software Architecture Study Notes
The Many Contexts of Software Architecture
Contextual Representation
Overview of Saul Steinberg's cartoon representing varying perspectives.
Importance of understanding software architecture within technical, project life cycle, business, and professional contexts.
Technical Context
Influence of architecture on achieving desired quality attributes.
Role of architecture in support and reasoning about changes in quality attributes.
Summary of key points on how architecture influences quality:
Architecture inhibits/enables achievement of quality attributes.
It aids in managing changes.
It helps predict system qualities.
Quality Attributes Summary:
Performance: Focus on time-based behavior and resource management.
Availability: Address component redundancy and fault response mechanisms.
Usability: Strategies to improve user interface independence.
Testability: Ensure elements are observable and controllable.
Safety: Define acceptable behavioral limits in design.
Interoperability: Control external interaction components.
Missing Functionality Discussion
Functionality typically emerges as a result of architectural design decisions.
Architecture in a Project Life-Cycle Context
Overview of dominant software development processes:
Waterfall
Iterative
Agile
Model-driven development
Waterfall Model:
Structured sequential approach starting with requirements.
Emphasis on revision via feedback paths.
Iterative Development:
Cycles through requirements, design, testing, and implementation.
Challenge to uncover impactful requirements early on.
Example: Unified Process includes phases of inception, elaboration, construction, and transition.
Agile Approaches:
Incremental and iterative methodologies such as Scrum and XP.
Focus on collaboration, adaptability, and early software delivery.
Discussion about potential coexistence of Agile methodologies and architecture.
Model-Driven Development:
Emphasis on creating domain models from which code is derived, encompassing platform-independent and platform-specific modeling.
Architecture Activities in Life-Cycle Context
Activities in creating and managing software architecture:
Making a Business Case: Justification for investment, documenting costs, benefits, and risks.
Understanding Architecturally Significant Requirements: Techniques to gather requirements including use cases, scenarios, and prototypes.
Creating/Selecting the Architecture: Stress on conceptual integrity by small teams as highlighted in The Mythical Man-Month.
Documenting and Communicating Architecture: Ensure clarity and usefulness of documentation tailored to stakeholders.
Analyzing/Evaluating Architecture: Use of scenario-based techniques and methods like ATAM to ensure the architecture fulfills stakeholder needs.
Implementing and Testing Based on Architecture: Importance of adhering to architectural structures during development.
Ensuring Implementation Conformance: Monitor and maintain fidelity between architecture representation and implementation.
Architecture in a Business Context
Understanding Business Goals:
Systems designed to support the business goals of organizations, such as profitability and productivity.
Architects must understand organizational goals to translate them into architectural decisions.
Business goals may manifest as quality attribute requirements or direct architectural decisions.
Development Organization Goals:
Influence of organizational resources and expertise on architectural choices.
Potential limits on staff training and resource allocation shaped by business constraints.
Architecture in a Professional Context
Roles and Skills of Architects:
Combination of technical skills, communication, negotiation, and stakeholder management.
Duties encompass more than architectural design such as facing management and customer interactions.
Influence of Background and Experience:
Direct impact of past experiences and education on architectural decision-making.
Stakeholder Definition and Engagement:
Identification of stakeholders who have vested interests in the system.
Importance of early engagement for understanding needs and constraints, managing expectations, and negotiating trade-offs.
Structural diversity and potential contradictions in stakeholders' requirements pose a challenge for architects.
Stakeholders and Their Influence
Stakeholder Definition:
Stakeholders include customers, users, developers, and managers, each possessing unique concerns and priorities.
Diverse Concerns and Expectations:
Architects must mediate diverse stakeholder interests, often conflicting, while striving for consensus.
Table 3.1 - Summary of Stakeholder Interests:
Responsibilities including analysis, compliance checking, and overall customer satisfaction.
Influence of Architecture
How Architecture Is Influenced:
Various factors including business, social, and technical pressures shape architectural decisions.
Architecture Influence Cycle:
Feedback loop showing how the existence of architecture impacts future technical, project, business, and professional contexts.
Considerations for Architects:
Different environments, project deadlines, and requirements can lead to alternative architectural decisions even when similar conditions are present.
Conclusion
The dynamic interplay between architecture, context, and stakeholders emphasizes the necessity for architects to adapt and collaborate effectively throughout the software development life cycle.