SlideShare a Scribd company logo
HOW QUALITIES THAT GO BEYOND FUNCTIONAL
REQUIREMENTS DRIVE INNOVATIONS IN MANAGED
RUNTIMES
THE "-ILITIES" OF
SOFTWARE
ENGINEERING
Monica
@mon_bec
k
The ilities of software engineering.pptx
THE AGENDA
Discuss “-ilities” aka non-
functional requirements and
dive into Performance with GC
architecture + Scale the Clouds
and provide some awesome
quotes 
Software
Engineering
What are we
building?
How are we
building it?
Software
Engineering
Software
Design &
Development
Software
Architectural
Requirements
Software
Engineering
Functional
Requirements
Qualities
aka “ilities” aka
Non-Functional
Requirements
“ILITIES”?
Ility is an abstract
quality that good
software should
exhibit - Wiktionary
ILLITY ATTRIBUTES
Performance
Security
Scalability
Usability
Portability
Observability
Ility
How?
What?
Performance
What?
I WANT EVERYTHING
TO GO FAST(ER)!
PERFORMAN
CE
WHAT DOES THAT EVEN
MEAN?
Gather your
stakeholders
and define
success!
Success Criteria
for
Performance
Requirements
or
Service Level
Agreements
Footprint
?
Response
Times?
Throughp
ut?
Availabilit
y?
Utilization
?
Capacity?
A pplication
timeline
T0 T1
Stim
u l u s
arriv
al
Respo
nse
sent
A pplication
timeline
T0 T2
T1
Stim
ulus
arriv
al
Respo
nse
sent
A pplication
tim eline
Stim
ulus
arriv
al
Respo
nse
sent
T0 T1
A pplication
timeline
T0 T2
T1
Stim
u l u s
arriv
a l
Respo
nse
sent
A pplication
timeline
T0 T1
A pplication
tim eline
T0 T2
T1
Performance
How?
LET’S
ARCHITECT
A GARBAGE
COLLECTOR
THROUGHPUT AND
LATENCY ARE THE
TWO MAIN DRIVERS
TOWARDS
REFINEMENT IN
GARBAGE
COLLECTION
ALGORITHMS
GC
FACT:
A Simple
GC
Generational
GC Work
Throughp
ut
Maximize
r
Parallel Work
Task
Queues
Generational
Low-
Latency
Optimize
d
Incremental
Marking
Generational
Tunable Work
Units
Parallel
GC
Z GC or
Shenando
ah GC
OPENJDK GCS
G1 GC
OPENJDK GCS
Ility
How?
What?
Scalability
What?
SHOULD I SCALE UP
OR
SHOULD I SCALE OUT?
SCALABILITY
Pros Cons
Bigger system – more processing
power, higher bandwidth, spatial
locality
Hardware layout and data
temporal locality needs could lead
to latency increase and non-
uniformity of access
Almost little to none configuration
changes lead to faster turnaround
time
The workload’s bulk and scale
could render it to work only with
ageing systems
Scaling
Up in
System
Pros Cons
Highly available system -
downtime is non-existent
Study your system’s scaling factor
Grow or shrink the distributed
footprint on demand
Higher footprint would add more
costs (power, space, cooling)
Scaling
Out with
System
Scalability
How?
SCALING THE CLOUD
FOR PERFORMANCE
Core Counts
Scaling
Factor
Max
System
Capacity
- Demand driven
- Highlights
concurrency effects
- Helps with Scaling Up
or Scaling Out
decisions
- Iterative process
- Determines max
throughput
- Helps with
understanding the
number of
concurrent users or
requests that a
system can handle
Incrementing
the worker
threads
0
0.5
1
1.5
2
2.5
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
2 4 8 16 24 32 48 64 96
Normalized Gen 2 Max System Capacity Gen 2 Scaling Factor
Core Counts
Scaling
Factor
Max
System
Capacity
Core Counts
0
0.5
1
1.5
2
2.5
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
2 4 8 16 24 32 48 64 96
Normalized Gen3 Max System Capacity Gen 3 Scaling Factor
Scaling
Factor
Max
System
Capacity
Core Counts
0
0.2
0.4
0.6
0.8
1
1.2
Single JVM Dual JVM Quad JVM
Normalized Gen 3 Max System Capacity
Max
System
Capacity
SCALABILITY
PROJECTIONS
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
2 4 8 16 24 32 48 64 96
Non-Linear
Non-Linear Trendline
-0.2
0
0.2
0.4
0.6
0.8
1
1.2
2 4 8 16 24 32 48 64 96
Non-Linear Linear
Non-Linear Trendline
Linear Trendline
-0.5
0
0.5
1
1.5
2
2.5
3
2 4 8 16 24 32 48 64 96
Non-Linear Linear
Non-Linear Trendline
Linear Trendline
-1
0
1
2
3
4
5
2 4 8 16 24 32 48 64 96
Non-Linear Linear
Non-Linear Trendline
Linear Trendline
-1
0
1
2
3
4
5
2 4 8 16 24 32 48 64 96
Non-Linear Linear
These projections look
crazy, don’t they?
SCALABILIT
Y MODELS
AMDAHL’S LAW
https://wso2.com/blog/research/scalability-modeling-
using-universal-scalability-law/
SCALABILIT
Y MODELS
https://blog.knoldus.com/understanding-laws-of-
scalability-and-the-effects-on-a-distributed-system/
UNIVERSAL
SCALABILITY
LAW
SCALABILIT
Y MODELS
https://blog.knoldus.com/understanding-laws-of-
scalability-and-the-effects-on-a-distributed-system/
A FEW
INNOVATIONS IN
OPENJDK DRIVEN BY
NON - FUNCTIONAL
REQUIREMENTS
Portability
What?
Write Once Run Anywhere...
?
How?
OPENJDK
PORTER’S
GROUP
Linux,
Alpine,
macOS,
Windows
X64,
Arm64,
Apple Si
https://openjdk.org/groups/porters/
WHAT IS AN OPENJDK PORT?
• Windows on Arm64 was a new platform for OpenJDK
• In-order to run Java applications on this new
platform, we need to get the Java Runtime
Environment (JRE) to work on it.
• A JDK is a superset of a JRE as it includes tools and
utilities for development and debugging
• In order to be able to develop in Java, we need to
get the JDK to work on the new platform
Java
HotSpot VM
A JRE
Class
Libraries
Runtime
Execution
Engine
UI Toolkits
Base, Lang,
Util Libs
Usability
What?
Usability
Customer
Experience
User
Experience
Customer Experience =
Capability + Reliability +
Security
- Alan Chan
Managing Director, Global Head
of SRE, JP Morgan Chase & Co
PUTTING IT
ALL
TOGETHER
-ILITIES MAKE US
EFFICIENT
DO MORE WITH
LESS
- John Cunningham
CVP, Software Engineering, Microsoft
The ilities of software engineering.pptx
THANK
YOU
Microsoft’s commitment to the Java ecosystem
The ilities of software engineering.pptx
LinkedIn Azure Yammer
Minecraft Realms Bing
* Internal systems. Does not include customer workloads.
Others …
Java is widely used internally at Microsoft
CONTENTION VS
THROTTLING
CONTENTION
THROTTLING
SCALABILITY
LET’S TALK ABOUT CONCURRENCY &
PARALLELISM
This
Photo
by
Unknown
Author
is
licensed
under
CC
BY-NC-ND
Concurrency = Throughput x Response Time
JAVA MUTATORS AND GC THREADS
WORKING TOGETHER
G1 GC Parallel Full GC
GC Background Threads
Java Application Threads
Paus
e
Mark
Start
Paus
e
Mark
End
Pause
Relocat
e Start
Concurrent
Mark/Rema
p
Concurrent
Relocate
Concurrent Prepare
for Relocation
GC Background Threads
CONCURRENCY & PARALLELISM IN
Z GC

