100% found this document useful (1 vote)
137 views

What Is Software Architecture - Lecture Note

Here are two potential assignments for the software architect role based on the scenarios provided: 1. Update the Architecture Documentation - Analyze the actual codebase and architecture to understand how it has evolved over time - Interview developers to gather information on significant changes made - Create updated architecture documentation that accurately reflects the current state of the system - Validate the documentation with key stakeholders to ensure it is comprehensive and correct 2. Enhance Audit Logging and Event Replay - Implement robust audit logging for all critical events in the system - Design an event replay mechanism that can replay past events for testing and debugging purposes - Ensure event data includes necessary details for security investigations - Validate the logging and replay capabilities meet business and security requirements
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
137 views

What Is Software Architecture - Lecture Note

Here are two potential assignments for the software architect role based on the scenarios provided: 1. Update the Architecture Documentation - Analyze the actual codebase and architecture to understand how it has evolved over time - Interview developers to gather information on significant changes made - Create updated architecture documentation that accurately reflects the current state of the system - Validate the documentation with key stakeholders to ensure it is comprehensive and correct 2. Enhance Audit Logging and Event Replay - Implement robust audit logging for all critical events in the system - Design an event replay mechanism that can replay past events for testing and debugging purposes - Ensure event data includes necessary details for security investigations - Validate the logging and replay capabilities meet business and security requirements
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 45

MIT821: Software Systems

Lecturers:
Prof. Charles O. Uwadia
Dr. Ufuoma C. Ogude

Department of Computer Sciences


University of Lagos

•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.

Understand how to determine who is interested in your architecture (your


stakeholders), understand what is important to them (their concerns), and design
an architecture that reflects and balances their different needs.

Understand how to communicate your architecture to your stakeholders in an


understandable way that demonstrates that you have met their concerns (the
architectural description)
Objectives cont.
Understand how to focus on what is architecturally significant, safely leaving
other aspects of the design to your designers, without neglecting issues like
performance, resilience, and location.

Understand what important activities you most need to undertake as an


architect, such as identifying and engaging stakeholders, using scenarios, creating
models, and documenting and validating your architecture .
Course Outline
Architecture Fundamentals
Software Architecture Concepts

Viewpoints and Views

Architectural Perspectives

The Role of the Software Architect


The Process of Software Architecture
Introduction to the Software Architecture Process

The Architecture Definition Process

Concerns, Principles, and Decisions

Identifying and Engaging Stakeholders

Identifying and using Scenarios

Using Styles and Patterns

Producing Architectural Models

Creating the Architectural Description

Evaluating the Architecture


 A Viewpoint Catalog  The Perspective Catalog
 Introduction to the Viewpoint Catalog  Introduction to the Perspective

 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

Continuous Assessment: 30%


 group work/project
 written test/seminar
 Assignments

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.

stakeholder, architectural description, viewpoint, and perspective) and

describes the role of the software architect


Architecture in Civil Engineering
Design at the highest level

Examples: Bridge architectures

Why do civil
engineers talk about
bridge architectures?

Arch Beam Suspension Cable-stayed


 Definition in Civil Engineering
– The art and science of designing and erecting buildings

– Fundamental underlying design of buildings

– Style and method of design and construction of buildings

 Buildings and other structures


Introduction
Computers can be found everywhere in modern society—not just in data

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

are made up of the same three fundamental parts:


software (e.g., programs or libraries)

data, which may be either transient (in memory) or persistent (on disk or ROM)

hardware (e.g., processors, memory, disks, network cards)


Definitions
There are many definitions of software architecture, easily
discoverable with a web search, but we focus on the following three
definitions:
•The software architecture of a system is the set of structures needed to reason
about the system, which comprise software elements, relations among them, and
properties of both.

•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 the fundamental organization of a system embodied in its


components, their relationships to each other, and to the environment, and the
principles guiding its design and evolution. [IEEE 1471]
Software Architecture
The structure or structures of a software system
– software components
– externally visible properties of those components
– the relationships between them

The set of principle design decisions made about a


software system
– System structure
– Functional behavior
– Interaction
– Nonfunctional properties
– Implementation
– System goals, stakeholders, non-technical considerations, etc.
Features
Architecture is a set of software structures
 (program) decomposition structures, component-and-connector structures
(C&C), allocation structures

Architecture is an abstraction
 Model of a software system

Every software system has a software architecture i.e. every system


has its own architecture but they are not identical
 documented or undocumented

Architecture includes behavior


 (external) behaviors/properties of architectural elements are part of
architecture

Not all architectures are good architectures


• determined by architecture’s quality attributes
Goal – Why?
Software architecture is important to the successful development of a
software system
Software systems are constructed to satisfy organizations' business goals.

