0% found this document useful (0 votes)
41 views30 pages

Lecture 3 - 2024

Uploaded by

Andrew Adel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
41 views30 pages

Lecture 3 - 2024

Uploaded by

Andrew Adel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

Faculty of Computers and Artificial Intelligence

Master of Computer Science

Advanced Software Engineering


(Software Engineering 2)
Dr. Lamia Abo Zaid ‫ لمياء أبوزيد‬. ‫د‬

Course Code: CS
l.abozaid@fci -cu.edu.eg

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Course Material
❑ Lecture Slides
❑ Selected papers from the literature
❑ Text books:
❑Other sources
❑Software Engineering Body of Knowledge
SWBOK
❑Miscellaneous papers /online sources

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Course Material
❑ Course available on Google classroom
❑Course name: Advanced Software Engineering
2024-2025
❑ Course code: r7vjh6n

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING


Architecture in a Project Life-Cycle Context

The Twin Peaks Model


Software Architecture: Foundations, Theory, and Practice, Richard N.
Taylor, Nenad Medvidovic, Eric Dashofy, ISBN: 978-0-470-16774-8 INTRODUCTION TO THE ARCHITECTURE DESIGN
Architecture in a Project Life-Cycle Context
Requirements
Design Keep in Mind
Implementation Architecture is a set of principal design decisions
Analysis and Testing about a software system.
Evolution
✓ Every application has an architecture
✓ Every application has at least one architect
✓ Architecture is not a phase of development
Development Process

INTRODUCTION TO THE ARCHITECTURE DESIGN


OO Design and Architecture
Object-Oriented Design (OOD)

❑Objects are the main abstraction entity


❑Objects allow encapsulations of state with functions for accessing and
manipulating that state
❑Object Oriented programming language might dictate important design
decisions (e.g. inheritance , management of resources, thread management
..etc)
❑Object Oriented Design assumes a shared address space

INTRODUCTION TO THE ARCHITECTURE DESIGN


Design and Architecture
Typically in the traditional Design Phase decisions concern:
◦A system’s structure
◦Identification of its primary components
◦Their interconnections

Architecture denotes the set of principal design decisions about a system

INTRODUCTION TO THE ARCHITECTURE DESIGN


INTRODUCTION TO THE ARCHITECTURE DESIGN
Architecture and Implementation
The objective of implementation is to create machine-executable source code
◦ Implemented code should be faithful to the architecture
◦ All of the structural elements found in the architecture are implemented in the source code
◦ Source code must not utilize major new computational elements that have no corresponding elements in the architecture
◦ Source code must not contain new connections between architectural elements that are not found in the architecture
◦ If implemented code is not faithful to the architecture it
◦ Misleads all stakeholders regarding what they believe they have as opposed to what they really have
◦ Makes any development or evolution strategy that is based on the documented (but inaccurate) architecture doomed to failure

INTRODUCTION TO THE ARCHITECTURE DESIGN


Software Implementation Strategies
❑Frameworks
❑collections of source code with identified places where the engineer must
“fill in the blanks”
❑Middleware
❑CORBA, , RPC, Enterprise Service Bus (ESB), Web Services, APIs (RESTful,
SOAP, GraphQL etc. ), Message-Oriented Middleware (MOM)
❑Reuse-based techniques
❑COTS, open-source, in-house
❑Writing all code manually

INTRODUCTION TO THE ARCHITECTURE DESIGN


Architecture and Analysis & Testing
❑Formal architectural models can be examined for internal
consistency and correctness
❑An analysis on a formal model can reveal
❑Component mismatch
❑Incomplete specifications
❑Undesired communication patterns
❑Deadlocks
❑Security flaws
❑It can be used for size and development time estimations

INTRODUCTION TO THE ARCHITECTURE DESIGN


Architecture & Software Deployment
A software system cannot fulfill its purpose until it is deployed
◦ Executable modules are physically placed on the hardware devices on which
they are supposed to run
The deployment view of an architecture can be critical in assessing
whether the system will be able to satisfy its requirements
Possible assessment dimensions
◦ Available memory
◦ Power consumption
◦ Required network bandwidth

INTRODUCTION TO THE ARCHITECTURE DESIGN


Architecture Design
Consider the following questions as you create an architectural
design
1. What are the foundational parts of the architecture that
represent the greatest risk if you get them wrong?
2. What are the parts of the architecture that are most likely to
change, or whose design you can delay until later with little
impact?
3. What are your key assumptions, and how will you test them?
4. What conditions may require you to refactor the design?

INTRODUCTION TO THE ARCHITECTURE DESIGN