More Related Content

PDF
Inside Requirements
PPTX
Non Functional Requirement.
PDF
Non-Functional Requirements
PPTX
Non functional requirements. do we really care…?
PPTX
Technology insights: Decision Science Platform
PDF
Non-functional requirements
PDF
Java scalability considerations yogesh deshpande
PPT
The Economies of Scaling Software
Inside Requirements
Non Functional Requirement.
Non-Functional Requirements
Non functional requirements. do we really care…?
Technology insights: Decision Science Platform
Non-functional requirements
Java scalability considerations yogesh deshpande
The Economies of Scaling Software

Similar to The ilities of software engineering.pptx (20)

PDF
Reliability and Resilience Patterns
PDF
Software Requirements Till User Stories.pdf
PDF
Non Functional Requirements in Requirement Engineering.pdf
PDF
Architecting for Enterprise with JavaScript
PPT
Avoiding Software Insanity
PPT
The economies of scaling software - Abdel Remani
PPTX
Introduction to SDET
PPT
CISQ and Software Quality Measurement - Software Assurance Forum (March 2010)
PPT
The Architect's Two Hats
PDF
From the Drawing Board to the Trenches: Building a Production-ready Application
PDF
GIDS_15FactorWorkshop.pdf
PPTX
Designing distributed systems
PDF
Confoo 2011 - Advanced OO Patterns
PDF
Adressing nfr-with-agile-practices (english) - dec 16th
PPTX
SwissJUG_15_factor_app.pptx
PDF
Osgi in Action Creating Modular Applications in Java Unedited Draft 1st Editi...
PDF
Building data intensive applications
PDF
The 7 quests of resilient software design
PDF
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
PPTX
The Twelve-Factor App
Reliability and Resilience Patterns
Software Requirements Till User Stories.pdf
Non Functional Requirements in Requirement Engineering.pdf
Architecting for Enterprise with JavaScript
Avoiding Software Insanity
The economies of scaling software - Abdel Remani
Introduction to SDET
CISQ and Software Quality Measurement - Software Assurance Forum (March 2010)
The Architect's Two Hats
From the Drawing Board to the Trenches: Building a Production-ready Application
GIDS_15FactorWorkshop.pdf
Designing distributed systems
Confoo 2011 - Advanced OO Patterns
Adressing nfr-with-agile-practices (english) - dec 16th
SwissJUG_15_factor_app.pptx
Osgi in Action Creating Modular Applications in Java Unedited Draft 1st Editi...
Building data intensive applications
The 7 quests of resilient software design
RedisConf18 - Common Redis Use Cases for Cloud Native Apps and Microservices
The Twelve-Factor App
Ad

