Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari or Firefox browser.

Defining Software Architecture

Prof. Cesare Pautasso
http://www.pautasso.info
cesare.pautasso@usi.ch
@pautasso

Who is a software architect?

Facilitate Communication

Software Engineering Lead

Technology Expert

Risk Management

Software Architecture and the Software Development Lifecycle

Waterfall Model

  1. Requirement Analysis
  2. Design
  3. Implementation
  4. Testing
  5. Maintenance

Bridge the Gap

Think Outside the Box

Peter Cripps

Evolutionary Model

John Reekie, Rohan McAdam

Agile Unified Process

Scott Ambler

Avoid Big Upfront Design, just enough Architecture

System Lifecycle

John Reekie, Rohan McAdam

Defining Software Architecture

Architecture vs. Code

Grady Booch

Architecture vs. Technology

Grady Booch

Architecture vs. Design

Peter Cripps

Basic Definition

N. Taylor et al.

Design Decisions

Design decisions cover all aspects of the system:

  • Structure
  • Behavior
  • Interaction
  • Deployment
  • User Interface
  • Implementation

Principal Design Decisions: the "important ones" depending on the goals of the stakeholders

Design Decisions

Modeling Architecture

Grady Booch

  • Static:
    • Structure
    • Decomposition
    • Interfaces
    • Components
    • Connectors
  • Dynamic:
    • Behavior
    • Deployment
  • Patterns
  • Design Process:
    • Constraints
    • Rationale
    • Dependencies
    • Quality Assurance
    • Team Organization
  • Target Audience
    • Technical Developers
    • Marketing/Customers
    • Management

Can this skeleton fly?

Prescriptive vs. Descriptive

N. Taylor et al.

Green Field Development

At the beginning, systems designed and implemented from scratch only have a prescriptive architecture

Brown Field Development

Systems developed reusing existing components already have a descriptive architecture (and may have an empty prescriptive architecture)

Architectural Degradation

Causes of Architectural Drift

N. Taylor et al.

From Drift to Erosion

N. Taylor et al.

Entropy

Architecture or Code First?

George Fairbanks

Architecture Hoisting

George Fairbanks

Presumptive vs. Reference

George Fairbanks

  • A Presumptive Architecture is the default architecture for a given application domain.
  • Architects need to justify variations from it
  • Example: 3-Tier architecture for Web applications
  • A Reference Architecture is predefined for a given application domain with explicitly defined variation points.
  • Architects can choose among many reference architectures and need to justify their choice

Solution vs. Product

Olaf Zimmermann

A solution architect solves the problems of one customer by designing a solution architecture made of multiple products that are integrated and reused as components

A product architect designs one product architecture that can solve the problems and satisfy all the requirements of multiple customers

M-Architecture vs. T-Architecture

Luke Hohmann

Marketing Architecture

  • Describe how to market and sell (business model, licensing model) the system to customers

Technical Architecture

  • Prescribe how to build deploy and configure the system (styles, patterns, components, connectors)

The $10000 boolean flag

Marketing Architecture

2 "different" Products:

Technical Architecture

  • For multiple “products” there can be a single technical architecture and a single codebase.
  • Simple Configuration Flags can be used to switch between the different M-architectures perceived by customers

Art or Science?

Grady Booch

Science or Art?

Grady Booch

References

Use a spacebar or arrow keys to navigate