Quality Attributes
Software quality is all about fitness to purpose
◦ Does it do what is needed?
◦ Does it do it in the way that its users need it to?
◦ Does it do it reliably enough? Fast enough? Safely enough? Securely
enough?
◦ Will it be affordable? Will it be ready when its users need it?
◦ Can it be changed as the needs change?
We need to understand how fitness-for purpose will be measured
◦ What is the intended purpose?
◦ What quality factors will matter to the stakeholders?
◦ How should those factors be operationalized?
INTRODUCTION TO THE ARCHITECTURE DESIGN
Stakeholders have different Design Goals
Functionality
Low cost User-friendliness
Increased productivity Usability
Backward compatibility Runtime Ease of learning
Traceability of requirements Efficiency Fault tolerant
Rapid development Robustness
Flexibility Performance
Reliability
Portability
Good documentation
Client (Customer) End User

Minimum # of errors
Modifiability, Readability
Reusability, Adaptability
Well-defined interfaces Developer/ Maintainer

INTRODUCTION TO THE ARCHITECTURE DESIGN


McCall Quality Characteristics Model

INTRODUCTION TO THE ARCHITECTURE DESIGN


INTRODUCTION TO THE ARCHITECTURE DESIGN
Architecture Impact of Quality Attributes
An architecture will inhibit or enable the achievement of a system’s quality attributes.
1. If you care about a system’s availability, you have to be concerned with how components
take over for each other in the event of a failure, and how the system responds to a fault.
2. If you care about usability, you have to be concerned about isolating the details of the user
interface and those elements responsible for the user experience from the rest of the
system, so that those things can be tailored and improved over time.
3. If you care about the testability of your system, you have to be concerned about the
testability of individual elements, which means making their state observable and
controllable, plus understanding the emergent behaviour of the elements working together.

INTRODUCTION TO THE ARCHITECTURE DESIGN


Architecture Impact of Quality Attributes
4. If your system requires high performance, then you need to pay attention to managing the
time-based behaviour of elements, their use of shared resources, and the frequency and
volume of inter-element communication.
5. If modifiability is important, then you need to pay careful attention to assigning
responsibilities to elements so that the majority of changes to the system will affect a small
number of those elements. (Ideally each change will affect just a single element.)
6. If your system must be highly secure, then you need to manage and protect inter-element
communication and control which elements are allowed to access which information; you
may also need to introduce specialized elements (such as an authorization mechanism) into
the architecture.

INTRODUCTION TO THE ARCHITECTURE DESIGN


Architecture Impact of Quality Attributes
7. If you believe that scalability will be important to the success of your system, then you need
to carefully localize the use of resources to facilitate introduction of higher-capacity
replacements, and you must avoid hardcoding in resource assumptions or limits.
8. If your projects need the ability to deliver incremental subsets of the system, then you must
carefully manage inter-component usage.
9. If you want the elements from your system to be reusable in other systems, then you need to
restrict inter-element coupling, so that when you extract an element, it does not come out
with too many attachments to its current environment to be useful.

INTRODUCTION TO THE ARCHITECTURE DESIGN


Architecture Impact of Quality Attributes
10. If you care about the safety of your system, you have to be concerned about the behavioural
envelope of the elements and the emergent behaviour of the elements working in concert.
11. If you care about interoperability between your system and another, you have to be concerned
about which elements are responsible for external interactions so that you can control those
interactions.

INTRODUCTION TO THE ARCHITECTURE DESIGN


Software Architecture’s Elements
A software system’s architecture is a composition and
interplay of different elements (structures )
◦Processing
◦Data, also referred as information or state
◦Interaction

INTRODUCTION TO THE ARCHITECTURE DESIGN


Components
Elements that encapsulate processing and data in a system’s
architecture are referred to as software components
A software component is 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
◦ has explicitly defined dependencies on its required execution
context
Components typically provide application-specific services

INTRODUCTION TO THE ARCHITECTURE DESIGN


Connectors
❑In complex systems interaction may become more important and
challenging than the functionality of the individual components
❑A software connector is an architectural building block tasked with
effecting and regulating interactions among components
❑In many software systems connectors are usually simple procedure
calls or shared data accesses
❑Connectors typically provide application-independent interaction
facilities

INTRODUCTION TO THE ARCHITECTURE DESIGN


Examples of Connectors
❑Procedure/Method call connectors
❑Shared memory connectors
❑Message passing connectors
❑Streaming connectors
❑Distribution connectors
❑Wrapper/adapter connectors

INTRODUCTION TO THE ARCHITECTURE DESIGN


Configurations
Components and connectors are composed in a specific way in a given system’s architecture to
accomplish that system’s objective
An architectural configuration, or topology, is a set of specific associations between the
components and connectors of a software system’s architecture

INTRODUCTION TO THE ARCHITECTURE DESIGN


Questions

INTRODUCTION TO THE ARCHITECTURE DESIGN


Readings
Software Architecture in practice
◦ Chapter 2

Software Architecture: Foundations, Theory, and Practice


◦ Chapter 2
Questions ?

LECTURE 1: ADVANCED TOPICS IN SOFTWARE ENGINEERING

You might also like