what is software architecture?

31
Software Architecture Software Architecture Fritz Solms November 7, 2014

Upload: university-of-pretoria

Post on 15-Apr-2017

228 views

Category:

Software


2 download

TRANSCRIPT

Page 1: What is Software Architecture?

Software Architecture

Software Architecture

Fritz Solms

November 7, 2014

Page 2: What is Software Architecture?

Software Architecture

Is architecture a common concept?

Is Architecture a Common Concept?

We talk of architecture of

buildings, cities, organizations, equipment, software, education,novels, . . .

Can we find a common definition for architecture which can beapplied across

Buildings: The art and science of designing and erecting buildings.City:Organizations:Software: ???. . .

Page 3: What is Software Architecture?

Software Architecture

The purpose of architecture

Propose: Purpose of Architecture

To provide the specification of an appropriate software infrastructurewithin which application functionality is specified, deployed andexecuted, such that

1 the required access and integration channels are available

e.g. to humans, machines (trains, software systems, . . . )2 the infrastructural concerns or responsibilities are addressed

e.g. to transport people, to store information, to provide resources,. . .

3 the required quality attributes can be provided

e.g. scalability, reliability, security, performance, integrability,monitorability, auditability, flexibility, portability, deployability, . . .

Architecture addresses non-functional requirements.

Application Design addresses the functional requirements.

e.g. business process design, domestic process design, systemfunctionality design, . . .

Page 4: What is Software Architecture?

Software Architecture

Questions addressed by software architecture

Questions addressed by software architecture

1 What are the architectural components and what are theirresponsibilities?

2 How do the architectural components communicate?3 How will the system handle the number of concurrent users?4 How will authentication, authorization, confidentiality be enforced?5 How will we ensure reliability and fail-over safety?6 Does the software architecture support pluggability, to what extend

and how?7 Is logging supported by the software architecture, and if so, how?8 What frameworks, technologies, protocols, . . . , will be used?9 How does the software architecture support monitorability and

auditability?10 How does is the system deployed or ported?11 How is maintainability supported. Can the system support life

maintenance, and if so, how?12 How is high-performance achieved?13 What frameworks and technologies are used and why?

Page 5: What is Software Architecture?

Software Architecture

What is software architecture?

Suggestions?

What is Software Architecture?

Suggestions?

What is the purpose of software architecture?

i.e. what are the responsibilities of software architecture?

Page 6: What is Software Architecture?

Software Architecture

What is software architecture?

Definitions of software architecture

Many widely different definitions

No general consensus5 architects = 7 definitions.

SEI has collected over 300 definitions.

No such problem in buildings architecture, quality assurance,programming, . . .

Page 7: What is Software Architecture?

Software Architecture

What is software architecture?

Definitions of software architecture

Different Between Software Architecture Definitions

Commonalities

components and connectors

Differences

Differ in what they specifyWhether only high level or across levels of granularity

Where is the boundary?

Separation of architectural and application responsibilities

distinguish betw architectural and application components

whether functionality/processes includedwhether strategies/tactics are relevant (Aspect-Oriented ADLs)

Different definitions

Supported by different ADLs

Page 8: What is Software Architecture?

Software Architecture

What is software architecture?

Definitions of software architecture

Choice of definition affects everything

Responsibilities and skills requirements for software architects.

The contents of the architecture requirements specification.

How we design an architecture.

How we document it.

How we evaluate/validate it.

Page 9: What is Software Architecture?

Software Architecture

What is software architecture?

Definitions of software architecture

3 Classes of Software Architecture Definitions

3 classes:1 High-level abstraction of software system.

Fowler, Nagl, . . .2 Structure & externally visible properties of software system

IEEE-1471:2000, Bass-Clements-Katzman (SEI), . . .Perhaps definition which is currently most widely used.

3 Fundamental concepts & constraints within which softwaresystem is designed & developed

ISO/IEC 42010:2011, Ran, . . .New version of IEEE 1471 (Oct 2011)

Many definitionsfocus on components,

not on what software architecture semantically is.

Need to separate definition from components.

Page 10: What is Software Architecture?

Software Architecture

What is software architecture?

Definitions of software architecture

SA as High-Level Abstraction of Software System

What is high level?Where is the boundary?

If one starts with a component, is there still architecture?How do we know?

Is there any difference between architecture & applicationdesign?

Is it simply a matter of granularity.

Multiple views, e.g. Kruchten 4+1:logical view → functionality provided to end user

class, component & sequence diagramsdevelopment view → system modularization

package & component diagramsprocess view → system processes

activity diagramsphysical view → physical deployment & physical connections

deployment diagramsuse case views → representative use cases & scenarios

