SlideShare a Scribd company logo
Does JavaScript Software
Embrace Classes?
L. Silva, M. Ramos,
M. T. Valente
UFMG, Brazil
A. Bergel
Univ. Chile
N. Anquetil
INRIA, France
SANER, Montreal, March 2015
JavaScript is gaining popularity
http://redmonk.com/dberkholz/2014/05/02/github-
language-trends-and-the-fragmenting-landscape/
2
1995: Small Scripts
3
2015: Complex Systems
4
Criticisms
https://www.destroyallsoftware.com/talks/wat 5
Motivation
How JavaScript software is organized?
6
Motivation
How JavaScript software is organized?
More specifically,
Do JS developers use class-like structures?
7
JavaScript
• Imperative
• Objects maps strings to values
– var person = { firstName: "Marco", lastName:"Valente" }
• Functions are first-class objects
– var fact = function factorial (n) { .... }
8
Emulating Classes
• new:
–creates a new object
–calls the constructor function
–with this bound to the new object 9
Emulating Inheritance
• Each object has an implicit prototype property
• To eval obj.p, the runtime searches for p in:
–The current object obj
–The prototype of obj
–The prototype of the prototype of obj
10
Prototype-based Inheritance
11
• Prototype chaining emulates inheritance
Heuristic to Detect Classes
• A class is a tuple (C,A,M)
–C is the class name
–A= {a1, a2, ..., ap} are attributes
–M= {m1, m2, ..., mq} are methods
12
Heuristic to Detect Classes
• A program P has a class (C,A,M) if:
–P has a function called C
• For each a in A,
– C includes this.a = Exp;
• For each m in M
– C includes this.m = function {...}
–P has a new C()
13
JSClassFinder
http://aserg.labsoft.dcc.ufmg.br/jsclasses/
14
Evaluation
Research Questions
1. Do developers use classes?
2. Do developers use inheritance?
3. What is the size of the classes?
16
Dataset
• 50 GitHub systems:
–at least 1,000 starts
–at least 150 commits
–that are no forks of other projects
17
Dataset
• Data cleaning:
– compacted files (min.js.*)
– third-party libraries
18
Dataset
• Largest system (ace): 194 KLOC
• Smallest system (masonry): 0.2 KLOC
• Average size: 14 KLOC
• Median is 2.5 KLOC
19
RQ #1: Do developers use classes?
• Class Usage Ratio (CUR):
20
Key Finding: Four Types of Systems
• Class-free systems (CUR = 0)
– 13 systems, 26%
• Class-aware systems (0 < CUR ≤ 0.25)
– 18 systems, 36%
• Class-friendly systems (0.25 < CUR ≤ 0.75)
– 15 systems, 30%
• Class-oriented systems (CUR > 0.75)
– 4 systems, 8%
21
Do large systems have more classes?
22
No correlation KLOC vs CUR
RQ #2: Do developers use inheritance?
• Only 9 systems with subclasses (but very few)
23
RQ #3: What is the size of JS classes?
24
Heavy-tailed distribution,
with NOA, NOM < 10 for most classes
Few methods
• In Java:
– Classes have more methods than attributes
• In JavaScript:
– Classes with more attributes are common
– Possible reason: lack of getters and setters
25
In Summary
• For many JavaScript developers:
• Objects are not enough... they need classes
• We found classes in 74% of the systems
• But there is controversy :
• “This is the first time a research paper has ever
called me classless, and boy am I proud.”
• (prototype-based) inheritance is rarely used
26
Implications
ECMAScript 6
• Syntactical support to classes
• Conversion tool: “old JavaScript class styles” to ES 6
28
Class-Oriented Tools and Techniques
1. Reverse engineering (class diagrams)
2. Bad smells (large class, feature envy etc)
3. IDEs with class browsers (package explorer)
4. Metrics (coupling, cohesion etc)
29
Thanks!
Does JavaScript Software
Embrace Classes?
L. Silva, M. Ramos,
M. T. Valente
UFMG, Brazil
A. Bergel
Univ. Chile
N. Anquetil
INRIA, France
SANER, Montreal, March 2015

More Related Content

Viewers also liked

