SlideShare a Scribd company logo
1 of 38
Download to read offline
1
Software Architecture
Manuel Mazzara, Bertrand Meyer
Innopolis University, February‐May 2015
Lecture 1: Introduction
2
About these slides
These slides are adapted from the course “Software 
Architecture” of ETH Zurich, by Bertrand Meyer and other 
members of the ETH Chair of Software Engineering
See http://se.ethz.ch
2
3
Goal of the course
Software Architecture covers two closely related aspects of 
software technology:
 Techniques of software design: devising proper 
modular structures for software systems. This is 
“architecture” in the strict sense.
 An introduction to the non‐programming, non‐design 
aspects of software engineering.
4
Some topics
 Modularity and reusability 
 Abstract Data Types
 Design by Contract and other O‐O principles
 Design Patterns 
 Component‐Based Development
 Designing for concurrency
 Software metrics
3
5
Assistants
The lab session on Tuesday 9‐10:30 will be led by:
Alexander Chichigin a.chichigin@innopolis.ru
Víctor Rivera varz86@gmail.com
6
Course material
Course page:
http://university.innopolis.ru/en/research/selab/teaching
 Check it regularly
Lecture material:
 Lecture slides 
 Recommended textbooks:
• B. Meyer: Object‐Oriented Software Construction, 2nd edition,
Prentice Hall, 1997
Russian translation: Объектно‐ориентированное 
конструирование программных систем, see 
habrahabr.ru/post/140284/.  
• E. Gamma et al.: Design Patterns
Addison‐Wesley, 1995
Exercise material:
 Lab slides
 Material will be made available online
4
7
Supplementary recommended books
A good software engineering textbook (see precise references 
on course page):
 Ghezzi / Jazayeri / Mandrioli
(broadest scope)
 Pfleeger / Atlee
(the most recent)
 Pressman
(emphasis on practitioners’ needs)
On patterns: Karine Arnout’s ETH PhD thesis (available 
electronically)
8
Electronic forums 
Information and discussion on the course and project will be 
conducted on Innopolis VK page
Teachers and assistants are happy to be contacted in person 
and by email
 please before formulating your questions spend some 
time on them
 we are happy to spend our time on your doubts as long 
as you have spent some time on them first
5
9
Grading
Your final mark will be determined as follows:
 50% based on the project
 25% on a mid‐term exam at week 9
 25% on the final exam in June (date to be fixed)
10
About the project
The project is an integral part of the course
Goal:
 Apply software architecture techniques
 Practice group work in software engineering
 Go through main phases of a realistic software project: 
requirements, design of both program and test plan, 
implementation, testing
6
11
Project groups
Please attend the first exercise session tomorrow to discover 
about:
 Project goals and structure
 How your project will be evaluated
 How to proceed with project groups
• You will be asked to create 3‐people groups
12
Project topic
This year’s project is MemCache:
 Implementation of a library caching given key‐value pairs 
in memory 
 Please attend lab sessions for details
 You will use Eiffel for both design and implementation
7
13
Project deadlines* 
Requirements (10 mar) 
Design exam (31 mar) 
Implementation (28 apr) 
Testing (26 may)
*May be subject to slight adaptation
14
More details on the project
Grading criteria for each step, and the weight for each step, will 
be discussed during lab sessions
8
15
Standards
For each step (except implementation), you will be given a 
template and will have to follow it
While the project involves programming, it is not primarily a 
programming project, but a software engineering project. You 
will discover some of the challenges and techniques of 
developing software as part of actual projects.
On forming the groups:
 Select partners with complementary skills, e.g. 
requirements, documentation, design, programming
16
A request
We do not want you to drop the course, but if you are going to 
do so, please drop out early (two weeks from now) out of 
courtesy to other students
9
17
What is
Software Architecture?
18
Software architecture
We define software architecture as
The decomposition of software systems into modules*
Primary criteria: extendibility and reusability
Examples of software architecture techniques & principles:
 Abstract data types (as the underlying theory)
 Object‐oriented techniques: the notion of class, 
