To characterize the building blocks of a legacy software system (e.g., structure, dependencies), programmers usually spend a long time navigating its source code. Yet, modern integrated development environments (IDEs)...
详细信息
ISBN:
(纸本)9781450379588
To characterize the building blocks of a legacy software system (e.g., structure, dependencies), programmers usually spend a long time navigating its source code. Yet, modern integrated development environments (IDEs) do not provide appropriate means to efficiently achieve complex software comprehension tasks. To deal with this unfulfilled need, we present Hunter, a tool for the visualization of javascript applications. Hunter visualizes source code through a set of coordinated views that include a node-link diagram that depicts the dependencies among the components of a system, and a treemap that helps programmers to orientate when navigating its structure. In this paper, we report on a controlled experiment that evaluates Hunter. We asked 16 participants to solve a set of software comprehension tasks, and assessed their effectiveness in terms of (i) user performance (i.e., completion time, accuracy, and attention), and (ii) user experience (i.e., emotions, usability). We found that when using Hunter programmers required significantly less time to complete various software comprehension tasks and achieved a significantly higher accuracy. We also found that the node-link diagram panel of Hunter gets most of the attention of programmers, whereas the source code panel does so in Visual Studio Code. Moreover, programmers considered that Hunter exhibits a good user experience.
The aim of this work was to explore the possibilities of open technologies for the creation of IoT systems such as Mozilla IoT in javascript. The work dealt with open source Things Gateway platform. The development be...
详细信息
ISBN:
(纸本)9781728143811
The aim of this work was to explore the possibilities of open technologies for the creation of IoT systems such as Mozilla IoT in javascript. The work dealt with open source Things Gateway platform. The development behind Things Gateway is done by Mozilla in collaboration with some volunteers. They strive is to provide frameworks and a new kind of application layer that would facilitate the programming and management of smart devices connected to the IoT system. The paper describes emerging standard such as Web of Things. In the last section of the paper is explained how to create an adapter for a new device using the Things Framework, that runs on the Raspberry Pi computer.
Software security is undoubtedly a major concern in today's software engineering. Although the level of awareness of security issues is often high, practical experiences show that neither preventive actions nor re...
详细信息
ISBN:
(纸本)9781450375177
Software security is undoubtedly a major concern in today's software engineering. Although the level of awareness of security issues is often high, practical experiences show that neither preventive actions nor reactions to possible issues are always addressed properly in reality. By analyzing large quantities of commits in the open-source communities, we can categorize the vulnerabilities mitigated by the developers and study their distribution, resolution time, etc. to learn and improve security management processes and practices. With the help of the Software Heritage Graph Dataset, we investigated the commits of two of the most popular script languages Python and javascript - projects collected from public repositories and identified those that mitigate a certain vulnerability in the code (i.e. vulnerability resolution commits). On the one hand, we identified the types of vulnerabilities (in terms of CWE groups) referred to in commit messages and compared their numbers within the two communities. On the other hand, we examined the average time elapsing between the publish date of a vulnerability and the first reference to it in a commit. We found that there is a large intersection in the vulnerability types mitigated by the two communities, but most prevalent vulnerabilities are specific to language. Moreover, neither the javascript nor the Python community reacts very fast to appearing security vulnerabilities in general with only a couple of exceptions for certain CWE groups.
The fastest javascript production implementations use just-in-time (JIT) compilation and the vast majority of academic publications about implementations of dynamic languages published during the last two decades focu...
详细信息
The fastest javascript production implementations use just-in-time (JIT) compilation and the vast majority of academic publications about implementations of dynamic languages published during the last two decades focus on JIT compilation. This does not imply that static compilers (AoT) cannot be competitive;as comparatively little effort has been spent creating fast AoT javascript compilers, a scientific comparison is lacking. This paper presents the design and implementation of an AoT javascript compiler, focusing on a performance analysis. The paper reports on two experiments, one based on standard javascript benchmark suites and one based on 18 new benchmarks chosen for their diversity of styles, authors, sizes, provenance, and coverage of the language. The first experiment shows an advantage to JIT compilers, which is expected after the decades of effort that these compilers have paid to these very tests. The second shows more balanced results, as the AoT compiler generates programs that reach competitive speeds and that consume significantly less memory. The paper presents and evaluates techniques that we have either invented or adapted from other systems, to improve AoT javascript compilation.
A significant fraction of the World Wide Web suffers from the excessive usage of javascript (JS). Based on an analysis of popular webpages, we observed that a considerable number of JS elements utilized by these pages...
详细信息
ISBN:
(纸本)9781450370233
A significant fraction of the World Wide Web suffers from the excessive usage of javascript (JS). Based on an analysis of popular webpages, we observed that a considerable number of JS elements utilized by these pages are not essential for their visual and functional features. In this paper, we propose JSCleaner, a javascript de-cluttering engine that aims at simplifying webpages without compromising their content or functionality. JSCleaner relies on a rule-based classification algorithm that classifies JS into three main categories: non-critical, replaceable, and critical. JSCleaner removes non-critical JS from a webpage, translates replaceable JS elements with their HTML outcomes, and preserves critical JS. Our quantitative evaluation of 500 popular webpages shows that JSCleaner achieves around 30% reduction in page load times coupled with a 50% reduction in the number of requests and the page size. In addition, our qualitative user study of 103 evaluators shows that JSCleaner preserves 95% of the page content similarity, while maintaining nearly 88% of the page functionality (the remaining 12% did not have a major impact on the user browsing experience).
javascript is a ubiquitous programming language with usage in web, mobile applications and server software. The status of the language as the de-facto programming language of the web has made the language ecosystem ad...
详细信息
javascript is a ubiquitous programming language with usage in web, mobile applications and server software. The status of the language as the de-facto programming language of the web has made the language ecosystem advanced with a great number of userspace libraries and major companies working on efficient runtime systems. The core language, however, has numerous known difficulties caused by the initial design and persisted by the requirements for backwards-compatibility. In the last decade, a number of programming languages have chosen javascript as the compile target of the language.
Type theory and its application, programming language type systems, is an essential area of study in the design of programming languages. Every high-level programming language features a type system that greatly influences the ways of designing and implementing programs in the language. This thesis examines a group of selected statically-typed programming languages that compile to javascript. The core topics of research in this thesis are the motivation for new JS-compiled languages, the type system design of the languages, and the future direction of the javascript ecosystem based on the current trends and parallels to other programming ecosystems.
The results of the work include identifying several trends in type systems for the JS ecosystem and the web. These include unsound yet convenient partially inferred type systems for object-oriented and multi-paradigm programming and fully inferred extended Hindley-Milner type systems for primarily functional programming languages. Additionally, different options for the advancement of the programming ecosystem, including type annotations, inference of dynamically typed languages and new compile targets, are explored. Finally, based on the design choices of the languages researched, we provide several recommendations for safe and productive statically typed programming in the javascript ecosystem.
The landscape of web development has been constantly changing. With the appearance and adoption of new libraries, web applications are becoming more and more sophisticated. Continuous integration and continuous deploy...
详细信息
The landscape of web development has been constantly changing. With the appearance and adoption of new libraries, web applications are becoming more and more sophisticated. Continuous integration and continuous deployment (CI/CD) are also being implemented in more and more projects. These changes have driven the increasing need for automated testing to improve robustness and shorten delivery time.
This study investigates how a testing solution can be designed and implemented for a typical web application where javascript serves as the prioritized programming language in the technology stack.
Firstly, an investigation is made on which tools can be used to fulfill which functionality in web application testing. In each of the functionality category, some of the most popular tools are compared against each other. Then a discussion is made on how to implement a testing solution that covers unit/integration/E2E testing in both the frontend and the backend with tools that fit the given technical requirements best.
The focus of work in on improving E2E testing, as E2E testing is generally more time consuming than unit testing or integration testing. This goal is achieved by attempting changes to the architecture in implementation and exploiting some modern javascript features. Besides making improvements on a baseline solution, a new approach to drive browser automation is also experimented. The new approach aims to control the browser within the browser itself using client-side javascript instead of outside the browser (such as using WebDriver protocol etc.). An experimental implementation of this idea. And the advantages and limitations of this approach are discussed.
The implemented solution is evaluated based on functionality requirements given by the target application, execution time as well as error rate.
暂无评论