the role of the software architect (short version)

19
The Role of the Software Architect Hayim Makabee International Association of Software Architects in Israel

Upload: hayim-makabee

Post on 15-Jul-2015

5.679 views

Category:

Software


0 download

TRANSCRIPT

Page 1: The Role of the Software Architect (short version)

The Role of the Software Architect

Hayim Makabee

International Association of Software Architects in Israel

Page 2: The Role of the Software Architect (short version)

About Me:

Education:

Experience:

Today:

Page 3: The Role of the Software Architect (short version)

Roles in Software Development

Software Architect

Product Owner

Developer

Tester

Technical Writer

Page 4: The Role of the Software Architect (short version)

Methodology Decisions

The software architect should participate in decisions about the

software development methodology.

Examples of methodology decisions:

1. Agile methods imply reduced design up-front and thus some form

of emergent or evolutionary design.

2. Test-Driven Development (TDD) reduces the risks associated to

Refactoring and thus requires less detailed design.

3. Pair Programming requires less design and code reviews.

Page 5: The Role of the Software Architect (short version)

Non-Functional Requirements

Non-Functional

Requirements (NFRs)

Page 6: The Role of the Software Architect (short version)

Examples of NFRs

Latency

Throughput

Robustness

Scalability

Fault-Tolerance

Page 7: The Role of the Software Architect (short version)

Architecture Planning

(High-Level Design)

Architecture Discussion:

• Frameworks

• Platforms

• Technologies

• Abstraction Layers

• Components

• Design Patterns

Page 8: The Role of the Software Architect (short version)

High-Level Design Decisions

Examples of high-level design decisions:

1. Service-Oriented Architecture (SOA) based on stateless RESTful

services returning JSON objects.

2. Staged Event-Driven Architecture (SEDA) based on message

queues and adaptive load balancing.

Page 9: The Role of the Software Architect (short version)

Requirements Specification

Use Cases

(Functional Requirements)

Use Cases

Requirements

Discussion:

• Generalizations

• Commonalities

• Patterns

• Exceptions

• Impact on NFRs

Page 10: The Role of the Software Architect (short version)

Domain Modeling Decisions

Given the Requirements Specification, the software architect

should participate in Domain Modeling.

Examples of domain modeling decisions:

1. Should a relationship be represented as an object or as an

association between two objects?

2. Should an object have a fixed list of attributes or a dynamic set of

properties?

3. Should an attribute be represented as a primitive type or as an

object?

Page 11: The Role of the Software Architect (short version)

Planning for Software Evolution

Planning for software evolution requires a good understanding

of the application’s domain:

Modeling of the main domain entities, their attributes and

relationships.

Refinement of generalization/specialization hierarchies.

Identification of the domain aspects that are not represented in the

current requirements.

Identification of areas of volatility that are likely to change.

Domain analysis should drive the introduction of mechanisms

for flexibility and extensibility.

Page 12: The Role of the Software Architect (short version)

Design Reviews

Design Review:

• Several design alternatives

• All alternatives satisfy FRs

• Different alternatives have

different impact on NFRs

• Discuss trade-offs

Page 13: The Role of the Software Architect (short version)

Design Integrity

Software Quality Attributes:

Correctness

Modularity

Coupling

Cohesion

Testability

Maintainability

Extensibility

Reusability

Page 14: The Role of the Software Architect (short version)

Multi-product Company

Sharing opportunities:

• Technologies

• Infrastructure

• Components

• Patterns

• Reuse

Product A

Product B

Product C

Page 15: The Role of the Software Architect (short version)

Infrastructure Team

Development of new:

• Infrastructure

• Reusable Components

• Tools

Product A

Product B

Infrastructure Team

Page 16: The Role of the Software Architect (short version)

Non-Functional Testing

Non-Functional Testing:

• Performance Tests

• Load/Stress Tests

• Robustness Tests

• Simulators

• Bombers

• Log Players

Page 17: The Role of the Software Architect (short version)

Internal and External Documents

External Documents:

• User Guides

• Manuals

Internal Documents:

• Infrastructure

• Service Interfaces

• Proprietary Protocols

Page 18: The Role of the Software Architect (short version)

Summary

The Software Architect works in tight cooperation with:

Product Owners: Functional and Non-Functional Requirements

Developers: Domain Modeling and Design Reviews

Testers: Non-Functional Testing

Technical Writers: Internal and External Documents

Multiple Teams: Reuse and Infrastructure

Page 19: The Role of the Software Architect (short version)

Thanks!

Q&A