0% found this document useful (0 votes)
45 views

Chapter 1 - Introduction

This document provides an introduction to software architecture. It defines software architecture as the set of structures needed to reason about a system, including elements, relations among them, and properties. Architectural structures and views are discussed, with views representing structures in a way that can be understood by stakeholders. The importance of software architecture is outlined, including enabling quality attributes, managing change, predicting qualities, and enhancing communication.

Uploaded by

Amsalu Tessema
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views

Chapter 1 - Introduction

This document provides an introduction to software architecture. It defines software architecture as the set of structures needed to reason about a system, including elements, relations among them, and properties. Architectural structures and views are discussed, with views representing structures in a way that can be understood by stakeholders. The importance of software architecture is outlined, including enabling quality attributes, managing change, predicting qualities, and enhancing communication.

Uploaded by

Amsalu Tessema
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 44

Software Design and Architecture

(Seng 6122)

Introduction to Software Architecture

Esubalew Alemneh (PhD)

1
Content
Introduction

Define Software Architecture

Architectural Structures and Views

Why Is Software Architecture Important?

The Many Contexts of Software Architecture

Software Design

Design Vs. Architecture

Possible Research Areas and Papers for presentation 2


Introduction
Essential difficulties of Software Development

Complexity - Complexity grows non-linearly with size

Conformity - Software is required to conform to its Operating


environment, Hardware

Changeability - Software is viewed as infinitely malleable - New


requirements, business process change, standards, laws

Intangibility - Software is not embedded in space - Often no constraining


physical laws
No obvious representation – E.g., familiar geometric shapes
3
Introduction…
Despite insatiable demand for sizeable, well-engineered software, we
continue to be dogged by large numbers of project failures.

As per the IBM report, “31% of the project get cancelled before they are
completed, 53% overrun their cost estimates by an average of 189% and for every
100 projects, there are 94 restarts”.

Software industry is in Crisis

 Reasons
Projects running over-budget and over-time.
Software was very inefficient and of low quality
…
4
Introduction…
Software Architecture has role to reduce software project failure rate by
Tackling complexity
Enabling achievement of
quality requirements
 etc.

However, …

5
Define Software Architecture
Software Engineers have always employed software architectures
Very often without realizing it!
Define Software Architecture…
What is your definition of software architecture?
More than150 definitions – “ What Is Your Definition of Software Architecture“

Definition
• The software architecture of a system is the set of structures needed to
reason about the system, which comprise software elements, relations
among them, and properties of both.

Implications of the definition


Architecture Is a Set of Software Structures
• Modules – divides up system functionality
• assigned specific computational responsibilities,
• are the basis of work assignments for programming
teams
7
Define Software Architecture…
Implications of the definition ….
Architecture Is a Set of Software Structures …
• Component-and-connector (C&C)
• dynamic structures
• how elements interact with each other at runtime
• processes, objects, clients, servers, and data store
• pathways of interaction, such as communication links and protocols, information
flows, and access to shared storage.
• Examples: Concurrency Structure, Repository Structure, Client server Structure

• Allocation structures
• mapping from software structures to the system’s organizational,
developmental, installation, and execution environments
• E.g. Work Assignment, Deployment, Implementation
8
Define Software Architecture…
Implications of the definition ….
Architecture Is an abstraction
• information that has no effects outside of a single element is omitted
• i.e. focuses on public aspects of interfaces

Every Software System Has a Software architecture


• Every application has at least one architect

Architecture Includes behavior


• how elements interact with each other
• element’s behavior influences another element or
the acceptability of the system as a whole,
• this behavior must be considered, and should be
documented, as part of the software architecture. 9
Define Software Architecture…
Implications of the definition …
Not all architectures are Good architectures
• Good: the one that doesn’t preclude a system’s achievement
of its behavioral, quality attribute, and life-cycle requirements.
• What makes an architecture good?
• It can be evaluated; but in the context of specific stated goals
• Rule of thumbs (refer the text book)
• Process recommendations
• Product/structure recommendations

Architecture is not:
• system’s “early” or “major” design decisions
• About development
• About algorithms
• About data structures

Reading Assignment: System and Enterprise Architectures 10


When do you need an architecture?
•…

11
Analogy with Building Architecture
Parallels
Satisfaction of customers’ needs
Specialization of labor
Multiple perspectives of the final product
Intermediate points where plans and progress are reviewed
Properties of structures are induced by the design of the architecture
The architect has a distinctive role and character
Architecture has matured over time into a discipline

