You are on page 1of 18

FIT3077

Software Architecture and Design


Week 1
Software Architecture and Design?

1st March 2021


Dr Najam Nazar
OUTLINE
What is Software Architecture and Design?
• What is Software Architecture?
• Why Software Architectures are important?
• What is Software Design?
• Why Software Designs are important?
• Software Architecture vs Software Design
WHAT IS SOFTWARE
ARCHITECTURE?
Architecture?

• So these example buildings/houses/bridges etc are:


• Purpose
• Structure
• Pattern
• Model
• Risk
• Etc..
QUESTION???

• Are their any similarities wrt software?

• Software are complex


• Software have structure
• Software have risks
• Software have pattern
• And so on…
Definitions
Definition 1
• There is no single, accepted definition of Software Architecture (SA).
• Here are some common ones though:

“Architecture is high-level design”

• True, in that SA is a kind of design, but not all design tasks are architectural
• e.g. design of data structures and algorithms that will end up encapsulated in classes or components in
the final system.
• The design of the interfaces for such classes is an architectural issue though.
Definitions
Definition 2 – Bass et al.
• Bass et al. defined SA as:

“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, R.Kazman, Software Architecture in Practice (2nd edition), Addison-Wesley 2003]
• One of the key terms in this definition is “externally visible”
• the externally visible properties of a software element are those about which other software elements
are allowed to make assumptions.
• e.g. services it provides, performance characteristics, etc.
• In the language of Design By Contract, we would describe these services using method signatures, pre- and
post-conditions, and invariants of the element.
• This means that properties that are not externally visible are not considered to be
architectural properties.
Definitions
Key features of Definition 2 – Bass et al.
• An architecture defines software elements
• In particular, it defines how elements relate to each other
• Information that does not relate to interactions is omitted

“An architecture is [thus] foremost an abstraction of a system that suppresses details of


elements that do not affect how they use, are used by, relate to, or interact with other
elements”

• Elements can be objects, processes, libraries, databases, services, a whole commercial


application, etc.
Definitions
Key features of Definition 2 – Bass et al.
• One of the key principles of modern design (particularly OO design) is that elements should
be partitioned into public and private parts
• The public part defines externally visible interfaces
• these are architectural
• The private part is concerned with internal implementation details
• these are not considered to be architectural
• The definition explicitly mentions that systems can be made up of more than one structure.
• Thus no one structure can claim to be “the” architecture
• Examples of structures within a system could be
• The break-down into implementation units
• Synchronization relationships between processes/threads in a parallel system
• Note that one of these is a static structure, the other a runtime structure
Definitions
Key features of Definition 2 – Bass et al.
• The definition implies that “every computing system with software has a software
architecture”.
• This is because every system can be broken down into elements and relationships between those
elements
• This architecture exists even if it was never documented or consciously designed
• There is thus an important difference between an actual software architecture and its documentation
• “Box-and-Line” diagrams only capture part of a whole software architecture – particularly if
they are only static views (e.g., class or package diagrams)
• The behaviour of elements is part of the architecture — to the extent that it is visible to other
elements.
Question??
• Now the question arises what is a design then? Any ideas?
• What’s the Difference Between Architecture and Design?
• The first thing we can say is that clearly architecture is design, but not all design is architecture.
• Design is a broader term and the architecture is a part of it.
• Design is more detailed where as an architecture is a blue print.
• And…

Design

Architecture
SOFTWARE
ARCHITECTURE VS
SOFTWARE DESIGN
Architecture vs Design
Architecture vs Design
MOVING ON TO NEXT
WEEK
Moving On

• The discussion of these definitions should have given you a taste of what we mean by
Software Architecture in the large and Software Design in brief.
• From next week till week 6, we shall cover the modelling and design parts mainly.
• From week 7 onwards, we shall focus in detail on different software architectures.
• In conclusion, over the semester we will move from relatively low-level design through to
full-scale system architectures.
Next Week

• Next week we shall cover Object Oriented analysis and design.


• UML Use Case
• UML Class Diagram
• UML Interaction Diagram
• Our main focus will be on conceptually model and design the software.

• And most importantly workshops will begin from next week (week 2).

You might also like