More from Monica Beckwith (20)

PPTX
A G1GC Saga-KCJUG.pptx
PDF
ZGC-SnowOne.pdf
PDF
QCon London.pdf
PPTX
Enabling Java: Windows on Arm64 - A Success Story!
PDF
Applying Concurrency Cookbook Recipes to SPEC JBB
PPTX
Intro to Garbage Collection
PPTX
OpenJDK Concurrent Collectors
PDF
OPENJDK: IN THE NEW AGE OF CONCURRENT GARBAGE COLLECTORS
PDF
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
PDF
Garbage First Garbage Collector: Where the Rubber Meets the Road!
PDF
JFokus Java 9 contended locking performance
PDF
Java Performance Engineer's Survival Guide
PDF
The Performance Engineer's Guide To (OpenJDK) HotSpot Garbage Collection - Th...
PDF
The Performance Engineer's Guide To HotSpot Just-in-Time Compilation
PDF
Java 9: The (G1) GC Awakens!
PDF
Game of Performance: A Song of JIT and GC
PDF
Way Improved :) GC Tuning Confessions - presented at JavaOne2015
PDF
GC Tuning Confessions Of A Performance Engineer - Improved :)
PDF
GC Tuning Confessions Of A Performance Engineer
PPTX
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
A G1GC Saga-KCJUG.pptx
ZGC-SnowOne.pdf
QCon London.pdf
Enabling Java: Windows on Arm64 - A Success Story!
Applying Concurrency Cookbook Recipes to SPEC JBB
Intro to Garbage Collection
OpenJDK Concurrent Collectors
OPENJDK: IN THE NEW AGE OF CONCURRENT GARBAGE COLLECTORS
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
Garbage First Garbage Collector: Where the Rubber Meets the Road!
JFokus Java 9 contended locking performance
Java Performance Engineer's Survival Guide
The Performance Engineer's Guide To (OpenJDK) HotSpot Garbage Collection - Th...
The Performance Engineer's Guide To HotSpot Just-in-Time Compilation
Java 9: The (G1) GC Awakens!
Game of Performance: A Song of JIT and GC
Way Improved :) GC Tuning Confessions - presented at JavaOne2015
GC Tuning Confessions Of A Performance Engineer - Improved :)
GC Tuning Confessions Of A Performance Engineer
Garbage First Garbage Collector (G1 GC) - Migration to, Expectations and Adva...
Ad

Recently uploaded (20)