Differences
We know a lot about buildings, much less about software
The nature of software is different from that of building architecture
Software is much more malleable than physical materials
The two “construction industries” are very different
Software deployment has no counterpart in building architecture
Software is a machine; a building is not 12
Architectural Structures and Views
• ….

Three different views of the human Building Architecture Views


body: the skeletal, the vascular, and
the X-ray
13
Architectural Structures and Views…
View
A representation of a set of elements and the relations among them as written by
and read by system stakeholders
A representation of a structure

Structure
The set of elements itself, as they
exist in software or hardware

Common Software Architecture


Structures

14
Architectural Structures and Views…
• …..

15
Architectural Structures and Views…
Relating Structures to Each Other
Each of these structures provides a different perspective and each is valid
But they are not independent

Two views of a client-server system

Each view has different purpose


• The view on the right could be used for
• performance analysis,
• bottleneck prediction,
• network traffic management,
• It would be extremely difficult or impossible to do with the view on the left. 16
Why Is Software Architecture Important?
1. Inhibiting or Enabling a System's Quality Attributes
Strategies for achieving quality attributes are supremely architectural
A good architecture is necessary, but not sufficient, to ensure quality.
Achieving quality attributes must be considered throughout design, implementation, and
deployment. Example, modifiability is determined by
• how functionality is divided and coupled (architectural) and
• by coding techniques within a module (nonarchitectural).

Conflict of Quality-requirements

17
Why Is Software Architecture Important?...
2. Reasoning About and Managing Change
About 80 %of a typical software system’s total cost occurs after initial deployment
• accommodate new features, adapt to new environments, fix bugs, and so forth.
Every architecture partitions possible changes into three categories
Change Type The change Difficulty
local can be accomplished by modifying a single element. Easy and the most
desirable
Nonlocal requires multiple element modifications and Medium
underlying architectural approach remains intact
Architectural affects the fundamental ways in which the elements Difficult
interact with each other and will probably require
changes all over the system

Obviously, local changes are A good architecture is the one in which the most common changes
are local, and hence easy to make. 18
Why Is Software Architecture Important?...
3. Predicting System Qualities
Predicting system qualities is possible as we know that certain
kinds of architectural decisions lead to certain
quality attributes in a system,
The earlier you can find a problem in your design,
the cheaper, easier, and less disruptive it will be to fix.

4. Enhancing Communication Among Stakeholders


Every stakeholder has different concerns;
SW Architecture can be used as a basis for mutual understanding,
negotiation, consensus, and communication among stakeholders.
• Abstract Architecture can be understood by most nontechnical people

19
Why Is Software Architecture Important?...
5. Early design decisions
SA is a manifestation of the earliest design decisions about a system
Each decision constrains the many decisions that follow.

Examples of early design decisions


• Will the system run on one processor or be distributed across multiple processors?
• Will the software be layered? If so, how many layers will there be? What will each one
do?
• Will components communicate synchronously or asynchronously? Will they interact by
transferring control or data or both?
• Will the system depend on specific features of the operating system or hardware?
• Will the information that flows through the system be encrypted or not?
• What communication protocol will we choose?
Imagine the nightmare of having to change any of these decisions.

20
Why Is Software Architecture Important?...
6. Defining Constraints on an Implementation
An implementation must exhibits an architecture
• Implementation must be implemented as the set of prescribed elements
• These elements must interact with each other in the prescribed fashion
• Each element must fulfill its responsibility to the other elements as dictated by the
architecture.
Each of these prescriptions is a constraint on the implementer.

Element builders may not be aware of the architectural tradeoffs—the architecture (or
architect) simply constrains them in such a way as to meet the tradeoffs.
• Example: an architect assigns performance budget to the pieces of software involved in some
larger piece of functionality.
• If each software unit stays within its budget, the overall transaction will meet its performance
requirement.
• Implementers of each of the constituent pieces may not know the overall budget, only their
own. 21
Why Is Software Architecture Important?...
7. Influencing the Organizational Structure
Architecture prescribes the structure of the system being developed or being
maintained
That structure becomes engraved in the structure of the development project (and
sometimes the structure of the entire organization).
The architecture is typically used as the basis for the work-breakdown structure.
The work-breakdown structure in turn dictates
• units of planning, scheduling, and budget
• interteam communication channels
• configuration control and file-system organization
• integration and test plans and procedures;
• much more

