SlideShare a Scribd company logo
Software Design in
Practice
Ganesh Samarthyam
Entrepreneur; author; speaker
ganesh@codeops.tech
www.codeops.tech
Discussion Question
Which one of the following is MOST IGNORED aspect in
software development?
❖ Code quality
❖ Software testing
❖ Software design
❖ Programming
Software Design in Practice (with Java examples)
Software Design in Practice (with Java examples)
"... a delightful, engaging, actionable read... you have
in your hand a veritable ïŹeld guide of smells... one
of the more interesting and complex expositions of
software smells you will ever ïŹnd..."
- From the foreword by Grady Booch (IBM Fellow and Chief Scientist for
Software Engineering, IBM Research)
Why Care About Principles?
Poor software quality costs
more than $150 billion per year
in U.S. and greater than $500
billion per year worldwide
- Capers Jones
Source: Estimating the Principal of an Application's Technical Debt, Bill Curtis, Jay
Sappidi, Alexandra Szynkarski, IEEE Software, Nov.-Dec. 2012.
Source: Consortium of IT Software Quality (CISQ), Bill Curtis, Architecturally Complex Defects, 2012
–Craig Larman
"The critical design tool for software development
is a mind well educated in design principles"
For Architects: Design is the Key!
Design Thinking
Fundamental Principles in Software Design
Principles*
Abstrac/on*
Encapsula/on*
Modulariza/on*
Hierarchy*
Proactive Application: Enabling Techniques
Reactive Application: Smells
$ cat limerick.txt
There was a young lady of Niger
Who smiled as she rode on a tiger.
They returned from the ride
With the lady inside
And a smile on the face of the tiger.
$ cat limerick.txt | tr -cs "[:alpha:]" "n" | awk '{print length(), $0}' | sort | uniq
1 a
2 as
2 of
2 on
3 And
3 Who
3 she
3 the
3 was
4 They
4 With
4 face
4 from
4 lady
4 ride
4 rode
5 Niger
5 There
5 smile
5 tiger
5 young
6 inside
6 smiled
8 returned
List<String> lines
= Files.readAllLines(Paths.get("./limerick.txt"), Charset.defaultCharset());
	 	 Map<Integer, List<String>> wordGroups
	 	 = lines.stream()
	 .map(line -> line.replaceAll("W", "n").split("n"))
	 .flatMap(Arrays::stream)
	 .sorted()
	 .distinct()
	 .collect(Collectors.groupingBy(String::length));
	 	 wordGroups.forEach( (count, words) -> {
	 	 words.forEach(word -> System.out.printf("%d %s %n", count, word));
	 	 });