PDF
Structs to JSON How Go Powers REST APIs.pdf
PDF
July 2025: Top 10 Read Articles Advanced Information Technology
PPTX
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
PDF
Geotechnical Engineering, Soil mechanics- Soil Testing.pdf
PPTX
Fluid Mechanics, Module 3: Basics of Fluid Mechanics
PDF
A Framework for Securing Personal Data Shared by Users on the Digital Platforms
PDF
Queuing formulas to evaluate throughputs and servers
PDF
Principles of Food Science and Nutritions
PDF
LEAP-1B presedntation xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
PDF
Top 10 read articles In Managing Information Technology.pdf
PPTX
24AI201_AI_Unit_4 (1).pptx Artificial intelligence
PPTX
Simulation of electric circuit laws using tinkercad.pptx
PPTX
Glazing at Facade, functions, types of glazing
PPTX
Soil science - sampling procedures for soil science lab
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
PPTX
Strings in CPP - Strings in C++ are sequences of characters used to store and...
PPTX
anatomy of limbus and anterior chamber .pptx
PPTX
TE-AI-Unit VI notes using planning model
Structs to JSON How Go Powers REST APIs.pdf
July 2025: Top 10 Read Articles Advanced Information Technology
MCN 401 KTU-2019-PPE KITS-MODULE 2.pptx
Geotechnical Engineering, Soil mechanics- Soil Testing.pdf
Fluid Mechanics, Module 3: Basics of Fluid Mechanics
A Framework for Securing Personal Data Shared by Users on the Digital Platforms
Queuing formulas to evaluate throughputs and servers
Principles of Food Science and Nutritions
LEAP-1B presedntation xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Top 10 read articles In Managing Information Technology.pdf
24AI201_AI_Unit_4 (1).pptx Artificial intelligence
Simulation of electric circuit laws using tinkercad.pptx
Glazing at Facade, functions, types of glazing
Soil science - sampling procedures for soil science lab
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
Strings in CPP - Strings in C++ are sequences of characters used to store and...
anatomy of limbus and anterior chamber .pptx
TE-AI-Unit VI notes using planning model

The ilities of software engineering.pptx