use case & sequence diagrams

Architecture and technology neutral application designtypically not supported

View of deploying same functionality into different architectures.

Page 11: What is Software Architecture?

Software Architecture

What is software architecture?

Definitions of software architecture

SA = Structure & externally visible properties ofsoftware system

Definition (SEI, IEEE-1471)

Structure or structures of system which comprise software elements, theirexternally visible properties, and the relationships amongst them.

Does not focus on application functionality

Main focus = structure:Components & relationshipssupported by most ADLs.

Secondary focus on properties = quality attributesBut is architecture the properties

or is it the tactics used to realize those properties?

Does not really allow for levels of granularity

Still no clear guideline for boundary between architecture &application design

though separation not excludedArchitectural or application component? — How do we know?

Page 12: What is Software Architecture?

Software Architecture

What is software architecture?

Definitions of software architecture

SA = Fundamental concepts & constraints withinwhich software system is designed & developed

Definition (ISO/IEC 42010:2011)

fundamental concepts or properties of a system in its environmentembodied in its elements, relationships, and the principles of its designand evolution

Fundamental concepts:

services & pipes for SOA,components & entities for Java-EEcommonly in form of architectural patterns

layering, pipes & filters, mikrokernel, blackboard, . . .

Constraints:

services must be stateless, self-healing, . . .

also includes components & relationships.

No strategies/tactics.

Page 13: What is Software Architecture?

Software Architecture

What is software architecture?

Reference architectures

Reference Architectures, Frameworks & InstanceArchitectures?

Definition

Domain-specific architectural template which aims to addressarchitectural concerns for a particular class of problems.

specifies infrastructure to address common architectural concerns forthat domain.Examples:

Java-EE for enterprise systems,AUTOSAR for vehicular software,SOA for integrating many systems,Space-Based for systems requiring complex decision making,

Implementing frameworksJBoss, Apache Geronimo, . . . ,Arctic Core, Continental Engineering Services, . . .Apache Axis, Open-ESB, . . . ,Gigaspaces, . . .

Instance architectureMay or may not be based on reference architecture and framework.also known as defined architecture

Page 14: What is Software Architecture?

Software Architecture

What is software architecture?

Reference architectures

A Reference Architecture is Pure Architecture

Has no application functionality.Java-EE does not specify any aspects specific to

banking, retail insurance, . . .but can deploy banking, retail or insurance application into Java-EE

AUTOSAR does not contain elements for

controlling braking systems or engines,but can deploy applications for monitoring and controlling those.

Addresses only non-functional requirements of users.

Can use them to reverse engineer what architecture really is.

Even have concrete implementations of “pure” architectures

frameworks

Page 15: What is Software Architecture?

Software Architecture

What is software architecture?

Reference architectures

Java-EE: Overview

Page 16: What is Software Architecture?

Software Architecture

What is software architecture?

Reference architectures

Java-EE: 1st level of granularity

Component = Application server

Core responsibilities:1 Provide access to users (human & system)

→ web container2 Infrastructure for processing business logic

→ EJB container3 Integrate with backend providers (e.g. persistence).

→ JPA persistence context (O/R mapper)

Addresses quality requirements for enterprise systems:

Reliability, scalability, security, integrability, flexibility

Structural pattern:

Layering

Tactics/Strategies:

clustering, interception

No application components hosted at this level of granularity.

Page 17: What is Software Architecture?

Software Architecture

What is software architecture?

Reference architectures

Java-EE: 2nd level of granularity

Components:

Web container, EJB container & JPA Persistence context

Patterns:

MVC, controller & layering

Tactics/strategies:

caching, resource reuse, interception, . . .

Application logic components:

Web container: facelets, backing & binding beansEJB container: stateless & stateful session beansPersistence context: entities

Page 18: What is Software Architecture?

Software Architecture

What is software architecture?

Reference architectures

SOA: Overview

Page 19: What is Software Architecture?

Software Architecture

What is software architecture?

Reference architectures

SOA: 2nd level of granularity

Focus on process execution engine:

Strategies/tactics:

clustering, messaging, thread pooling, . . .

Application logic concepts & constraints:Pattern:

Pipes and filters

service

statelessself-healingpublishedimplements services contractindependent/re-usable

Page 20: What is Software Architecture?

Software Architecture

What is software architecture?

Reference architectures

Insights from reference architectures

Architectural vs functional components

do they address application functionality, ornon-functional requirements/architectural responsibilities

Need to specify architecture across levels of granularity.Architectural responsibilities.

includes providing access and integration channels

Pattern for each level of granularity constraining structureStrategies/tactics

Concepts, structure & constraints for both

architectural components, andapplication logic components,

but only architectural components defined.