1 a
2 as
2 of
2 on
3 And
3 Who
3 she
3 the
3 was
4 They
4 With
4 face
4 from
4 lady
4 ride
4 rode
5 Niger
5 There
5 smile
5 tiger
5 young
6 inside
6 smiled
8 returned
Parallel Streams
race conditions
Software Design in Practice (with Java examples)
deadlocks
Software Design in Practice (with Java examples)
I really really hate
concurrency problems
Parallel code
Serial code
long numOfPrimes = LongStream.rangeClosed(2, 100_000)
.ïŹlter(PrimeNumbers::isPrime)
.count();
System.out.println(numOfPrimes);
Prints 9592
2.510 seconds
Parallel code
Serial code
Let’s ïŹ‚ip the switch by
calling parallel() function
long numOfPrimes = LongStream.rangeClosed(2, 100_000)
.parallel()
.ïŹlter(PrimeNumbers::isPrime)
.count();
System.out.println(numOfPrimes);
Prints 9592
1.235 seconds
Wow! That’s an awesome ïŹ‚ip
switch!
Internally, parallel streams make
use of fork-join framework
Discussion Question
What is refactoring?
❖ Needless rework!
❖ Changing internal structure without changing external
behaviour
❖ Changing external quality (scalability, performance, etc)
❖ Fixing hidden or latent defects
What’s that smell?
public'Insets'getBorderInsets(Component'c,'Insets'insets){'
''''''''Insets'margin'='null;'
'''''''''//'Ideally'we'd'have'an'interface'deïŹned'for'classes'which'
''''''''//'support'margins'(to'avoid'this'hackery),'but'we've'
''''''''//'decided'against'it'for'simplicity'
''''''''//'
''''''''if'(c'instanceof'AbstractBuEon)'{'
'''''''''''''''''margin'='((AbstractBuEon)c).getMargin();'
''''''''}'else'if'(c'instanceof'JToolBar)'{'
''''''''''''''''margin'='((JToolBar)c).getMargin();'
''''''''}'else'if'(c'instanceof'JTextComponent)'{'
''''''''''''''''margin'='((JTextComponent)c).getMargin();'
''''''''}'
''''''''//'rest'of'the'code'omiEed'
'
Refactoring
Refactoring
!!!!!!!margin!=!c.getMargin();
!!!!!!!!if!(c!instanceof!AbstractBu8on)!{!
!!!!!!!!!!!!!!!!!margin!=!((AbstractBu8on)c).getMargin();!
!!!!!!!!}!else!if!(c!instanceof!JToolBar)!{!
!!!!!!!!!!!!!!!!margin!=!((JToolBar)c).getMargin();!
!!!!!!!!}!else!if!(c!instanceof!JTextComponent)!{!
!!!!!!!!!!!!!!!!margin!=!((JTextComponent)c).getMargin();!
!!!!!!!!}
Design Smells: Example
Discussion Example
Design Smells: Example
Discussion Example
// using java.util.Date
Date today = new Date();
System.out.println(today);
$ java DateUse
Wed Dec 02 17:17:08 IST 2015
Why should we get the
time and timezone details
if I only want a date? Can
I get rid of these parts?
No!
So What!
Date today = new Date();
System.out.println(today);
Date todayAgain = new Date();
System.out.println(todayAgain);
System.out.println(today.compareTo(todayAgain) == 0);
Thu Mar 17 13:21:55 IST 2016
Thu Mar 17 13:21:55 IST 2016
false
What is going
on here?
Refactoring for Date
Replace inheritance
with delegation
Joda API
JSR 310: Java Date and Time API
Stephen Colebourne
java.time package!
Refactored Solution
LocalDate today = LocalDate.now();
System.out.println(today);
LocalDate todayAgain = LocalDate.now();
System.out.println(todayAgain);
System.out.println(today.compareTo(todayAgain) == 0);
2016-03-17
2016-03-17
true
Works ïŹne
now!
Refactored Example 