Project 1. example
Project 1. exampleProject 1. example
Project 1. example
nadia_rangel
 
Content strategy: let industry experts choose what you write about.
Content strategy: let industry experts choose what you write about. Content strategy: let industry experts choose what you write about.
Content strategy: let industry experts choose what you write about.
Upfluence
 
Hydroelectricity
Hydroelectricity Hydroelectricity
Hydroelectricity
Sahanabhagavathi
 
Herramientas e instrumentos de diana
Herramientas e instrumentos de dianaHerramientas e instrumentos de diana
Herramientas e instrumentos de diana
Ney Plaz
 
Perturbações do equilíbrio dos ecossistemas
Perturbações do equilíbrio dos ecossistemasPerturbações do equilíbrio dos ecossistemas
Perturbações do equilíbrio dos ecossistemaslgc2001
 
TST _EU_February 2015
TST _EU_February 2015TST _EU_February 2015
TST _EU_February 2015Tuija Stenb
 
Greater-Birmingham-Digital-Audit
Greater-Birmingham-Digital-AuditGreater-Birmingham-Digital-Audit
Greater-Birmingham-Digital-AuditRichard Williams
 
IMPORTANCE OF LIFE
IMPORTANCE OF LIFEIMPORTANCE OF LIFE
IMPORTANCE OF LIFE
Sahanabhagavathi
 

Viewers also liked (10)

Biologia
BiologiaBiologia
Biologia
 
Project 1. example
Project 1. exampleProject 1. example
Project 1. example
 
Content strategy: let industry experts choose what you write about.
Content strategy: let industry experts choose what you write about. Content strategy: let industry experts choose what you write about.
Content strategy: let industry experts choose what you write about.
 
Hydroelectricity
Hydroelectricity Hydroelectricity
Hydroelectricity
 
Herramientas e instrumentos de diana
Herramientas e instrumentos de dianaHerramientas e instrumentos de diana
Herramientas e instrumentos de diana
 
Perturbações do equilíbrio dos ecossistemas
Perturbações do equilíbrio dos ecossistemasPerturbações do equilíbrio dos ecossistemas
Perturbações do equilíbrio dos ecossistemas
 
TST _EU_February 2015
TST _EU_February 2015TST _EU_February 2015
TST _EU_February 2015
 
Masaka presentation
Masaka presentationMasaka presentation
Masaka presentation
 
Greater-Birmingham-Digital-Audit
Greater-Birmingham-Digital-AuditGreater-Birmingham-Digital-Audit
Greater-Birmingham-Digital-Audit
 
IMPORTANCE OF LIFE
IMPORTANCE OF LIFEIMPORTANCE OF LIFE
IMPORTANCE OF LIFE
 

Similar to Does JavaScript Software Embrace Classes? (Talk at SANER 2015 Conference)

Java 102 intro to object-oriented programming in java
Java 102   intro to object-oriented programming in javaJava 102   intro to object-oriented programming in java
Java 102 intro to object-oriented programming in java
agorolabs
 
C# 3.0 and LINQ Tech Talk
C# 3.0 and LINQ Tech TalkC# 3.0 and LINQ Tech Talk
C# 3.0 and LINQ Tech Talk
Michael Heydt
 
No BS Guide to Deep Learning in the Enterprise
No BS Guide to Deep Learning in the EnterpriseNo BS Guide to Deep Learning in the Enterprise
No BS Guide to Deep Learning in the Enterprise
Jesus Rodriguez
 
The secret life of rules in Software Engineering
The secret life of rules in Software EngineeringThe secret life of rules in Software Engineering
The secret life of rules in Software Engineering
Jordi Cabot
 
Lessons Learned from Building Machine Learning Software at Netflix
Lessons Learned from Building Machine Learning Software at NetflixLessons Learned from Building Machine Learning Software at Netflix
Lessons Learned from Building Machine Learning Software at Netflix
Justin Basilico
 
Machine Learning and AI: Core Methods and Applications
Machine Learning and AI: Core Methods and ApplicationsMachine Learning and AI: Core Methods and Applications
Machine Learning and AI: Core Methods and Applications
QuantUniversity
 