22
Why Is Software Architecture Important?...
8. Enabling Evolutionary Prototyping
Once an architecture has been defined, it can be analyzed and
prototyped as a skeletal system.

This approach aids the development process because the system


is executable early in the product’s life cycle.

The fidelity of the system increases as stubs are instantiated, or


prototype parts are replaced with complete versions of these
parts of the software.

This approach allows potential performance problems to be


identified early in the product’s life cycle.

These benefits reduce the potential risk in the project.


23
Why Is Software Architecture Important?...
9. Improving Cost and Schedule Estimates
Architect helps to create cost and schedule estimates early
in the project life cycle

Top-down estimates (created by the architect and project


manager) are useful for setting goals and apportioning
budgets

Bottom-up cost estimations are more accurate than


purely top-down system knowledge (created by the
developers).

The best cost and schedule estimates emerge from a


consensus between the top-down estimates and the
bottom-up estimates 24
Why Is Software Architecture Important?...
10. Transferable, Reusable Model
Reuse of architectures provides tremendous leverage for systems
with similar requirements.
• What can be reused?
• Code, the requirements, the experience and infrastructure

A software product line or family is a set of software systems that are all built using
the same set of reusable assets.
• Chief among these assets is the architecture that was designed to handle the
needs of the entire family.
• The architecture defines what is fixed for all members of the product line and
what is variable.
25
Why Is Software Architecture Important?...
11. Using Independently Developed Components
Architecture-based development often focuses on components that are likely to
have been developed separately, even independently, from each other.
The architecture defines the elements that can be incorporated into the system.
• COTS components,
• Open source software
• Publicly available apps
• Networked services
The payoff can be
• Decreased time to market
• Increased reliability
• Lower cost
• Flexibility

26
Why Is Software Architecture Important?...
12. Restricting Design Vocabulary
As useful architectural patterns are collected, we see the
benefit in voluntarily restricting ourselves to a relatively
small number of choices of elements and their interactions.
• We minimize the design complexity of the system we are building
• Enhanced reuse
• More regular and simpler designs that are more easily understood and
communicated
• More capable analysis
• Shorter selection time
• Greater interoperability.
Architectural patterns guide the architect and focus the architect on the quality
attributes of interest in large part by restricting the vocabulary of design.
• Properties of software design follow from the choice of an architectural pattern.
27
Why Is Software Architecture Important?...
13. Basis for Training
The architecture can serve as the first introduction to the system for new project
members.
Module views are excellent for showing someone the structure of a project
• Who does what, which teams are assigned to which parts of the system, and so
forth.
Component-and-connector views are excellent for explaining how the system is
expected to work and accomplish its job.

28
The Many Contexts of Software Architecture
Sometimes we consider software architecture the center of the universe!

Here, though, we put it in its place relative to four contexts:


• Technical. What technical role does the software architecture play in the system or
systems of which it’s a part?

• Project life cycle. How does a software architecture relate to the other phases of a
software development life cycle?

• Business. How does the presence of a software architecture affect an organization’s


business environment?

• Professional. What is the role of a software architect in an organization or a


development project?
29
Technical Context
The most important technical context factor is the set of quality attributes
that the architecture can help to achieve.

The architecture’s current technical environment is also an important


factor.
Standard industry practices
Software engineering techniques prevalent in the architect’s professional community.

Today’s information systems are web-based, object-oriented, service-


oriented, mobility-aware, cloud-based, social-networking-friendly.
It wasn’t always so.
It won’t be so ten years from now.

30
Project Life-cycle Context
Software development processes are standard approaches for developing
software systems.
They impose a discipline on software engineers and, more important, teams of
software engineers.
They tell the members of the team what to do next.

There are four dominant software development processes:


Waterfall
Iterative
Agile
Model-driven development

All of these processes include design among their obligations.


Architecture is a special kind of design, so architecture finds a home in each one.
31
Project Life-cycle Context…
No matter the software development process, there are activities involved
in creating a software architecture,
using that architecture to realize a complete design, and
then implementing or managing the evolution of a target system or application:

This activities are


1. Making a business case for the system
2. Understanding the architecturally significant requirements
3. Creating or selecting the architecture
4. Documenting and communicating the architecture
5. Analyzing or evaluating the architecture
6. Implementing and testing the system based on the architecture
7. Ensuring that the implementation conforms to the architecture

32
Business Context
 Architectures serve some business purposes - the purposes may change over