inheritance, dynamic binding
 Object‐oriented principles: uniform access, single‐choice, 
open‐closed principle…
 Design patterns
 Classification of software architecture styles, e.g. pipes 
and filters
* From the title of an article by Parnas, 1972
10
19
Software architecture: milestones
1968: The inner and outer syntax of a programming language (Maurice 
Wilkes)
1968‐1972: Structured programming (Edsger Dijkstra); industrial 
applications (Harlan Mills & others)
1971: Program Development by Stepwise Refinement (Niklaus Wirth)
1972: David Parnas’s articles on information hiding
1974: Liskov and Zilles’s paper on abstract data types
1975: Programming‐in‐the‐large vs Programming‐in‐the‐small (Frank 
DeRemer & Hans Kron)
1987: Object‐Oriented Software Construction, 1st edition
1994: An introduction to Software Architecture (David Garlan and Mary 
Shaw)
1995: Design Patterns (Erich Gamma et al.)
1997: UML 1.0
20
What is
Software Engineering?
11
21
A definition of software engineering
Wikipedia (from SWEBOK, the Software Engineering Body of 
Knowledge)
Software engineering is the application of a systematic, 
disciplined, quantifiable approach to the development, 
operation, and maintenance of software, and the study of these 
approaches; that is, the application of engineering to software.
(Largely useless definition.)
22
A simpler definition
“The application of engineering to software”
Engineering (Wikipedia): “the discipline, art and profession of 
acquiring and applying technical, scientific, and mathematical 
knowledge to design and implement materials, structures, 
machines, devices, systems, and processes that safely realize a 
desired objective or invention”
A simpler definition of engineering: the application of scientific 
principles to the construction of artifacts
12
23
Parnas’s view
(Cited in Ghezzi et al.)
“The multi‐person construction of multiversion software”
24
For this course
The application of engineering principles and techniques, 
based on mathematics, to the development and operation of 
possibly large software systems satisfying defined standards of 
quality
13
25
“Large” software systems
What may be large: any or all of
 Source size (lines of code, LoC)
 Binary size
 Number of users
 Number of developers
 Life of the project (decades...)
 Number of changes, of versions
(Remember Parnas’s definition)
26
Process and product
Software engineering affects both:
 Software products
 The processes used to obtain and operate them
Products are not limited to code. Other examples include 
requirements, design, documentation, test plans, test results, 
bug reports
Processes exists whether they are formalized or not
14
27
Software quality factors
Product
Correctness
Robustness
Security
Ease of use
Ease of learning
Efficiency
Process
Extendibility
Reusability
Portability
Immediate
Long-term
Timeliness
Cost-effectiveness
Security
Hostility
Robustness
Errors
Correctness
Specification
“Reliability”
28
Software engineering today
Three cultures:
 Process
 Agile
 Object
The first two are usually seen as exclusive, but all have major 
contributions to make.
15
29
Process
Emphasize:
 Plans
 Schedules
 Documents
 Requirements
 Specifications
 Order of tasks
 Commitments
Examples: Rational Unified Process, CMMI, Waterfall…
30
Agile
Emphasize:
Short iterations
 Emphasis on working code; de‐emphasis of plans and 
documents
Emphasis on testing; de‐emphasis of specifications and design 
. “Test‐Driven Development"
Constant customer involvement
Refusal to commit to both functionality and deadlines
Specific practices, e.g. Pair Programming
Examples: Scrum, Extreme Programming
16
31
Object‐oriented culture
Emphasizes:
 Seamless development
 Reversibility
 Single Product Principle
 Design by Contract
32
Six task groups of software engineering
Describe
Implement
Assess
Manage
Operate
Notate
Requirements,
design specification,
documentation …
Design, programming
V&V*, esp. testing
*Validation & Verification
Plans, schedules,
communication, reviews…
Deployment, installation,
Languages for programming etc.
17
33
A Software 
Architecture
example
34
Our first pattern example
Multi‐panel interactive systems
Plan of the rest of this lecture:
 Description of the problem: an example
 An unstructured solution
 A top‐down, functional solution
 An object‐oriented solution yielding a useful design 
