What Is Software Architecture - Lecture Note
What Is Software Architecture - Lecture Note
Lecturers:
Prof. Charles O. Uwadia
Dr. Ufuoma C. Ogude
•Lectures:
– E303, Saturdays 3:00 pm to 5:00 pm
Objectives
Understand general systems theory and its application in business environment.
Understand what software systems architecture is about and why your role is
vitally important to successful project delivery.
Architectural Perspectives
Catalog
The Context Viewpoint
The Security Perspective
The Functional Viewpoint
The Performance and Scalability
The Information Viewpoint
Perspective
The Concurrency Viewpoint
The Availability and Resilience
The Development Viewpoint Perspective
The Deployment Viewpoint The Evolution Perspective
The Operational Viewpoint Putting it all Together
Achieving Consistency Across Views Working as a Software Architect
Other Viewpoint Sets
Grading System
Final Examination: 70%
Six Questions:
• Attempt Question One (1) = 34marks
• Any other three (3) Questions = 3x12 = 36marks
Note:
A student can choose between:
Written test (application of theoretic concepts)
Seminar presentation
Presentation Outline: Architecture Fundamentals
Learning Objective
To understand the basic concepts of software architectures (e.g.
Why do civil
engineers talk about
bridge architectures?
centers or on desks but also in cars, washing machines, cell phones, and
credit cards.
Whether they are big or small, simple or complex, all computer systems
data, which may be either transient (in memory) or persistent (on disk or ROM)
•It is the structure of the system which consists of software components, the
externally visible properties of those components and the relationship between
them.
Architecture is an abstraction
Model of a software system
Connectors
Configuration topologies
System models
Components
Elements that encapsulate processing and data in a system’s
architecture
An architectural entity that
– encapsulates a subset of the system’s functionality and/or data,
connector component
Configuration Topology
A set of specific associations between the components and
connectors of a software system’s architecture.
System Models
An artifact that captures some or all of the design decisions that
comprise a system’s architecture.
Architectural modeling is the reification and documentation of
those design decisions.
Different models:
– structural vs. behavioral
– static vs. dynamic
– Scope
However, when you discuss with the developers working in the project, you
architecture – over the last decade, the software has changed but the
Discuss the best pattern that can help directly address this situation
QU. You are an architect for a signal processing application. You have
receives sensor data from devices, and the data flows from one
transforms the data it receives and passes the transformed data to the
next component. The final component passes the data to a modeling and
Discuss the best architecture style you will use in this application.
Stakeholders in a System’s Architecture
Architects
Developers
Testers
Managers
Customers
Users
Vendors
Outline
Advantages
• Each style emphasizes one or more of the quality attributes, such as
usability, availability, security, performance, maintainability, flexibility,
portability, etc.
Remarks:
• Each style has its own advantages and drawbacks.
• An application may require several architectural views.
• Choosing the right views is a key factor in having a good design.
The Repertoire of Architecture Styles
• Application context:
– Client-Server architecture style
– Multi-level services are needed
• Q: Examples?
Style: Layered
• Application context:
– Ordered layered services are necessary
– Insulate upper layer from lower layer
• Q: Examples?
Layered (Cont.)
• Application context:
– Collaborate and communicate through a shared repository
• A.k.a. shared state, blackboard, whiteboard
• Q: Examples?
Repository (Cont.)
•Components: ?
•Connectors: ?
•Data elements: ?
•Topology: ?
•Qualities yielded: ?
•Cautions: ?
Style: Batch Sequential
• Application context:
– A series of dedicated and independent components that
transforms data in a sequential manner.
– Each component needs to finish its task before the next one can
start.
• Q: Examples?
Batch Sequential (Cont.)
• Components: Independent programs responsible for a particular task or
transformation
• Connectors: Procedure call
• Data elements: Intermediate data produced or transformed
• Topology: Linear or ordered
• Qualities yielded: Solve complex task by dividing it into several easier
tasks; obtain modifiability/maintainability, reusability, and flexibility
• Cautions: Error handling; efficiency
Style: Pipes and Filters
• Application context:
– A series of independent, sequential transformations on
ordered data
– Consists of filters transforming data and pipes transferring
data
• Q: Examples?
% ps | grep bash | sort | more
More Architectural Styles
• Client server
• Three-tier • Event driven
• Layered • Interpreter
• Repository • Peer-to-peer
• Batch sequential • Plug-in
• Pipe and filter • Service-oriented
• Publish-subscribe
• Rule-based
• Mobile code
• …
In-Class and Assignment:
• Study two architectural styles per team
• Prepare a 10-minute presentation for the next class
• You will present:
– What is it?
– What problem does it solve?
– How does it solve the problem?
– Who are the actors (i.e., main elements)?
– How do they relate to each other?
– What’re the strengths and drawbacks?
– Example applications?
– Include your sources (e.g., websites)
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
Context of Software Architecture
• Requirements
• Design
• Implementation
• Analysis and Testing
• Evolution
• Development Process