time.
Development organizations want to make a profit, or capture market, ….
Customers want to make their lives easier or more productive.
Subcontractors or others, have their own goals dealing with the system.

Architects need to understand who the vested organizations are and what their
goals are.
Many of these goals will have a profound influence on the architecture.

Every quality attribute originate from some higher purpose that can be described
in terms of added value.
• “Why do you want this system to have a really fast response time?”
• This differentiate the product from its competition and let the developing organization
capture market share. 33
Business Context…
Some business goals will not show up in the form of requirements.

Still other business goals have no effect on the architecture whatsoever.


• A business goal to lower costs might be realized by asking employees to work from
home, or turn the office thermostats down in the winter, or using less paper in the
printers.

34
Professional Context
You will perform many duties beyond directly producing an architecture. Architects need
more than just technical skills.
Architects need to explain to one stakeholder or another the chosen priorities of different
properties, and why particular stakeholders are not having all of their expectations fulfilled.
Architects need diplomatic, negotiation, and communication skills.
Architects need the ability to communicate ideas clearly
You will need to manage a diverse workload and be able to switch contexts frequently.
You will need to be a leader in the eyes of developers and management.

Architects need up-to-date knowledge.


You will need to know about (for example) patterns, or database platforms, or web
services standards.
You will need to know business considerations.

35
Stakeholders
 Know your stakeholders
as early as possible

Talk to them, engage


them, listen to them,
and put yourself in their
shoes.

See Table 3.1 for a list of


example stakeholders
and their interests and
concerns.
36
How is Architecture Influenced?
Architecture is influenced by
Requirements
Others: Business and social influences, as well as technical ones.
The existence of an architecture in turn affects the technical, business, and
social environments that subsequently influence future architectures.

In particular, each of the contexts


for architecture plays a role
in influencing an architect
and the architecture.

37
What Do Architectures Influence?
Technical context
The architecture can affect stakeholder requirements for the next system
A customer may in fact be willing to relax some of their requirements to gain
advantages on reliability, schedule and economy.
Shrinkwrapped software has clearly affected people’s requirements by providing
solutions that are not tailored to any individual’s precise needs but are instead
inexpensive and of high quality.

Project context
The architecture affects the structure of the developing organization.
Teams are formed for individual software units; and the development, test, and
integration activities all revolve around the units.
Teams become embedded in the organization’s structure.

38
What Do Architectures Influence?...
Business context
The architecture can affect the business goals of the developing organization.
• A successful system built from an architecture can enable a company to establish
a foothold in a particular market segment.

Professional context
The process of system building will affect the architect’s experience with subsequent.
• A technical approach that enables to build successful system will be used again
and again in the subsequent system development
• Architectures that fail are less likely to be chosen for future projects.

39
Software Design
 Definition: Design is a problem-solving process whose objective is to find
and describe a way:
To implement the system’s functional requirements...
while respecting the constraints imposed by non-functional requirements...
• Such as performance, maintainability, security, persistence, cost, reliability,
portability, etc…..(long list)
• including also the budget, technologies, environment, legal issues, deadlines, ...
and while adhering to general principles of good quality

The objective of the design process is


to produce a set of detailed specifications that describe the intended form of
implementation for the software system.

40
Software Design Process

A general model of Design Process 41


Software Design Process…
 This is a general model of the design process and real, practical processes
may adapt it in different ways.

Possible adaptations are:


The last two stages of design-data structure and algorithm design-may be delayed
until the implementation process.

The system interfaces may be designed after the data structures have been specified.

The abstract specification stage may be skipped, although it is usually an essential


part of critical systems design

42
Software Design Vs. Software Architecture

Software
Design

Architectural Detailed
Design Design

43
Possible Research Areas and Papers for presentation
1. Possible research problem
1. Software Architecture based
• software cost and schedule Estimation
• Software Development Effort estimation
2. Addressing quality-requirement conflicts (using Game Theory)

2. Paper Presentation
1. Identifying quality-requirement conflicts, by B.Boehm and H.In, 1996
• Assigned to: Abdirahman Ali , 18-Mar-2020
2. Identifying Requirements Conflicts and Cooperation: How Quality Attributes and
Automated Traceability Can Help, by Alexander Egyed and Paul Grunbacher, 2016
• Assigned to: Amsalu Tessema, 18-Mar-2020
3. Software Architectural Design in Agile Environments, by Mehdi Mekni et al., 2017
• Assigned to: Minasie Lemma and Yibeltal Alemu, 25-Mar-2020
44

You might also like