0% found this document useful (0 votes)
73 views33 pages

Chapter 1 - Introduction

This document provides an introduction to software architecture. It begins by defining software architecture as the set of structures needed to reason about a software system, including elements, relationships between elements, and their properties. It discusses why software architecture is important, such as inhibiting or enabling quality attributes of a system and facilitating change management. The document also covers architectural structures and views, which provide different perspectives of a system.

Uploaded by

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

Chapter 1 - Introduction

This document provides an introduction to software architecture. It begins by defining software architecture as the set of structures needed to reason about a software system, including elements, relationships between elements, and their properties. It discusses why software architecture is important, such as inhibiting or enabling quality attributes of a system and facilitating change management. The document also covers architectural structures and views, which provide different perspectives of a system.

Uploaded by

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

Software Design and Architecture

(Seng 6131)

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

❖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 for the claim


➢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 of
software development

➢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
• is the set of structures needed to reason about the system,
• 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, algorithms & 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, 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 (non-architectural).

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 QAs 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;
➢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

7. Influencing the organizational structure


➢Architecture prescribes the structure of the system being developed or maintained
➢The architecture
➢Is used as the basis for the work-breakdown structure.
➢dictates units of planning, scheduling, and budget
Inter-team communication channels, configuration control
and file-system organization, etc
21
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.

22
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
23
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, requirements, experience, infrastructure
➢A software product line or family is a set of software systems that are all built using
the same set of reusable assets.

11. Using independently developed components


➢Architecture-based development often focuses on components that are developed
separately, even independently, from each other.
• COTS components, Open source software,
Publicly available apps, etc
➢The payoff can be: Decreased time to market,
Increased reliability, Lower cost, Flexibility
24
Why Is Software Architecture Important?...
12. Restricting design vocabulary
➢Use & definition of architectural patterns restricts ourselves to
a relatively small number of choices of elements and their interactions.
➢Benefits:
• Enhanced reuse, minimize the design complexity,
fast development, …

13. Basis for Training


➢The architecture can serve as the first
introduction to the system for new
project members.
➢Module views show the structure
➢C&C - explaining how the system work
25
The Many Contexts of Software Architecture
❖SA considered as the most important piece of software 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?
26
The Many Contexts of Software Architecture…
❖Technical Context
❖Imagine 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.

❖Project Life-cycle Context


❖Four dominant software development processes: Waterfall, Iterative, Agile & Model-
driven development
❖All of these processes include design among their obligations, so architecture finds a
home in each one.
❖No matter the software development process, there are activities involved in
creating architecture
27
The Many Contexts of Software Architecture…
❖ Business Context
❖Architectures serve some business purposes
❖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.
❖Some business goals will not show up in the form of requirements.
❖lowering 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.

❖Professional Context
❖You will perform many duties beyond directly producing an architecture.
❖Architects need more than just technical skills.
❖Explaining, diplomatic, negotiation, and communication skills.
❖Architects need up-to-date knowledge: You will need to know about (for example)
patterns, or database platforms, or web services standards.
28
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.
29
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.

30
What Do Architectures Influence?
❖Technical Influence - architecture can affect stakeholder requirements for the
next system
❖Shrink-wrapped software has clearly affected people’s
❖Project Influence - 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.
❖Business Influence - 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 Influence - The process of system building will affect the architect’s
experience with subsequent.
• A successful approach 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.
31
Software Design Vs. Software Architecture

32
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. Detecting & addressing quality-requirement conflicts ( example using Game Theory)
3. Detecting quality Attribute Cooperation.

2. Paper Presentation
1. Identifying quality-requirement conflicts, by B.Boehm and H.In, 1996
• Assigned to: Birara Chanie, 16-Dec-20
2. Identifying Requirements Conflicts and Cooperation: How Quality Attributes and
Automated Traceability Can Help, by Alexander Egyed and Paul Grunbacher, 2016
• Assigned to: Yohannes Sefane, 16-Dec-20
3. Software Architectural Design in Agile Environments, by Mehdi Mekni et al., 2017
• Assigned to: Megdalewit Bewketu + Melese Awoke, 23-Dec-2020

33

You might also like