Вы находитесь на странице: 1из 39

Introduction to Software Architecture

Arvind W. Kiwelekar
Department of Computer Engineering,
Dr. Babasaheb Ambedkar Technological University,
Lonere 402 103 Raigad (MS) India
awk@dbatu.ac.in

29th September 2016


Outline
Learning Objectives

• To define the term Software Architecture in multiple ways


Defining Software Architecture by Comparing with
Architectural Disciplines

• Building Architecture
• Network Architecture
• Computer Architecture
Defining Software Architecture by Comparing with
Architectural Disciplines

Main Features of Building Architectue


• Walls, Roofs, Rooms, Windows, Stair cases, Number of floors,
Gumbaj, Poles, Pillars
• (i) To optimally use open space. (ii) To provide greater
ventilation. (iii) To make building more appealing
Mughal Architecture
Gothic Architecture
Hemadpanthi Architecture
Modern Architecture
Our Building
Network Architecture

Elements of Nework Architecture


• Hosts
• Swiches
• Routers
• I/O Ports
• Cables
Arrangments in Network Architetcure
Computer Architetcure

Basic Elements in Computer Architecture


• CPU
• Registers
• Memory
• I/O Devices
• Disks
Arrangments in Computer Architetcure
Common Elements across Architectural Disciplines

Discipline Elements Form Rationale


Building Walls, Roofs, Gothic, Hemadpan- (i) To optimally use
Architecture Rooms, Windows, thi, Mughal Archi- open space.
Stair cases, Number tectural Styles. (ii) To provide
of floors etc. greater ventilation.
Computer Registers,Control Reduced Instruction (i) To increase
Architecture Unit, Arithmetic Set Computers throughput.
Logic Units, Cache, (RISC), Compact (ii) To optimally use
Translation Look Instruction Set chip area.
aside Buffers (TLB), Computers, Multi-
data paths. core Processors,
Pipelined Proces-
sors.
Network Computing Ma- Network Bandwidth, (i) To avoid single
Architecture chines, Networking Network Utilization, point failure.
Cables, Storage Ring topology, Star (ii) To centrally
devices, Printers, topology, Bus topol- manage network
Switches, Routers. ogy. resources.
Software Architecture

Software Architecture = {Elements, Form, Rationale}


Software Architectural Elements
• Processing Elements Processing elements are the system
components which transform the in- put data in another more
useful form. System processes (e.g., unix processes), objects
(e.g., Java objects), functions (e.g., mathematical or graphics
functions), procedures (e.g., PL/SQL procedures) are the few
examples.
• Data Elements Data elements contain information used during
transformation processes. Tokens, program variables, data
base files are the few examples of data elements.
• Connecting Elements Connecting elements are either data
elements or processing elements which bind two different
processing elements. Method calls, synchronization primitives
(e.g., semaphore, monitors), and communication primitives
(e.g., sockets, pipes) are the few examples of connecting
elements.
Architectural Form

• Architectural Constraints
• Architectural Configuration
• Architectural Styles
Architectural Constraints

• Architectural Constraints Architectural constraints specify the


relative importance of a system property with respect to
alternatives available for design.
• For example, in case of Operating System design trade-off
between two system properties i.e. modularity and
performance can be observed.
• The role of a software architect is to grade or assign weights to
these properties. By assigning relative weights to properties,
software architects provide flexibility of choice to designers.
Architectural Configuration

.
.
Architectural Styles

• Architectural styles capture the arrangement of elements and


a pattern of interactions among architectural elements. When
a particular arrangement of elements and a pattern of
interactions among them is observed across a range of
applications the arrangement is abstracted away and it is
represented as an architectural style.
• For example, the client-server kind of interaction is observed
in application domain such as a distributed file system, a
railway reservation system, or a library information system.
• Architectural styles provide an effective mechanism to
software architects for communicating design ideas and to
reuse architecture across various applications.
• Pipe-Filter, Layered, Publish-Subscirbe,
Model-View-Controller, Mico-Kernel
Software Architecture as a Set of Properties

The software architecture of a program or computing


system is the structure or structures of the system, which
comprise software elements, the externally visible
properties of those elements, and the relationships among
them.
L. Bass, P. Clements, and R. Kizman
Software Architecture as a Set of Properties

fundamental concepts or properties of a system in its


environment embodied in its elements, relationships, and
in the principles of its design and evolution
ISO/IEC/IEEE Standard 42010
Software Architecture as a Set of Properties

• Properties are manifested due to structure or relationships


among elements.
• Exeternally visible properties are architectural properties.
• Properties are mainly complex in nature.
• Most of the architectural properties are emergent properties.
• Example of architectural properties are Performance, Security,
Scalability.
Software Architecture as a Process

• Decomposition Process
• Decision Making Process
Software Architecture as a Decomposition Process
Two different ways to decompose compilers
Software Architecture as a Decomposition Process