pattern
 Analysis of the solution and its benefits
18
35
A reservation panel
Flight sought from: To:
Depart no earlier than: No later than:16 Feb 2014
Choose next action:
0 – Exit
1 – Help
2 – Further enquiry
3 – Reserve a seat
19 Feb 2014
Kazan Zurich
ERROR: Choose a date in the future
36
A reservation panel
Choose next action:
0 – Exit
1 – Help
2 – Further enquiry
3 – Reserve a seat
AVAILABLE FLIGHTS: 2
Flt# SU 425 Dep 8:25 Arr 7:45 Thru: SVO, FRA
Flt# TK 082 Dep 7:40 Arr 9:15 Thru: IST
Flight sought from: To:
Depart no earlier than: No later than:16 Feb 2015 19 Feb 2015
Kazan Zurich
19
37
The transition diagram
Help HelpInitial
Flight_query
Seat_query
Confirmation
Reservation
Help Help
1
1
2
3 3
2
2
2
23 3
3
1 1 1 1
1 1
38
A first attempt
A program block for each state, for example:
PFlight_query:
display ‘‘enquiry on flights’’ screen
repeat
Read user’s answers and his exit choice C
if Error_in_answer then output_message end
until
not Error_in_answer
end
process answer
inspect C
when 0 then goto PExit
when 1 then goto PHelp
...
when n then goto PReservation
end
20
39
What’s wrong with the previous scheme?
Intricate branching structure (‘‘spaghetti bowl’’). 
Extendibility problems: dialogue structure “wired” into 
program structure.
40
A functional, top‐down solution
Represent the structure of the diagram by a function 
transition (i, k)
giving the state to go to from state i for choice k.
This describes the transitions of any particular application. 
Function transition may be implemented as a data structure, 
for example a two‐dimensional array.
21
41
The transition function
0 (Initial)
1 (Help)
2 (Confirmation)
3 (Reservation)
4 (Seats)
5 (Flights)
0 1 2 3
Exit
Exit
Exit
Exit
Exit
Return
2
3
4
5
0
0
2
3
4
42
The transition diagram
Help
Help
Initial
Flight_query
Seat_query
Confirmation
Reservation
Help Help
1
1
2
3 3
2
2
2
23 3
3
1 1 1 1
1
52
43
0
22
43
New system architecture
execute_session
initial transition execute_state is_final
display read correct message process
Level 3
Level 2
Level 1
44
New system architecture
Procedure execute_session only defines graph traversal.
It knows nothing about particular screens of a given application;
it should be the same for all applications.
execute_session
‐‐ Execute full session.
local
current_state, choice : INTEGER
do
current_state := initial
repeat
choice := execute_state (current_state)
current_state := transition (current_state, choice)
until
is_final (current_state)
end
end
23
45
To describe an application
Provide transition function
Define initial state
Define is_final function
46
Actions in a state
execute_state (current_state : INTEGER ): INTEGER
‐‐ Execute actions for current_state ; return user’s exit choice.
local
answer : ANSWER
good : BOOLEAN
choice : INTEGER
do
repeat
display (current_state)
[answer, choice] := read (current_state )
good := correct (current_state, answer )
if not good then message (current_state, answer ) end
until
good
end
process (current_state, answer )
Result := choice
end
24
47
Specification of the remaining routines
display (s) outputs the screen associated with state s. 
[a, e] := read (s) reads into a the user’s answer to the display 
screen of state s, and into e the user’s exit choice. 
correct (s, a) returns true if and only if a is a correct answer 
for the question asked in state s. 
If so,  process (s, a) processes answer a. 
If not, message (s, a) outputs the relevant error message.
48
Going object‐oriented: The law of inversion
How amenable is this solution to change and adaptation? 
 New transition? 
 New state? 
 New application?
