Software Architectures - Computer Science & Information Systems
Download
Report
Transcript Software Architectures - Computer Science & Information Systems
Software Architectures
Lecture 1-2
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
1
Course Details
• Title: Software Architectures
• Code: SSZG653
• Faculty: PANKAJ VYAS
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
2
Scope of the course
• To understand architectural abstractions,
localizing and codifying the ways components
interact, and distinguish among the various
ways in which architectural principles can be
applied to software system and analysis and
design.
• To present a pattern-oriented approach to
software architecture, without restricting to a
particular paradigm say, object oriented.
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
3
Learning Principle
• Learning principle
– “… You can know the name of a bird in all the
languages of the world, but when you’re finished,
you’ll know absolutely nothing whatever about
the bird. You’ll only know about humans in
different places, and what they call the bird, So
let’s look at the bird and see what it’s doing –
that’s what counts”
–
Richard P Feynman (Book: What Do You Care What Other People Think)
Decide what you would like to focus on
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
4
Course Objectives
• To illustrate the current state of the discipline of
Software Architecture and examine the ways in which
architectural design can affect software design
• To explain the importance of nonfunctional
requirements in terms of quality attributes of a system
• To study the various architectural styles used in
software engineering
• To understand the evaluate designs of existing software
systems from an architectural perspective
• To provide the intellectual building blocks for designing
new systems in principled ways, using well-understood
architectural paradigms
• To present concrete examples of actual system
architectures that can serve as model for new designs
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
5
Text Books
• Len Bass, et al, Software Architecture in
Practice, Pearson, Second Edition, 2003.
• Buschmann, F. et al, Pattern Oriented
Software Architecture – Volume1, Wiley, 1996.
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
6
References
• Stephen T. Albin, The Art of Software Architecture,
Wiley Dreamtech, 2003.
• Jeff Garland et al, Large Scale Software Architecture: A
Practical Guide Using UML, Wiley Dreamtech, 2003.
• Alan Shalloway and J R Trott, Design Patterns
Explained, Pearson, 2004
• Mary Shaw & David Garlan, Software Architecture –
Perspectives on an Emerging Discipline, PHI, 1996.
• Gamma, E. et. Al. Design Patterns: Elements of
Reusable Object Oriented Software, Addison Wesley,
1995
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
7
Topic
Understanding Software
Architecture
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
8
Software Architecture Definition
• 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
(Ref: Bass, Clements and Kazman, Software Architecture in Practice, 2nd edition)
• Software Architecture is “a description of the
subsystems and components of a software system
and the relationships between them”. Architecture
thus attempts to define the structure “the way in
which something is constructed or organised”
SWEBOK, 2004, Chapter 3 Software Design, Pg 3-3
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
9
Software Architecture Definition
• 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
(Ref: Bass, Clements and Kazman, Software Architecture in Practice, 2nd edition)
• Software Architecture is “a description of the
subsystems and components of a software system
and the relationships between them”. Architecture
thus attempts to define the structure “the way in
which something is constructed or organised”
SWEBOK, 2004, Chapter 3 Software Design, Pg 3-3
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
10
A typical Software Architecture
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
11
What’s clear?
• System has 5 elements
• Position of elements shows some properties.
What’s visible? What’s not visible? Layered?
• Elements have a relationship
•
•
•
•
Is this complete architecture?
Is everything clear?
Is there anything missing?
What’s missing?
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
12
Unclear from diagram
• Nature of elements
– Significance of separation
– Contain process or programs or both
– Runtime separation or division of labour
– Clarity of the blocks; objects, tasks, functions,
processes, distributed programs or something else
• Responsibilities of each element
– Their function; what do they do?
– How does their function relate to the system
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
13
Unclear from Diagram
• Significance of connections
– Signify control or data, invoke each other,
synchronization
– Mechanism of communications
• Significance of layout
– Does level shown signify anything
– Was the type of drawing due to space constraint
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
14
Properties of Architecture
• Externally visible – those assumptions other
elements can make of an element
• A few of these properties
– Services provided
– Performance characteristics
– Fault handling
– Shared resource usage
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
15
Architecture Definition Implications
• Architecture defines Software elements
• Systems can and do comprise of more than
one structure
• Every computing system with software has a
software architecture
• The behaviour of each element is a part of the
architecture
• The architecture of a system is a good one or a
bad one
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
16
Some more views
• Architecture
– Is a high level design
– Is the overall structure of the system
– Is the structure of the components of a program
or system, their interrelationships, and the
principles and guidelines governing their design
and evolution over time
– Is components and connectors
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
17
Patterns, Model and Reference Arch
• An architectural pattern is a description of
element and relation types together with a set
of constraints on how they may be used
• A reference model is a division of functionality
together with data flow between the pieces
• A reference architecture of a reference model
mapped onto software elements (that
cooperatively implement the functionality
defined in the reference model) and the data
flows between them
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
18
Patterns, Model and Reference Arch
• Reference models, architecture patterns and
reference architectures are not architectures;
they are useful concepts that capture
elements of an architecture
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
19
Software Arch Importance
• Communication among stake holders
• Early design decisions
• Transferable abstractions of a system
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
20
Stake holder communication
• Architecture provides a common language in which
different concerns can be expressed, negotiated and
resolved
• Customer, User, Project Manager, Development
Engineer, Test Engineer …
– On schedule and on budget: Customer
– On schedule, on budget, work split among teams: Manager
– Reliable, available, easy to use: User
• Helps make early decisions
• Architectural analysis depends on communication
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
21
Manifests earliest set of design decisions
• The architecture
– Defines constraints on implementation
– Dictates organization structure
– Inhibits or Enables a system’s quality attributes
– Enables predicting system qualities
– Makes it easier to reason about and Manage
Change
– Helps in evolutionary prototyping
– Enables more accurate cost and schedule
estimates
Second Semester, 2012-2013
CS/SS G653 : Software Architecture
22