Architecture is a bridge between business goals (often abstract) and the


final (concrete) resulting system.
The path from abstract goals to concrete systems can be complex
Software is increasingly complex.

Software is evolving, reused in new contexts.

The promise of off-the-shelf components with easy reuse


We need to adapt, wrap or modify the off-the-shelf components.

Too many components in software products.

Large number of connections/dependencies between these components


Goal – Why?
Good software architectures can be designed, analyzed, documented, and

implemented using known techniques that will support the achievement of

these business and mission goals.

The complexity can be tamed, made tractable.

How to make sure that SW development reaches the


intended goals of a project.
Elements of Software Architecture
Components

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,

– restricts access to that subset via an explicitly defined interface,


and
– had explicitly defined dependencies on its required execution
context.

Often represented as boxes in diagrams.


Connectors
Elements that are tasked with effecting and regulating
interactions among components.
Application independent.

Often represented as lines in diagrams.

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

Q: Key constraints of layered model?


 “A software architect is responsible for designing, documenting, and
leading the construction of a system that meets the needs of all its
stakeholders”.
 Identify four aspects to carry out this role of a software architect.
Prepare a pro forma list of responsibilities for a software system
architect.

 You have consequently been charged with planning, developing, applying,


and delivering advanced information systems, architectural solutions,
and programming products.
“A software architect is responsible for designing, documenting,
and leading the construction of a system that meets the needs
of all its stakeholders”.

Roles of Software Architect


Design Expertise
Domain Expertise
Technology Expertise
Methodological Expertise (SDLC)
Assignment1
You are an architect who have just joined a large team maintaining a

legacy software. While trying to understand the architecture of the

software, you find that the architecture is well documented.

However, when you discuss with the developers working in the project, you

find that the actual architecture is different from the documented

architecture – over the last decade, the software has changed but the

documentation has not been updated.

Explain the architecture of the software scenario.


Assignment2
You are working on a financial application that is an event-driven system.
The team is having difficulty in testing and debugging the software and
want to be able to replay the events. Also, the application has recently
been a target of security attacks. With lack of audit trail, it is difficult to
prosecute attackers.

What is more, the management also wants predictive analytics for


improving profitability of the business.

Discuss the best pattern that can help directly address this situation

 
 QU. You are an architect for a signal processing application. You have

designed the application in such a way that the front-end component

receives sensor data from devices, and the data flows from one

component to the following component. Each component subsequently

transforms the data it receives and passes the transformed data to the

next component. The final component passes the data to a modeling and

visualization unit that renders the data to the end-users.

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

 What’s software architecture?


 Elements of software architecture
• Architectural styles
Architectural Styles
• A named collection of architectural design decisions
that:
– are applicable in a given development context,
– constrain architectural design decisions that are specific to
a particular system with that context, and
– elicit beneficial qualities in each resulting system.
• Not about: specific systems, components, interaction
mechanisms, or configurations.
An Architectural Style Example
• Physically separate the software components used to request services from the
components that provide the services, to allow for proper distribution and scaling
up, both in the number of service providers and service requesters.
• Make the service providers unaware of the requesters’ identity to allow the
providers to service transparently many, possibly changing requestors.
• Insulate the requesters from one another to allow for their independent addition,
removal, and modification. Make the requesters dependent only on the service
providers.
• Allow for multiple service providers to emerge dynamically to off-load the existing
providers should the demand for services increase above a given threshold.
Example: Client-Server
More on Architectural Styles

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

Client-Server Architecture Style


 Application context:
 Clients request services from a server
 Centralization of computation and data at the server
 Separation of user interface tasks from computation and data
management and storage
 Q: Any examples?
Style: Client-Server

• Components: Clients and server


• Connectors: Remote procedure call, network protocols
• Data elements: Parameters and return values are sent by the connectors
• Topology: Two-level, with multi-clients
• Qualities yielded: Centralization of computation and data at the server,
with the information made available to remote clients. A single powerful
server can service many clients.
• Cautions: Network bandwidth.
Style: Three-Tier or N-Tier

• 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.)

• Components: Layers, offering a set of services to other layers, typically


comprising several programs or subprograms
• Connectors: Procedure call
• Data elements: Parameters and return values are sent by the connectors
• Topology: Linear, for strict virtual machine; a directed acyclic graph in
looser interpretations
• Qualities yielded: Clear dependence structure; Software at upper levels
immune to changes of implementation within lower levels as long as the
service specification are invariant; Software at lower levels fully
independent of upper levels.
• Cautions: Efficiency
Style: Repository

• 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

You might also like