The document discusses key concepts in software architecture, including:
1) Software architecture establishes the overall structure and organization of a system, including its components and relationships.
2) Architectural design involves decomposing a system into subsystems or modules to improve modifiability, reusability, and portability.
3) Key principles for architectural design include simplicity, modularity, low coupling, separation of concerns, abstraction, and postponing decisions.
This is an introductory lecture to Software Architecture, part of the Advanced Software Engineering course, at the University of L'Aquila, Italy (www.di.univaq.it/muccini/SE+/2012)
This is an introductory lecture to Software Architecture, part of the Advanced Software Engineering course, at the University of L'Aquila, Italy (www.di.univaq.it/muccini/SE+/2012)
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
Software Architecture by Reuse, Composition and Customization Ivano Malavolta
Ivano Malavolta.
Research Fellow at the Computer Science Department of the University of L'Aquila (Italy).
PhD thesis presentation, University of L'Aquila, March 2012.
The full PhD thesis is available here:
http:www.di.univaq.it/malavolta/files/IvanoMalavoltaPhDThesis.pdf
[2015/2016] Collaborative software development with GitIvano Malavolta
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
[2015/2016] Software systems engineering PRINCIPLESIvano Malavolta
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
A presentation on layered software architecture that goes through logical layering and physical layering, the difference between those two and a practical example.
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
Software Architecture by Reuse, Composition and Customization Ivano Malavolta
Ivano Malavolta.
Research Fellow at the Computer Science Department of the University of L'Aquila (Italy).
PhD thesis presentation, University of L'Aquila, March 2012.
The full PhD thesis is available here:
http:www.di.univaq.it/malavolta/files/IvanoMalavoltaPhDThesis.pdf
[2015/2016] Collaborative software development with GitIvano Malavolta
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
[2015/2016] Software systems engineering PRINCIPLESIvano Malavolta
This presentation is about a lecture I gave within the "Software systems and services" immigration course at the Gran Sasso Science Institute, L'Aquila (Italy): http://cs.gssi.infn.it/.
http://www.ivanomalavolta.com
A presentation on layered software architecture that goes through logical layering and physical layering, the difference between those two and a practical example.
Ask 5 Software Architects for a definition of Software Architecture and you'll get 10 definitions. However definition important to understand responsibilities, skills requirements and activities. Furthermore, separation of Software Architecture and Application Design has many practical benefits.
Software Architecture: views and viewpointsHenry Muccini
This is an introductory lecture to Software Architecture Views and Viewpoints, part of the Advanced Software Engineering course, at the University of L'Aquila, Italy (www.di.univaq.it/muccini/SE+/2012)
The following presentation covers the basics of Software Architecture and the related topics. Most of the information provided is given in short phrases. Refer to Wikipedia article on the same for more information.
This is meant to be a brief slideshow only.
Software Archtecture.
Software design is a process to transform user requirements into some suitable form, which helps the programmer in software coding and implementation.
Software design is the important step in SDLC (Software Design Life Cycle), which moves the concentration from problem domain to solution domain. It tries to specify how to fulfill the requirements mentioned in SRS.
Software design plays an important role in developing software: during software design, software engineers produce various models that form a kind of blueprint of the solution to be implemented
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
4. Development lifecycle
Software
concept
Preliminary
requirements Architecture sets system structure
analysis
Design of
architecture and First iteration implements system core
system core
Develop
a version
Incorporate Deliver a
customer version
feedback
Elicit
An iterative lifecycle model customer
feedback
Architecture plays a vital role in establishing the structure of
the system, early in the development lifecycle
5. System lifetime
Vision
Inception
Development
Deployment
Operation
Architecture is about decisions that affect Maintenance
the whole lifetime of the system
Alteration
Legacy
operation
Death
6. Architecture = design decisions
Software Software
Architecture design
Decisions
“Design” decisions
Architectural decisions
“Requirements constraints”
Requireme
nts
Code etc.
A choice that is binding in the final product
7. Architecture = Design? No!
“Do not dilute the meaning
of the term architecture
by applying it to everything
in sight.”
Mary Shaw
9. Definitions…
…and form a whole
that fulfils a
A system is a
designed purpose
collection of
parts
The parts have
relations to each
other…
10. Definition: Wikipedia
The software architecture of a program or
computing system is the structure of the system,
which comprises its software components, the
externally visible properties of those
components, and the relationships between them
The term also refers to the documentation of a
system's software architecture.
Documenting a software architecture facilitates the
communication between stakeholders, documents
the early decisions about high-level design, and
allows the reuse of the components and patterns
across projects
10
11. Brief history
The basics of software architecture were introduced by
Dijkstra (1968) and Parnas (1970). They studied:
The key role of the structure of a software system, and
How tricky the definition of the right structure for a given system is
A great deal of research has been conducted on software
architectures starting from the ’90s, mainly focusing on:
How to solve recurrent architectural problems (patterns)
Architectural styles
The definition of languages to describe software architectures (ADL)
Documentation of the architecture of a system
… claimed to give rise to the definition of a discipline
See: Shaw and Garlan Software Architecture: Perspectives on an
Emerging Discipline, 1996
11
12. Standard
The main standard in the field of software
architectures is the ANSI/IEEE 1471-2000:
Recommended Practice for Architecture
Description of Software-Intensive Systems
better known as IEEE 1471 standard
In fact it is a “recommended practice”
the “weakest” type of IEEE standards, whose adoption
and interpretation are the responsibility of the using
organization
It has been adopted by ISO/IEC JTC1/SC7 as ISO/
IEC 42010:2007, in 2007
12
13. Definition: IEEE 1471
Intuitively, the architecture of a software system
represents its internal structure, in terms of the
single components of which it is made up and of
the interactions among them
According to the IEEE 1471-2000 standard, the
architecture of a software system is its basic
organization, in terms of its components, of the
interactions among components and with the
external environments, as well as of the basic,
driving, principles for system design and evolution
13
14. IEEE 1471
It focuses on the description of an architecture as the
concrete artifact representing the abstraction that is
“software architecture” or “system architecture”
IEEE 1471's contributions:
It provides the definitions and a conceptual model for the description
of a software architecture
It states that an architecture goal is to respond to specific
stakeholders’ concerns about the software system being described
It asserts that architecture descriptions are inherently multi-view, as
no single view can capture all stakeholders’ concerns about an
architecture
It separates the notion of a view from a viewpoint, which identifies
the set of concerns and the representations/modeling techniques,
etc. used to describe the architecture to address those concerns
It establishes that a conforming architecture description has a 1-to-1
correspondence between its viewpoints and its views
14
18. Defining a software architecture
The definition of the architecture is an important
step of system design (i.e., architectural design)
Its aim is the structural decomposition of a system
into sub-systems:
Divide et impera approach: to develop single sub-entities
is simpler than to develop an entire system
It allows to perform several development activities at the
same time (different entities can be developed in parallel)
It fosters the modifiability, the reusability, and the
portability of a system
18
19. Defining the system architecture
The definition of the criteria for the identification of
sub-entities is a preliminary step:
A typical criterion is the functional one, i.e., a sub-entity
may be identified by mapping software functionalities to
its parts:
E.g., user interface, database access, security management…
High Cohesion and Low Coupling among
components are key guidelines
Each sub-system has to contain cohesive components
(e.g., modules providing services which are strictly
related one to each other)
Minimize interactions among subsystems, that should
result scarcely coupled
19
20. Software module
A module is a piece of software that:
Provides an abstraction (on data, on function)
Clearly separates the interface from the body
Module
Interface
The interface specifies “what” the (visible from outside)
module is (the abstraction provided) and
“how” it can be used
Body
The interface is the contract between a user (hidden and
and the provider of the abstraction protected)
The body describes “how” the
abstraction is implemented
20
22. Sources of Architecture
Theft
From a previous system or from technical literature
Method
An approach to deriving the architecture from the requirements
Intuition
The experience of the architect
From Mommy, Where Do Software Architectures Come From? , Philippe Kruchten
1st International Workshop on Architectures for Software Systems, Seattle, 1995
23. What Types of Architectural Asset are there?
Reference Design
Architecture Pattern
Legacy Architectural
Application Mechanism
Pattern Packaged
Language Application
Development Reference
Method Model
Architectural Programming
Decision Pattern
Pattern Component
Library
Component Architectural
Pattern
Architectural Application
Style Framework
24. Pattern
[A pattern is] a common solution to a common
problem in a given context. [UML User Guide]
Pattern types
Architectural Patterns
Distribution patterns
Security Patterns
…
Design Patterns
Programming Patterns
Requirements Patterns
Testing Patterns
Project Management Patterns
Process Patterns
Organizational Patterns
…
25. Architectural Pattern
An architectural pattern expresses a fundamental structural
organization schema for software systems. It provides a set
of predefined subsystems, specifies their responsibilities,
and includes rules and guidelines for organizing the
relationships between them. [Buschmann]
Example:
Pattern: Layers
Context
A system that requires decomposition
Problem
High-level elements rely on lower-level elements and the following forces must
be balanced:
- Interfaces should be stable
- Parts of the system should be exchangeable
- Source code changes should not ripple through the system
Solution
25
Structure the system into layers
26. Architectural pattern – Layers
ISO OSI 7-Layer Model
Layer 7 Application Provides application facilities
Layer 6 Presentation Structures information as required
Layer 5 Session Manages the connection Personal Organizer
Layer 4 Transport Creates packets of data
<<layer>> Personal Organizer
Application-Specific (from Application-Specific)
Layer 3 Network Routes packets of data
Layer 2 Data Link Detects and corrects errors
Layer 1 Physical Transmits bits
<<layer>> Address Book Calculator
Busi ness-Specifi c
(from Business-Specific) (from Business-Specific)
<<layer>> Filestore Memory Math
Base Management Management (from Base)
(from Base) (from Base)
27. Design Pattern
A design pattern provides a scheme for refining the subsystems or
components of a software system, or the relationships between them. It
describes a commonly-recurring structure of communicating
components that solves a general design problem within a particular
context. [Gamma]
Observer Pattern
28. Programming Pattern
An idiom is a low-level pattern specific to a
programming language. An idiom describes how to
implement particular aspects of components or the
relationships between them using the features of
the given language. [Buschmann]
// Swap the values of 2 variables
temp = a;
a = b;
b = temp;
29. Architectural Style
[An architectural style] defines a family of systems in terms
of a pattern of structural organization. More specifically, an
architectural style defines a vocabulary of components and
connector types, and a set of constraints on how they can
be combined. [Shaw]
Client-server
Supports the physical separation of client-side processing (such as
a browser) and server-side processing (such as an application
server that accesses a database)
Event-based
Promotes a publish-subscribe way of working, applied strategically
across large areas of the architecture
Pipes-and-filters
A series of filters that provide data transformation, and pipes that
connect the filters. Examples include compilers, signal processing
30. Pattern Language
A pattern language defines a collection
of patterns and the rules to combine
them. Pattern languages are often
used to describe a family of systems
IBM Patterns for e-Business
A set of architectural patterns that
describe various web-based
applications
Includes a pattern selection process
that drives:
Selection of a business,
integration or composite pattern
Selection of application
patterns
Selection of runtime patterns
Identification of product
mappings
*See http://www.ibm.com/developerworks/patterns
30
31. Reference Architecture
A reference architecture is an architecture representation of
a particular domain of interest. It typically includes many
different architectural patterns, applied in different areas of
its structure
Examples include J2EE and .NET
31
32. Reference Model
A reference model is an abstract representation of entities,
their relationships and behavior, in a given domain of
interest, and which typically forms the conceptual basis for
the development of more concrete elements
Examples include a business model, an information model
and a glossary of terms
IBM Information FrameWork (IFW)
IFW Information Models (Banking Data Warehouse) IFW Process & Integration Models
IFW Foundation Models
Financial Financial
Services Services
Financial Services Data Model
Function Workflow
Model Model
Business Application Business
Business
Solution Solution Process
Object Model
Templates Templates Model
Banking Data Warehouse Model Interface Design Model
33. Application Framework
An application framework represents the partial
implementation of a specific area of an application
Most widely-known frameworks support user interfaces
Java Server Pages
ASP.NET
Client Server
HTTP HTTP
URL
Web
Internet
Server
Scripting
container
Script
34. Architectural Mechanism
Architectural mechanisms represent common
concrete solutions to frequently encountered
problems. They may be patterns of structure,
patterns of behavior, or both. [RUP]
Often characterized as
the mechanism for achieving X
this element is underpinned by mechanism Y
Examples
Persistency mechanism
Error logging mechanism
Communication mechanism
Shopping cart
35. Packaged Application
A packaged application is a large-grained
Commercial-Off-The-Shelf (COTS) product that
provides a significant amount of capability (and
reuse)
Examples
Customer Relationship Management (CRM) application
(e.g. Siebel)
Enterprise Resource Planning (ERP) application (e.g.
SAP)
The amount of custom development required is
greatly reduced
Primary focus is on configuring the application
36. Component & component library
Component examples
GUI widget (such as a table)
Service
Component library examples
Class libraries (e.g. Java class library)
Procedure libraries
37. Legacy Application
A legacy application is a system that continues to
be used because the owning organization cannot
replace or redesign it
Tends to be a focus on integration rather than new
development
Often results in a focus on enterprise application
integration (EAI)
38. Architectural Decision
[Architectural decisions are] conscious
design decisions concerning a software
system as a whole, or one or more of
its core components. These decisions
determine the non-functional
characteristics and quality factors of
the system. [Zimmermann]
Decision rationale may come from
experience, method or some other
asset
38
39. Self questions
What is a software architecture?
What is an architectural asset?
What is an architectural concern?
What is an architectural view?
What is a component?
What is a connector?
39
40. References
Shaw & Garlan Software Architecture: Perspectives on an
Emerging Discipline, Prentice Hall, 1996
Bass, Clemens & Kazman, Software Architecture in
Practice, 2nd ed, Addison Wesley, 2003
softarchpract.tar.hu!
Garland, Large-Scale Software Architecture: A Practical
Guide using UML, Addison-Wesley, 2005
Clements, Documenting Software Architectures: Views and
Beyond, The SEI Series in Software Engineering, 2002
40