• The simplest way to decompose a system is to identify its


sub-activities by drawing a flow chart. Each activity in the
flowchart roughly corresponds to a module. Such kind of
decompositions is traditionally referred to as horizontal
decomposition.
• Most of the modern information systems follows this scheme
and they are broadly decomposed into data access layer,
business logic and presentation layer.
Software Architecture as a Decision Making Process

Limitations of Architecture as Decomposition Process


• Fails to explain how we arrived at a particular configuration of
parts and associations among them.
• Questions such as Which are the alternatives we have
considered to define architecture of a software system? Why
we selected a particular set of parts over other?
• What will be the implications of the selected architecture on
software development process? are remained unanswered
during the process of software design.
• In other words, in the decomposition perspective emphasizes
elements and form of a system but fails to rationalize the
architecture of a software system.
Software Architecture as a Decision Making Process

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
P. Krutchen and Jan Bosch
Architectural Decisions

• Architectural decisions generally refer to those decisions taken


in the early design phase which affect the externally visible
properties of a system and quality attributes of a software
system.
• Addition or deletion of a software element. For example, a
lightweight compiler can be designed without an optimizer
element.
• Grouping of smaller software elements into a large container.
• Defining interfaces of software elements.
• Configuring software elements in a certain way.
Architectural Decisions

• Architectural decisions generally refer to those decisions taken


in the early design phase which affect the externally visible
properties of a system and quality attributes of a software
system.
• Addition or deletion of a software element. For example, a
lightweight compiler can be designed without an optimizer
element.
• Grouping of smaller software elements into a large container.
• Defining interfaces of software elements.
• Configuring software elements in a certain way.
Non-Architectural Decisions

• Selection of a particular algorithm.


• Decisions with respective data structures and data bases. For
example, choice of hashes vs ordered lists.
• Defining the visibility of a program variable through keywords
such as private public and protected.
The Process of Software Architecting
Software architecture as a general problem-solving task
• Architectural Analysis: To identify architecturally significant
requirements from the given software requirement
specification.
• Architectural Synthesis To specify more than one architectural
solutions that satisfy the requirements specially non-functional
requirements.
• Architectural EvaluationTo validating solution i.e. Validating
the various architectural solutions specified in earlier activity
against given requirements.
• Architectural ImplementationTo create a system
implementation that conforms to the architecture of
• Architecture Documentation To describe the software system
through more than one perspective to ad- dress the concerns
of various stakeholders.
• Architectural Knowledge Management To establish and
maintain linkages between various design artifacts.
Software Architecture as Set of Artifacts

• Models representing a set of views such as process views,


logical views, deployment views use case views and physical
views are considered as con- stituting the architecture of
system.
• If these models represent a proposed system, models are used
to guide the implementation and the architecture is
prescriptive architecture.
• If the models represent an existing system, models can be
used to analyze the systen and the architecture is descriptive
architecture.
• The Open Group for Architecture Framework (TOGAF)
adopts this approach to define the term enterprise
architecture.
Software Architecture as Discipline

• How to gain control over the ever increasing size and


complexity of a software system.
• As a discipline software architecture is defined as the discipline
that is concerned with the development of techniques,
methods, frameworks for the design, documentation and
evaluation of software intensive systems.
Software Architecture as a Profession

• To define the architecture of the system.


• To perform regular reviews, communicate architecture to
different stakeholders and to write guidelines for software
development with an aim to ensure t integrity of architecture
throughout the life- cycle.
• Assess technical risks and to work-out risk management
strategies.
• To perform life-cycle management activities.
• In product marketing and product configuration which are
some of the essential activities for the success of a software
system.
Conclusion

• The term software architetcure is defined with reference to


other architectural disciplines.
• It is also defined as a process, product, profession, properties
and as a discipline in itself.
• In addition to it following terms are defined
• Architectural Constraints
• Architetcural Styles
• Architetcural Configurations
• Architetcural Decisions
• Architectural Rationales
Further Reading

• Philippe Kruchten et al.,The Past, Present, and Future of


Software Architecture,IEEE SOFTWARE, March/April 2006
• David Garlan, Software Architecture, Encyclopedia of
Software Engineering, John Wiley & Sons, Inc. 2001
• Perry and Wolf, Foundations for the study of Software
Architetcure, Software Engineering notes, 1989.
• P. Kruchten, What do software architects really do?,
Softwares and Systems, 2008
• D. Garlan Software Architecture Travelogue, ICSE 2014.
Activities

• Select a project/application from the domain of Higher


Education. Suggest at least two different ways to decompose
the application
• Identify processing, data, connecting elements from source
code given to you.
• Visit the web- page on “Community Software Architecture
Definitions”

http : //www .sei.cmu.edu/architecture/start/glossary /community .c

. Prepare a short presentations listing three definitions of your


choice.

Вам также может понравиться