Introduction to Mahout and Machine Learning
Introduction to Mahout and Machine LearningIntroduction to Mahout and Machine Learning
Introduction to Mahout and Machine Learning
Varad Meru
 
Thesis Defense (Gwendal DANIEL) - Nov 2017
Thesis Defense (Gwendal DANIEL) - Nov 2017Thesis Defense (Gwendal DANIEL) - Nov 2017
Thesis Defense (Gwendal DANIEL) - Nov 2017
Gwendal Daniel
 
EKON 23 Code_review_checklist
EKON 23 Code_review_checklistEKON 23 Code_review_checklist
EKON 23 Code_review_checklist
Max Kleiner
 
General oop concept
General oop conceptGeneral oop concept
General oop concept
Avneesh Yadav
 
Marco Mancuso - Data Context Interaction
Marco Mancuso - Data Context InteractionMarco Mancuso - Data Context Interaction
Marco Mancuso - Data Context InteractioncosenzaLab
 
Nodejs Chapter 3 - Design Pattern
Nodejs Chapter 3 - Design PatternNodejs Chapter 3 - Design Pattern
Nodejs Chapter 3 - Design Pattern
Talentica Software
 
An Elastic Middleware Platform for Concurrent and Distributed Cloud and MapRe...
An Elastic Middleware Platform for Concurrent and Distributed Cloud and MapRe...An Elastic Middleware Platform for Concurrent and Distributed Cloud and MapRe...
An Elastic Middleware Platform for Concurrent and Distributed Cloud and MapRe...
Pradeeban Kathiravelu, Ph.D.
 
OpenSubmit - How to grade 1200 code submissions
OpenSubmit - How to grade 1200 code submissionsOpenSubmit - How to grade 1200 code submissions
OpenSubmit - How to grade 1200 code submissions
Peter Tröger
 
Scilab Challenge@NTU 2014/2015 Project Briefing
Scilab Challenge@NTU 2014/2015 Project BriefingScilab Challenge@NTU 2014/2015 Project Briefing
Scilab Challenge@NTU 2014/2015 Project Briefing
TBSS Group
 
The View object orientated programming in Lotuscript
The View object orientated programming in LotuscriptThe View object orientated programming in Lotuscript
The View object orientated programming in LotuscriptBill Buchan
 
Survey on Software Defect Prediction (PhD Qualifying Examination Presentation)
Survey on Software Defect Prediction (PhD Qualifying Examination Presentation)Survey on Software Defect Prediction (PhD Qualifying Examination Presentation)
Survey on Software Defect Prediction (PhD Qualifying Examination Presentation)
lifove
 
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
cNguyn506241
 
Pitfalls of machine learning in production
Pitfalls of machine learning in productionPitfalls of machine learning in production
Pitfalls of machine learning in production
Antoine Sauray
 

Similar to Does JavaScript Software Embrace Classes? (Talk at SANER 2015 Conference) (20)

Java 102 intro to object-oriented programming in java
Java 102   intro to object-oriented programming in javaJava 102   intro to object-oriented programming in java
Java 102 intro to object-oriented programming in java
 
C# 3.0 and LINQ Tech Talk
C# 3.0 and LINQ Tech TalkC# 3.0 and LINQ Tech Talk
C# 3.0 and LINQ Tech Talk
 
No BS Guide to Deep Learning in the Enterprise
No BS Guide to Deep Learning in the EnterpriseNo BS Guide to Deep Learning in the Enterprise
No BS Guide to Deep Learning in the Enterprise
 
The secret life of rules in Software Engineering
The secret life of rules in Software EngineeringThe secret life of rules in Software Engineering
The secret life of rules in Software Engineering
 
Lessons Learned from Building Machine Learning Software at Netflix
Lessons Learned from Building Machine Learning Software at NetflixLessons Learned from Building Machine Learning Software at Netflix
Lessons Learned from Building Machine Learning Software at Netflix
 
Machine Learning and AI: Core Methods and Applications
Machine Learning and AI: Core Methods and ApplicationsMachine Learning and AI: Core Methods and Applications
Machine Learning and AI: Core Methods and Applications
 
