SlideShare a Scribd company logo
1 of 22
Download to read offline
// 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 - technomicsNesma
 
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 contractingNesma
 
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 sanchezNesma
 
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 TechniqueGeorge Ukkuru
 
Software project estimation
Software project estimationSoftware project estimation
Software project estimationinayat 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 reviewNesma
 
Software effort estimation
Software effort estimationSoftware effort estimation
Software effort estimationtumetr1
 
Introduction to Software Cost Estimation
Introduction to Software Cost EstimationIntroduction to Software Cost Estimation
Introduction to Software Cost EstimationHemanth Raj
 
Software Estimation
Software EstimationSoftware Estimation
Software EstimationNguyen 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 popovskiIWSM 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 VogelezangIWSM Mensura
 
Software Project Cost Estimation
Software Project Cost EstimationSoftware Project Cost Estimation
Software Project Cost EstimationDrew Tkac
 
Basic Software Effort Estimation
Basic Software Effort EstimationBasic Software Effort Estimation
Basic Software Effort Estimationumair khan
 
Estimation in the tendering process
Estimation in the tendering processEstimation in the tendering process
Estimation in the tendering processFrank Vogelezang
 

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 programmingInderbir Kaur Sandhu
 
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 - preliminariesSchwannden Kuo
 
Agile development with Ruby
Agile development with RubyAgile development with Ruby
Agile development with Rubykhelll
 
The Concept Of Abstract Data Types
The Concept Of Abstract Data TypesThe Concept Of Abstract Data Types
The Concept Of Abstract Data TypesKaty Allen
 
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.pptxAsst.prof M.Gokilavani
 
CSCorganization of programming languages
CSCorganization of programming languagesCSCorganization of programming languages
CSCorganization of programming languagesOluwafolakeOjo
 
Language processors
Language processorsLanguage processors
Language processorsYash 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 RDzPaulo Batuta
 
Programming Language Paradigms February.ppt
Programming Language Paradigms February.pptProgramming Language Paradigms February.ppt
Programming Language Paradigms February.pptalireza 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.pptxChewe 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

2024-04 - Nesma webinar - Benchmarking.pdf
2024-04 - Nesma webinar - Benchmarking.pdf2024-04 - Nesma webinar - Benchmarking.pdf
2024-04 - Nesma webinar - Benchmarking.pdfNesma
 
Agile Team Performance Measurement webinar
Agile Team Performance Measurement webinarAgile Team Performance Measurement webinar
Agile Team Performance Measurement webinarNesma
 
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.pdfNesma
 
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.pdfNesma
 
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.pdfNesma
 
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 MaryNesma
 
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 HusseinNesma
 
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 AgarNesma
 
(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 VeefkindNesma
 
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 JonesNesma
 
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 SchefferlieNesma
 
Afrekenen met functiepunten
Afrekenen met functiepuntenAfrekenen met functiepunten
Afrekenen met functiepuntenNesma
 
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 groenewegenNesma
 
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 vermeulenNesma
 
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 vogelezangNesma
 
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
 
7. space the estimation aid for bringing agile delivery predictability - p...
7. space   the estimation aid for bringing agile delivery predictability  - p...7. space   the estimation aid for bringing agile delivery predictability  - p...
7. space the estimation aid for bringing agile delivery predictability - p...Nesma
 

More from Nesma (20)

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 ...
 
7. space the estimation aid for bringing agile delivery predictability - p...
7. space   the estimation aid for bringing agile delivery predictability  - p...7. space   the estimation aid for bringing agile delivery predictability  - p...
7. space the estimation aid for bringing agile delivery predictability - p...
 

Recently uploaded

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 

Recently uploaded (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 

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