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:

    1. Architecture inhibits/enables achievement of quality attributes.

    2. It aids in managing changes.

    3. 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:

    1. Making a Business Case: Justification for investment, documenting costs, benefits, and risks.

    2. Understanding Architecturally Significant Requirements: Techniques to gather requirements including use cases, scenarios, and prototypes.

    3. Creating/Selecting the Architecture: Stress on conceptual integrity by small teams as highlighted in The Mythical Man-Month.

    4. Documenting and Communicating Architecture: Ensure clarity and usefulness of documentation tailored to stakeholders.

    5. Analyzing/Evaluating Architecture: Use of scenario-based techniques and methods like ATAM to ensure the architecture fulfills stakeholder needs.

    6. Implementing and Testing Based on Architecture: Importance of adhering to architectural structures during development.

    7. 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.