01-software architecture introduction
TRANSCRIPT
-
8/14/2019 01-Software Architecture Introduction
1/37
Introduction to Software
Architecture
Ramesh Ramani
-
8/14/2019 01-Software Architecture Introduction
2/37
Contents
Why architecture?
What is architecture?
Architectural styles
-
8/14/2019 01-Software Architecture Introduction
3/37
Organisational goals influencerequirements
Requirements lead to an architecture
Architectures yield systems
Systems suggest future neworganizational capabilities andrequirements
-
8/14/2019 01-Software Architecture Introduction
4/37
-
8/14/2019 01-Software Architecture Introduction
5/37
-
8/14/2019 01-Software Architecture Introduction
6/37
Kinds of civil architecture
Communityhouses, flats and apartments, gardens, education,
hospitals, religion
Commerce
shops and stores, restaurants, hotels, office
buildings, banks, airports
Industry
industrial buildings, laboratories, farm buildings
Leisuresport, theaters and cinemas, museums
-
8/14/2019 01-Software Architecture Introduction
7/37
Where do Architectures come from?
Stake holders:
The customers
The end users
The developers
Marketing people
The developers organization
The maintenance organization,
Architectures are influenced by system stackholders
Architectures are influenced by technical and organizatinal factors
-
8/14/2019 01-Software Architecture Introduction
8/37
The stakeholders concerns:
Providing a certain behavior at runtime
Performing well on a particular piece of hardware
Being easy to customize
Achieving a short time to market
Low cost of development
Gainfully employing programmers who have aparticular specialty
-
8/14/2019 01-Software Architecture Introduction
9/37
Architectures are influenced by technical and organizationalfactors
Architecture is the summary result of a set of business andtechnical decisions.
Architects design will vary depends on many factors
Deadlines, real-time system, hardware, support software, humanresource, tools, etc
Different stakeholders has different concerns and goals, some ofthem may be contradictory
Structures and nature of the organization
In general, the influences are:
customers and end users Developing organization
Background and experience of the architect
Technical environment
-
8/14/2019 01-Software Architecture Introduction
10/37
Influences on Architecture
System
Architecture
Customer
And end user
Architects influence
Developing
organization
Technical Environment
Architects Experience
Architect(s)
Requirements (Qualities)
-
8/14/2019 01-Software Architecture Introduction
11/37
Customers and end users
Difference between customers and end usersCustomer:
pay for the development or purchase of a system andspecifies the requirements
More concerned with cost
End user: uses the systemCategories: Those who provide input to the system system administrators those who receive output from the system
Acceptable system involves:Behavior, performance, reliability, availability,platform compatibility, memory utilization, networkusage, security, modifiability, and interoperability
-
8/14/2019 01-Software Architecture Introduction
12/37
Developing organization
Developing organization and the customers may or may not besame
Three influences come from the role of the developingorganization:
Immediate business
Long term business
Organizational structure
Decision of functionality in the architecture for a large system may
affect the structure of the organization
-
8/14/2019 01-Software Architecture Introduction
13/37
Background and experience of the architects
Trying the previous approach again
Architects education and training
Exposure to successful architectural styles
Exposure to systems
Experimenting architectural style or techniques learned fromreading a book or taking a course
-
8/14/2019 01-Software Architecture Introduction
14/37
Technical Environment
Architects background and experience
Industrial standard practices
Software engineering techniques
-
8/14/2019 01-Software Architecture Introduction
15/37
Consequences of the influences on an Architect
Identify and actively engage thestakeholders to solicit their needs andexpectations
Understand the nature, source, and priorityof the constraints
Achieve the early engagement of thesystems stakeholders: Architecture review
Iterative prototyping
Require diplomacy, negotiation, andcommunication skills
-
8/14/2019 01-Software Architecture Introduction
16/37
System
Architecture
Customer
And end user
Architects influence
Developing
organization
Technical Environment
Architects Experience
Architect(s)
Requirements (Qualities)
Architecture business Cycle
-
8/14/2019 01-Software Architecture Introduction
17/37
The architecture affects the factors that
influenced it
Feedback loops
Feedback comes from the architecture
Feedback comes from the system
Architecture affects the structure of the developing organisation
Architecture prescribes units of software
Units corresponds to work assignment
Work assignment form the basis for the development projects
structure
Architecture affects the enterprise goals of the developing organisation
Architecture affects the customer requirements
Architects experience upgraded
Few systems will influence and actually change
The software engineering cluture
Technical environment
-
8/14/2019 01-Software Architecture Introduction
18/37
Software process and the ABC
Software process contains
Organization, ritualization, and managament of software developmentactivities
ABC process
Specifications, design, implementation, etc results in additional
activities
Software architects must have
Considerable organizational talent
Negotiating skills
Technical knowledge
Domain knowledge
-
8/14/2019 01-Software Architecture Introduction
19/37
-
8/14/2019 01-Software Architecture Introduction
20/37
-
8/14/2019 01-Software Architecture Introduction
21/37
Understanding the requirements
Object oriented analysis
Safty-critical systems
Creation of proto types
-
8/14/2019 01-Software Architecture Introduction
22/37
Creating or selecting the architecture
Any design process, there will be multiple candidate design
Some will be rejected immediately
Some will contend for primary
Choosing the right one is the architects greatest challenges
-
8/14/2019 01-Software Architecture Introduction
23/37
Representing and communicating the architecture
Communicate clearly, unambiguously to all stakeholders Developers must understand the work assignments Testers must understand the task structure Management must understand the scheduling implications
Representation medium should be:
informative unambiguous readable by many people with varied background
Architecture must meet:behavioral, performance, quality requirement
Representation medium can serve as input to:formal analysis techniques such as model building, simulation, verification,rapid prototyping
ADL - Architecture Description language
-
8/14/2019 01-Software Architecture Introduction
24/37
Analysis or evaluating the architecture
ADL provides analytical capabilities for runtime properties of thesystem
Its performance
Its behavior
Its communication patterns, etc
Non runtime quality attributes as:
Maintainability. ( portability, reusability, adaptability)
-
8/14/2019 01-Software Architecture Introduction
25/37
Implementing based on architecture and ensuringconformance
Concerned with keeping the developers faithful to the structuresand interaction protocols
Requirements:
Well communicated architecture
Environment or infrastructure to assists the developers
Tools for architecture development
Constant vigilance for maintenance
-
8/14/2019 01-Software Architecture Introduction
26/37
GOOD architecture
There is no such thing as an inherently good or bad architecture
Architectures are either more or less fit for some stated purpose
Categories of recommendations:
Process recommendations
Product recommendations
-
8/14/2019 01-Software Architecture Introduction
27/37
Under water acoustic system
Control process
Prop loss
model Reverb modelNoise
model
-
8/14/2019 01-Software Architecture Introduction
28/37
What is Software Architecture?
Bass, Clements, and Kazman. Software Architecture in
Practice, Addison-Wesley 1997:
The software architecture of a program or computingsystem is the structure or structures of the system, which
comprise software components, the externally visible
properties of those components, and the relationships
among them.
-
8/14/2019 01-Software Architecture Introduction
29/37
What is Software Architecture?
Implications of this definition:
architecture defines components
systems can comprise more than one structure
every software system has an architecture
the behavior of each component is part of the
architecture
- The architecture for a system to be a good oneor a bad one
-
8/14/2019 01-Software Architecture Introduction
30/37
Architectural styles, reference models, and
reference architecture
Ref. model
Archi. style
Ref.
architecture
Software architecture
System architecture
-
8/14/2019 01-Software Architecture Introduction
31/37
The Whole Story
Tactics Selection
QualityRequirements
BusinessRequirements
Tactics Implementation:Design Patterns &
Architectural Patterns
-
8/14/2019 01-Software Architecture Introduction
32/37
32
Quality attributes
Quality of the system
Business quality
Quality of architecture itself
-
8/14/2019 01-Software Architecture Introduction
33/37
-
8/14/2019 01-Software Architecture Introduction
34/37
Tactics
A tactic is a design decisionthatinfluences a quality attribute.
We are not inventing
Tactics can refine other tactics
Patterns package tactics
Tactics to controlResponse
Stimulus Response
-
8/14/2019 01-Software Architecture Introduction
35/37
Availability tactics
Tactics to controlAvailability
Fault Fault Masked orRepair mode
Availability
Fault Detection Recovery/Preparation
And Repair
Recovery
/Re-introductionPrevention
Ping/Echo
Heart Beat
Exception
Voting
Active redundancy
Passive redundancy
Spare
Shadow
State
re-synchronization
Rollback
Removal from
Service
Transaction
Process monitor
-
8/14/2019 01-Software Architecture Introduction
36/37
Importance of Architecture
Early design decisions
defines constraints on an implementation
dictates organizational structure
inhibits or enables a systems quality attributes
predicting system qualities by studying its architecture
easier to reason about and manage change
-
8/14/2019 01-Software Architecture Introduction
37/37
Importance of Architecture
Transferable, reusable model
product lines share a common architecture
systems can be buit by using large, externallydeveloped components
restriction of vocabulary of design alternatives
can be the basis for training