You can use only date,
time, or even timezone,
and combine them as
needed!
LocalDate today = LocalDate.now();
System.out.println(today);
LocalTime now = LocalTime.now();
System.out.println(now);
ZoneId id = ZoneId.of("Asia/Tokyo");
System.out.println(id);
LocalDateTime todayAndNow = LocalDateTime.now();
System.out.println(todayAndNow);
ZonedDateTime todayAndNowInTokyo = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
System.out.println(todayAndNowInTokyo);
2016-03-17
13:28:06.927
Asia/Tokyo
2016-03-17T13:28:06.928
2016-03-17T16:58:06.929+09:00[Asia/Tokyo]
More classes in Date/Time API
What’s that smell?
Liskov’s Substitution Principle (LSP)
It#should#be#possible#to#replace#
objects#of#supertype#with#
objects#of#subtypes#without#
altering#the#desired#behavior#of#
the#program#
Barbara#Liskov#
Refactoring
Replace inheritance
with delegation
What’s that smell?
switch'(transferType)'{'
case'DataBuïŹ€er.TYPE_BYTE:'
byte'bdata[]'='(byte[])inData;'
pixel'='bdata[0]'&'0xïŹ€;'
length'='bdata.length;'
break;'
case'DataBuïŹ€er.TYPE_USHORT:'
short'sdata[]'='(short[])inData;'
pixel'='sdata[0]'&'0xïŹ€ïŹ€;'
length'='sdata.length;'
break;'
case'DataBuïŹ€er.TYPE_INT:'
int'idata[]'='(int[])inData;'
pixel'='idata[0];'
length'='idata.length;'
break;'
default:'
throw' new' UnsupportedOperaQonExcepQon("This' method' has' not' been' "+' "implemented'
for'transferType'"'+'transferType);'
}'
Replace conditional with polymorphism
protected(int(transferType;! protected(DataBuïŹ€er(dataBuïŹ€er;!
pixel(=(dataBuïŹ€er.getPixel();(
length(=(dataBuïŹ€er.getSize();!
switch((transferType)({(
case(DataBuïŹ€er.TYPE_BYTE:(
byte(bdata[](=((byte[])inData;(
pixel(=(bdata[0](&(0xïŹ€;(
length(=(bdata.length;(
break;(
case(DataBuïŹ€er.TYPE_USHORT:(
short(sdata[](=((short[])inData;(
pixel(=(sdata[0](&(0xïŹ€ïŹ€;(
length(=(sdata.length;(
break;(
case(DataBuïŹ€er.TYPE_INT:(
int(idata[](=((int[])inData;(
pixel(=(idata[0];(
length(=(idata.length;(
break;(
default:(
throw( new( UnsupportedOperaRonExcepRon("This( method(
has( not( been( "+( "implemented( for( transferType( "( +(
transferType);(
}!
Discussion Question
What is the biggest deterrent to performing refactoring?
❖ Deadlines! (Lack of time and resources)
❖ Fear of breaking the working code
❖ Not able to get management buy-in for refactoring
❖ Lack of technical skills to perform refactoring
Configuration Smells!
Language Features & Refactoring
public static void main(String []file) throws Exception {
// process each file passed as argument
// try opening the file with FileReader
try (FileReader inputFile = new FileReader(file[0])) {
int ch = 0;
while( (ch = inputFile.read()) != -1) {
// ch is of type int - convert it back to char
System.out.print( (char)ch );
}
}
// try-with-resources will automatically release FileReader object
}
public static void main(String []file) throws Exception {
Files.lines(Paths.get(file[0])).forEach(System.out::println);
}
Java 8 lambdas and streams
Tangles in
JDK
Copyright © 2015, Oracle and/or its afïŹliates. All rights reserved
Copyright © 2015, Oracle and/or its afïŹliates. All rights reserved
Structural Analysis for Java (stan4j)
JArchitect
InFusion
SotoArc
CodeCity
Name the ïŹrst
object
oriented
programming
language
BANGALORE CONTAINER CONFERENCE 2017
Sponsorship
Deck
Apr 07
Bangalore
www.containerconf.in
ganesh@codeops.tech @GSamarthyam
www.codeops.tech slideshare.net/sgganesh
+91 98801 64463 bit.ly/ganeshsg

More Related Content

What's hot (19)

PDF
Java Generics - by Example
Ganesh Samarthyam
 
PDF
The best language in the world
David Muñoz Díaz
 
PPT
Groovy Introduction - JAX Germany - 2008
Guillaume Laforge
 
PDF
Advanced Debugging Using Java Bytecodes
Ganesh Samarthyam
 
DOCX
Lab manual data structure (cs305 rgpv) (usefulsearch.org) (useful search)
Make Mannan
 
DOC
Ds lab manual by s.k.rath
SANTOSH RATH
 
PDF
Coding Guidelines - Crafting Clean Code
Ganesh Samarthyam
 
PDF
Functional Programming Patterns (BuildStuff '14)
Scott Wlaschin
 
PDF
«iPython & Jupyter: 4 fun & profit», ЛДĐČ ĐąĐŸĐœĐșох, Rambler&Co
Mail.ru Group
 
PPTX
Java 7, 8 & 9 - Moving the language forward
Mario Fusco
 
PDF
C# 7.x What's new and what's coming with C# 8
Christian Nagel
 
PDF
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Mario Fusco
 
PDF
Lambdas and Streams Master Class Part 2
José Paumard
 
PDF
Java 8 Stream API. A different way to process collections.
David GĂłmez GarcĂ­a
 
PPTX
Python
Wei-Bo Chen
 
PDF
Effective Object Oriented Design in Cpp
CodeOps Technologies LLP
 
PPTX
07. Java Array, Set and Maps
Intro C# Book
 
PPTX
Functional Programming in JavaScript by Luis Atencio
Luis Atencio
 
PDF
The Rust Borrow Checker
Nell Shamrell-Harrington
 
Java Generics - by Example
Ganesh Samarthyam
 
The best language in the world
David Muñoz Díaz
 
Groovy Introduction - JAX Germany - 2008
Guillaume Laforge
 
Advanced Debugging Using Java Bytecodes
Ganesh Samarthyam
 
Lab manual data structure (cs305 rgpv) (usefulsearch.org) (useful search)
Make Mannan
 
Ds lab manual by s.k.rath
SANTOSH RATH
 
Coding Guidelines - Crafting Clean Code
Ganesh Samarthyam
 
Functional Programming Patterns (BuildStuff '14)
Scott Wlaschin
 
«iPython & Jupyter: 4 fun & profit», ЛДĐČ ĐąĐŸĐœĐșох, Rambler&Co
Mail.ru Group
 
Java 7, 8 & 9 - Moving the language forward
Mario Fusco
 
C# 7.x What's new and what's coming with C# 8
Christian Nagel
 
Laziness, trampolines, monoids and other functional amenities: this is not yo...
Mario Fusco
 
Lambdas and Streams Master Class Part 2
José Paumard
 
Java 8 Stream API. A different way to process collections.
David GĂłmez GarcĂ­a
 
Python
Wei-Bo Chen
 
Effective Object Oriented Design in Cpp
CodeOps Technologies LLP
 
07. Java Array, Set and Maps
Intro C# Book
 
Functional Programming in JavaScript by Luis Atencio
Luis Atencio
 
The Rust Borrow Checker
Nell Shamrell-Harrington
 

Viewers also liked (20)

DOCX
Résumé 2016
Katherine Kereszturi
 
PDF
L04 Software Design Examples
Ólafur Andri Ragnarsson
 
PDF
a wild Supposition: can MySQL be Kafka ?
vishnu rao
 
PDF
Punch clock for debugging apache storm
vishnu rao
 
PDF
Build your own Real Time Analytics and Visualization, Enable Complex Event Pr...
vishnu rao
 
PPTX
Do you need microservices architecture?
Manu Pk
 
PDF
Demystifying datastores
vishnu rao
 
PPTX
Better java with design
Narayann Swaami
 
PDF
Visualising Basic Concepts of Docker
vishnu rao
 
PDF
Spring IO '15 - Developing microservices, Spring Boot or Grails?
FĂĄtima CasaĂș PĂ©rez
 
PDF
Java Generics - by Example
CodeOps Technologies LLP
 
PPTX
Effective DB Interaction
CodeOps Technologies LLP
 
PPTX
Java 8 concurrency abstractions
Nawazish Mohammad Khan
 
PDF
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
 
PDF
Microservices with Spring Boot
Joshua Long
 
PDF
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
 
PDF
Core Java - Quiz Questions - Bug Hunt
CodeOps Technologies LLP
 
PDF
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
DOCX
Spm file33
Poonam Singh
 
PDF
2013 Social Admissions Report
Uversity, Inc.
 
Résumé 2016
Katherine Kereszturi
 
L04 Software Design Examples
Ólafur Andri Ragnarsson
 
a wild Supposition: can MySQL be Kafka ?
vishnu rao
 
Punch clock for debugging apache storm
vishnu rao
 
Build your own Real Time Analytics and Visualization, Enable Complex Event Pr...
vishnu rao
 
Do you need microservices architecture?
Manu Pk
 
Demystifying datastores
vishnu rao
 
Better java with design
Narayann Swaami
 
Visualising Basic Concepts of Docker
vishnu rao
 
Spring IO '15 - Developing microservices, Spring Boot or Grails?
FĂĄtima CasaĂș PĂ©rez
 
Java Generics - by Example
CodeOps Technologies LLP
 
Effective DB Interaction
CodeOps Technologies LLP
 
Java 8 concurrency abstractions
Nawazish Mohammad Khan
 
Let's Go: Introduction to Google's Go Programming Language
Ganesh Samarthyam
 
Microservices with Spring Boot
Joshua Long
 
Microservices with Java, Spring Boot and Spring Cloud
Eberhard Wolff
 
Core Java - Quiz Questions - Bug Hunt
CodeOps Technologies LLP
 
Microservice With Spring Boot and Spring Cloud
Eberhard Wolff
 
Spm file33
Poonam Singh
 
2013 Social Admissions Report
Uversity, Inc.
 
Ad

Similar to Software Design in Practice (with Java examples) (20)

PDF
Refactoring for software design smells XP Conference 2016 Ganesh Samarthyam...
XP Conference India
 
PDF
Refactoring for Software Design smells - XP Conference - August 20th 2016
CodeOps Technologies LLP
 
PDF
Refactoring for Software Design Smells - Tech Talk
CodeOps Technologies LLP
 
PPTX
Java best practices
Ray Toal
 
PDF
Functional solid
Matt Stine
 
PDF
Clean code
Khou Suylong
 
PDF
Architecture refactoring - accelerating business success
Ganesh Samarthyam
 
PDF
How to Apply Design Principles in Practice
Ganesh Samarthyam
 
PDF
LECTURE 6 DESIGN, DEBUGGING, INTERFACES.pdf
SHASHIKANT346021
 
PPT
Dependable Software Development in Software Engineering SE18
koolkampus
 
PDF
A Philosophy Of Software Design Ousterhout John
boonegalayd9
 
PDF
LECTURE 6 DESIGN, DEBasd, INTERFACES.pdf
ShashikantSathe3
 
PPTX
Slides for Houston iPhone Developers' Meetup (April 2012)
lqi
 
KEY
2 the essentials of effective java
Honnix Liang
 
PDF
A Philosophy Of Software Design John Ousterhout
funkiesamm
 
PPTX
Functional Leap of Faith (Keynote at JDay Lviv 2014)
Tomer Gabel
 
PPTX
Does Java Have a Future After Version 8? (Belfast JUG April 2014)
Garth Gilmour
 
KEY
Maintainable code
RiverGlide
 
PDF
core java
dssreenath
 
PPTX
Writing clean code in C# and .NET
Dror Helper
 
Refactoring for software design smells XP Conference 2016 Ganesh Samarthyam...
XP Conference India
 
Refactoring for Software Design smells - XP Conference - August 20th 2016
CodeOps Technologies LLP
 
Refactoring for Software Design Smells - Tech Talk
CodeOps Technologies LLP
 
Java best practices
Ray Toal
 
Functional solid
Matt Stine
 
Clean code
Khou Suylong
 
Architecture refactoring - accelerating business success
Ganesh Samarthyam
 
How to Apply Design Principles in Practice
Ganesh Samarthyam
 
LECTURE 6 DESIGN, DEBUGGING, INTERFACES.pdf
SHASHIKANT346021
 
Dependable Software Development in Software Engineering SE18
koolkampus
 
A Philosophy Of Software Design Ousterhout John
boonegalayd9
 
LECTURE 6 DESIGN, DEBasd, INTERFACES.pdf
ShashikantSathe3
 
Slides for Houston iPhone Developers' Meetup (April 2012)
lqi
 
2 the essentials of effective java
Honnix Liang
 
A Philosophy Of Software Design John Ousterhout
funkiesamm
 
Functional Leap of Faith (Keynote at JDay Lviv 2014)
Tomer Gabel
 
Does Java Have a Future After Version 8? (Belfast JUG April 2014)
Garth Gilmour
 
Maintainable code
RiverGlide
 
core java
dssreenath
 
Writing clean code in C# and .NET
Dror Helper
 
Ad

More from Ganesh Samarthyam (20)

PDF
Wonders of the Sea
Ganesh Samarthyam
 
PDF
Animals - for kids
Ganesh Samarthyam
 
PDF
Applying Refactoring Tools in Practice
Ganesh Samarthyam
 
PDF
CFP - 1st Workshop on “AI Meets Blockchain”
Ganesh Samarthyam
 
PDF
Great Coding Skills Aren't Enough
Ganesh Samarthyam
 
PDF
College Project - Java Disassembler - Description
Ganesh Samarthyam
 
PDF
Bangalore Container Conference 2017 - Brief Presentation
Ganesh Samarthyam
 
PDF
Bangalore Container Conference 2017 - Poster
Ganesh Samarthyam
 
PDF
OO Design and Design Patterns in C++
Ganesh Samarthyam
 
PDF
Bangalore Container Conference 2017 - Sponsorship Deck
Ganesh Samarthyam
 
PPT
Google's Go Programming Language - Introduction
Ganesh Samarthyam
 
PDF
Java Generics - Quiz Questions
Ganesh Samarthyam
 
PDF
Software Architecture - Quiz Questions
Ganesh Samarthyam
 
PDF
Docker by Example - Quiz
Ganesh Samarthyam
 
PDF
Core Java: Best practices and bytecodes quiz
Ganesh Samarthyam
 
PDF
Refactoring for Software Architecture Smells - International Workshop on Refa...
Ganesh Samarthyam
 
PDF
Refactoring for Software Architecture Smells - International Workshop on Refa...
Ganesh Samarthyam
 
PDF
Writing an Abstract - Template (for research papers)
Ganesh Samarthyam
 
PDF
How to Write Abstracts (for White Papers, Research Papers, ...)
Ganesh Samarthyam
 
PDF
Java Concurrency - Quiz Questions
Ganesh Samarthyam
 
Wonders of the Sea
Ganesh Samarthyam
 
Animals - for kids
Ganesh Samarthyam
 
Applying Refactoring Tools in Practice
Ganesh Samarthyam
 
CFP - 1st Workshop on “AI Meets Blockchain”
Ganesh Samarthyam
 
Great Coding Skills Aren't Enough
Ganesh Samarthyam
 
College Project - Java Disassembler - Description
Ganesh Samarthyam
 
Bangalore Container Conference 2017 - Brief Presentation
Ganesh Samarthyam
 
Bangalore Container Conference 2017 - Poster
Ganesh Samarthyam
 
OO Design and Design Patterns in C++
Ganesh Samarthyam
 
Bangalore Container Conference 2017 - Sponsorship Deck
Ganesh Samarthyam
 
Google's Go Programming Language - Introduction
Ganesh Samarthyam
 
Java Generics - Quiz Questions
Ganesh Samarthyam
 
Software Architecture - Quiz Questions
Ganesh Samarthyam
 
Docker by Example - Quiz
Ganesh Samarthyam
 
Core Java: Best practices and bytecodes quiz
Ganesh Samarthyam
 
Refactoring for Software Architecture Smells - International Workshop on Refa...
Ganesh Samarthyam
 
Refactoring for Software Architecture Smells - International Workshop on Refa...
Ganesh Samarthyam
 
Writing an Abstract - Template (for research papers)
Ganesh Samarthyam
 
How to Write Abstracts (for White Papers, Research Papers, ...)
Ganesh Samarthyam
 
Java Concurrency - Quiz Questions
Ganesh Samarthyam
 

Recently uploaded (20)

PPTX
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
PDF
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PDF
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
PDF
Executive Business Intelligence Dashboards
vandeslie24
 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
PDF
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
PDF
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
PPTX
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
PPTX
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
DOCX
Import Data Form Excel to Tally Services
Tally xperts
 
PDF
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
PPT
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
PPTX
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
PDF
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
PDF
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
PPTX
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
PDF
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
An Introduction to ZAP by Checkmarx - Official Version
Simon Bennetts
 
vMix Pro 28.0.0.42 Download vMix Registration key Bundle
kulindacore
 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
MiniTool Partition Wizard 12.8 Crack License Key LATEST
hashhshs786
 
Executive Business Intelligence Dashboards
vandeslie24
 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
Alarm in Android-Scheduling Timed Tasks Using AlarmManager in Android.pdf
Nabin Dhakal
 
Digger Solo: Semantic search and maps for your local files
seanpedersen96
 
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
The Role of a PHP Development Company in Modern Web Development
SEO Company for School in Delhi NCR
 
Import Data Form Excel to Tally Services
Tally xperts
 
Mobile CMMS Solutions Empowering the Frontline Workforce
CryotosCMMSSoftware
 
MergeSortfbsjbjsfk sdfik k
RafishaikIT02044
 
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
Why Businesses Are Switching to Open Source Alternatives to Crystal Reports.pdf
Varsha Nayak
 
Odoo CRM vs Zoho CRM: Honest Comparison 2025
Odiware Technologies Private Limited
 
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
Understanding the Need for Systemic Change in Open Source Through Intersectio...
Imma Valls Bernaus
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 

Software Design in Practice (with Java examples)