Top Banner
www.codingthearchitecture.com From Developer to Architect
73

From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Mar 06, 2018

Download

Documents

ngothu
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

www.codingthearchitecture.com

From Developer to Architect

Page 2: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Simon Brown and Kevin Seal

Hands-on software architects

Page 3: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

What is architecture?

Page 4: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

10 minutes

What is architecture?

In groups discuss the perceived meaning of “architecture” in our technical and

business domains.

BuzzwordsBenefits / motivations

Examples and counter-examples?

Page 5: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

What is architecture?

Architecture

Requirements

Design Blueprint

Best PracticeStructure

Functional

Non-functional

Page 6: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Grady Booch

What is design?

As a noun, design is the named structure or behaviour of a system whose presence resolves ... a force

on that system.A design thus represents one point

in a potential decision space.

Page 7: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Grady Booch

What is design?

All architecture is design, but not all design is architecture.

Architecture represents the significant decisions, where

significance is measured by cost of change.

Page 8: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

5 minutes

What types of architecture?

In groups consider the various types of architecture you’ve heard of.

Organisational levelResponsibilities

Day-to-day activities

Page 9: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

What types of architecture?ApplicationBusinessDataEnterpriseHardwareInformationInfrastructureNetworkPlatform

PerformanceSecuritySoftwareSolutionSystemTechnicalTechnologyWeb...

Page 10: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Application architecture

Application

Function Design Patterns

Software Team

Page 11: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

System

Application 1

Application N

System architecture

Heterogeneity Hardware

Integration Legacy Systems

Page 12: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Enterprise

System 1

Application 1

Application N

System N

Application 1

Application N

Enterprise architecture

Business Process

Technical Strategy

Integration(EAI) Consistency

Page 13: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture

Architecture is simply the deliberate and considered resolution of significant

problems

Page 14: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

The role of an architect

Page 15: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

10 minutes

The role of an architect

In groups draw up an organisation chart to describe the structure of a small team

comprising:

Project ManagerSenior DeveloperTwo Developers

Technical Architect

Page 16: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architect as team leader

Project Manager

Architect

Senior Developer

Developer Developer

...Project management

...Team leading

...Developing

Page 17: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architect and PM as peers

Project Manager Architect

Developer Developer

Senior Developer

...Team leading

...Project management

...Functional requirements

Non-functional requirementsStructure and designFitness for purpose

MentoringQuality

Technical authorityEstimation and planning

Development process

Page 18: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Flat structure

Team Member 1

Team Member 2

Team Member 4

Team Member 5

Team Member 3

...Functional requirements

Non-functional requirementsStructure and designFitness for purpose

MentoringQuality

Technical authorityEstimation and planning

Development process

Page 19: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

The role of an architectAn architect brings together many aspects of software development:Requirements gatheringEstimation and planningAnalysis and designCoaching and mentoringQuality assuranceTesting and deploymentProcess and methodology

More than a team leader and lead developer role

Page 20: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

The role of an architectHas technical authority and responsibility for the solutionEnsures non-functional requirements are met along with functional requirementsDecomposes the solution into subsystems to ensure consistency at appropriate levelHelps define and apply best practiceWorks with the PM to review estimates and cost and to track progressDrives technical quality assurance

Page 21: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architect is a role, not a rank

The architect role is more than being an experienced developer or designer - it’s also about quality assurance, mentoring and working with

stakeholders.

Page 22: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture in the software development

lifecycle

Page 23: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

TransitionConstructionElaboration

Architecture & RUP

Skills

Business Modelling

Requirements

Analysis & Design

Implementation

Test

Deployment

Configuration Management

Project Management

Environment

Inception

Page 24: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture & RUP

Transition

Roll-out

Handover

Fire-fighting

Construction

Low-level design and development

Coaching, mentoring and technical

assistance

Quality assurance

Testing and deployment

Estimation and project planning

Elaboration

Use case model or requirements

catalogue

Software architecture document

Executable reference architecture

Definition of best practices

Estimation and project planning

Test and quality plans

Inception

Initial requirements capture

(functional and non-functional)

Vision or project initiation document

Estimation and project planning

Page 25: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Skills

Business Modelling

Requirements

Analysis & Design

Implementation

Test

Deployment

Configuration Management

Project Management

Environment

Sprint 1 Sprint 2 Sprint 3

Architecture & Scrum

Page 26: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture & process

The architect is involved in all phases of a project...

... not just analysis and design.

Page 27: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture & process

Review!

Allow time for reviewDelegate responsibility

We probably don’t do enough

Page 28: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

What drives the architecture?

Page 29: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architectural drivers

Requirements

Architecture

Constraints

Cost Skills

Technical strategyTimeFunctional

Non-functional

Page 30: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Constraints

Page 31: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Constraints

Cost

Scope

Time

Cheap + Quickly = Feature-light

Feature-rich + Quickly = Expensive

Page 32: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Constraints

Quality

Scope

Cost Time

Page 33: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Constraints

