Professional Documents
Culture Documents
3
INTRODUCTION TO SOFTWARE
ARCHITCETURE
4
WHAT ARE THE MOST IMPORTANT SUCCESS
KEYS FOR A SOFTWARE DEVELOPMENT?
Confirmed developer
System documentation.
User documentation.
6
TYPES OF SOFTWARE SYSTEMS
Embedded system :
7
TYPES OF SOFTWARE SYSTEMS
Information system:
8
TYPES OF SOFTWARE SYSTEMS
Mobile systems :
A software system that operates on smartphone, tablet,
PDA or other mobile device.
Set of data and programs that runs mobile device.
Manage mobile multimedia functions, mobile and
internet connectivity and so on in a mobile device.
9
SOFTWARE INTENSIVE SYSTEMS - DEFINITION
Software intensive systems:
Systems in which software interacts with other software,
systems, devices, sensors and with people.
10
WHAT IS SOFTWARE ARCHITECTURE?
Architectures capture three primary dimensions:
Structure
Communication
NFR
Technical constraints: restrictions made for technical reasons
Business constraints: restrictions made for business reasons
Quality attributes:
Scalability
Security
Performance
Maintainability
Evolvability
Reliability/Dependability
Deployability 11
SOFTWARE ARCHITECTURE - DEFINITIONS
[ISO/IEC/IEEE 42010]
12
SOFTWARE ARCHITECTURE - DEFINITIONS
[SEI]
13
SOFTWARE ARCHITECTURE - DEFINITIONS
Definition 3: An architecture is the set of significant
decisions about the organization of a software
system, the selection of the structural elements and
their interfaces by which the system is composed,
together with their behavior as specified in the
collaborations among those elements, the
composition of these structural and behavioral
elements into progressively larger subsystems, and
the architectural style that guides this organization –
these elements and their interfaces, their
collaborations, and their composition.
Relationships of elements
Describe how elements interact with others
15
SOFTWARE ARCHITECTURE STRUCTURES -
EXAMPLES
16
SOFTWARE ARCHITECTURE STRUCTURES -
EXAMPLES
Distribution
17
STRUCTURES FROM MULTIPLE VIEWS
Large software systems requires structures from
multiple perspectives (views)
A single view is not sufficient to address requirements
Examples of views
The context view focuses on the system functionality
The deployment view reflects the physical deployment
of software components to computing hardware
18
ANALOGY : BUILDING ARCHITCETURE VIEWS
Examples:
19
20
FORMATION AND REFINEMENT OF
SOFTWARE ARCHITECTURE
SOFTWARE ARCHITECTURE IN SOFTWARE
DEVELOPMENT PROCESS
22
SOFTWARE ARCHITECTURE IN SOFTWARE
DEVELOPMENT PROCESS
23
FORMATION OF SOFTWARE ARCHITECTURE
What must be known?
Functional requirements
Non functional requirements (quality attributes)
Influencing factors
When?
At project begining
During the development and the maintenance of the
system
How?
Incremental refinement and extension
Small teams
24
Using experience
REFINEMENT OF SOFTWARE ARCHITECTURE
Initial formation:
Study requirements
Design a rough architecture
Software Design
Requirements
architecture Implementation
25
CHARACTERISTICS OF A GOOD SOFTWARE
ARCHITECTURE
26
CHARACTERISTICS OF A GOOD SOFTWARE
ARCHITECTURE
Project organization.
Provide documentation.
27
QUALITY OF SOFTWARE ARCHITECTURE
Software quality attributes = non functional requirements (NFR)
29
DEVELOPMENT APPROACHES &
SOFTWARE ARCHITECTURES
30
PROGRAMMING PARADIGMS EVOLUTION
31
Source : école Hes SO
PROCEDURAL APPROACH
The main program coordinate procedure invocation
and manage data through parameters
32
MODULAR APPROACH
Similar functionalities are grouped into seperated
modules
The main program coordinates procedure
invocation
33
OBJECT ORIENTED APPROACH
<<Programming in the small>>
Each object encapsulates its internal state (data)
and behavior (functionalities), and interacts with
each other by procedure invocation
34
COMPONENT ORIENTED APPROACH
<<Programming in the large>>
A component is an architectural entity that
encapsulates a subset of the system’s functionality and/or
data
restricts access to that subset via an explicitly defined
interface
has explicitly defined dependencies on its required execution
context
Component
Object
35
SERVICE ORIENTED APPROACH
Both components and services are self-contained
functionality. Services enable your components to go across
language boundary.
For example, a component in .Net can talk to a
component in Java through generalized messages in XML
via Web services (i.e SOAP or RESTFul).
36
Vitruvis (Roman author, architect, and civil engineer during the 1st century BC)
38
SOFTWARE ARCHITECT
40
INTERFACES TO OTHER ROLES
41
INTERFACES TO OTHER ROLES
“Layer” of customer
Ensures that requirements are realizable
Ensures that requirements are implemented
42
INTERFACES TO OTHER ROLES
43
INTERFACES TO OTHER ROLES
45
INTERFACES TO OTHER ROLES
48
OTHER TASKS OF SOFTWARE ARCHITECT…
49
USE OF NOTATION AID
50
ARCHITECTURE MODELING USING UML
Use class diagrams to describe the domain model
51
ARCHITECTURE MODELING USING UML
Use interaction diagrams to model the interaction
and data communication between components
Interaction diagrams include communication and
sequence diagrams
A communication diagram example
52
ARCHITECTURE MODELING USING UML
Use component diagrams to model essential
system components and their relationship
53
ARCHITECTURE MODELING USING UML
Use deployment diagrams to show the layout of
hardware nodes and the deployment of
components
54
ARCHITECTURE MODELING USING UML
Use package diagrams to describe the organization of
systems, technologies and components
55
CONSIDER SERVICE QUALITY
56
CHOOSE TECHNOLOGIES AND TOOLS
Technologies
Existing best practise solutions for problems
Frameworks, libraries, components
Tools
Software development tools
57
SUPPORT PROJECT STAFFS
Architect
Plans architecture activities
Reviews artifacts (code, model, test,…)
Transfers knowledge
Integrates other teams
Presents products
Soft skills of an architect
Capacity of abstraction
Assertiveness
Capacity for teamwork
58
SUPPORT PROJECT MANAGEMENT
Suggests a suitable team structure for the
architecture
Provides cost estimation
59
REFERENCES
Oracle Support “Developing Architectures for Enterprise Java
Applications »
60