SlideShare a Scribd company logo
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
 
Introduction to MDE
Introduction to MDEIntroduction to MDE
Introduction to MDE
Fáber D. Giraldo
 
V5 i3201613
V5 i3201613V5 i3201613
V5 i3201613
kisekkaVicent2
 
Unit 1 OOSE
Unit 1 OOSEUnit 1 OOSE
Unit 1 OOSE
saranive23
 
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
Hironori 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.pdf
TitoMido1
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
Ra'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 Students
kimdokja738
 
SDA 01.pptx
SDA 01.pptxSDA 01.pptx
SDA 01.pptx
JuttG6
 
4 mohammad naderuzzaman_finalpaper--35-40
4 mohammad naderuzzaman_finalpaper--35-404 mohammad naderuzzaman_finalpaper--35-40
4 mohammad naderuzzaman_finalpaper--35-40
Alexander 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 Engineering
Hironori Washizaki
 
Software Engineering Research @ Simula
Software Engineering Research @ SimulaSoftware Engineering Research @ Simula
Software Engineering Research @ Simula
Phu H. Nguyen
 
Modest Formalization of Software Design Patterns
Modest Formalization of Software Design PatternsModest Formalization of Software Design Patterns
Modest Formalization of Software Design Patterns
International Journal of Latest Research in Engineering and Technology
 
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
Jose Emilio Labra Gayo
 
OOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.pptOOSE Unit 1 PPT.ppt
OOSE Unit 1 PPT.ppt
itadmin33
 

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

Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
Tendenci - The Open Source AMS (Association Management Software)
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Jay Das
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
Globus
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 

Recently uploaded (20)

Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 
Corporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMSCorporate Management | Session 3 of 3 | Tendenci AMS
Corporate Management | Session 3 of 3 | Tendenci AMS
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfEnhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
 
Understanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSageUnderstanding Globus Data Transfers with NetSage
Understanding Globus Data Transfers with NetSage
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 

Software Architecture