Technology(e.g. existing licenses, internal

intellectual property, interoperability, maturity, open source policies/licenses, vendor

“relationships”, etc)

Page 34: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Constraints

Resource/skills(e.g. team size, lead time, future

availability, training, specialists, etc)

Page 35: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

ConstraintsOther constraintslegal/compliancestrategic imperativesexisting systemscompany politicspast failures...

Often expressed astechnology constraintsnon-functional requirements

Page 36: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Constraints

Constraints can drive the architecture more than the

requirements.“On time, on budget” is a

good target.

Page 37: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Functional requirements

Page 38: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Functional requirements

Pay close attentionto the functional requirements!

Page 39: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Functional requirements

The functional requirements

are not always well defined.

Page 40: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Functional requirements

The functional requirements are

not set in stone.

Page 41: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Non-functional requirements

Page 42: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Kevlin Henney

Non-functional requirements

How many elephants did you see at the zoo?

How many non-elephants?

Page 43: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

5 minutes

Non-functional requirements

In groups think of the various “-ilities” you’ve encountered in software

development.

Page 44: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Non-functional requirementsAccessibilityAuditabilityFlexibilityExtensibilityConfigurabilityTestabilityRepeatabilityInteroperabilityAvailabilityScalability

InstallabilityManageabilitySupportabilityRecoverabilityUsabilityTimelinessPerformanceComplianceSecurity...

Page 45: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Non-functional requirements

SpecificMeasurableAchievableRelevantTime-bound

Page 46: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Non-functional Requirements

Functional?

I18N

Supportability

Accessibility

Non-functional requirements

Testability

Performance

Interoperability

Security

Availability

Scalability

Page 47: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

15 minutes

Non-functional requirements

In groups consider the example functional specification.

List some of the NFRs you would expect and how you might measure them.

Page 48: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architectural drivers

Don’t blindly focus on code design; always ask what the

major forces are on the system and how your

architecture resolves them.

Page 49: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architectural drivers

The architect helps ensure a complete set of

requirements is captured......but probably doesn’t

define them.

Page 50: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definition

Page 51: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definition

Why do you need to define the architecture?

Page 52: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definition

No definedarchitecture

No definedstructure

Inconsistency within the code base

Quality problems

Lack of guidance for

the team

No technical leadership

Project failure

Page 53: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definition

Every system has an architecture, but not every

architecture is defined.

Page 54: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definition

What is an architecture definition?

Page 55: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definition

How much architecture do you need to define?

Page 56: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

How much architecture?

You need to define

“just enough” architecture.

Page 57: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definitionWhat do you do if you are faced with the following?

Complex non-functional requirementsConflicting non-functional requirementsNew and unfamiliar technologiesIntegration with existing systemsA team you’ve never worked withA vast array of technology and design choicesTight deadlines

Page 58: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definition

You start defining the architecture

Page 59: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

http://www.agilemodeling.com/essays/agileArchitecture.htm

Architecture definition

Agile Architecture;base your architecture on requirements, travel light

and prove your architecture with concrete experiments.

Page 60: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definition

Overall Architecture

Executable Reference Architecture

Page 61: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Architecture definition

Architecturally significant

Page 62: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

10 minutes

Architecture definition

In groups consider the example functional specification.

What would you include in your executable reference architecture?

Page 63: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Software Architecture Document

Page 64: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Software architecture document

Software Architecture Document

Outline of major software components and their

interactions

Common understanding of the principles used during

design and implementation

Description of the hardware and software platforms on which the

system is built and deployed

Explicit justification of how the non-functional requirements are met

Page 65: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Software architecture document

Architecture involves

more than one viewof the application or system.

Page 66: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Software architecture document

Software Architecture Document

Architectural principles and

constraints

Functional view

Non-functional

view

Process view

Interface view

Technology selection

Logical view

Page 67: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Software architecture document

Software Architecture Document

Architectural principles and

constraints

Functional view

Non-functional

view

Process view

Interface view

Technology selection

Logical view

Data viewJustification of the NFRs

Security viewAdministration view

Infrastructure view

Deployment view

Design view

Page 68: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

30 minutes

Software architecture document

In groups consider the example requirements specification.

Draw up the logical view (including technologies) for a solution.

Page 69: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Revisiting therole of a software

architect

Page 70: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Software Development

Software Architecture

Hands-on software architect

A balance of the bigger picture and the low level detail.

Page 71: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Definition

Management of non-functional requirements

The role of a software architect

Delivery

Ownership of the bigger

pictureLeadership

Coaching and mentoring

Quality assurance

Design, development and testing

Technology selection

Architecture definition

Architecture evaluation

Architecture collaboration

This is what we write about on our

website...

www.codingthearchitecture.com

Page 72: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Discussion

Page 73: From Developer to Architect - Coding the Architecturestatic.codingthearchitecture.com/...from-developer-to-architect.pdf · Requirements Design Blueprint ... Testing and deployment

Websitehttp://www.codingthearchitecture.com

Google Grouphttp://groups.google.com/codingthearchitecture