Routine signatures:
execute_state (state: INTEGER): INTEGER
display (state: INTEGER)
read (state: INTEGER): [ANSWER, INTEGER ]
correct (state: INTEGER; a: ANSWER): BOOLEAN
message (state: INTEGER; a: ANSWER)
process (state: INTEGER; a: ANSWER)
is_final (state: INTEGER)
25
49
Data transmission
All routines share the state as input argument. They must discriminate on 
it, e.g. :
display (current_state : INTEGER) 
do
inspect current_state
when state1 then
...
when state2 then
...
when staten then
...
end
end
Consequences: 
Long and complicated routines. 
Must know about one possibly complex application. 
To change one transition, or add a state, need to change all.
50
The flow of control
Underlying reason why structure is so inflexible: 
Too much DATA TRANSMISSION.
current_state is passed from execute_session (level 3) to all 
routines on level 2 and on to level 1 
Worse: there’s another implicit argument to all routines –
application. Can’t define
execute_session, display, execute_state, ...
as library components, since each must know about all 
interactive applications that may use it.
26
51
The visible architecture
execute_session
initial transition execute_state is_final
display read correct message process
Level 3
Level 2
Level 1
52
The real story
execute_session
initial transition execute_state is_final
display read correct message process
Level 3
Level 2
Level 1
state
state
27
53
The law of inversion
 If your routines exchange too much data, put your
routines into your data.
In this example: the state is everywhere!
54
Going O‐O
Use STATE as the basic abstract data type (and class). 
Among features of every state: 
The routines of level 1 (deferred in class STATE )
execute_state, as above but without the argument
current_state
28
55
Grouping by data abstractions
STATE
execute_session
initial transition execute_state is_final
display read correct message process
Level 3
Level 2
Level 1
56
Class STATE
deferred class
STATE
feature
choice : INTEGER ‐‐ User’s selection for next step
input : ANSWER ‐‐ User’s answer for this step
display
‐‐ Show screen for this state.
deferred
end
read
‐‐ Get user’s answer and exit choice, 
‐‐ recording them into input and choice.
deferred
ensure
input /= Void
end
29
57
Class STATE
correct : BOOLEAN
‐‐ Is input acceptable?
deferred
end
message
‐‐ Display message for erroneous input.
require
not correct
deferred
end
process
‐‐ Process correct input.
require
correct
deferred
end
58
Class STATE
execute_state
local
good : BOOLEAN
do
from
until
good
loop
display
read
good := correct
if not good then message end
end
process
choice := input.choice
end
end
30
59
Class structure
STATE
*
INITIALINITIAL FLIGHT_QUERY RESERVATION
…
execute_state +
display +
read +
correct +
message +
process +
display +
read +
correct +
message +
process +
display +
read +
correct +
message +
process +
display *
read *
correct *
message *
process *
60
To describe a state of an application
Write a descendant of STATE :
class FLIGHT_QUERY inherit
STATE
feature
display do ... end
read do ... end
correct : BOOLEAN do ... end
message do ... end
process do ... end
end
31
61
STATE
Rearranging the modules
execute_session
initial transition execute_state is_final
display read correct message process
Level 3
Level 2
Level 1
APPLICATION
62
Describing a complete application
No ‘‘main program’’ but class representing a system.
Describe application by remaining features at levels
1 and 2:
 Function transition.
 State initial.
 Boolean function is_final.
 Procedure execute_session.
