The document discusses comparing different feature location techniques (FLTs) that use different identifier splitting algorithms. It describes building an "oracle" identifier splitting to use as a baseline for comparison by manually splitting identifiers. Two FLTs (Information Retrieval and dynamic Information Retrieval) are compared using two software systems and four datasets when using the oracle versus CamelCase splitting. The results show the FLTs using the oracle splitting generally perform better, especially on datasets with features rather than bugs. Percentage improvements of the oracle over CamelCase are also presented.
Bootstrapping Meta-Languages of Language WorkbenchesGabriël Konat
It is common practice to bootstrap compilers of programming languages. By using the compiled language to implement the compiler, compiler developers can code in their own high-level language and gain a large-scale test case. In this paper, we investigate bootstrapping of compiler-compilers as they occur in language workbenches. Language workbenches support the development of compilers through the application of multiple collaborating domain-specific meta-languages for defining a language's syntax, analysis, code generation, and editor support. We analyze the bootstrapping problem of language workbenches in detail, propose a method for sound bootstrapping based on fixpoint compilation, and develop recipes for conducting breaking meta-language changes in a bootstrapped language workbench. We have applied sound bootstrapping to the Spoofax language workbench and report on our experience.
Categorizing and pos tagging with nltk pythonJanu Jahnavi
https://www.learntek.org/blog/categorizing-pos-tagging-nltk-python/
https://www.learntek.org/
Learntek is global online training provider on Big Data Analytics, Hadoop, Machine Learning, Deep Learning, IOT, AI, Cloud Technology, DEVOPS, Digital Marketing and other IT and Management courses.
Fernando Arnaboldi - Exposing Hidden Exploitable Behaviors Using Extended Dif...Codemotion
I created the first differential fuzzing framework to detect dangerous and unusual behaviors in similar software implementations. To prove its effectivity, I found vulnerabilities in multiple implementations of programming language parsers: Java, JavaScript, Perl, PHP, Powershell, Python, and Ruby. This form of fuzzing can work as a practical form of testing to find exploitable vulnerabilities. More undisclosed vulnerabilities will be shown throughout this talk to exemplify how to find issues in general pieces of software. This talk will also include a new special release for Codemotion.
Bootstrapping Meta-Languages of Language WorkbenchesGabriël Konat
It is common practice to bootstrap compilers of programming languages. By using the compiled language to implement the compiler, compiler developers can code in their own high-level language and gain a large-scale test case. In this paper, we investigate bootstrapping of compiler-compilers as they occur in language workbenches. Language workbenches support the development of compilers through the application of multiple collaborating domain-specific meta-languages for defining a language's syntax, analysis, code generation, and editor support. We analyze the bootstrapping problem of language workbenches in detail, propose a method for sound bootstrapping based on fixpoint compilation, and develop recipes for conducting breaking meta-language changes in a bootstrapped language workbench. We have applied sound bootstrapping to the Spoofax language workbench and report on our experience.
Categorizing and pos tagging with nltk pythonJanu Jahnavi
https://www.learntek.org/blog/categorizing-pos-tagging-nltk-python/
https://www.learntek.org/
Learntek is global online training provider on Big Data Analytics, Hadoop, Machine Learning, Deep Learning, IOT, AI, Cloud Technology, DEVOPS, Digital Marketing and other IT and Management courses.
Fernando Arnaboldi - Exposing Hidden Exploitable Behaviors Using Extended Dif...Codemotion
I created the first differential fuzzing framework to detect dangerous and unusual behaviors in similar software implementations. To prove its effectivity, I found vulnerabilities in multiple implementations of programming language parsers: Java, JavaScript, Perl, PHP, Powershell, Python, and Ruby. This form of fuzzing can work as a practical form of testing to find exploitable vulnerabilities. More undisclosed vulnerabilities will be shown throughout this talk to exemplify how to find issues in general pieces of software. This talk will also include a new special release for Codemotion.
This talk shows how to extract (structured) value from the huge amount of (unstructured) information that logs contain using InfluxData technologies.
Particularly the task is achieved using two pieces of code I wrote: the influxdata/go-syslog library and the Telegraf Syslog Input Plugin.
The slides demonstrate how to parse logs and to store consequent time-series data into InfluxDB.
At this point it is possible to visualize them via the new Chronograf's Log Viewer, eliciting new meaningful metrics to plot (eg., number of process OOM killed) processing them via a Kapacitor UDF.
The stack used to achieve this is:
- Telegraf with the syslog input plugin, which uses this blazing fast go-syslog parser
- Chronograf with its new Log Viewer
- InfluxDB
- Kapacitor
Companion source code and repository is at http://bit.ly/logs-2-metrics-influx-code
This is a toy compiler for the course Compiler 2016 at ACM Class, SJTU. The source language is Mx*. The target is MIPS assembly (in SPIM format).
You can refer to my presentation slides to know something about this compiler and also what I've learnt during the course.
Github: https://github.com/abcdabcd987/compiler2016
When debugging this compiler, I wrote another project LLIRInterpreter(https://github.com/abcdabcd987/LLIRInterpreter) which reads text IR and does interpretation.
What uses for observing operations of Configuration Management?RUDDER
Nicolas Charles, CfgMgmtCamp 2019.
More and more services expose their state, internal details and metrics to be observable, and improve overall quality of service.
But what about observing the infrastructure they are deployed, configured and maintained on?
What can we learn from that, and what do we need from configuration management to get these features and metrics?
Logs from installation is a good start, but they need centralization, aggregation and especially knowledge derivation from these - but also we need to observe these features over time, to trace changes, and correlate them with monitoring.
Rudder was built around the predicate that all actions of the configuration agent need to be traced, centralized and exposed in a meaningful way - with agents ensuring the continuous configuration of systems, and this talk will show the rationale behind this predicate, how we implemented this solution, and the benefits of this approach for the modern IT world.
Overloading in Overdrive: A Generic Data-Centric Messaging Library for DDSSumant Tambe
When it comes to sending data across a network, applications send either binary or self-describing data (XML). Both approaches have merits. Data Distribution Service (DDS) combines the best of both in what’s called “data-centric messaging”. DDS shares the type description once, upfront, and later on sends binary data that meets the type description. You typically use IDL or XSD to specify the types and run them through a code generator for type-safe wrapper APIs for your application in your programming language. Simple and fast! As it turns out, however, C++11 bends the rules once again. In this presentation you will learn about a template-based C++11 messaging library that gives the DDS code generator a run for its money. The types and objects in your C++11 application are mapped to standard DDS X-Types type descriptions and serialized format, respectively, using template meta-programming. If you have never heard about SFINAE you won’t stop talking about it after you see "overloading in overdrive" in this presentation. What’s more? I will share my newfound hatred for std::vector of bool/enums. This presentation will cover DDS-XTypes, DDS_TypeCode, DDS_DynamicData, STL, type_traits, Boost Fusion, and overloading with enable_if (lots and lots of it!).
Tips And Tricks For Bioinformatics Software Engineeringjtdudley
This is a talk I've given twice at Stanford recently. It's essentially a brain dump of my thoughts on being a Bioinformatician with lots of links to useful tools.
Schema on read is obsolete. Welcome metaprogramming..pdfLars Albertsson
How fast can you modify your data collection to include a new field, make all the necessary changes in data processing and storage, and then use that field in analytics or product features? For many companies, the answer is a few quarters, whereas others do it in a day. This data agility latency has a direct impact on companies' ability to innovate with data. Schema-on-read has been a key strategy to lower that latency - as the community has shifted towards storing data outside relational databases, we no longer need to make series of schema changes through the whole data chain, coordinated between teams to minimise operational risk. Schema-on-read comes with a cost, however. Errors that we used to catch during testing or in early test deployments can now sneak into production undetected and surface as product errors or hard-to-debug data quality problems later than with schema-on-write solutions.
In this presentation, we will show how we have rejected the tradeoff between slow schema change rate and quality to achieve the best of both worlds. By using metaprogramming and versioned pipelines that are tested end-to-end, we can achieve fast schema changes with schema-on-write and the protection of static typing. We will describe the tools in our toolbox - Scalameta, Chimney, Bazel, and custom tools. We will also show how we leverage them to take static typing one step further and differentiate between domain types that share representation, e.g. EmailAddress vs ValidatedEmailAddress or kW vs kWh, while maintaining harmony with data technology ecosystems.
Christiaan F Beek, McAfee
Jay Rosenberg, Intezer Labs
The Lazarus, Silent Chollima, Group 123, Hidden Cobra, DarkSeoul, Blockbuster, Operation Troy, 10 Days of Rain attacks are all believed to originate from North Korea. But how can they be attributed with certainty? And what connection does a DDoS and disk wiping attack from July 4 2009, have with WannaCry, one of the largest cyber-attacks in the history of the cyber-sphere?
We have conducted a comparative research over more than 10 years of malware and tools being used by North Korean adversaries. The results were intriguing and we will share our discoveries but also hunt tactics during our talk. We discovered new links between campaigns and were able to group malware families towards actor groups and discovere interesting patterns.
Does Your IBM i Security Meet the Bar for GDPR?Precisely
While the European Union’s General Data Protection Regulation (GDPR) took effect May 25, many global organizations still feel the stress of achieving compliance. Could your organization pass an audit and avoid fines today?
If you are concerned about GDPR compliance, or compliance with other security regulations, view this webinar with IBM Systems Magazine where we provide a practical guide to setting up a more secure, auditable IBM i configuration. You will learn about base IBM i functions, Do-It-Yourself tips, and how software solutions can help you accelerate and maintain compliance.
This webcast and all related materials are provided for informational purposes only, and are not intended to provide, and should not be relied on for, legal advice pertaining to the subject matter. If you have specific questions on how this may affect your organization you should consult your legal advisor.
Presentation about an eclipse framework that allows to generate ecore model instances as input for tests and benchmarks. Held at the 3rd BigMDE workshop at STAF in L'Aquia, Italy in July 2015.
Profilers find performance bottlenecks in your app but provide confusing information. Let's give you insights into how your profiler and your app are really interacting. What profiling APIs are available, how they work, and what their implementation on the JVM (OpenJDK) side looks like:
Stack sampling profilers: stop motion view of your app
GetCallTrace(JVisualVM case study): The official stack sampling API
Safepoints and safepoint sampling bias
AsyncGetCallTrace(Honest Profiler Case Study): The unofficial API
JVM Profilers vs System Profilers: No API needed?
Some Pitfalls with Python and Their Possible Solutions v1.0Yann-Gaël Guéhéneuc
Python is a very popular programming language that comes with many pitfalls. This presentation describes some of these pitfalls, especially when they could trick unsuspecting object-oriented developers. It proposes solutions to these pitfalls, in particular regarding inheritance, which is easily broken because of the implementation choice of Python for explicit delegation, its method resolution order, and its use of the C3 algorithm. It discusses some advantages of using Python, especially regarding meta-classes.
Advice for writing a NSERC Discovery grant application v0.5Yann-Gaël Guéhéneuc
NSERC Discovery grant applications are judged according to four criteria: (1) Excellence of the researcher, (2) Merit of the proposal, (3) Contribution to the training of HQP, and (4) Cost of research. Each criterion has six possible merit indicators: Exceptional, Outstanding, Very strong, Strong, Moderate, and Insufficient. This presentation describes the process from a candidate's point of view and a reviewer's point of view. It discusses funding decisions, including bins and ER vs. ECR. It gives some advice, including graduating PhD students, having a story, and limiting the number of main objectives.
This talk shows how to extract (structured) value from the huge amount of (unstructured) information that logs contain using InfluxData technologies.
Particularly the task is achieved using two pieces of code I wrote: the influxdata/go-syslog library and the Telegraf Syslog Input Plugin.
The slides demonstrate how to parse logs and to store consequent time-series data into InfluxDB.
At this point it is possible to visualize them via the new Chronograf's Log Viewer, eliciting new meaningful metrics to plot (eg., number of process OOM killed) processing them via a Kapacitor UDF.
The stack used to achieve this is:
- Telegraf with the syslog input plugin, which uses this blazing fast go-syslog parser
- Chronograf with its new Log Viewer
- InfluxDB
- Kapacitor
Companion source code and repository is at http://bit.ly/logs-2-metrics-influx-code
This is a toy compiler for the course Compiler 2016 at ACM Class, SJTU. The source language is Mx*. The target is MIPS assembly (in SPIM format).
You can refer to my presentation slides to know something about this compiler and also what I've learnt during the course.
Github: https://github.com/abcdabcd987/compiler2016
When debugging this compiler, I wrote another project LLIRInterpreter(https://github.com/abcdabcd987/LLIRInterpreter) which reads text IR and does interpretation.
What uses for observing operations of Configuration Management?RUDDER
Nicolas Charles, CfgMgmtCamp 2019.
More and more services expose their state, internal details and metrics to be observable, and improve overall quality of service.
But what about observing the infrastructure they are deployed, configured and maintained on?
What can we learn from that, and what do we need from configuration management to get these features and metrics?
Logs from installation is a good start, but they need centralization, aggregation and especially knowledge derivation from these - but also we need to observe these features over time, to trace changes, and correlate them with monitoring.
Rudder was built around the predicate that all actions of the configuration agent need to be traced, centralized and exposed in a meaningful way - with agents ensuring the continuous configuration of systems, and this talk will show the rationale behind this predicate, how we implemented this solution, and the benefits of this approach for the modern IT world.
Overloading in Overdrive: A Generic Data-Centric Messaging Library for DDSSumant Tambe
When it comes to sending data across a network, applications send either binary or self-describing data (XML). Both approaches have merits. Data Distribution Service (DDS) combines the best of both in what’s called “data-centric messaging”. DDS shares the type description once, upfront, and later on sends binary data that meets the type description. You typically use IDL or XSD to specify the types and run them through a code generator for type-safe wrapper APIs for your application in your programming language. Simple and fast! As it turns out, however, C++11 bends the rules once again. In this presentation you will learn about a template-based C++11 messaging library that gives the DDS code generator a run for its money. The types and objects in your C++11 application are mapped to standard DDS X-Types type descriptions and serialized format, respectively, using template meta-programming. If you have never heard about SFINAE you won’t stop talking about it after you see "overloading in overdrive" in this presentation. What’s more? I will share my newfound hatred for std::vector of bool/enums. This presentation will cover DDS-XTypes, DDS_TypeCode, DDS_DynamicData, STL, type_traits, Boost Fusion, and overloading with enable_if (lots and lots of it!).
Tips And Tricks For Bioinformatics Software Engineeringjtdudley
This is a talk I've given twice at Stanford recently. It's essentially a brain dump of my thoughts on being a Bioinformatician with lots of links to useful tools.
Schema on read is obsolete. Welcome metaprogramming..pdfLars Albertsson
How fast can you modify your data collection to include a new field, make all the necessary changes in data processing and storage, and then use that field in analytics or product features? For many companies, the answer is a few quarters, whereas others do it in a day. This data agility latency has a direct impact on companies' ability to innovate with data. Schema-on-read has been a key strategy to lower that latency - as the community has shifted towards storing data outside relational databases, we no longer need to make series of schema changes through the whole data chain, coordinated between teams to minimise operational risk. Schema-on-read comes with a cost, however. Errors that we used to catch during testing or in early test deployments can now sneak into production undetected and surface as product errors or hard-to-debug data quality problems later than with schema-on-write solutions.
In this presentation, we will show how we have rejected the tradeoff between slow schema change rate and quality to achieve the best of both worlds. By using metaprogramming and versioned pipelines that are tested end-to-end, we can achieve fast schema changes with schema-on-write and the protection of static typing. We will describe the tools in our toolbox - Scalameta, Chimney, Bazel, and custom tools. We will also show how we leverage them to take static typing one step further and differentiate between domain types that share representation, e.g. EmailAddress vs ValidatedEmailAddress or kW vs kWh, while maintaining harmony with data technology ecosystems.
Christiaan F Beek, McAfee
Jay Rosenberg, Intezer Labs
The Lazarus, Silent Chollima, Group 123, Hidden Cobra, DarkSeoul, Blockbuster, Operation Troy, 10 Days of Rain attacks are all believed to originate from North Korea. But how can they be attributed with certainty? And what connection does a DDoS and disk wiping attack from July 4 2009, have with WannaCry, one of the largest cyber-attacks in the history of the cyber-sphere?
We have conducted a comparative research over more than 10 years of malware and tools being used by North Korean adversaries. The results were intriguing and we will share our discoveries but also hunt tactics during our talk. We discovered new links between campaigns and were able to group malware families towards actor groups and discovere interesting patterns.
Does Your IBM i Security Meet the Bar for GDPR?Precisely
While the European Union’s General Data Protection Regulation (GDPR) took effect May 25, many global organizations still feel the stress of achieving compliance. Could your organization pass an audit and avoid fines today?
If you are concerned about GDPR compliance, or compliance with other security regulations, view this webinar with IBM Systems Magazine where we provide a practical guide to setting up a more secure, auditable IBM i configuration. You will learn about base IBM i functions, Do-It-Yourself tips, and how software solutions can help you accelerate and maintain compliance.
This webcast and all related materials are provided for informational purposes only, and are not intended to provide, and should not be relied on for, legal advice pertaining to the subject matter. If you have specific questions on how this may affect your organization you should consult your legal advisor.
Presentation about an eclipse framework that allows to generate ecore model instances as input for tests and benchmarks. Held at the 3rd BigMDE workshop at STAF in L'Aquia, Italy in July 2015.
Profilers find performance bottlenecks in your app but provide confusing information. Let's give you insights into how your profiler and your app are really interacting. What profiling APIs are available, how they work, and what their implementation on the JVM (OpenJDK) side looks like:
Stack sampling profilers: stop motion view of your app
GetCallTrace(JVisualVM case study): The official stack sampling API
Safepoints and safepoint sampling bias
AsyncGetCallTrace(Honest Profiler Case Study): The unofficial API
JVM Profilers vs System Profilers: No API needed?
Some Pitfalls with Python and Their Possible Solutions v1.0Yann-Gaël Guéhéneuc
Python is a very popular programming language that comes with many pitfalls. This presentation describes some of these pitfalls, especially when they could trick unsuspecting object-oriented developers. It proposes solutions to these pitfalls, in particular regarding inheritance, which is easily broken because of the implementation choice of Python for explicit delegation, its method resolution order, and its use of the C3 algorithm. It discusses some advantages of using Python, especially regarding meta-classes.
Advice for writing a NSERC Discovery grant application v0.5Yann-Gaël Guéhéneuc
NSERC Discovery grant applications are judged according to four criteria: (1) Excellence of the researcher, (2) Merit of the proposal, (3) Contribution to the training of HQP, and (4) Cost of research. Each criterion has six possible merit indicators: Exceptional, Outstanding, Very strong, Strong, Moderate, and Insufficient. This presentation describes the process from a candidate's point of view and a reviewer's point of view. It discusses funding decisions, including bins and ER vs. ECR. It gives some advice, including graduating PhD students, having a story, and limiting the number of main objectives.
Ptidej Architecture, Design, and Implementation in Action v2.1Yann-Gaël Guéhéneuc
A set of process, architecture, design, and implementation patterns from a real, large program, the Ptidej Tool Suite. This set shows concrete problems and their solutions in Java. It includes: Be A Profiler, Tests as Documentation, Multi-layered Architecture, Proxy Console, Proxy Disk, Hidden Language, Internal Observer, Run-time Deprecation, String Parsimony, Object Identity, Object Address, Final Construction, StringBuffer as Positioning Element.
Examples of (bad) consequences of a lack of software quality and some solutions. This presentation presents some examples of (bad) consequences of a lack of software quality, in particular how poor software quality led to the direct deaths of 89 people. It then provides some background on software quality, especially the concept of Quality Without a Name. It then discusses many principles, their usefulness, and their positive consequences on software quality. Some of these principles are well-known in object-oriented programming while many others are taken from the book 97 Programmers. They include: abstraction, encapsulation, inheritance, types, polymorphism, SOLID, GRASP, YAGNI, KISS, DRY, Do Not Reinvent the Wheel, Law of Demeter, Beware of Assumptions, Deletable Code, coding with reason, and functional programming. They pertain to dependencies, domains, and tools.
(In details: Beautify is Simplicity, The Boy Scout Rule, You Gotta Care About the Code, The Longevity of Interim Solutions, Beware the Share, Encapsulate Behaviour not Just State, Single Responsibility Principle, WET Dilutes Performance Bottlenecks, Convenience Is Not an -ility, Code in the Language of the Domain, Comment Only What the Code Cannot Say, Distinguish Business Exception from Technical, Prefer Domain-specific Types to Primitive Types, Automate Your Coding Standards, Code Layout Matters, Before You Refactor, Improve Code by Removing It, Put the Mouse Down and Step Away from the Keyboard)
Some Pitfalls with Python and Their Possible Solutions v0.9Yann-Gaël Guéhéneuc
Python is a very popular programming language that comes with many pitfalls. This presentation describes some of these pitfalls, especially when they could trick unsuspecting object-oriented developers. It proposes solutions to these pitfalls, in particular regarding inheritance, which is easily broken because of the implementation choice of Python for explicit delegation, its method resolution order, and its use of the C3 algorithm. It discusses some advantages of using Python, especially regarding meta-classes.
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...Yann-Gaël Guéhéneuc
Unicode is currently the world standard for encoding text. It supports all of the world's major writing systems. With its version 15.1 of 2023/09/12, it defines 149,813 characters and 161 scripts. This presentation starts with the, seemingly, simple example of the polar bear emoji. It then defines the key terms of any such standard. It then asks how a software system can render orthographic characters into glyphs, i.e., to render characters into (combined) glyphs. It introduces the concept of abstract characters and describes a brief history of encoding standards, from ASCII to Unicode. It shows how, by adding one level of indirection, the Unicode standard answers this question. It then presents code examples to display text written in Unicode: HarfBuzz (for shaping) and FreeType (for rendering).
An Explanation of the Halting Problem and Its ConsequencesYann-Gaël Guéhéneuc
The halting problem is an important, famous, and consequential problem in computer science. It is about writing a program that decides if another problem will stop. There is no general solution to this problem, which shows that such a problem is undecidable, with important consequences: for example, it is not possible to write tests that would exhaustively test entirely an arbitrary program. This presentation was written in collaboration with <a href="https://www.iro.umontreal.ca/~hahn/">Gena Hahn</a>.
A presentation summarising FPGAs, their history, their benefits, and showing how to program them. It provides some historical background on the development of computers, from the Difference Engine to the Intel 4004 to the AMD Ryzen Threadripper PRO 3995WX. It shows how the number of transistors increased dramatically but also how this increase led to more complexity and more bugs. It then introduces Field-programmable gate arrays (FPGA) as an alternative. It then presents how to program such FPGA using data-flow graphs. It discusses some tools (Yosys, NextPnR, and IceStorm) and illustrates them with a typical "Hello World" (i.e., blinking an LED) using Cygwin on Windows 10.
A set of brief presentations of some of the women and men who made the history of computer science and software engineering.
- 1936: Alan Turing
- 1948: Claude Elwood Shannon
- 1950: Grace Murray Hopper
- 1960: John McCarthy
- 1966: Frances E. Allen
- 1967: Ole-Johan Dahl
- 1967: Kristen Nygaard
- 1969: Charles A. R. Hoare
- 1970: Edgar F. Codd
- 1972: Dave Parnas
- 1974: Manny Lehman
- 1975: Frederick Brooks
- 1986: Edward Yourdon
- 1987: Barbara Liskov
- 1994: Erich Gamma
- 1997: Grady Booch
- 2001: Butler Lampson
A tutorial on the history, use, and caveats of Java generics. Using the simple example of an interface for sort algorithms, the tutorial presents the history of generics and describes the problems being solved by generics. It also provides definitions, and examples in Java and C++, and discusses Duck Typing. It then describes two scenarios: (1) Scenario 1: you want to enforce type safety for containers and remove the need for typecasts when using these containers and (2) Scenario 2: you want to build generic algorithms that work on several types of (possibly unrelated) things. It also summarises caveats with generics, in particular type erasure.
A tutorial on reflection, with a particular emphasis on Java, with a comparison with C++, Python, and Smalltalk. It describes different scenarios in which reflection is useful, a brief history of reflection and MOPs, a comparison with C++, Python, and Smalltalk, and some particulars about Java. The source code of the examples in Java (Eclipse project), Smalltalk (Squeak image v3.10.6), Python (Eclipse project), and C++ (Eclipse projects and Visual Studio solution) are available. (C++ Eclipse projects require Mirror.) Big thanks to Matúš Chochlík and Marcus Denker for their kind and precious help with C++ and Smalltalk.
The tutorial focuses on four common problems:
- Avoid using instanceof when code must bypass the compiler and virtual machine’s choice of the method to call.
- Create external, user-defined pieces of code loaded, used, and unloaded at run-time.
- Translate data structures or object states into a format that can be stored (file, network...).
- Monitor the execution of a program to understand its behaviour, and measure its space and time complexity.
It shows working examples of Java, Smalltalk, Python, and C++ code solving the four common problems through four scenarios:
- Scenario 1: invoke an arbitrary method on an object (see the problems with instanceof and plugins).
- Scenario 2: access the complete (including private) state of an object (see the problem with serialisation).
- Scenario 3: count the number of instances of a class created at runtime (see the problem with debugging/profiling).
- Scenario 4: patch the method of a class to change its behaviour (see the problem with patching).
It also discusses the different kinds of interconnections among objects that are available in common programming languages (linking, forking, subclassing, inter-process communication, and dynamic loading/invoking), a bit of theory about reflection, and specifically the class-loading mechanism of Java.
REST APIs are nowadays the de-facto standard for Web applications. However, as more systems and services adopt the REST architectural style, many problems arise regularly. To avoid these repetitive problems, developers should follow good practices and avoid bad practices. Thus, research on good and bad practices and how to design a simple but effective REST API are essential. Yet, to the best of our knowledge, there are only a few concrete solutions to recurring REST API practices, like “API Versioning”. There are works on defining or detecting some practices, but not on solutions to the practices. We present the most up-to-date list of REST API practices and formalize them in the form of REST API (anti)patterns. We validate our design (anti)patterns with a survey and interviews of 55 developers.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
In software engineering, the right architecture is essential for robust, scalable platforms. Wix has undergone a pivotal shift from event sourcing to a CRUD-based model for its microservices. This talk will chart the course of this pivotal journey.
Event sourcing, which records state changes as immutable events, provided robust auditing and "time travel" debugging for Wix Stores' microservices. Despite its benefits, the complexity it introduced in state management slowed development. Wix responded by adopting a simpler, unified CRUD model. This talk will explore the challenges of event sourcing and the advantages of Wix's new "CRUD on steroids" approach, which streamlines API integration and domain event management while preserving data integrity and system resilience.
Participants will gain valuable insights into Wix's strategies for ensuring atomicity in database updates and event production, as well as caching, materialization, and performance optimization techniques within a distributed system.
Join us to discover how Wix has mastered the art of balancing simplicity and extensibility, and learn how the re-adoption of the modest CRUD has turbocharged their development velocity, resilience, and scalability in a high-growth environment.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
In the ever-evolving landscape of technology, enterprise software development is undergoing a significant transformation. Traditional coding methods are being challenged by innovative no-code solutions, which promise to streamline and democratize the software development process.
This shift is particularly impactful for enterprises, which require robust, scalable, and efficient software to manage their operations. In this article, we will explore the various facets of enterprise software development with no-code solutions, examining their benefits, challenges, and the future potential they hold.
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaYara Milbes
Discover the transformative power of the WhatsApp API in our latest SlideShare presentation, "Top 7 Unique WhatsApp API Benefits." In today's fast-paced digital era, effective communication is crucial for both personal and professional success. Whether you're a small business looking to enhance customer interactions or an individual seeking seamless communication with loved ones, the WhatsApp API offers robust capabilities that can significantly elevate your experience.
In this presentation, we delve into the top 7 distinctive benefits of the WhatsApp API, provided by the leading WhatsApp API service provider in Saudi Arabia. Learn how to streamline customer support, automate notifications, leverage rich media messaging, run scalable marketing campaigns, integrate secure payments, synchronize with CRM systems, and ensure enhanced security and privacy.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
1. Can Better Identifier Splitting
T h i H l F L i ?
B d Di L if G j D P h k Gi li A i l
Techniques Help Feature Location?
Bogdan Dit, Latifa Guerrouj, Denys Poshyvanyk, Giuliano Antoniol
SEMERU
19th IEEE International Conference on Program Comprehension
(ICPC’11) – Kingston, Ontario, Canada
4. Textual information embeds
d i k l ddomain knowledge
About 70% of source codeAbout 70% of source code
consists of identifiers*
* Deissenboeck, F. and Pizka , M., "Concise and Consistent Naming", Software
Quality Journal, vol. 14, no. 3, 2006, pp. 261-282
4
5. Textual information embeds
d i k l ddomain knowledge
About 70% of source codeAbout 70% of source code
consists of identifiers*
Identifiers are important source ofIdentifiers are important source of
information for maintenance tasks:information for maintenance tasks:
• traceability link recovery
• feature location
* Deissenboeck, F. and Pizka , M., "Concise and Consistent Naming", Software
Quality Journal, vol. 14, no. 3, 2006, pp. 261-282
feature location
5
6. # of Cumulative Feature Location
Papers based on Textual InformationPapers based on Textual Information
6
7. Related Work on IdentifiersRelated Work on Identifiers
• Takang et al (JPL’96)• Takang et al. (JPL 96)
– programs with full-word identifiers are more
understandable than those with abbreviatedunderstandable than those with abbreviated
ones
• Lawrie et al (ICPC’06)• Lawrie et al. (ICPC 06)
– full words and recognizable abbreviations
lead to better comprehensionlead to better comprehension
• Binkley et al. (ICPC’09)
CamelCase style is easier to recognize than– CamelCase style is easier to recognize than
underscore 7
8. Related Work on IdentifiersRelated Work on Identifiers
• Enslen et al (MSR’09)• Enslen et al. (MSR 09)
– Samurai: algorithm for splitting identifiers
(using tables of identifier frequencies)(using tables of identifier frequencies)
• Guerrouj et al. (JSME’11)
TIDIER: algorithm for splitting identifiers– TIDIER: algorithm for splitting identifiers
(using contextual information)
Other related work• Other related work
– Deissenboeck and Pizka (SQJ’06), Antoniol et
al (ICSM’07) Haiduc and Marcus (ICPC’08)al. (ICSM’07), Haiduc and Marcus (ICPC’08),
etc. 8
11. Identifier Splitting AlgorithmsIdentifier Splitting Algorithms
Original Identifier Camel Case
userId user Id
setGID set GID
print file2device print file 2 deviceprint_file2device print file 2 device
SSLCertificate SSL Certificate
MINstring MI Nstring
USERID USERID
currentsize currentsize
readadapterobject readadapterobjectp j p j
tolocale tolocale
imitating imitating
DEFMASKBit DEFMASK BitDEFMASKBit DEFMASK Bit
11
12. Identifier Splitting AlgorithmsIdentifier Splitting Algorithms
Original Identifier Camel Case
Handles
underscore and
userId user Id
setGID set GID
print file2device print file 2 device
underscore and
digits
print_file2device print file 2 device
SSLCertificate SSL Certificate
MINstring MI Nstring
USERID USERID
currentsize currentsize
readadapterobject readadapterobject Fails at mixed casesp j p j
tolocale tolocale
imitating imitating
DEFMASKBit DEFMASK BitDEFMASKBit DEFMASK Bit
12
Fails at same case
identifiers
13. Identifier Splitting AlgorithmsIdentifier Splitting Algorithms
Original Identifier Camel Case
userId user Id
setGID set GID
print file2device print file 2 deviceprint_file2device print file 2 device
SSLCertificate SSL Certificate
MINstring MI Nstring
USERID USERID
currentsize currentsize
readadapterobject readadapterobjectp j p j
tolocale tolocale
imitating imitating
DEFMASKBit DEFMASK BitDEFMASKBit DEFMASK Bit
13
14. Identifier Splitting AlgorithmsIdentifier Splitting Algorithms
Original Identifier Camel Case Samurai
userId user Id user Id
setGID set GID set GID
print file2device print file 2 device print file 2 deviceprint_file2device print file 2 device print file 2 device
SSLCertificate SSL Certificate SSL Certificate
MINstring MI Nstring MIN string
USERID USERID USER ID
currentsize currentsize current size
readadapterobject readadapterobject read adapter objectp j p j p j
tolocale tolocale tol ocal e
imitating imitating imi ta ting
DEFMASKBit DEFMASK Bit DEF MASK BitDEFMASKBit DEFMASK Bit DEF MASK Bit
14
15. Identifier Splitting AlgorithmsIdentifier Splitting Algorithms
Original Identifier Camel Case Samurai
userId user Id user Id
setGID set GID set GID
print file2device print file 2 device print file 2 device
Splits some cases
where CamelCase
print_file2device print file 2 device print file 2 device
SSLCertificate SSL Certificate SSL Certificate
MINstring MI Nstring MIN string
cannot
USERID USERID USER ID
currentsize currentsize current size
readadapterobject readadapterobject read adapter objectp j p j p j
tolocale tolocale tol ocal e
imitating imitating imi ta ting
DEFMASKBit DEFMASK Bit DEF MASK BitDEFMASKBit DEFMASK Bit DEF MASK Bit
15
Oversplits
16. # of Cumulative Feature Location
Papers based on Textual InformationPapers based on Textual Information
16
17. # of Cumulative Feature Location
Papers based on Textual InformationPapers based on Textual Information
Existing feature location techniques
use Camel Case splittinguse Camel Case splitting
17
18. Information Retrieval FLTInformation Retrieval FLT
• Generate corpus synchronized void print(TestResult result,
l Ti ) h IOE i {
• Preprocessing
– Remove non-literals
– Remove stop words
long runTime) throws IOException{
printHeader(runTime);
printErrors(result);
printFailures(result);Remove stop words
– Split identifiers
– Stemming
I d i
p ( );
printFooter(result);
}
synchronized void print TestResult result
• Indexing
– Term-by-document matrix
– Singular Value
synchronized void print TestResult result
long runTime throws IOException
printHeader runTime printErrors result
printFailures result printFooter result
g
Decomposition
• User formulate query
G t lt
print TestResult result runTime
IOException printHeader runTime
• Generate results
• Ranked list 18
O cept o p t eade u e
printErrors result printFailures result
printFooter result
19. Information Retrieval FLTInformation Retrieval FLT
• Generate corpus print Test Result result run Time IO
E ti i t H d Ti i t
• Preprocessing
– Remove non-literals
– Remove stop words
Exception print Header run Time print
Errors result print Failures result print
Footer result
Remove stop words
– Split identifiers
– Stemming
I d i
print test result result run time io
exception print head run time print error
• Indexing
– Term-by-document matrix
– Singular Value
result print fail result print foot result
g
Decomposition
• User formulate query
G t lt
print test result ...
m1 5 1 3 ...
• Generate results
• Ranked list 19
m2 ... ... ... ...
20. Information Retrieval FLTInformation Retrieval FLT
• Generate corpus
print test result ...
• Preprocessing
– Remove non-literals
– Remove stop words
m1 5 1 3 ...
m2 ... ... ... ...
Remove stop words
– Split identifiers
– Stemming
I d i• Indexing
– Term-by-document matrix
– Singular Valueg
Decomposition
• User formulate query
G t lt• Generate results
• Ranked list 20
21. IR and Dynamic Information FLTIR and Dynamic Information FLT
• Generate corpus
• Preprocessing
– Remove non-literals
– Remove stop wordsRemove stop words
– Split identifiers
– Stemming
I d i• Indexing
– Term-by-document matrix
– Singular Value Decompositiong p
• User formulate query
Collect execution
trace
• Generate results
• Ranked list of executed methods
21
22. R h G lResearch Goal
Evaluate how advanced splitting techniques impact
th f f f t l ti t h ithe performance of feature location techniques
22
23. Information Retrieval FLTInformation Retrieval FLT
• Generate corpus
• Preprocessing
– Remove non-literals
– Remove stop words
Replace Camel Case with :
•SamuraiRemove stop words
– Split identifiers
– Stemming
I d i
g ( )
•“Perfect” Splitting
algorithm (Oracle)
• Indexing
– Term-by-document matrix
– Singular Value
B
g
Decomposition
• User formulate query
G t lt
etterW
• Generate results
• Ranked list 23
Worst
28. Manually
Split
IdentifiersIdentifiers
Extract Identifiers Manual Split
Consensus
between authors
All
Discordant
Split
Same
split?
NO
Checked
source codeAll
Identifiers
Split
Identifiers
p
(CamelCase
Samurai
TIDIER)
Concordant
YES
B ildi
Concordant
Split
Identifiers
Building
the Oracle
28
29. Manually
Split
Identifiers
Identifiers
that could
not be split
• Examples: DT, i3,
Identifiersnot be split
P754, zzz, etc.
• Left unchanged
Extract Identifiers Manual Split
Left unchanged
All
Discordant
Split
Same
split?
NO
All
Identifiers
Split
Identifiers
p
(CamelCase
Samurai
TIDIER)
Concordant
YES
B ildi
Concordant
Split
Identifiers
Building
the Oracle
29
31. Design of the Case StudyDesign of the Case Study
• RQ: Does a FLT with an advanced• RQ: Does a FLT with an advanced
splitting algorithm produce better results
than the same FLT using the CamelCasethan the same FLT using the CamelCase
splitting algorithm?
31
33. How to Compare two FLTs?
• Effectiveness measure for each feature
How to Compare two FLTs?
• Effectiveness measure for each feature
Method LSI
IR
G ld t th d
Method LSI
score
M121 0.92
M64 0.89
Gold set methodM15 0.86
M39 0.80
M7 0.74
M 0 65M152 0.65
M234 0.56
M12 0.54
M 0 52
Effectiveness = 5
M78 0.52
33
34. How to Compare two FLTs?
• Effectiveness measure for each feature
How to Compare two FLTs?
• Effectiveness measure for each feature
Method LSI
IR
IRDynMethod LSI
score
M121 0.92
M64 0.89
Method LSI
score
M15 0.86Gold set method
y
M15 0.86
M39 0.80
M7 0.74
M 0 65
M7 0.74
M234 0.56
M12 0.54
Effectiveness = 2M152 0.65
M234 0.56
M12 0.54
M 0 52
ect e ess
M78 0.52
34Method
Executed method (from trace)
35. Which FLTs are we Comparing?Which FLTs are we Comparing?
35
36. Software SystemsSoftware Systems
• Rhino 1 6R5• Rhino 1.6R5
• 138 classes, 1,870 methods, 32K LOC
E dd l ’ d *• Eaddy et al.’s data*
• 2 datasets
Dataset Size Queries Gold Sets Execution
Information
RhinoFeatures 241 Sections of
ECMAScript
documentation
Eaddy et al.* Full Execution Traces
(from unit tests)
Rhi 143 B titl d E dd t l * N/A
36
* http://www.cs.columbia.edu/~eaddy/concerntagger/
RhinoBugs 143 Bug title and
description
Eaddy et al.*
(CVS)
N/A
37. Software SystemsSoftware Systems
• jEdit 4 3• jEdit 4.3
• 483 classes, 6.4K methods, 109K LOC
2 d t t• 2 datasets
Dataset Size Queries Gold Sets Execution
Information
jEditFeatures 64 Feature (or Patch)
title and description
SVN Marked Execution
Traces
jEditBugs 86 Bug title and
description
SVN Marked Execution
Traces
37
Datasets available at:
http://www.cs.wm.edu/semeru/data/icpc11-identifier-splitting/
40. Generating the jEdit
Datasets
Changed files
Previous
V i
Current
V i
Compare
using
Eclipse AST
Version Version
c pse S
Modified methods
(gold set) 40
46. IR FLTs
S
RhinoFeatures RhinoBugs
Similar median
and average
RhinoFeatures RhinoBugs
Datasets with
features have
better results
than datasets
with bugs
46jEditFeatures jEditBugs
48. IRDyn FLTs
S
N/A
RhinoFeatures RhinoBugs
Similar median
and average
RhinoFeatures RhinoBugs
Datasets withatasets t
features have
better results
than datasetsthan datasets
with bugs
48jEditFeatures jEditBugs
54. Statistical ResultsStatistical Results
• Wilcoxon signed-rank test• Wilcoxon signed rank test
• Null hypothesis
Th i t ti ti l i ifi diff– There is no statistical significance difference
in terms of effectiveness between
IR /IR l and IR lIRSamurai/IROracle and IRCamelCase
• Alternative hypothesis
IR /IR h t ti ti ll i ifi tl– IRSamurai/IROracle has statistically significantly
higher effectiveness than IRCamelCase
l h 0 05• alpha = 0.05
54
56. Qualitative ResultsQualitative Results
• Vocabulary mismatch between queries
and code:and code:
– Name of developers (e.g., Slava, Carlos)
Id ifi ifi i i (– Identifiers specific to communication (e.g.,
thanks, greetings, annoying)
56
59. Threats to ValidityThreats to Validity
• External
– 2 Java applications (different domains)
– More systems needed
• Construct
– Errors may be present in Oracle and gold setsy p g
– We used data produced by other researchers
• Internal• Internal
– Subjectivity and bias in building the Oracle
Conclusion• Conclusion
– Non-parametric test: Wilcoxon signed-rank 59
60. Research Questions
• RQ1 Does IRSamurai outperform IRCamelCase in
terms of effectiveness? NO
• RQ2 Does IRS iDyn outperform IRC lC Dyn• RQ2 Does IRSamuraiDyn outperform IRCamelCaseDyn
in terms of effectiveness? NO
• RQ3 Does IROracle outperform IRCamelCase in terms
f ff ti ? I (Rhi )of effectiveness? In some cases (Rhino)
• RQ4 Does IROracleDyn outperform IRCamelCaseDyn
in terms of effectiveness? NO
60
61. Future WorkFuture Work
• More systems and datasets• More systems and datasets
• Different maintenance tasks
T bilit li k– Traceability link recovery
• Consider other splitting algorithms
61
62. ConclusionsConclusions
• Advanced splitting technique could• Advanced splitting technique could
improve FLTs
We found some empirical evidence– We found some empirical evidence
• Splitting has more impact on IR FLT
f f l bl• If execution information is available, it is
not necessary to use an advance splitting
h itechnique
62
63. Thank you! Questions?Thank you! Questions?
SEMERU @ William and MarySEMERU @ William and Mary
http://www.cs.wm.edu/semeru/
bdi dbdit@cs.wm.edu
SEMERU
63
64. ReferencesReferences
• Takang et al. (1996) Takang, A., Grubb, P., and Macredie, R., "The
Effects of Comments and Identifier Names on Program Comprehensibility:
An Experimental Investigation", Journal of Programming Languages, vol. 4,
no. 3, 1996, pp. 143-167
• Lawrie et al (2006) Lawrie D Morrell C Feild H and Binkley D• Lawrie et al. (2006) Lawrie, D., Morrell, C., Feild, H., and Binkley, D.,
"What's in a Name? A Study of Identifiers", in Proc. of IEEE ICPC'06, June
14-16 2006, pp. 3-12
• Binkley et al. (2009) Binkley, D., Davis, M., Lawrie, D., and Morrell, C.,y ( ) y, , , , , , , ,
"To CamelCase or Under_score", in Proc. of IEEE ICPC'09, May 17-19 2009,
pp. 158-167
• Enslen et al. (2009) Enslen, E., Hill, E., Pollock, L., and Vijay-Shanker, K.,
"Mi i S C d A i ll S li Id ifi f S f"Mining Source Code to Automatically Split Identifiers for Software
Analysis", in Proc. of IEEE MSR'09, May 16-17 2009, pp. 71-80
• Guerrouj et al. (2011) Guerrouj, L., Di Penta, M., Antoniol, G., and
Guéhéneuc Y -G "TIDIER: An Identifier Splitting Approach using SpeechGuéhéneuc, Y. G., TIDIER: An Identifier Splitting Approach using Speech
Recognition Techniques", JSME, vol. to appear, 2011
64