Professional Documents
Culture Documents
Software Architecture
Software Architecture
Software Architecture
Software
Architecture
CSC4307
Outline
DISTRIBUTION TECHNOLOGY
ARCHITECTURE ISSUES
“Architecture represents the significant
design decisions that shape a system,
where significance is measured by cost
of change”
Simon Brown
What is
Architecture?
“Architecture in software development
are decisions that are hard to reverse”
Architecture
Metaphor
• Software Architecture
• Data Architecture
• Depict all architectural design including:
6
The IEEE “Architecture is the fundamental
definition of organization of a software system
embodied in its components, their
software relationships to each other and to
architecture the environment, and the
principles guiding its design and
evolution.”
7
• A component is an element that
Software implements a coherent set of
functionality or features.
architecture
and
• Software component can be
components considered as a collection of one or
more services that may be used by
other components.
8
Access to services provided by software components
Agile
Terminologies
Source: https://courseux.com/ux-agile/
• YAGNI, or "You Ain't Gonna Need It", emerged
as one of the key principles of XP. Yagni is a way
to refer to the XP practice of Simple Design.
(need to be used in combination with
continuous refactoring, CI and CAT)
Agile
Terminologies
• Sprint 0: Set up technology tools
(servers/workstations, set up CI environment, version
control etc…), work on 1-2 stories to finish, Initial
system architecture modeling.
• Spike : an experiment that allows developers to learn
just enough about the unknown elements in a user
story
Agile • Architectural Spikes : is a technical risk-reduction
technique where you write just enough code to
Terminologies explore the use of a technology or technique that
you're unfamiliar with.
(cont.)
• Timeboxed usually 1-2 days work
for one pair
15
Responsiveness: Does the system return
results to users in a reasonable time?
16
Interoperability: Is your system able to
understand communications and share data
with external systems ?
Non- System’s ability to understand interfaces and
functional use them to exchange information under
system specific conditions with those external
systems.
quality
attributes Reliability: Do the system features behave as
expected by both developers and users?
17
A centralized security architecture
of system
security
18
Benefits :
• Easier to design and build protection
Centralized
• Information can be accessed more
security efficiently.
architectures Drawbacks:
• If your security is breached, you lose
everything.
Shared
Database
Architecture
19
If you distribute information, it takes longer
to access all the information and costs more
to protect it.
Multiple
Database
Architecture
20
Maintainability
and
performance
• Minimizing complexity.
22
Architectural Design
24
• Nonfunctional product characteristics:
• Security and performance affect all users. If
you get these wrong, your product is unlikely
to be a commercial success.
The • optimize the most important.
importance of
architectural
design issues
25
• Product lifetime:
• If you anticipate a long product lifetime, you
will need to create regular product revisions.
You therefore need an architecture that is
evolutive, so that it can be adapted to
The accommodate new features and technology.
importance of
architectural
design issues
26
• Software reuse:
• You can save a lot of time and effort, if you can
reuse large components from other products
or open-source software. However, this
constrains your architectural choices because
you must fit your design around the software
The that is being reused.
importance of
architectural
design issues
27
• Number of users:
• If you are developing consumer software
delivered over the Internet, the number of
users can change very quickly. This can lead to
serious performance degradation unless you
design your architecture so that your system
The can be quickly scaled up and down.
importance of
architectural
design issues
28
• Software compatibility:
• For some products, it is important to maintain
compatibility with other software so that
users can adopt your product and use data
prepared using a different system.
The
importance of
architectural
design issues
29
• Human and organizational factors
30
• Maintainability vs. Performance
31
Maintainability Performance
32
Security Usability
33
Authentication
layers
35
• How should the system be organized
as a set of architectural components,
where each of these components
provides a subset of the overall
system functionality?
Architectural
design • How should these architectural
questions components be distributed and
communicate with each other?
36
System Decomposition
38
An Architectural
Model of a
Document
Retrieval system
39
• Complexity in a system architecture
arises because of the number and the
nature of the relationships between
components in that system.
Architectural
complexity
40
Examples of component
relationships
41
• Localize relationships
If there are relationships between
components A and B, these are easier
How to to understand if A and B are defined in
the same module.
Control
Architectural • Reduce shared dependencies
complexity? Where components A and B depend on
some other component or data,
complexity increases because changes
to the shared component mean you
must understand how these changes
affect both A and B.
42
Architectural
Design
Guidelines
43
A generic
layered
architecture for
a web-based
application
44
Each layer is an
area of concern
and is considered
separately from
other layers. The components
Architectural are independent
Design and do not overlap
in functionality.
Guidelines in
a layered
architecture
46
Cross-cutting concerns
49
Client-Server
Architecture
50
The model-
view-
controller
pattern
51
• Client-server communication normally uses
the HTTP protocol.
• HTTP is a text-only protocol so structured
data must be represented as text.
• Two ways of representing this data: XML
and JSON.
Client-server
communication
52
Multi-tier client-server
architecture
53
Service-Oriented
Architecture
54
• Services in a service-oriented
architecture are stateless components,
which means that they can be replicated
and can migrate from one computer to
another.
Service-
Oriented • Many servers may be involved in
Architecture providing services.
• A service-oriented architecture is
usually easier to scale as demand
increases and is resilient to failure.
55
Data type and data updates
• structured data that may be updated by different system
features, → single shared DB that provides locking and
transaction management.
• Data is distributed across services, → keep it consistent
(adds overhead to your system).
56
Database
Should you use a relational SQL database
or an unstructured NOSQL database?
Platform
Should you deliver your product on a
mobile app and/or a web platform?
Technology
Choices
Server
Should you use dedicated in-house
servers or design your system to run on a
public cloud?
If a public cloud, should you use Amazon,
Google, Microsoft, or some other option?
57
Open Source
Are there suitable open-source
components that you could incorporate
into your products?
Technology
Choices
(cont.) Development Tools
Do your development tools embed
architectural assumptions about the
software being developed that limit your
architectural choices?
58
Technology Issues
Database
60
Delivery Platform
• Intermittent connectivity
• Processor power
• Power management
• On-screen keyboard
61
Cloud vs customer Server:
62
• Open-Source software use/reuse
63