Introduction to Mahout and Machine Learning
Introduction to Mahout and Machine LearningIntroduction to Mahout and Machine Learning
Introduction to Mahout and Machine Learning
 
Thesis Defense (Gwendal DANIEL) - Nov 2017
Thesis Defense (Gwendal DANIEL) - Nov 2017Thesis Defense (Gwendal DANIEL) - Nov 2017
Thesis Defense (Gwendal DANIEL) - Nov 2017
 
EKON 23 Code_review_checklist
EKON 23 Code_review_checklistEKON 23 Code_review_checklist
EKON 23 Code_review_checklist
 
General oop concept
General oop conceptGeneral oop concept
General oop concept
 
Marco Mancuso - Data Context Interaction
Marco Mancuso - Data Context InteractionMarco Mancuso - Data Context Interaction
Marco Mancuso - Data Context Interaction
 
Nodejs Chapter 3 - Design Pattern
Nodejs Chapter 3 - Design PatternNodejs Chapter 3 - Design Pattern
Nodejs Chapter 3 - Design Pattern
 
An Elastic Middleware Platform for Concurrent and Distributed Cloud and MapRe...
An Elastic Middleware Platform for Concurrent and Distributed Cloud and MapRe...An Elastic Middleware Platform for Concurrent and Distributed Cloud and MapRe...
An Elastic Middleware Platform for Concurrent and Distributed Cloud and MapRe...
 
OpenSubmit - How to grade 1200 code submissions
OpenSubmit - How to grade 1200 code submissionsOpenSubmit - How to grade 1200 code submissions
OpenSubmit - How to grade 1200 code submissions
 
Scilab Challenge@NTU 2014/2015 Project Briefing
Scilab Challenge@NTU 2014/2015 Project BriefingScilab Challenge@NTU 2014/2015 Project Briefing
Scilab Challenge@NTU 2014/2015 Project Briefing
 
The View object orientated programming in Lotuscript
The View object orientated programming in LotuscriptThe View object orientated programming in Lotuscript
The View object orientated programming in Lotuscript
 
Survey on Software Defect Prediction (PhD Qualifying Examination Presentation)
Survey on Software Defect Prediction (PhD Qualifying Examination Presentation)Survey on Software Defect Prediction (PhD Qualifying Examination Presentation)
Survey on Software Defect Prediction (PhD Qualifying Examination Presentation)
 
Design Patterns - GOF
Design Patterns - GOFDesign Patterns - GOF
Design Patterns - GOF
 
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
49.INS2065.Computer Based Technologies.TA.NguyenDucAnh.pdf
 
Pitfalls of machine learning in production
Pitfalls of machine learning in productionPitfalls of machine learning in production
Pitfalls of machine learning in production
 

Recently uploaded

Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Globus
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
abdulrafaychaudhry
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 

Recently uploaded (20)

Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...Developing Distributed High-performance Computing Capabilities of an Open Sci...
Developing Distributed High-performance Computing Capabilities of an Open Sci...
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)Introduction to Pygame (Lecture 7 Python Game Development)
Introduction to Pygame (Lecture 7 Python Game Development)
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 

Does JavaScript Software Embrace Classes? (Talk at SANER 2015 Conference)

Editor's Notes

  1. In fact, our main motivation is to investigate how developers are organizing their JavaScript systems, which are becoming increasingly complex and large.
  2. And using this tool, we make a study aiming to answer 3 research questions
  3. We also made a careful work to clean the GitHub code, basically to remove minimized files (which are frequently used in JS to save network bandwidth) and also external libraries, that frequently are included in the source code.
  4. Just to give some number
  5. To answer the first RQ, we used a metric we called class usage ratio. Basicaly this metrics is the ratio of functions related to classes in a system, which can be methods or constructor functions
  6. Using this metric we found four types os systems: class-free systems, which have no functions implemented to emlutate classes. We found 13 class-free systems. We also have 18 systems with some classes, with CUR less than zero point two five. We called this systems class-aware .... The third category of systems are class-friendly, with CUR betwenn 0.25 and 0.75 ... and finally we found 4 systems which we called class-oriented systems, because most functions in these systems are used to emulate classes.
  7. We also checked whether large systems ave more classes ... and we found a very weak correlation between LOC and CUR