32
63
Implementation decisions
Represent transition by an array transition: n rows (number 
of states), m columns (number of choices), given at creation
States numbered from 1 to n; array states yields the state 
associated with each index 
(Reverse not needed: why?)
No deferred boolean function is_final, but convention: a 
transition to state 0 denotes termination. 
No such convention for initial state (too constraining). 
Attribute initial_number.
64
Describing an application
class
APPLICATION
create
make
feature
initial : INTEGER
make (n, m : INTEGER)
‐‐ Allocate with n states and m possible choices.
do
create transition.make (1, n, 1, m)
create states.make (1, n )
end
feature {NONE } ‐‐ Representation of transition diagram
transition: ARRAY2 [STATE ]
‐‐ State transitions
states: ARRAY [STATE ]
‐‐ State for each index
33
65
The array of states
states
(ENQUIRY_
ON_FLIGHTS)
(ENQUIRY_
ON_SEATS)
(INITIAL)
(CONFIRMATION)
(RESERVATION)
1
2
3
4
5
A polymorphic data structure!
66
Executing a session
execute_session
‐‐ Run one session of application
local
current_state : STATE ‐‐ Polymorphic!
index : INTEGER
do
from
index := initial
until
index = 0 
loop
current_state := states [index ]
current_state.execute_state
index :=transition [index, current_state.choice]
endend
34
67
Class structure
STATE
*
INITIALINITIAL FLIGHT_QUERY RESERVATION
…
execute_state +
display +
read +
correct +
message +
process +
display +
read +
correct +
message +
process +
display +
read +
correct +
message +
process +
display *
read *
correct *
message *
process *
68
Other features of APPLICATION
put_state ( s: STATE; number: INTEGER )
‐‐ Enter state s with index number
require
1 <= number
number <= states.upper
do
states [number] := s
end
choose_initial (number: INTEGER)
‐‐ Define state number number as the initial state.
require
1 <= number
number <= states.upper
do
first_number := number
end
35
69
More features of APPLICATION
put_transition (source, target, label : INTEGER ) 
‐‐ Add transition labeled label from state
‐‐ number source to state number target.
require
1 <= source; source <= states.upper
0 <= target;target <= states.upper
1 <= label; label <= transition.upper2
do
transition.put (source, label, target ) 
end
invariant
0 <= st_number
st_number <= n
transition.upper1 = states.upper
end
source
target
label
70
To build an application
Necessary states — instances of STATE — should be available.
Initialize application: 
create a.make (state_count, choice_count) 
Assign a number to every relevant state s : 
a [n] := s
Choose initial state n0 : 
a.choose_initial (n0 ) 
Enter transitions: 
a.put_transition (sou, tar, lab) 
May now run:
a.execute_session
36
71
Open architecture
During system evolution you may at any time: 
 Add a new transition (put_transition). 
 Add a new state (put_state). 
 Delete a state (not shown, but easy to add). 
 Change the actions performed in a given state
 ...
72
Note on the architecture
Procedure execute_session is not ‘‘the function of the system” 
but just one routine of APPLICATION.
Other uses of an application: 
Build and modify: add or delete state, transition, etc. 
Simulate, e.g. in batch (replaying a previous session’s script), 
or on a line‐oriented terminal. 
Collect statistics, a log, a script of an execution. 
Store into a file or data base, and retrieve. 
Each such extension only requires incremental addition of 
routines. Doesn’t affect structure of APPLICATION and clients.
37
73
The system is open
Key to openness: architecture based on types of the problem’s 
objects (state, transition graph, application).
Basing it on “the” apparent purpose of the system would have 
closed it for evolution.
Real systems have no top
74
The design pattern
“State and Application”
38
75
Software architecture: the basic issue
Finding the right data abstractions
76
What we have seen
Basic definitions and concepts of software engineering
Basic definitions and concepts of software architecture
A design pattern: State and Application
The role of data abstraction
Techniques for finding good data abstractions

More Related Content

Similar to Software Architecture

Taming Complexity: On Studying the Application of Model-Driven Engineering to...
Taming Complexity: On Studying the Application of Model-Driven Engineering to...Taming Complexity: On Studying the Application of Model-Driven Engineering to...
Taming Complexity: On Studying the Application of Model-Driven Engineering to...Florian Rademacher
 
Software Engineering Patterns for Machine Learning Applications
Software Engineering Patterns for Machine Learning ApplicationsSoftware Engineering Patterns for Machine Learning Applications
Software Engineering Patterns for Machine Learning ApplicationsHironori Washizaki
 
CS251 Intro. to SE [Lec. 0 - Course Introduction & Plan] Spring 2022.pdf
CS251 Intro. to SE [Lec. 0 - Course Introduction & Plan] Spring 2022.pdfCS251 Intro. to SE [Lec. 0 - Course Introduction & Plan] Spring 2022.pdf
CS251 Intro. to SE [Lec. 0 - Course Introduction & Plan] Spring 2022.pdfTitoMido1
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and DesignRa'Fat Al-Msie'deen
 
