Recommendation systems aim to help programmers reuse APIs from existing frameworks and libraries by providing code examples and solutions. They work by collecting and analyzing code samples from various sources, then representing the results. Challenges include dealing with partial code samples and unknown types when code examples are gathered from search engines rather than full projects. Heuristics are used to infer missing information from these incomplete code snippets.
Static Analysis of PHP Code – IPC Berlin 2016Rouven Weßling
The document discusses static analysis of PHP code. It defines static analysis as analyzing software without executing it to find issues. It then summarizes several PHP static analysis tools like PHPMD, Phan, PHPCS, PHPLOC, and Deptrac. It explains how these tools work by parsing code and checking for bugs, inconsistencies and violations of defined rules. In the end, it recommends using static analysis tools as part of continuous integration to improve code quality.
This presentation is about using Boost.Python library to create modules with С++.
Presentation by Andriy Ohorodnyk (Lead Software Engineer, GlobalLogic, Lviv), delivered GlobalLogic C++ TechTalk in Lviv, September 18, 2014.
More details -
http://www.globallogic.com.ua/press-releases/lviv-cpp-techtalk-coverage
This document discusses using annotation processors and compiler plugins to generate code. It provides examples of generating code to avoid boilerplate and duplication using annotation processors. It then outlines the basic steps to implement an annotation processor which includes implementing an interface, creating a provider configuration file, and compiling with the annotation processor on the classpath. Similarly, the basic steps for a compiler plugin are discussed, which involves implementing a plugin interface, creating a provider configuration file, and compiling with the plugin specified.
C# 4.0 introduced several new features to the C# language including dynamic programming, optional and named parameters, and improved support for covariance and contravariance. It also added the ability to invoke members of dynamic objects at runtime instead of compile-time. The .NET Framework 4.0 implemented these language changes and added support for variance in interfaces like IEnumerable and delegates.
The document discusses annotation processing in Java. Annotation processing allows annotations to be inspected at compile time and to generate code. It works by having an annotation processor implement the Processor interface and process annotations. The processor can find annotated elements, generate Java code using APIs like JavaPoet, and write the generated code files so they are available to the compiler. An example project called HolyFragment is described that uses annotation processing to generate helper code for fragments annotated with a custom @Holy annotation.
pointers, virtual functions and polymorphisms in c++ || in cppgourav kottawar
The document discusses pointers, virtual functions, and polymorphism in C++. It covers early binding/compile-time polymorphism using function overloading and operator overloading. Late binding/run-time polymorphism is achieved using virtual functions, where the appropriate function version is selected at runtime based on the object. Pointer to objects and using the arrow operator -> to access members through object pointers is described. Memory allocation for single and array objects using new is also covered.
go-git is a 100% Go libray used to interact with git repositories. Even if it already supports most of the functionality it still lags a bit in performance when compared with the git CLI or some other libraries. I'll explain some of the problems that we face when dealing with git repos and some examples of performance improvements done to the library.
Recommendation systems aim to help programmers reuse APIs from existing frameworks and libraries by providing code examples and solutions. They work by collecting and analyzing code samples from various sources, then representing the results. Challenges include dealing with partial code samples and unknown types when code examples are gathered from search engines rather than full projects. Heuristics are used to infer missing information from these incomplete code snippets.
Static Analysis of PHP Code – IPC Berlin 2016Rouven Weßling
The document discusses static analysis of PHP code. It defines static analysis as analyzing software without executing it to find issues. It then summarizes several PHP static analysis tools like PHPMD, Phan, PHPCS, PHPLOC, and Deptrac. It explains how these tools work by parsing code and checking for bugs, inconsistencies and violations of defined rules. In the end, it recommends using static analysis tools as part of continuous integration to improve code quality.
This presentation is about using Boost.Python library to create modules with С++.
Presentation by Andriy Ohorodnyk (Lead Software Engineer, GlobalLogic, Lviv), delivered GlobalLogic C++ TechTalk in Lviv, September 18, 2014.
More details -
http://www.globallogic.com.ua/press-releases/lviv-cpp-techtalk-coverage
This document discusses using annotation processors and compiler plugins to generate code. It provides examples of generating code to avoid boilerplate and duplication using annotation processors. It then outlines the basic steps to implement an annotation processor which includes implementing an interface, creating a provider configuration file, and compiling with the annotation processor on the classpath. Similarly, the basic steps for a compiler plugin are discussed, which involves implementing a plugin interface, creating a provider configuration file, and compiling with the plugin specified.
C# 4.0 introduced several new features to the C# language including dynamic programming, optional and named parameters, and improved support for covariance and contravariance. It also added the ability to invoke members of dynamic objects at runtime instead of compile-time. The .NET Framework 4.0 implemented these language changes and added support for variance in interfaces like IEnumerable and delegates.
The document discusses annotation processing in Java. Annotation processing allows annotations to be inspected at compile time and to generate code. It works by having an annotation processor implement the Processor interface and process annotations. The processor can find annotated elements, generate Java code using APIs like JavaPoet, and write the generated code files so they are available to the compiler. An example project called HolyFragment is described that uses annotation processing to generate helper code for fragments annotated with a custom @Holy annotation.
pointers, virtual functions and polymorphisms in c++ || in cppgourav kottawar
The document discusses pointers, virtual functions, and polymorphism in C++. It covers early binding/compile-time polymorphism using function overloading and operator overloading. Late binding/run-time polymorphism is achieved using virtual functions, where the appropriate function version is selected at runtime based on the object. Pointer to objects and using the arrow operator -> to access members through object pointers is described. Memory allocation for single and array objects using new is also covered.
go-git is a 100% Go libray used to interact with git repositories. Even if it already supports most of the functionality it still lags a bit in performance when compared with the git CLI or some other libraries. I'll explain some of the problems that we face when dealing with git repos and some examples of performance improvements done to the library.
PHP 8 introduces several new features and backward compatibility breaks. It includes a just-in-time compiler, match expression, constructor property promotion, union types, static return type, attributes, named arguments, and improved type handling. Notable BC breaks are stricter error handling by default, locale independence for float conversions, and warning promotion to type errors. The changes aim to improve performance, type safety, and consistency.
The document discusses variadic templates in C++, including their fundamentals like parameter packs, common uses cases, and examples of how to work with parameter packs. It also covers variadic templates in more depth including expansion rules, where they are commonly used, and how to handle multiple expansions. The document concludes with an example of how variadic templates can be used to implement a typesafe printf function in C++.
HexRaysCodeXplorer: object oriented RE for fun and profitAlex Matrosov
HexRaysCodeXplorer - Hex-Rays Decompiler plugin for easier code navigation. Here are the main features of the plugin:
- Automatic type REconstruction for C++ objects.
- C-tree graph visualization - a special tree-like structure representing a decompiled routine in c_itemt terms. Useful feature for understanding how the decompiler works.
- Navigation through virtual function calls in HexRays Pseudocode window.
- Object Explorer - useful interface for navigation through virtual tables (VTBL) structures.
In this presentation, the authors of HexRaysCodeXplorer will be discussing main functionality of the plugin and its application for reverse engineering. The authors will be presenting the algorithm for C++ type REconstruction. Also a special version of HexRaysCodeXplorer (H2HC edition) will be released with new features developed specially for H2Cconference. New features will be committed to GitHub from the stage.
This document discusses working with bytecode in Squeak. It provides an overview of the Squeak compiler and how it generates bytecode. It describes parsing and interpreting bytecode using the InstructionStream hierarchy. It also explains how to generate bytecode using the IRBuilder tool and how this relates to parsing and interpreting bytecode.
The document discusses machine learning in PHP, including data mining techniques like classification and clustering that can be used. It provides benchmarks comparing PHP and Python for computational tasks, finding PHP to be slower. The document also discusses tools for machine learning in PHP like php-ml, and how PHP 7 improved performance by optimizing memory usage and arrays. Hybrid approaches using PHP with external machine learning services are presented.
The document discusses building an interoperable programmable web through common agreements on discovery, linking, schemas, media types, formats and interfaces. It proposes using HTTP as the common protocol and representing data through common formats to allow different systems and APIs to interact. It also suggests using SQL-like constructs to enable operations like querying, filtering, joining and orchestrating requests across multiple APIs.
Pharo is a modern and powerful Smalltalk environment that is open source, supports many platforms, and actively adds new features. Version 5.0 includes performance improvements from the new Spur VM, as well as new debugging tools and a unified FFI. An example web application built with Teapot and PunQLite demonstrates how easily full-stack web applications can now be developed in Pharo.
This document discusses how to publish an open source Python package on PyPI from setup.py. It covers creating setup.py, adding metadata like name, version and description, managing dependencies, generating wheels, and uploading to PyPI. It emphasizes using semantic versioning for versions, PEP 396 for __version__, and twine for secure uploads to PyPI. Continuous integration is recommended for automated testing and deployment on tags.
This document provides an introduction to programming with Python for beginners. It covers basic Python concepts like variables, data types, operators, conditional statements, functions, loops, strings and lists. It also demonstrates how to build simple web applications using Google App Engine and Python, including templating with Jinja2, storing data in the Datastore and handling web forms. The goal is to teach the fundamentals of Python programming and get started with cloud development on Google Cloud Platform.
This document provides an overview and introduction to PHP extensions. It discusses compiling PHP with debugging enabled, creating a basic extension skeleton, configuring and installing extensions, and activating extensions. It also covers extension lifetime, PHP memory management using the Zend Memory Manager, PHP variables called zvals which are containers for data, and zval types. The document is intended to provide attendees with the necessary background knowledge to participate in a workshop about PHP extensions.
Apache Calcite is a dynamic data management framework. Think of it as a toolkit for building databases: it has an industry-standard SQL parser, validator, highly customizable optimizer (with pluggable transformation rules and cost functions, relational algebra, and an extensive library of rules), but it has no preferred storage primitives. In this tutorial, the attendees will use Apache Calcite to build a fully fledged query processor from scratch with very few lines of code. This processor is a full implementation of SQL over an Apache Lucene storage engine. (Lucene does not support SQL queries and lacks a declarative language for performing complex operations such as joins or aggregations.) Attendees will also learn how to use Calcite as an effective tool for research.
The document discusses proposals for implementing profiling middleware and tools for Swift. It outlines a profiling architecture that would inject profiling at the system, process, code and line level granularity. Profiling data would be collected and stored in a multi-dimensional model covering dimensions like time, workload, system and code metrics. Open source profiling tools could then be used to analyze and visualize the data to identify performance bottlenecks.
Creating Great REST and gRPC API Experiences (in Swift)Tim Burks
Protocol Buffers are a language-neutral, platform-neutral mechanism for serializing structured data. They can be used to define interfaces for APIs and exchange data between systems. Protocol Buffers include a data definition language to define message types, a serialization format to encode structured data in a compact binary form, and code generation plugins to generate data access code in multiple languages. Protocol Buffers provide a flexible and efficient method for serializing structured data for storage or network transmission.
High-level Programming Languages: Apache Pig and Pig LatinPietro Michiardi
This slide deck is used as an introduction to the Apache Pig system and the Pig Latin high-level programming language, as part of the Distributed Systems and Cloud Computing course I hold at Eurecom.
Course website:
http://michiard.github.io/DISC-CLOUD-COURSE/
Sources available here:
https://github.com/michiard/DISC-CLOUD-COURSE
The document provides an overview of new features in Java 8 including lambda expressions, functional interfaces, default and static interface methods, method references, stream API, and date/time API. Lambda expressions allow for anonymous functions and functional interfaces provide functional signatures. Default and static interface methods allow interfaces to define implementations. Method references provide shorthand syntax for lambda expressions. The stream API supports functional-style processing of collections through intermediate and terminal operations. The new date/time API replaces the Calendar class with more easily used and immutable classes like LocalDate.
FOSDEM 2020: Querying over millions and billions of metrics with M3DB's indexRob Skillington
The cardinality of monitoring data we are collecting today continues to rise, in no small part due to the ephemeral nature of containers and compute platforms like Kubernetes. Querying a flat dataset comprised of an increasing number of metrics requires searching through millions and in some cases billions of metrics to select a subset to display or alert on. The ability to use wildcards or regex within the tag name and values of these metrics and traces are becoming less of a nice-to-have feature and more useful for the growing popularity of ad-hoc exploratory queries.
In this talk we will look at how Prometheus introduced the concept of a reverse index existing side-by-side with a traditional column based TSDB in a single process. We will then walk through the evolution of M3’s metric index, starting with ElasticSearch and evolving over the years to the current M3DB reverse index. We will give an in depth overview of the alternate designs and dive deep into the architecture of the current distributed index and the optimizations we’ve made in order to fulfill wildcards and regex queries across billions of metrics.
This document discusses the key differences between ANSI C and K&R C. It covers four main points: 1) Function prototyping in ANSI C allows compilers to check for invalid function calls, unlike in K&R C. 2) ANSI C supports the const and volatile qualifiers. 3) ANSI C supports internationalization with wide characters and setlocale. 4) ANSI C allows function pointers to be used without dereferencing. The document provides examples to illustrate each point.
Revisiting the Effect of Branch Handling Strategies on Change RecommendationShinpei Hayashi
This document revisits the effect of different branch handling strategies on change recommendation performance. It examines two settings - one that excludes commits in branches and one that includes merging changes. The authors investigate how the setting difference influences recommendation results and which branch characteristics, like length and merge size, affect performance of the change recommendations. They find that the setting difference does influence performance and that longer branches and larger merge sizes tend to have a positive impact on recommendation precision.
PHP 8 introduces several new features and backward compatibility breaks. It includes a just-in-time compiler, match expression, constructor property promotion, union types, static return type, attributes, named arguments, and improved type handling. Notable BC breaks are stricter error handling by default, locale independence for float conversions, and warning promotion to type errors. The changes aim to improve performance, type safety, and consistency.
The document discusses variadic templates in C++, including their fundamentals like parameter packs, common uses cases, and examples of how to work with parameter packs. It also covers variadic templates in more depth including expansion rules, where they are commonly used, and how to handle multiple expansions. The document concludes with an example of how variadic templates can be used to implement a typesafe printf function in C++.
HexRaysCodeXplorer: object oriented RE for fun and profitAlex Matrosov
HexRaysCodeXplorer - Hex-Rays Decompiler plugin for easier code navigation. Here are the main features of the plugin:
- Automatic type REconstruction for C++ objects.
- C-tree graph visualization - a special tree-like structure representing a decompiled routine in c_itemt terms. Useful feature for understanding how the decompiler works.
- Navigation through virtual function calls in HexRays Pseudocode window.
- Object Explorer - useful interface for navigation through virtual tables (VTBL) structures.
In this presentation, the authors of HexRaysCodeXplorer will be discussing main functionality of the plugin and its application for reverse engineering. The authors will be presenting the algorithm for C++ type REconstruction. Also a special version of HexRaysCodeXplorer (H2HC edition) will be released with new features developed specially for H2Cconference. New features will be committed to GitHub from the stage.
This document discusses working with bytecode in Squeak. It provides an overview of the Squeak compiler and how it generates bytecode. It describes parsing and interpreting bytecode using the InstructionStream hierarchy. It also explains how to generate bytecode using the IRBuilder tool and how this relates to parsing and interpreting bytecode.
The document discusses machine learning in PHP, including data mining techniques like classification and clustering that can be used. It provides benchmarks comparing PHP and Python for computational tasks, finding PHP to be slower. The document also discusses tools for machine learning in PHP like php-ml, and how PHP 7 improved performance by optimizing memory usage and arrays. Hybrid approaches using PHP with external machine learning services are presented.
The document discusses building an interoperable programmable web through common agreements on discovery, linking, schemas, media types, formats and interfaces. It proposes using HTTP as the common protocol and representing data through common formats to allow different systems and APIs to interact. It also suggests using SQL-like constructs to enable operations like querying, filtering, joining and orchestrating requests across multiple APIs.
Pharo is a modern and powerful Smalltalk environment that is open source, supports many platforms, and actively adds new features. Version 5.0 includes performance improvements from the new Spur VM, as well as new debugging tools and a unified FFI. An example web application built with Teapot and PunQLite demonstrates how easily full-stack web applications can now be developed in Pharo.
This document discusses how to publish an open source Python package on PyPI from setup.py. It covers creating setup.py, adding metadata like name, version and description, managing dependencies, generating wheels, and uploading to PyPI. It emphasizes using semantic versioning for versions, PEP 396 for __version__, and twine for secure uploads to PyPI. Continuous integration is recommended for automated testing and deployment on tags.
This document provides an introduction to programming with Python for beginners. It covers basic Python concepts like variables, data types, operators, conditional statements, functions, loops, strings and lists. It also demonstrates how to build simple web applications using Google App Engine and Python, including templating with Jinja2, storing data in the Datastore and handling web forms. The goal is to teach the fundamentals of Python programming and get started with cloud development on Google Cloud Platform.
This document provides an overview and introduction to PHP extensions. It discusses compiling PHP with debugging enabled, creating a basic extension skeleton, configuring and installing extensions, and activating extensions. It also covers extension lifetime, PHP memory management using the Zend Memory Manager, PHP variables called zvals which are containers for data, and zval types. The document is intended to provide attendees with the necessary background knowledge to participate in a workshop about PHP extensions.
Apache Calcite is a dynamic data management framework. Think of it as a toolkit for building databases: it has an industry-standard SQL parser, validator, highly customizable optimizer (with pluggable transformation rules and cost functions, relational algebra, and an extensive library of rules), but it has no preferred storage primitives. In this tutorial, the attendees will use Apache Calcite to build a fully fledged query processor from scratch with very few lines of code. This processor is a full implementation of SQL over an Apache Lucene storage engine. (Lucene does not support SQL queries and lacks a declarative language for performing complex operations such as joins or aggregations.) Attendees will also learn how to use Calcite as an effective tool for research.
The document discusses proposals for implementing profiling middleware and tools for Swift. It outlines a profiling architecture that would inject profiling at the system, process, code and line level granularity. Profiling data would be collected and stored in a multi-dimensional model covering dimensions like time, workload, system and code metrics. Open source profiling tools could then be used to analyze and visualize the data to identify performance bottlenecks.
Creating Great REST and gRPC API Experiences (in Swift)Tim Burks
Protocol Buffers are a language-neutral, platform-neutral mechanism for serializing structured data. They can be used to define interfaces for APIs and exchange data between systems. Protocol Buffers include a data definition language to define message types, a serialization format to encode structured data in a compact binary form, and code generation plugins to generate data access code in multiple languages. Protocol Buffers provide a flexible and efficient method for serializing structured data for storage or network transmission.
High-level Programming Languages: Apache Pig and Pig LatinPietro Michiardi
This slide deck is used as an introduction to the Apache Pig system and the Pig Latin high-level programming language, as part of the Distributed Systems and Cloud Computing course I hold at Eurecom.
Course website:
http://michiard.github.io/DISC-CLOUD-COURSE/
Sources available here:
https://github.com/michiard/DISC-CLOUD-COURSE
The document provides an overview of new features in Java 8 including lambda expressions, functional interfaces, default and static interface methods, method references, stream API, and date/time API. Lambda expressions allow for anonymous functions and functional interfaces provide functional signatures. Default and static interface methods allow interfaces to define implementations. Method references provide shorthand syntax for lambda expressions. The stream API supports functional-style processing of collections through intermediate and terminal operations. The new date/time API replaces the Calendar class with more easily used and immutable classes like LocalDate.
FOSDEM 2020: Querying over millions and billions of metrics with M3DB's indexRob Skillington
The cardinality of monitoring data we are collecting today continues to rise, in no small part due to the ephemeral nature of containers and compute platforms like Kubernetes. Querying a flat dataset comprised of an increasing number of metrics requires searching through millions and in some cases billions of metrics to select a subset to display or alert on. The ability to use wildcards or regex within the tag name and values of these metrics and traces are becoming less of a nice-to-have feature and more useful for the growing popularity of ad-hoc exploratory queries.
In this talk we will look at how Prometheus introduced the concept of a reverse index existing side-by-side with a traditional column based TSDB in a single process. We will then walk through the evolution of M3’s metric index, starting with ElasticSearch and evolving over the years to the current M3DB reverse index. We will give an in depth overview of the alternate designs and dive deep into the architecture of the current distributed index and the optimizations we’ve made in order to fulfill wildcards and regex queries across billions of metrics.
This document discusses the key differences between ANSI C and K&R C. It covers four main points: 1) Function prototyping in ANSI C allows compilers to check for invalid function calls, unlike in K&R C. 2) ANSI C supports the const and volatile qualifiers. 3) ANSI C supports internationalization with wide characters and setlocale. 4) ANSI C allows function pointers to be used without dereferencing. The document provides examples to illustrate each point.
Ähnlich wie RefactorHub: A Commit Annotator for Refactoring (20)
Revisiting the Effect of Branch Handling Strategies on Change RecommendationShinpei Hayashi
This document revisits the effect of different branch handling strategies on change recommendation performance. It examines two settings - one that excludes commits in branches and one that includes merging changes. The authors investigate how the setting difference influences recommendation results and which branch characteristics, like length and merge size, affect performance of the change recommendations. They find that the setting difference does influence performance and that longer branches and larger merge sizes tend to have a positive impact on recommendation precision.
Can Automated Impact Analysis Technique Help Predicting Decaying Modules?Shinpei Hayashi
This study examines whether impact analysis (IA) can help predict decaying modules in software projects. The researchers used IR-based IA to connect bug reports to source code modules. They found that using IA improved prediction accuracy over a baseline approach using only code quality metrics. Further improvements could be made by increasing IA's recall through adding true positive connections and prioritizing recall over precision. The goal is to help developers proactively refactor decaying modules before they become severely degraded.
The Impact of Systematic Edits in History SlicingShinpei Hayashi
The document discusses how systematic edits, which are similar changes made to multiple locations in source code, can impact the size of commit-based history slices. The researchers detect systematic edits using an extended technique, then split commits containing systematic edits to remove dependencies between changed files. An empirical study of three projects found the size of history slices decreased by 13.3-57.2% on average when accounting for systematic edits in this way.
Inference-Based Detection of Architectural Violations in MVC2Shinpei Hayashi
The document discusses code for completing a task. It defines a completeTask method that takes a task ID as a parameter, finds the associated task, sets its status to completed and save date to the current date, saves the changes, and renders a response. An alternative implementation defines a complete method on the task itself to encapsulate the status and date updating before saving.
Detecting Bad Smells of Refinement in Goal-Oriented Requirements AnalysisShinpei Hayashi
This document proposes detecting bad smells in goal-oriented requirements analysis. It defines a catalog of "refinement smells" and an approach to automatically detect them. The approach measures goal descriptions and graph structures to detect smells related to low semantic relation between goals, coarse-grained leaves, and too many or few siblings. An implementation was evaluated on sample goal models, finding around half of detected smells were correct and it detected over half of the predefined smells.
Establishing Regulatory Compliance in Goal-Oriented Requirements AnalysisShinpei Hayashi
This document proposes a technique for establishing regulatory compliance in goal-oriented requirements analysis. The technique aims to 1) detect regulatory incompliant goals by matching goals and regulations using case frames, and 2) add new goals to the goal model to avoid regulatory violations by generating goals from patterns based on the regulation type (obligation, prohibition, etc.) and substituting words in goal templates. An implementation of the technique extends a GORA editor. An evaluation on two case studies found that around half of regulatory violations could be correctly detected, and most violations could be resolved by the suggested new goals.
How Can You Improve Your As-is Models? Requirements Analysis Methods Meet GQMShinpei Hayashi
The document describes a method for improving existing models (as-is models) by identifying problems and deriving new models (to-be models). It uses an integrated modeling approach combining goal models, use case descriptions, and context diagrams. Metrics are derived using the GQM method to help identify problems by quantifying aspects of the as-is model. The problems identified are then used to refine goals and develop an improved to-be model in an iterative process.
Guiding Identification of Missing Scenarios for Dynamic Feature LocationShinpei Hayashi
1) The document discusses identifying missing scenarios for dynamic feature location which involves specifying modules based on execution profiles obtained from scenarios. A lack of scenarios can lead to insufficient results.
2) It proposes finding clues for new scenarios by prioritizing which unexplored call dependencies to focus on for preparing additional scenarios. This is done by measuring the potential impact of unexplored dependencies using metrics like the number of outgoing unexplored dependencies.
3) The aim is to help guide the identification of missing scenarios that could provide more complete feature location results.
Modeling and Utilizing Security Knowledge for Eliciting Security RequirementsShinpei Hayashi
This document proposes a technique for eliciting security requirements early in the development process. It involves using security knowledge from security targets and common criteria standards. Potential threats are detected by matching scenario descriptions to threat patterns using graph transformation. When a threat is detected, a negative scenario is derived and security objectives are embedded to address the threat. An evaluation of the technique found it could accurately detect threats in scenarios from different domains, though some false positives and negatives occurred. Overall, the technique shows promise for aiding the elicitation of security requirements.
Terminology Matching of Requirements Specification Documents and Regulations ...Shinpei Hayashi
The document presents a technique for systematically checking compliance between requirements specifications and regulations by matching terminology. It involves detecting concepts in requirements documents and regulations, instantiating property templates to represent semantic relationships, and checking consistency using a model checker. The technique was implemented and tested on two case studies, demonstrating its ability to identify compliance violations. However, some failures occurred due to structural differences in case frames and relationships between formulas. Future work aims to improve matching accuracy through larger case studies.
Historef: A Tool for Edit History RefactoringShinpei Hayashi
Historef is a tool that helps refactor a project's edit history by grouping related code changes together into logical commits. It works by recording a developer's code edits using an edit recorder plugin in Eclipse, which allows Historef to obtain the changes and invoke refactoring commands to group tangled changes into switched commits, resulting in a cleaner edit history that is easier to understand and work with.
Class Responsibility Assignment as Fuzzy Constraint SatisfactionShinpei Hayashi
The document proposes formulating class responsibility assignment (CRA) as a fuzzy constraint satisfaction problem (FCSP). It represents CRA criteria like low coupling and high cohesion as fuzzy constraints. An initial CRA can be improved by reassigning responsibilities while satisfying constraints. Users' intentions can also be added as constraints. The approach was evaluated on two systems, showing reasonable accuracy in assigning responsibilities from scratch or improving initial assignments. Constraint satisfaction was fast enough. Developing an interactive design tool to support CRA using this flexible FCSP formulation was discussed.
Toward Understanding How Developers Recognize Features in Source Code from De...Shinpei Hayashi
The experiment compared how developers recognized target features in source code based on an original versus a refined natural language description of the feature. For two different features from an FL benchmark, subjects voted on which modules they thought implemented each feature after reading the original or refined description. For some modules actually relevant to the features, more subjects voted for them based on the refined descriptions, indicating the refined descriptions helped contributors recognize the target features.
This document summarizes research on refactoring edit histories of source code. It describes how edit histories can become tangled and hard to understand over time. The researchers propose refactoring edit histories by restructuring them without changing the overall effect of the edits. This involves primitive operations like swapping and merging changes. It also describes a supporting tool called Historef that performs history refactoring. Example applications include committing changes by task and selectively undoing changes.
Understanding Source Code Differences by Separating Refactoring EffectsShinpei Hayashi
The document discusses separating refactoring effects from source code differences by describing refactoring changes that were made between versions of code. It provides an example of refactoring changes made between two versions of code, including renaming a class and parameters, deleting a for-loop, commenting out code, and renaming a method. The example highlights how refactoring can introduce differences that are not actual behavior changes.
Supporting Design Model Refactoring for Improving Class Responsibility Assign...Shinpei Hayashi
The document discusses supporting automated refactoring of class responsibility assignment (CRA) designs. It proposes defining detection rules for CRA "bad smells" based on the GRASP pattern language, and defining transformation rules for refactoring operations. An example refactoring is introduced polymorphism, which separately assigns coordinated responsibilities to individual classes having a common parent class. The authors implemented a tool called RAST to detect CRA smells, suggest refactorings, and apply refactorings to support improving CRA designs.
Sentence-to-Code Traceability Recovery with Domain OntologiesShinpei Hayashi
The document describes a technique for recovering traceability between natural language sentences and source code using domain ontologies. An automated tool was implemented and evaluated on a case study using the JDraw software. Results showed the technique worked well, recovering traceability between 7 sentences and code with higher accuracy than without using the ontology. The ontology helped improve recall and detect traceability in cases where word similarity alone did not work well. Future work is needed to evaluate on larger cases and domains.
Malibou Pitch Deck For Its €3M Seed Roundsjcobrien
French start-up Malibou raised a €3 million Seed Round to develop its payroll and human resources
management platform for VSEs and SMEs. The financing round was led by investors Breega, Y Combinator, and FCVC.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Drona Infotech is a premier mobile app development company in Noida, providing cutting-edge solutions for businesses.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
Top 9 Trends in Cybersecurity for 2024.pptxdevvsandy
Security and risk management (SRM) leaders face disruptions on technological, organizational, and human fronts. Preparation and pragmatic execution are key for dealing with these disruptions and providing the right cybersecurity program.
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
Transform Your Communication with Cloud-Based IVR SolutionsTheSMSPoint
Discover the power of Cloud-Based IVR Solutions to streamline communication processes. Embrace scalability and cost-efficiency while enhancing customer experiences with features like automated call routing and voice recognition. Accessible from anywhere, these solutions integrate seamlessly with existing systems, providing real-time analytics for continuous improvement. Revolutionize your communication strategy today with Cloud-Based IVR Solutions. Learn more at: https://thesmspoint.com/channel/cloud-telephony
Mobile app Development Services | Drona InfotechDrona Infotech
Drona Infotech is one of the Best Mobile App Development Company In Noida Maintenance and ongoing support. mobile app development Services can help you maintain and support your app after it has been launched. This includes fixing bugs, adding new features, and keeping your app up-to-date with the latest
Visit Us For :
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
SMS API Integration in Saudi Arabia| Best SMS API ServiceYara Milbes
Discover the benefits and implementation of SMS API integration in the UAE and Middle East. This comprehensive guide covers the importance of SMS messaging APIs, the advantages of bulk SMS APIs, and real-world case studies. Learn how CEQUENS, a leader in communication solutions, can help your business enhance customer engagement and streamline operations with innovative CPaaS, reliable SMS APIs, and omnichannel solutions, including WhatsApp Business. Perfect for businesses seeking to optimize their communication strategies in the digital age.
3. How to collect refactoring data
Using detection tools
(e.g.. RefactoringMiner, RefDiff)
Using self-affirmed commits
(commit message filtering)
f6f7e4d
refactor: extract printing name
and outstanding
f6f7e4d
Extract Method
✓ Accuracy
✗ Type coverage
✓ Detail information
✗ Accuracy
✓ Type coverage
✗ Detail information