Page 21: What is Software Architecture?

Software Architecture

What is software architecture?

Definition of software architecture

Definition of software architecture

Definition

Software architecture is the specification of the software infrastructurewithin which application logic providing user functionality can bespecified, deployed and executed.

Application functionality

addresses functional requirements for application users

Architecture

addresses non-functional requirements

Page 22: What is Software Architecture?

Software Architecture

What is software architecture?

Components of software architecture

Components of a Software Architecture

Across levels of granularity1 Set of architectural responsibilities and components to which

these are assigned.providing access and integration channels,providing a computational environment,providing a persistence infrastructure,domain specific architectural responsibilities

addressing architectural responsibilities,structural constraints

commonly in form of patterns,

integration channels between them.2 Architectural strategies

used to concretely address quality requirements.3 Integration channels to environment

Adaptersthis includes access channelsGUI = human adapter.

4 Concepts & constraints within which application logic is to bespecified

e.g. service, content based router, . . .

Page 23: What is Software Architecture?

Software Architecture

What is software architecture?

Typical responsibilities of architecture

Typical Responsibilities of Software Architecture

The purpose of software architecture is to

provide a suitable infrastructure for application componentsproviding user functionalitywhich addresses the non-functional requirements.

Typical examples of responsibilities include

providing access and integration channels to humans and systems,managing resources effectively to achieve cost-effective scalability,enforcing security including confidentiality, authentication,authorization and non-repudiation,provide fail-over safety across all components to ensure a level ofreliability,providing an infrastructure for flexible, maintainable, applicationdevelopment, andproviding an infrastructure for reliable, efficient and auditable processexecution.

Page 24: What is Software Architecture?

Software Architecture

What is software architecture?

Pure application code

Pure Application Code

Application developers should be able to

focus on developing application functionalityleave technical concerns to software architecture.e.g. “plumbing code”

mapping onto persistence infrastructureintegration (marshalling/demarshalling, request routing, . . . )

thread pooling, object caching, authorization, . . .

Address non-functional requirements.

Application functionality should be devoid of “plumbing code”.

Page 25: What is Software Architecture?

Software Architecture

What is software architecture?

Architecture neutral design and implementation

Architecture-Neutral Design & Implementation

URDAD

method for architecture and technology neutral application design

Modern technologies:movement to take architecture our of code

into metadata often specified as annotationse.g. in Java-EE architecture taken out of code as of EJB 3.0.

Applications, at times,

annotated with meta-data for different architecturesdeployed into different software architecturese.g. Spring and Java-EE

Page 26: What is Software Architecture?

Software Architecture

What is software architecture?

Interplay between architecture and application design

Interplay between Architectural and Application Design

The architecture does not address any of the functionalrequirements of the user (application)

Infrastructure within which functionality is developed, deployed andexecuted.Concepts, patterns, strategies

But, to implement strategiesWe require functionality.

but the functionality designed addresses non-functional requirements,not functional requirements of the user.

Can use URDAD

Page 27: What is Software Architecture?

Software Architecture

What is software architecture?

Architecture as a matter of perspective

Architecture is a matter of perspective

If we, say, design a banking system

Java-EE/Spring/SOA/Space-Based architecture = architectureSpecified to address non-functional requirements

incl integration requirements.

Defined architecture based on application server, . . . = architecture.

If my job is to design a framework (e.g. an application server)application design addressing user’s functional requirements.

User = developermapping entities onto some persistence technology,performing role-based authorization,providing a handle to the transaction manager, . . .

Architectural requirements

portabilityaccess to system resources (threads, memory, . . . )May decide to use bridge (JRE)

Page 28: What is Software Architecture?

Software Architecture

The bigger picture

The bigger picture

Page 29: What is Software Architecture?

Software Architecture

Wish list

Wish List

Formalization of architecture methodology

Similar to URDADWith DSL for methodology.

Usable ADLRequires support for

Components & connectors.Infrastructure constraints in the form of structural patterns.Architectural strategies.Specification of concepts & constraints for application components.

Tool support.

Page 30: What is Software Architecture?

Software Architecture

Software architecture in the context of MDD

Software Architecture in Context of MDD

Page 31: What is Software Architecture?

Software Architecture

Responsibilities of software architecture

Responsibilities of Software Architecture?

Assist client to specify architecture requirements.

Design and document a software architecture

Validate existing and proposed software architectures

Assist with non-functional testing

Recover software architectures

Evolve architectures / re-architect

Ensure software architecture compliance

Assist developers to understand

rationale behind the software architecturetechnicalities around developing the software architecture.

includes identifying training needs within the development team.

Liase with client to ensure software architecture aligned withbusiness architecture