Patterns for New Software Engineering: Machine Learning and IoT Engineering P...
Patterns for New Software Engineering: Machine Learning and IoT Engineering P...Patterns for New Software Engineering: Machine Learning and IoT Engineering P...
Patterns for New Software Engineering: Machine Learning and IoT Engineering P...Hironori Washizaki
 
Introduction to Software Engineering For Students
Introduction to Software Engineering For StudentsIntroduction to Software Engineering For Students
Introduction to Software Engineering For Studentskimdokja738
 
SDA 01.pptx
SDA 01.pptxSDA 01.pptx
SDA 01.pptxJuttG6
 
4 mohammad naderuzzaman_finalpaper--35-40
4 mohammad naderuzzaman_finalpaper--35-404 mohammad naderuzzaman_finalpaper--35-40
4 mohammad naderuzzaman_finalpaper--35-40Alexander Decker
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Software Engineering Research @ Simula
Software Engineering Research @ SimulaSoftware Engineering Research @ Simula
Software Engineering Research @ SimulaPhu H. Nguyen
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsJose Emilio Labra Gayo
 
OOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptOOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptitadmin33
 

Similar to Software Architecture (20)

Taming Complexity: On Studying the Application of Model-Driven Engineering to...
Taming Complexity: On Studying the Application of Model-Driven Engineering to...Taming Complexity: On Studying the Application of Model-Driven Engineering to...
Taming Complexity: On Studying the Application of Model-Driven Engineering to...
 
Introduction to MDE
Introduction to MDEIntroduction to MDE
Introduction to MDE
 
V5 i3201613
V5 i3201613V5 i3201613
V5 i3201613
 
Unit 1 OOSE
Unit 1 OOSEUnit 1 OOSE
Unit 1 OOSE
 
Lecture 3.pptx
Lecture 3.pptxLecture 3.pptx
Lecture 3.pptx
 
Software Engineering Patterns for Machine Learning Applications
Software Engineering Patterns for Machine Learning ApplicationsSoftware Engineering Patterns for Machine Learning Applications
Software Engineering Patterns for Machine Learning Applications
 
SEOC 2004-2011
SEOC 2004-2011SEOC 2004-2011
SEOC 2004-2011
 
CS251 Intro. to SE [Lec. 0 - Course Introduction & Plan] Spring 2022.pdf
CS251 Intro. to SE [Lec. 0 - Course Introduction & Plan] Spring 2022.pdfCS251 Intro. to SE [Lec. 0 - Course Introduction & Plan] Spring 2022.pdf
CS251 Intro. to SE [Lec. 0 - Course Introduction & Plan] Spring 2022.pdf
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
 
Patterns for New Software Engineering: Machine Learning and IoT Engineering P...
Patterns for New Software Engineering: Machine Learning and IoT Engineering P...Patterns for New Software Engineering: Machine Learning and IoT Engineering P...
Patterns for New Software Engineering: Machine Learning and IoT Engineering P...
 
Burleson
BurlesonBurleson
Burleson
 
Introduction to Software Engineering For Students
Introduction to Software Engineering For StudentsIntroduction to Software Engineering For Students
Introduction to Software Engineering For Students
 
SDA 01.pptx
SDA 01.pptxSDA 01.pptx
SDA 01.pptx
 
4 mohammad naderuzzaman_finalpaper--35-40
4 mohammad naderuzzaman_finalpaper--35-404 mohammad naderuzzaman_finalpaper--35-40
4 mohammad naderuzzaman_finalpaper--35-40
 
software architecture
software architecturesoftware architecture
software architecture
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Software Engineering Research @ Simula
Software Engineering Research @ SimulaSoftware Engineering Research @ Simula
Software Engineering Research @ Simula
 
Modest Formalization of Software Design Patterns
Modest Formalization of Software Design PatternsModest Formalization of Software Design Patterns
Modest Formalization of Software Design Patterns
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - Definitions
 
OOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptOOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.ppt
 

Recently uploaded

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 

Recently uploaded (20)

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 

Software Architecture