Editor's Notes

  • #3: Jakub’s talk had cat photos and it was awesome and brought a smile to my face, so here I have my cats and dogs. I hope they bring smile to yours as well
  • #5: So let’s start from the very beginning – Functionality – what it does Operation – how it does it – The ability of a software to execute and evolve
  • #6: Functionality – what it does Operation – how it does it – The ability of a software to execute and evolve
  • #7: Functionality – what it does Operation – how it does it – The ability of a software to execute and evolve
  • #8: Say you’d like to buy a car or a truck – and you’d like to be able to tow a trailer – now that becomes a desired attribute for useability and enables scalability
  • #9: In this talk, I’d like to walk a few of this attributes with you Security – e.g. Transport Layer Security (TLS 1.3 vs 1.0) Observability: ability to understand complex systems internal state based on workloads, e.g. JFR
  • #10: and together we can investigate the What the How. First we will dive into designing a GC for performance, then we will look at Scalability and investigate VMs for either scale out or scale up purposes
  • #11: let’s dive in deeper to performance requirements by trying to define the attributes first
  • #12: so what’s the first thing that people talk about when discussing performance? Say if you ask your end user “what needs to happen inorder for our system to be performant?” what would their answer look like?
  • #13: Let’s get some clarity on that
  • #14: But make sure you define what fast means to your customer. Refine definition This is gathering details wrt nfr.
  • #15: Footprint is the space that is needed to run your software.It's both about the memory footprint and also the physical resources Responsiveness: If I send a stimulus now, how much time ’til I get a response back? Throughput: How can I maximize the operations per second of my system? Availability is the uptime and Mean Time Between Failure of the system Let’s start with what we mean by response time.
  • #16: If I send a stimulus now, how much time ’til I get a response back?
  • #18: How can I maximize the operations per second of my system?
  • #19: Work done is Throughput = operations per second. (transactional DB) transactions per second, (query DB): requests per second
  • #20: Now that we know some of the attributes, let’s try to understand the how
  • #21: Before we start with our GC architecture, let me give you a fact that will help clarify why I chose GC for the perf requirement exercise.
  • #23: So, what do we know – we know that the GC will need to do some GC work and then we also know the weak generational hypothesis that most objects will die young.
  • #24: No concurrency == app has max utilization of resources and that should give it good throughput
  • #25: Regions == smaller work units. More granularity. All concurrent work needs maintenance barriers. With that we have successfully architected two GCs
  • #28: Next ility
  • #30: What’s the age-old question that everyone wants to know?
  • #32: Now that we know some of the attributes, let’s try to understand what they stand for and then let’s dive in deeper to performance requirements by investigating the how
  • #34: Normalized =(C18-MIN(C18:C25))/(MAX(C18:C25)-MIN(C18:C25))
  • #35: At 1, it looks like it could handle the number of concurrent users or requests to fit in with the other cores At 2 and at 3, we see concurrency effects Normalized =(C18-MIN(C18:C25))/(MAX(C18:C25)-MIN(C18:C25))
  • #37: Single JVM for gen 3 performs just as well as dual JVM on Gen 2 – so basically Gen 2 will benefit from scale out and Gen 3 will benefit from scaling up to the max cores.
  • #44: Gene Amdahl shows that there is a fraction of the workload which cannot be parallelized, called serial fraction i.e. no matter how many cores are allocated for the program, only a single core will be executing the serial portion of the program. We use σ to denote this serial fraction of workload. Hence (1-σ) becomes the parallel fraction of workload. σ takes values in the range (0, 1). Continuous validity of single processor
  • #45: Universal Scalability Law (USL) is an extension of Amdahl’s law. It accounts for the additional overhead due to interprocess communication that happens application software level, middleware level, operating system level, and hardware level. Three Cs: Concurrency (gamma), Contention (alpha), Coherency (beta)
  • #46: Universal Scalability Law (USL) is an extension of Amdahl’s law. It accounts for the additional overhead due to interprocess communication. Interprocess communication happens at multiple levels within the system: application software level, middleware level, operating system level, and hardware level.
  • #48: J/ava is portable. What does it mean for openjdk?
  • #50: Executables (In the bin/ subdirectory) An implementation of the Java Runtime Environment (JRE). The JRE includes a Java Virtual Machine (JVM™), class libraries, and other files that support the execution of programs written in the Java programming language. This directory also includes tools and utilities that will help you develop, execute, debug, and document programs written in the Java programming language. For further information, see the tools documentation at https://docs.oracle.com/en/java/javase/12/tools/tools-and-command-reference.html Configuration files (In the conf/ subdirectory) Files that contain user-configurable options. Files in this directory can be edited to change the JDK's access permissions, configure security algorithms, and set the Java Cryptography Extension Policy Files which might be used to limit the JDK's cryptographic strength. C header Files (In the include/ subdirectory) C-language header files that support native-code programming with the Java Native Interface and the Java Virtual Machine (JVM) Debugger Interface. Compiled Java Modules (in the jmods/ subdirectory) Compiled modules used by jlink to create custom runtimes. Copyright and License files (in the legal/ subdirectory) License and copyright files for each module. Includes third party notices as .md (markdown)files. Additional Libraries (In the lib/ subdirectory) Additional class libraries and support files required by the JDK. These files are not intended for external use.
  • #51: In the opening keynote we heard about project Amber and how removing the boiler plate is making the Java language much more usable. So let’s briefly look at Usability
  • #52: Usability is user-friendliness be it about language level boiler plate removal or having GC with minimal to none command line options or if your error messages like nullpointerexceptions in JDK14 User Experience is perception and reaction to a feature – like some people may prefer Java 19 over Kotlin due to the “User Experience” Customer experience is about the total journey – you will have various touchpoints with your customer. I have this awesome quote by Alan who is the head of SRE @JP Morgan https://www.testingtime.com/en/blog/usability-ux-and-cx-compared/
  • #53: 'nfr' needs more love and appreciation from engineers and products. at the end of the day "customer experience = capability + reliability + security" - all are equally critical. a lot of manpower and brainpower are drained today due to support work and manual toils. to make a platform more reliable, those time/resources/power will be reinvested to innovation and creation...and better products.
  • #54: As we say our goodbyes today, I’d like to leave you with a few thoughts -
  • #55: Throughout this conference and this talk there was a theme of efficiency. So I’d like to say that Ilities are Qualities that make us efficient. So, I hope you internalize them.
  • #56: They are asking you to be efficient. Measure in all dimensions Efficiency is defined as the ratio between speed up and the number of processors E(p) = S(p)/P
  • #57: Concurrency is one of those requirements that might as well be specified with f
  • #61: Microsoft ported OpenJDK to Windows on Arm to support Azure servers, Minecraft, and other scenarios. Minecraft coming soon to Windows on Arm devices. LinkedIn hundreds of thousands of JVMs powering every feature of the service. Bing: indexing services powered by OpenJDK. Bing is the search engine on Windows, behind “Search results” in the Start menu. Minecraft Realms: Microsoft-hosted servers of Minecraft for world-wide community of Minecraft players. Yammer: creators of Java frameworks like Dropwizard. Powers certain features behind Office 365/MS Teams. Azure: infrastructure control plane leverages some Java-based services for resource provisioning orchestration. Nuance and Metaswitch: Recent Microsoft acquisitions heavily invested in Java technologies
  • #62: Let’s get some clarity on that
  • #63: Concurrency is one of those requirements that might as well be specified with f
  • #64: Concurrency is one of those requirements that might as well be specified with f
  • #65: Concurrency is one of those requirements that might as well be specified with f
  • #66: Concurrency is one of those requirements that might as well be specified with
  • #68: Concurrency is one of those requirements that might as well be specified with f