SlideShare a Scribd company logo
// SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP
A benchmark based approach to determine language verbosity
Hans Kuijpers & Lodewijk Bergmans
Software Improvement Group
PUBLIC 25 November 2020
// SOFTWARE IMPROVEMENT GROUP
//
Three different implementations of the same algorithm to determine prime numbers
INTRODUCTION
▪
▪ How can we compare the volume of these programs?
▪ How much effort has been spent on developing these?
▪ How much on design? On coding?
▪ Can we estimate the typical effort per Line of Code?
primes = sieve [ 2.. ]
where
sieve (p:x) = p : sieve [ n | n <- x, n `mod` p > 0 ]
def eratosthenes(n):
sieve = [ True for i in range(n+1) ]
def markOff(pv):
for i in range(pv+pv, n+1, pv):
sieve[i] = False
markOff(2)
for i in range(3, n+1):
if sieve[i]:
markOff(i)
return [ i for i in range(1, n+1) if sieve[i] ]
function Eratosthenes(element, top) {
var all = new Uint8Array(new ArrayBuffer(top));
var idx = 0;
var prime = 3;
var x, j;
element.innerHTML = "1 ";
while(prime <= top) {
var flag = true;
for(x = 0; x < top; x++) {
if(all[x] == prime) {
flag = false;
break;
}
}
if(flag) {
element.innerHTML += prime + " ";
j = prime;
while(j <= (top / prime)) {
all[idx++] = prime * j;
j += 1;
}
}
prime += 2;
}
element.innerHTML += "<br>";
return;
}
JavaScriptHaskell
Python
Algorithm: ‘Sieve Of Eratosthenes’, generates prime numbers
2
// SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP
1. Introduction Lodewijk, Hans and SIG
2. Motivation and Goal
3. Background: a look at SPR & language levels
4. The underlying concept & approach
5. Testing the approach
6. Application & conclusion
3
Table of Contents
// SOFTWARE IMPROVEMENT GROUP
// INTRODUCTION
Hans Kuijpers
8 years at SIG
Managing Consultant
Certified Scope Manager,
Professional Scrum Master I
FPA: Nesma, IFPUG, Cosmic,
Use Case Points
Who is Who
Lodewijk Bergmans
8 years at SIG
Sr. Researcher
Areas of expertise: software
metrics, measuring development
practices, software economics:
fact-based decision support for
software developers, architects
and management.
4
// SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP
The majority of software development work is not
visible, SIG can make this transparent:
Build quality drives TCO and functional quality of software
5
Software functionality
SIG capabilities
beyond ISO
// SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP
1. Introduction Lodewijk, Hans and SIG
2. Motivation and Goal
3. Background: a look at SPR & language levels
4. The underlying concept & approach
5. Testing the approach
6. Application & Conclusion
6
Table of Contents
// SOFTWARE IMPROVEMENT GROUP
// MOTIVATION AND GOAL
Motivation
▪ Important requirement: assess total volume of a system with multiple programming languages
▪ Must be able to aggregate parts of a system in different languages
▪ Must yield a comparable value among systems (e.g. for benchmarking)
▪ Previously, the ‘SPR table’ was used at SIG as a basis for translating LOC to volume (effort needed)
▪ i.e. ‘language (productivity) factors’
▪ In our maintainability model, this is used to compare/aggregate/weigh code in different languages ‘fairly’
▪ In the SIG Cost Estimation Model, this is used to translate coding efforts (creating/modifying) to financial costs (through
efforts in terms of person years (PY)
▪ But SPR now has several issues:
▪ Contains entries that are not intuitive
▪ Outdated (>10 years since last update):
▪ Languages and libraries have evolved
▪ Does not include new languages
7
// SOFTWARE IMPROVEMENT GROUP
// MOTIVATION AND GOAL
Goals & context
Goal: Create a new set of factors that can be used to:
1. Compare and aggregate the size of applications in different languages
2. Calculate the ‘average’ effort needed
▪ To write 1000 Lines of Code in a specific programming language (our ‘Volume’ measurement)
Considerations
▪ Comparing size of programs should be related to the technical effort1
involved in creating 1000 Lines of Code
▪ Approach must be applicable to all programming languages we encounter
▪ Use a fact- or measurement-based approach, e.g. using the SIG code warehouse or other data sources
▪ Preferably not depending on external parties
▪ Experience has shown that it is really difficult to find consistent, trustworthy, and comparable effort data from actual projects,
especially for new, rare and custom programming languages.
1
Technical effort is related to all the work a developer does; technical design, coding and testing.
8
// SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP
1. Introduction Lodewijk, Hans and SIG
2. Motivation and Goal
3. Background: a look at SPR & language levels
4. The underlying concept & approach
5. Testing the approach
6. Application & Conclusion
9
Table of Contents
// SOFTWARE IMPROVEMENT GROUP
//
Implementations of the same algorithm in different programming languages
BACKGROUND: A LOOK AT SPR & LANGUAGE LEVELS
Two ‘Eratosthenes’ code samples revisited:
▪ Haskell is a functional language, very much suited for
compact expression of algorithms:
▪ Python is a bit more generic OO language:
primes = sieve [ 2.. ]
where
sieve (p:x) = p : sieve [ n | n <- x, n `mod` p > 0 ]
Haskell
def eratosthenes(n):
sieve = [ True for i in range(n+1) ]
def markOff(pv):
for i in range(pv+pv, n+1, pv):
sieve[i] = False
markOff(2)
for i in range(3, n+1):
if sieve[i]:
markOff(i)
return [ i for i in range(1, n+1) if sieve[i] ]
Python
We observe that one language is more verbose than the other
▪ Or, in reverse: the other language is more expressive
The SPR table defines for each language its language level:
▪ This has an inverse relation to the number of source
statements to implement 1 Function Point
▪ In other words: how much/little code is needed to
express a certain amount of functionality
Note: this is a counter-
intuitive value
10
// SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP
1. Introduction Lodewijk, Hans and SIG
2. Motivation and Goal
3. Background: a look at SPR & language levels
4. The underlying concept & approach
5. Testing the approach
6. Application & Conclusion
11
Table of Contents
// SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP
//
Our premise: a program is the encoding of information in source code
CONCEPT & APPROACH
Domain
knowledge
requirements
Design idiom
& patterns
programming
language
information Source code
So programming is about distilling the necessary
information and expressing it using source code.
12
// SOFTWARE IMPROVEMENT GROUP
//
Our approach to measure verbosity/expressiveness
CONCEPT & APPROACH
We adopt a similar approach to SPR:
Measure how much/little code is needed to express a certain amount of information
▪ Advantage: this also applies to code that is not directly implementing functionality:
▪ Non-functionals such as performance, security, reliability.
▪ This can easily be 30% of the code [1]
▪ But also the code for structuring software (e.g. all declarations of methods, classes, interfaces, inheritance, ..)!
▪ How can we measure the amount of information? → the theory of Kolmogorov complexity
▪ “The amount of information in a document equals the size of the shortest possible program that can produce the
document”
▪ A practical approximation: take the length of the compressed document
▪ We use the term Information Point (IP) to designate a single unit of information
▪ Application: calculate the Compression Ratio (CR) of programs in a language: CR = code_size / compressed_size
▪ The average* compression ratio for a language indicates the average amount of code per unit of information (IP)
▪ We built a benchmark of average compression ratio’s based on large amount of scoped industrial systems analyzed by
SIG.
13
// SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP
1. Introduction Lodewijk, Hans and SIG
2. Motivation and Goal
3. Background: a look at SPR & language levels
4. The underlying concept & approach
5. Testing the approach
6. Application & Conclusion
14
Table of Contents
// SOFTWARE IMPROVEMENT GROUP
//
Compression ratios for subset of languages
more verbosemore expressive
TESTING THE APPROACH
15
// SOFTWARE IMPROVEMENT GROUP
// TESTING THE APPROACH
Preliminary validation: comparing with gearing factors, and Redmonk language ranking
Comparison to language gearing factors of SPR[2]
and QSM[3]
These are expressed as SS/FP: source statements per FP
We found NO significant correlations between CR and
SPR/QSM. SS/FP is not exactly the same as verbosity/CR:
▪ E.g. Reusing functionality from libraries provides extra
FPs but does need little coding effort
▪ The CR-based approach counts non-functional code
▪ SPR is 15+ years old; (usage of) languages evolved
Comparison to Redmonk ‘language ranking by expressiveness’[1]
Based on the typical size of commits for a language:
▪ Assumption is that 1 commit ~ 1 functionality/behavior
▪ We only tested against the ranking, not actual values
The correlation between Redmonk ranking and Compression
Ratios (CR) is strong (Spearman correlation =0.75)
In other words: our notion of language verbosity corresponds
closely to the redmonk notion of language expressiveness
[1] D. Berkholz, “Programming languages ranked by expressiveness”,
redmonk, 2013: https://redmonk.com/dberkholz/2013/03/25/
programming-languages-ranked-by-expressiveness/
[2] SPR, “SPR programming languages table, PLT2007c”, 2007
[3] QSM, “Function Point Languages Table, version 5.0”,
https://www.qsm.com/resources/function-point-languages-table
16
// SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP
1. Introduction Lodewijk, Hans and SIG
2. Motivation and Goal
3. Background: a look at SPR & language levels
4. The underlying concept & approach
5. Testing the approach
6. Application & Conclusion
17
Table of Contents
// SOFTWARE IMPROVEMENT GROUP
//
Volume normalization at system level
APPLICATION & CONCLUSION
For comparing and aggregating the volume of a system implemented with multiple languages
▪ Lines of Code is less representative of the amount of information and (intellectual) effort spent on the different parts
[This is a screenshot from the Sigrid® software assurance platform]
18
// SOFTWARE IMPROVEMENT GROUP
//
Volume normalization at portfolio level
APPLICATION & CONCLUSION
For comparing the volume of systems in a portfolio; some may be implemented in totally different technologies
▪ This overview shows the systems in a portfolio, annotated with the main language per system
[This is a screenshot from the Sigrid® software assurance platform]
19
// SOFTWARE IMPROVEMENT GROUP
//
Base for cost (effort) estimations
APPLICATION & CONCLUSION
Code-based effort estimation: effort is influenced by
▪ the amount of code (LOC)
▪ the type of language
Other (human) factors are encapsulated in the constants derived from benchmark data
Coding effort
constantCODING
* LOC
Relatively smaller for
highly expressive
languages: this depends
on code size → LOC
Technical development effort
These factors are derived using
SIG benchmark data such as effort
distribution, average system sizes,
and known effort numbers
Non-coding effort
constantNON-CODING
* IP
Depends -mostly- on
how much information to
process (requirements,
design, ..) → IP
LOC
CRLANGUAGE
IP =
20
// SOFTWARE IMPROVEMENT GROUP
//
Conclusion
APPLICATION & CONCLUSION
What did we achieve with compression ratio (CR) based volume normalization?
● CR is an objective measure of language verbosity
○ Applicable for all text-based languages, also for new, custom and domain specific languages
○ Based on a benchmark: how languages are used in practice
○ Can be largely automated (and calibrated periodically)
● CR allows comparing the size of source code in different languages in a consistent way
○ You don’t need FP countings, or access to the hour administration
■ But does require availability of source code
■ Does support ‘real-time’ observation of progress
○ The CR-based approach is representative for all the behavior a developer implements
■ Functional behavior is not considered separately
● CR can be used as the basis of a code-based estimation of development work
21
// SOFTWARE IMPROVEMENT GROUP
.com
GETTING SOFTWARE RIGHT FOR A HEALTHIER DIGITAL WORLD
// SOFTWARE IMPROVEMENT GROUP
Questions?
22

More Related Content

What's hot

Size matters a lot rick collins - technomics
Size matters a lot   rick collins - technomicsSize matters a lot   rick collins - technomics
Size matters a lot rick collins - technomics
Nesma
 
Software sizing as an essential measure past present and future - Dan Galorat...
Software sizing as an essential measure past present and future - Dan Galorat...Software sizing as an essential measure past present and future - Dan Galorat...
Software sizing as an essential measure past present and future - Dan Galorat...
Nesma
 
Ac2017 6. output based contracting
Ac2017   6. output based contractingAc2017   6. output based contracting
Ac2017 6. output based contracting
Nesma
 
5. agile estimation reconsidered again esteban sanchez
5. agile estimation reconsidered again   esteban sanchez5. agile estimation reconsidered again   esteban sanchez
5. agile estimation reconsidered again esteban sanchez
Nesma
 
Estimation of a micro services based estimation application bhawna thakur -...
Estimation of a micro services based estimation application   bhawna thakur -...Estimation of a micro services based estimation application   bhawna thakur -...
Estimation of a micro services based estimation application bhawna thakur -...
Nesma
 
Software Estimation Technique
Software Estimation TechniqueSoftware Estimation Technique
Software Estimation Technique
George Ukkuru
 
Software project estimation
Software project estimationSoftware project estimation
Software project estimation
inayat khan
 
Draft CE-74 v03 for MAIN review
Draft CE-74 v03 for MAIN reviewDraft CE-74 v03 for MAIN review
Draft CE-74 v03 for MAIN review
Nesma
 
Software effort estimation
Software effort estimationSoftware effort estimation
Software effort estimation
tumetr1
 
Project Estimation
Project EstimationProject Estimation
Project Estimation
Kasun Ranga Wijeweera
 
Introduction to Software Cost Estimation
Introduction to Software Cost EstimationIntroduction to Software Cost Estimation
Introduction to Software Cost Estimation
Hemanth Raj
 
Software Estimation
Software EstimationSoftware Estimation
Software Estimation
Nguyen Hai
 
Practical usage of fpa and automatic code review piotr popovski
Practical usage of fpa and automatic code review   piotr popovskiPractical usage of fpa and automatic code review   piotr popovski
Practical usage of fpa and automatic code review piotr popovski
IWSM Mensura
 
Workshop early or rapid cosmic fsm - Frank Vogelezang
Workshop early or rapid cosmic fsm - Frank VogelezangWorkshop early or rapid cosmic fsm - Frank Vogelezang
Workshop early or rapid cosmic fsm - Frank Vogelezang
IWSM Mensura
 
Software Project Cost Estimation
Software Project Cost EstimationSoftware Project Cost Estimation
Software Project Cost Estimation
Drew Tkac
 
Wideband Delphi Estimation
Wideband Delphi EstimationWideband Delphi Estimation
Wideband Delphi Estimation
Aniruddha Chakrabarti
 
Software Cost Estimation
Software Cost EstimationSoftware Cost Estimation
Software Cost Estimation
Ashis Kumar Chanda
 
Basic Software Effort Estimation
Basic Software Effort EstimationBasic Software Effort Estimation
Basic Software Effort Estimation
umair khan
 
Estimation in the tendering process
Estimation in the tendering processEstimation in the tendering process
Estimation in the tendering process
Frank Vogelezang
 
The art of project estimation
The art of project estimationThe art of project estimation
The art of project estimation
Return on Intelligence
 

What's hot (20)

Size matters a lot rick collins - technomics
Size matters a lot   rick collins - technomicsSize matters a lot   rick collins - technomics
Size matters a lot rick collins - technomics
 
Software sizing as an essential measure past present and future - Dan Galorat...
Software sizing as an essential measure past present and future - Dan Galorat...Software sizing as an essential measure past present and future - Dan Galorat...
Software sizing as an essential measure past present and future - Dan Galorat...
 
Ac2017 6. output based contracting
Ac2017   6. output based contractingAc2017   6. output based contracting
Ac2017 6. output based contracting
 
5. agile estimation reconsidered again esteban sanchez
5. agile estimation reconsidered again   esteban sanchez5. agile estimation reconsidered again   esteban sanchez
5. agile estimation reconsidered again esteban sanchez
 
Estimation of a micro services based estimation application bhawna thakur -...
Estimation of a micro services based estimation application   bhawna thakur -...Estimation of a micro services based estimation application   bhawna thakur -...
Estimation of a micro services based estimation application bhawna thakur -...
 
Software Estimation Technique
Software Estimation TechniqueSoftware Estimation Technique
Software Estimation Technique
 
Software project estimation
Software project estimationSoftware project estimation
Software project estimation
 
Draft CE-74 v03 for MAIN review
Draft CE-74 v03 for MAIN reviewDraft CE-74 v03 for MAIN review
Draft CE-74 v03 for MAIN review
 
Software effort estimation
Software effort estimationSoftware effort estimation
Software effort estimation
 
Project Estimation
Project EstimationProject Estimation
Project Estimation
 
Introduction to Software Cost Estimation
Introduction to Software Cost EstimationIntroduction to Software Cost Estimation
Introduction to Software Cost Estimation
 
Software Estimation
Software EstimationSoftware Estimation
Software Estimation
 
Practical usage of fpa and automatic code review piotr popovski
Practical usage of fpa and automatic code review   piotr popovskiPractical usage of fpa and automatic code review   piotr popovski
Practical usage of fpa and automatic code review piotr popovski
 
Workshop early or rapid cosmic fsm - Frank Vogelezang
Workshop early or rapid cosmic fsm - Frank VogelezangWorkshop early or rapid cosmic fsm - Frank Vogelezang
Workshop early or rapid cosmic fsm - Frank Vogelezang
 
Software Project Cost Estimation
Software Project Cost EstimationSoftware Project Cost Estimation
Software Project Cost Estimation
 
Wideband Delphi Estimation
Wideband Delphi EstimationWideband Delphi Estimation
Wideband Delphi Estimation
 
Software Cost Estimation
Software Cost EstimationSoftware Cost Estimation
Software Cost Estimation
 
Basic Software Effort Estimation
Basic Software Effort EstimationBasic Software Effort Estimation
Basic Software Effort Estimation
 
Estimation in the tendering process
Estimation in the tendering processEstimation in the tendering process
Estimation in the tendering process
 
The art of project estimation
The art of project estimationThe art of project estimation
The art of project estimation
 

Similar to A benchmark based approach to determine language verbosity - Hans Kuijpers - Lodewijk Bergmans - SIG

A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...
IRJET Journal
 
C Course material
C Course materialC Course material
C Course materialFareed Khan
 
System programming vs application programming
System programming vs application programmingSystem programming vs application programming
System programming vs application programming
Inderbir Kaur Sandhu
 
Computer Programming
Computer Programming Computer Programming
Computer Programming
Newreborn Incarnation
 
What are your Programming Language's Energy-Delay Implications?
What are your Programming Language's Energy-Delay Implications?What are your Programming Language's Energy-Delay Implications?
What are your Programming Language's Energy-Delay Implications?
Stefanos Georgiou
 
PL Lecture 01 - preliminaries
PL Lecture 01 - preliminariesPL Lecture 01 - preliminaries
PL Lecture 01 - preliminaries
Schwannden Kuo
 
Agile development with Ruby
Agile development with RubyAgile development with Ruby
Agile development with Ruby
khelll
 
The Concept Of Abstract Data Types
The Concept Of Abstract Data TypesThe Concept Of Abstract Data Types
The Concept Of Abstract Data Types
Katy Allen
 
Lecture 1-3.ppt
Lecture 1-3.pptLecture 1-3.ppt
Lecture 1-3.ppt
HafeezullahJamro
 
Unit 1_Evaluation Criteria_session 3.pptx
Unit 1_Evaluation Criteria_session 3.pptxUnit 1_Evaluation Criteria_session 3.pptx
Unit 1_Evaluation Criteria_session 3.pptx
Asst.prof M.Gokilavani
 
CSCorganization of programming languages
CSCorganization of programming languagesCSCorganization of programming languages
CSCorganization of programming languages
OluwafolakeOjo
 
Language processors
Language processorsLanguage processors
Language processors
Yash Bansal
 
Qualidade de Software em zOS usando IBM Debug Tool e RDz
Qualidade de Software em zOS usando IBM Debug Tool e RDzQualidade de Software em zOS usando IBM Debug Tool e RDz
Qualidade de Software em zOS usando IBM Debug Tool e RDz
Paulo Batuta
 
Programming Language Paradigms February.ppt
Programming Language Paradigms February.pptProgramming Language Paradigms February.ppt
Programming Language Paradigms February.ppt
alireza alikhani
 
Software development slides
Software development slidesSoftware development slides
Software development slidesiarthur
 
Halsted’s Software Science-An analytical technique
Halsted’s Software Science-An analytical techniqueHalsted’s Software Science-An analytical technique
Halsted’s Software Science-An analytical techniqueNur Islam
 
Lecture_1_Introduction_to_Programming.pptx
Lecture_1_Introduction_to_Programming.pptxLecture_1_Introduction_to_Programming.pptx
Lecture_1_Introduction_to_Programming.pptx
Chewe Lulembo
 
State of the Machine Translation by Intento (November 2017)
State of the Machine Translation by Intento (November 2017)State of the Machine Translation by Intento (November 2017)
State of the Machine Translation by Intento (November 2017)
Konstantin Savenkov
 

Similar to A benchmark based approach to determine language verbosity - Hans Kuijpers - Lodewijk Bergmans - SIG (20)

A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...A Research Study of Data Collection and Analysis of Semantics of Programming ...
A Research Study of Data Collection and Analysis of Semantics of Programming ...
 
C Course material
C Course materialC Course material
C Course material
 
System programming vs application programming
System programming vs application programmingSystem programming vs application programming
System programming vs application programming
 
Computer Programming
Computer Programming Computer Programming
Computer Programming
 
Computer
ComputerComputer
Computer
 
What are your Programming Language's Energy-Delay Implications?
What are your Programming Language's Energy-Delay Implications?What are your Programming Language's Energy-Delay Implications?
What are your Programming Language's Energy-Delay Implications?
 
PL Lecture 01 - preliminaries
PL Lecture 01 - preliminariesPL Lecture 01 - preliminaries
PL Lecture 01 - preliminaries
 
Agile development with Ruby
Agile development with RubyAgile development with Ruby
Agile development with Ruby
 
The Concept Of Abstract Data Types
The Concept Of Abstract Data TypesThe Concept Of Abstract Data Types
The Concept Of Abstract Data Types
 
Lecture 1-3.ppt
Lecture 1-3.pptLecture 1-3.ppt
Lecture 1-3.ppt
 
Unit 1_Evaluation Criteria_session 3.pptx
Unit 1_Evaluation Criteria_session 3.pptxUnit 1_Evaluation Criteria_session 3.pptx
Unit 1_Evaluation Criteria_session 3.pptx
 
CSCorganization of programming languages
CSCorganization of programming languagesCSCorganization of programming languages
CSCorganization of programming languages
 
Language processors
Language processorsLanguage processors
Language processors
 
Qualidade de Software em zOS usando IBM Debug Tool e RDz
Qualidade de Software em zOS usando IBM Debug Tool e RDzQualidade de Software em zOS usando IBM Debug Tool e RDz
Qualidade de Software em zOS usando IBM Debug Tool e RDz
 
Programming Language Paradigms February.ppt
Programming Language Paradigms February.pptProgramming Language Paradigms February.ppt
Programming Language Paradigms February.ppt
 
Software development slides
Software development slidesSoftware development slides
Software development slides
 
Halsted’s Software Science-An analytical technique
Halsted’s Software Science-An analytical techniqueHalsted’s Software Science-An analytical technique
Halsted’s Software Science-An analytical technique
 
Lecture_1_Introduction_to_Programming.pptx
Lecture_1_Introduction_to_Programming.pptxLecture_1_Introduction_to_Programming.pptx
Lecture_1_Introduction_to_Programming.pptx
 
Agile estimation 3_Мел Росс
Agile estimation 3_Мел РоссAgile estimation 3_Мел Росс
Agile estimation 3_Мел Росс
 
State of the Machine Translation by Intento (November 2017)
State of the Machine Translation by Intento (November 2017)State of the Machine Translation by Intento (November 2017)
State of the Machine Translation by Intento (November 2017)
 

More from Nesma

The Use of Functional Size in the Industry.pdf
The Use of Functional Size in the Industry.pdfThe Use of Functional Size in the Industry.pdf
The Use of Functional Size in the Industry.pdf
Nesma
 
2024-04 - Nesma webinar - Benchmarking.pdf
2024-04 - Nesma webinar - Benchmarking.pdf2024-04 - Nesma webinar - Benchmarking.pdf
2024-04 - Nesma webinar - Benchmarking.pdf
Nesma
 
Agile Team Performance Measurement webinar
Agile Team Performance Measurement webinarAgile Team Performance Measurement webinar
Agile Team Performance Measurement webinar
Nesma
 
Software Cost Estimation webinar January 2024.pdf
Software Cost Estimation webinar January 2024.pdfSoftware Cost Estimation webinar January 2024.pdf
Software Cost Estimation webinar January 2024.pdf
Nesma
 
Nesma event June '23 - How to use objective metrics as a basis for agile cost...
Nesma event June '23 - How to use objective metrics as a basis for agile cost...Nesma event June '23 - How to use objective metrics as a basis for agile cost...
Nesma event June '23 - How to use objective metrics as a basis for agile cost...
Nesma
 
Nesma event June '23 - NEN Practice Guideline - NPR.pdf
Nesma event June '23 - NEN Practice Guideline - NPR.pdfNesma event June '23 - NEN Practice Guideline - NPR.pdf
Nesma event June '23 - NEN Practice Guideline - NPR.pdf
Nesma
 
Nesma event June '23 - Easy Function Sizing - Introduction.pdf
Nesma event June '23 - Easy Function Sizing - Introduction.pdfNesma event June '23 - Easy Function Sizing - Introduction.pdf
Nesma event June '23 - Easy Function Sizing - Introduction.pdf
Nesma
 
Automotive Software Cost Estimation - The UCE Approach - Emmanuel Mary
Automotive Software Cost Estimation - The UCE Approach - Emmanuel MaryAutomotive Software Cost Estimation - The UCE Approach - Emmanuel Mary
Automotive Software Cost Estimation - The UCE Approach - Emmanuel Mary
Nesma
 
The COSMIC battle between David and Goliath - Paul Hussein
The COSMIC battle between David and Goliath - Paul HusseinThe COSMIC battle between David and Goliath - Paul Hussein
The COSMIC battle between David and Goliath - Paul Hussein
Nesma
 
Succesful Estimating - It's how you tell the story - Amritpal Singh Agar
Succesful Estimating - It's how you tell the story - Amritpal Singh AgarSuccesful Estimating - It's how you tell the story - Amritpal Singh Agar
Succesful Estimating - It's how you tell the story - Amritpal Singh Agar
Nesma
 
(Increasing) Predictability of large Government ICT Projects - Koos Veefkind
(Increasing) Predictability of large Government ICT Projects - Koos Veefkind(Increasing) Predictability of large Government ICT Projects - Koos Veefkind
(Increasing) Predictability of large Government ICT Projects - Koos Veefkind
Nesma
 
CEBoK for Software Past Present Future - Megan Jones
CEBoK for Software Past Present Future - Megan JonesCEBoK for Software Past Present Future - Megan Jones
CEBoK for Software Past Present Future - Megan Jones
Nesma
 
Agile Development and Agile Cost Estimation - A return to basic principles - ...
Agile Development and Agile Cost Estimation - A return to basic principles - ...Agile Development and Agile Cost Estimation - A return to basic principles - ...
Agile Development and Agile Cost Estimation - A return to basic principles - ...
Nesma
 
Resolving Cost Management and Key Pitfalls of Agile Software Development - Da...
Resolving Cost Management and Key Pitfalls of Agile Software Development - Da...Resolving Cost Management and Key Pitfalls of Agile Software Development - Da...
Resolving Cost Management and Key Pitfalls of Agile Software Development - Da...
Nesma
 
Project Succes is a Choice - Joop Schefferlie
Project Succes is a Choice - Joop SchefferlieProject Succes is a Choice - Joop Schefferlie
Project Succes is a Choice - Joop Schefferlie
Nesma
 
Afrekenen met functiepunten
Afrekenen met functiepuntenAfrekenen met functiepunten
Afrekenen met functiepunten
Nesma
 
Agile teams get a grip - martijn groenewegen
Agile teams   get a grip - martijn groenewegenAgile teams   get a grip - martijn groenewegen
Agile teams get a grip - martijn groenewegen
Nesma
 
2. garansys loves estimates for agile projects alexander vermeulen
2. garansys loves estimates for agile projects   alexander vermeulen2. garansys loves estimates for agile projects   alexander vermeulen
2. garansys loves estimates for agile projects alexander vermeulen
Nesma
 
8. how nesma can quick start your software estimate frank vogelezang
8. how nesma can quick start your software estimate   frank vogelezang8. how nesma can quick start your software estimate   frank vogelezang
8. how nesma can quick start your software estimate frank vogelezang
Nesma
 
4. the use of the ai technique of natural language processing for user story ...
4. the use of the ai technique of natural language processing for user story ...4. the use of the ai technique of natural language processing for user story ...
4. the use of the ai technique of natural language processing for user story ...
Nesma
 

More from Nesma (20)

The Use of Functional Size in the Industry.pdf
The Use of Functional Size in the Industry.pdfThe Use of Functional Size in the Industry.pdf
The Use of Functional Size in the Industry.pdf
 
2024-04 - Nesma webinar - Benchmarking.pdf
2024-04 - Nesma webinar - Benchmarking.pdf2024-04 - Nesma webinar - Benchmarking.pdf
2024-04 - Nesma webinar - Benchmarking.pdf
 
Agile Team Performance Measurement webinar
Agile Team Performance Measurement webinarAgile Team Performance Measurement webinar
Agile Team Performance Measurement webinar
 
Software Cost Estimation webinar January 2024.pdf
Software Cost Estimation webinar January 2024.pdfSoftware Cost Estimation webinar January 2024.pdf
Software Cost Estimation webinar January 2024.pdf
 
Nesma event June '23 - How to use objective metrics as a basis for agile cost...
Nesma event June '23 - How to use objective metrics as a basis for agile cost...Nesma event June '23 - How to use objective metrics as a basis for agile cost...
Nesma event June '23 - How to use objective metrics as a basis for agile cost...
 
Nesma event June '23 - NEN Practice Guideline - NPR.pdf
Nesma event June '23 - NEN Practice Guideline - NPR.pdfNesma event June '23 - NEN Practice Guideline - NPR.pdf
Nesma event June '23 - NEN Practice Guideline - NPR.pdf
 
Nesma event June '23 - Easy Function Sizing - Introduction.pdf
Nesma event June '23 - Easy Function Sizing - Introduction.pdfNesma event June '23 - Easy Function Sizing - Introduction.pdf
Nesma event June '23 - Easy Function Sizing - Introduction.pdf
 
Automotive Software Cost Estimation - The UCE Approach - Emmanuel Mary
Automotive Software Cost Estimation - The UCE Approach - Emmanuel MaryAutomotive Software Cost Estimation - The UCE Approach - Emmanuel Mary
Automotive Software Cost Estimation - The UCE Approach - Emmanuel Mary
 
The COSMIC battle between David and Goliath - Paul Hussein
The COSMIC battle between David and Goliath - Paul HusseinThe COSMIC battle between David and Goliath - Paul Hussein
The COSMIC battle between David and Goliath - Paul Hussein
 
Succesful Estimating - It's how you tell the story - Amritpal Singh Agar
Succesful Estimating - It's how you tell the story - Amritpal Singh AgarSuccesful Estimating - It's how you tell the story - Amritpal Singh Agar
Succesful Estimating - It's how you tell the story - Amritpal Singh Agar
 
(Increasing) Predictability of large Government ICT Projects - Koos Veefkind
(Increasing) Predictability of large Government ICT Projects - Koos Veefkind(Increasing) Predictability of large Government ICT Projects - Koos Veefkind
(Increasing) Predictability of large Government ICT Projects - Koos Veefkind
 
CEBoK for Software Past Present Future - Megan Jones
CEBoK for Software Past Present Future - Megan JonesCEBoK for Software Past Present Future - Megan Jones
CEBoK for Software Past Present Future - Megan Jones
 
Agile Development and Agile Cost Estimation - A return to basic principles - ...
Agile Development and Agile Cost Estimation - A return to basic principles - ...Agile Development and Agile Cost Estimation - A return to basic principles - ...
Agile Development and Agile Cost Estimation - A return to basic principles - ...
 
Resolving Cost Management and Key Pitfalls of Agile Software Development - Da...
Resolving Cost Management and Key Pitfalls of Agile Software Development - Da...Resolving Cost Management and Key Pitfalls of Agile Software Development - Da...
Resolving Cost Management and Key Pitfalls of Agile Software Development - Da...
 
Project Succes is a Choice - Joop Schefferlie
Project Succes is a Choice - Joop SchefferlieProject Succes is a Choice - Joop Schefferlie
Project Succes is a Choice - Joop Schefferlie
 
Afrekenen met functiepunten
Afrekenen met functiepuntenAfrekenen met functiepunten
Afrekenen met functiepunten
 
Agile teams get a grip - martijn groenewegen
Agile teams   get a grip - martijn groenewegenAgile teams   get a grip - martijn groenewegen
Agile teams get a grip - martijn groenewegen
 
2. garansys loves estimates for agile projects alexander vermeulen
2. garansys loves estimates for agile projects   alexander vermeulen2. garansys loves estimates for agile projects   alexander vermeulen
2. garansys loves estimates for agile projects alexander vermeulen
 
8. how nesma can quick start your software estimate frank vogelezang
8. how nesma can quick start your software estimate   frank vogelezang8. how nesma can quick start your software estimate   frank vogelezang
8. how nesma can quick start your software estimate frank vogelezang
 
4. the use of the ai technique of natural language processing for user story ...
4. the use of the ai technique of natural language processing for user story ...4. the use of the ai technique of natural language processing for user story ...
4. the use of the ai technique of natural language processing for user story ...
 

Recently uploaded

Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 

Recently uploaded (20)

Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 

A benchmark based approach to determine language verbosity - Hans Kuijpers - Lodewijk Bergmans - SIG

  • 1. // SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP A benchmark based approach to determine language verbosity Hans Kuijpers & Lodewijk Bergmans Software Improvement Group PUBLIC 25 November 2020
  • 2. // SOFTWARE IMPROVEMENT GROUP // Three different implementations of the same algorithm to determine prime numbers INTRODUCTION ▪ ▪ How can we compare the volume of these programs? ▪ How much effort has been spent on developing these? ▪ How much on design? On coding? ▪ Can we estimate the typical effort per Line of Code? primes = sieve [ 2.. ] where sieve (p:x) = p : sieve [ n | n <- x, n `mod` p > 0 ] def eratosthenes(n): sieve = [ True for i in range(n+1) ] def markOff(pv): for i in range(pv+pv, n+1, pv): sieve[i] = False markOff(2) for i in range(3, n+1): if sieve[i]: markOff(i) return [ i for i in range(1, n+1) if sieve[i] ] function Eratosthenes(element, top) { var all = new Uint8Array(new ArrayBuffer(top)); var idx = 0; var prime = 3; var x, j; element.innerHTML = "1 "; while(prime <= top) { var flag = true; for(x = 0; x < top; x++) { if(all[x] == prime) { flag = false; break; } } if(flag) { element.innerHTML += prime + " "; j = prime; while(j <= (top / prime)) { all[idx++] = prime * j; j += 1; } } prime += 2; } element.innerHTML += "<br>"; return; } JavaScriptHaskell Python Algorithm: ‘Sieve Of Eratosthenes’, generates prime numbers 2
  • 3. // SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP 1. Introduction Lodewijk, Hans and SIG 2. Motivation and Goal 3. Background: a look at SPR & language levels 4. The underlying concept & approach 5. Testing the approach 6. Application & conclusion 3 Table of Contents
  • 4. // SOFTWARE IMPROVEMENT GROUP // INTRODUCTION Hans Kuijpers 8 years at SIG Managing Consultant Certified Scope Manager, Professional Scrum Master I FPA: Nesma, IFPUG, Cosmic, Use Case Points Who is Who Lodewijk Bergmans 8 years at SIG Sr. Researcher Areas of expertise: software metrics, measuring development practices, software economics: fact-based decision support for software developers, architects and management. 4
  • 5. // SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP The majority of software development work is not visible, SIG can make this transparent: Build quality drives TCO and functional quality of software 5 Software functionality SIG capabilities beyond ISO
  • 6. // SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP 1. Introduction Lodewijk, Hans and SIG 2. Motivation and Goal 3. Background: a look at SPR & language levels 4. The underlying concept & approach 5. Testing the approach 6. Application & Conclusion 6 Table of Contents
  • 7. // SOFTWARE IMPROVEMENT GROUP // MOTIVATION AND GOAL Motivation ▪ Important requirement: assess total volume of a system with multiple programming languages ▪ Must be able to aggregate parts of a system in different languages ▪ Must yield a comparable value among systems (e.g. for benchmarking) ▪ Previously, the ‘SPR table’ was used at SIG as a basis for translating LOC to volume (effort needed) ▪ i.e. ‘language (productivity) factors’ ▪ In our maintainability model, this is used to compare/aggregate/weigh code in different languages ‘fairly’ ▪ In the SIG Cost Estimation Model, this is used to translate coding efforts (creating/modifying) to financial costs (through efforts in terms of person years (PY) ▪ But SPR now has several issues: ▪ Contains entries that are not intuitive ▪ Outdated (>10 years since last update): ▪ Languages and libraries have evolved ▪ Does not include new languages 7
  • 8. // SOFTWARE IMPROVEMENT GROUP // MOTIVATION AND GOAL Goals & context Goal: Create a new set of factors that can be used to: 1. Compare and aggregate the size of applications in different languages 2. Calculate the ‘average’ effort needed ▪ To write 1000 Lines of Code in a specific programming language (our ‘Volume’ measurement) Considerations ▪ Comparing size of programs should be related to the technical effort1 involved in creating 1000 Lines of Code ▪ Approach must be applicable to all programming languages we encounter ▪ Use a fact- or measurement-based approach, e.g. using the SIG code warehouse or other data sources ▪ Preferably not depending on external parties ▪ Experience has shown that it is really difficult to find consistent, trustworthy, and comparable effort data from actual projects, especially for new, rare and custom programming languages. 1 Technical effort is related to all the work a developer does; technical design, coding and testing. 8
  • 9. // SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP 1. Introduction Lodewijk, Hans and SIG 2. Motivation and Goal 3. Background: a look at SPR & language levels 4. The underlying concept & approach 5. Testing the approach 6. Application & Conclusion 9 Table of Contents
  • 10. // SOFTWARE IMPROVEMENT GROUP // Implementations of the same algorithm in different programming languages BACKGROUND: A LOOK AT SPR & LANGUAGE LEVELS Two ‘Eratosthenes’ code samples revisited: ▪ Haskell is a functional language, very much suited for compact expression of algorithms: ▪ Python is a bit more generic OO language: primes = sieve [ 2.. ] where sieve (p:x) = p : sieve [ n | n <- x, n `mod` p > 0 ] Haskell def eratosthenes(n): sieve = [ True for i in range(n+1) ] def markOff(pv): for i in range(pv+pv, n+1, pv): sieve[i] = False markOff(2) for i in range(3, n+1): if sieve[i]: markOff(i) return [ i for i in range(1, n+1) if sieve[i] ] Python We observe that one language is more verbose than the other ▪ Or, in reverse: the other language is more expressive The SPR table defines for each language its language level: ▪ This has an inverse relation to the number of source statements to implement 1 Function Point ▪ In other words: how much/little code is needed to express a certain amount of functionality Note: this is a counter- intuitive value 10
  • 11. // SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP 1. Introduction Lodewijk, Hans and SIG 2. Motivation and Goal 3. Background: a look at SPR & language levels 4. The underlying concept & approach 5. Testing the approach 6. Application & Conclusion 11 Table of Contents
  • 12. // SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP // Our premise: a program is the encoding of information in source code CONCEPT & APPROACH Domain knowledge requirements Design idiom & patterns programming language information Source code So programming is about distilling the necessary information and expressing it using source code. 12
  • 13. // SOFTWARE IMPROVEMENT GROUP // Our approach to measure verbosity/expressiveness CONCEPT & APPROACH We adopt a similar approach to SPR: Measure how much/little code is needed to express a certain amount of information ▪ Advantage: this also applies to code that is not directly implementing functionality: ▪ Non-functionals such as performance, security, reliability. ▪ This can easily be 30% of the code [1] ▪ But also the code for structuring software (e.g. all declarations of methods, classes, interfaces, inheritance, ..)! ▪ How can we measure the amount of information? → the theory of Kolmogorov complexity ▪ “The amount of information in a document equals the size of the shortest possible program that can produce the document” ▪ A practical approximation: take the length of the compressed document ▪ We use the term Information Point (IP) to designate a single unit of information ▪ Application: calculate the Compression Ratio (CR) of programs in a language: CR = code_size / compressed_size ▪ The average* compression ratio for a language indicates the average amount of code per unit of information (IP) ▪ We built a benchmark of average compression ratio’s based on large amount of scoped industrial systems analyzed by SIG. 13
  • 14. // SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP 1. Introduction Lodewijk, Hans and SIG 2. Motivation and Goal 3. Background: a look at SPR & language levels 4. The underlying concept & approach 5. Testing the approach 6. Application & Conclusion 14 Table of Contents
  • 15. // SOFTWARE IMPROVEMENT GROUP // Compression ratios for subset of languages more verbosemore expressive TESTING THE APPROACH 15
  • 16. // SOFTWARE IMPROVEMENT GROUP // TESTING THE APPROACH Preliminary validation: comparing with gearing factors, and Redmonk language ranking Comparison to language gearing factors of SPR[2] and QSM[3] These are expressed as SS/FP: source statements per FP We found NO significant correlations between CR and SPR/QSM. SS/FP is not exactly the same as verbosity/CR: ▪ E.g. Reusing functionality from libraries provides extra FPs but does need little coding effort ▪ The CR-based approach counts non-functional code ▪ SPR is 15+ years old; (usage of) languages evolved Comparison to Redmonk ‘language ranking by expressiveness’[1] Based on the typical size of commits for a language: ▪ Assumption is that 1 commit ~ 1 functionality/behavior ▪ We only tested against the ranking, not actual values The correlation between Redmonk ranking and Compression Ratios (CR) is strong (Spearman correlation =0.75) In other words: our notion of language verbosity corresponds closely to the redmonk notion of language expressiveness [1] D. Berkholz, “Programming languages ranked by expressiveness”, redmonk, 2013: https://redmonk.com/dberkholz/2013/03/25/ programming-languages-ranked-by-expressiveness/ [2] SPR, “SPR programming languages table, PLT2007c”, 2007 [3] QSM, “Function Point Languages Table, version 5.0”, https://www.qsm.com/resources/function-point-languages-table 16
  • 17. // SOFTWARE IMPROVEMENT GROUP// SOFTWARE IMPROVEMENT GROUP 1. Introduction Lodewijk, Hans and SIG 2. Motivation and Goal 3. Background: a look at SPR & language levels 4. The underlying concept & approach 5. Testing the approach 6. Application & Conclusion 17 Table of Contents
  • 18. // SOFTWARE IMPROVEMENT GROUP // Volume normalization at system level APPLICATION & CONCLUSION For comparing and aggregating the volume of a system implemented with multiple languages ▪ Lines of Code is less representative of the amount of information and (intellectual) effort spent on the different parts [This is a screenshot from the Sigrid® software assurance platform] 18
  • 19. // SOFTWARE IMPROVEMENT GROUP // Volume normalization at portfolio level APPLICATION & CONCLUSION For comparing the volume of systems in a portfolio; some may be implemented in totally different technologies ▪ This overview shows the systems in a portfolio, annotated with the main language per system [This is a screenshot from the Sigrid® software assurance platform] 19
  • 20. // SOFTWARE IMPROVEMENT GROUP // Base for cost (effort) estimations APPLICATION & CONCLUSION Code-based effort estimation: effort is influenced by ▪ the amount of code (LOC) ▪ the type of language Other (human) factors are encapsulated in the constants derived from benchmark data Coding effort constantCODING * LOC Relatively smaller for highly expressive languages: this depends on code size → LOC Technical development effort These factors are derived using SIG benchmark data such as effort distribution, average system sizes, and known effort numbers Non-coding effort constantNON-CODING * IP Depends -mostly- on how much information to process (requirements, design, ..) → IP LOC CRLANGUAGE IP = 20
  • 21. // SOFTWARE IMPROVEMENT GROUP // Conclusion APPLICATION & CONCLUSION What did we achieve with compression ratio (CR) based volume normalization? ● CR is an objective measure of language verbosity ○ Applicable for all text-based languages, also for new, custom and domain specific languages ○ Based on a benchmark: how languages are used in practice ○ Can be largely automated (and calibrated periodically) ● CR allows comparing the size of source code in different languages in a consistent way ○ You don’t need FP countings, or access to the hour administration ■ But does require availability of source code ■ Does support ‘real-time’ observation of progress ○ The CR-based approach is representative for all the behavior a developer implements ■ Functional behavior is not considered separately ● CR can be used as the basis of a code-based estimation of development work 21
  • 22. // SOFTWARE IMPROVEMENT GROUP .com GETTING SOFTWARE RIGHT FOR A HEALTHIER DIGITAL WORLD // SOFTWARE IMPROVEMENT GROUP Questions? 22