291,909 research outputs found
A Member of the International Code Family Internationall Plumbling Code
The I~zt~rr~c~tioPrlr1a~l1 rzbir1Cgo de is kept up to date through thc review of proposed changcs submitted by codc enSo~-cingo fficials,industry rcprescntatives, design professionals and other interested parties. Proposed changes are carefully cvnsidcrcrt through anopen codc dcvelopnient proccss in which all interested and affected parties may participate.The content.; of this work are subject to change both through the Code Development Cycles and the governmc~ltalb otly thatenact.; the code into law. For nlorc information regal-ding ~ h cco de dcvelopnient process. contact the Code and Standard DevclopmcntDepartnlent of the International Code Council.While the dcvelopmcnt proccdurc of the lrlfer.tzatiolla1 Pl~nnbing Code ensurcs thc highest ckgrec of care, ICC and ICC's Incmbersand those participating in the de\.elopment of this code do not accept any liability resulting from compliance or nonconiplianccwith thc pl-cwisions, since ICC and its members do not have the power or authority to police or enforce compliance with the contentsof this codc. Only the goverriniental body that enacts thc code into law has such authority
Code Flows: Visualizing Structural Evolution of Source Code
Understanding detailed changes done to source code is of great importance in software maintenance. We present Code Flows, a method to visualize the evolution of source code geared to the understanding of fine and mid-level scale changes across several file versions. We enhance an existing visual metaphor to depict software structure changes with techniques that emphasize both following unchanged code as well as detecting and highlighting important events such as code drift, splits, merges, insertions and deletions. The method is illustrated with the analysis of a real-world C++ code system.
Code choice and code-switching in Swiss-German internet relay chat rooms
In the German-speaking regions of Switzerland, dialect is spoken by all social groups in most communicative situations, Standard German being used only when prescribed. Swiss dialects rarely appeared in written form before the 1980s, apart from the genre of dialect literature. Due to the growing acceptance of informal writing styles in many European languages, dialect is increasingly employed for written personal communication, in particular in computer-mediated communication (CMC). In Swiss Internet Relay Chat (IRC) rooms, varieties of German are used side by side as all chatters have a command of both standard and dialectal varieties. Depending on the channel, the proportion of dialectal contributions can be as high as 90 percent. The choice of a particular variety depends on both individual preference and on the predominant variety used within a specific thread. In this paper I take a quantitative approach to language variation in IRC and demonstrate how such an approach can help embed qualitative research on code-switching in CMC
SATT: Tailoring code metric thresholds for different software architectures
Code metric analysis is a well-known approach for assessing the quality of a software system. However, current tools and techniques do not take the system architecture (e.g., MVC, Android) into account. This means that all classes are assessed similarly, regardless of their specific responsibilities. In this paper, we propose SATT (Software Architecture Tailored Thresholds), an approach that detects whether an architectural role is considerably different from others in the system in terms of code metrics, and provides a specific threshold for that role. We evaluated our approach on 2 different architectures (MVC and Android) in more than 400 projects. We also interviewed 6 experts in order to explain why some architectural roles are different from others. Our results shows that SATT can overcome issues that traditional approaches have, especially when some architectural role presents very different metric values than others.Maurício Aniche, Christoph Treude, Andy Zaidman, Arie van Deursen, Marco Aurélio Geros
A Tool for Optimizing the Build Performance of Large Software Code Bases
We present Build Analyzer, a tool that helps developers optimize the build performance of huge systems written in C. Due to complex C header dependencies, even small code changes can cause extremely long rebuilds, which are problematic when code is shared and modified by teams of hundreds of individuals. Build Analyzer supports several use cases. For developers, it provides an estimate of the build impact and distribution caused by a given change. For architects, it shows why a build is costly, how its cost is spread over the entire code base, which headers cause build bottlenecks, and suggests ways to refactor these to reduce the cost. We demonstrate Build Analyzer with a use-case on a real industry code base.
A security perspective on code review: The case of Chromium
Modern Code Review (MCR) is an established software development process that aims to improve software quality. Although evidence showed that higher levels of review coverage relates to less post-release bugs, it remains unknown the effectiveness of MCR at specifically finding security issues. We present a work we conduct aiming to fill that gap by exploring the MCR process in the Chromium open source project. We manually analyzed large sets of registered (114 cases) and missed (71 cases) security issues by backtracking in the project’s issue, review, and code histories. This enabled us to qualify MCR in Chromium from the security perspective from several angles: Are security issues being discussed frequently? What categories of security issues are often missed or found? What characteristics of code reviews appear relevant to the discovery rate?Within the cases we analyzed, MCR in Chromium addresses security issues at a rate of 1% of reviewers’ comments. Chromium code reviews mostly tend to miss language-specific issues (e.g., C++ issues and buffer overflows) and domain-specific ones (e.g., such as Cross-Site Scripting); when code reviews address issues, mostly they address those that pertain to the latter type. Initial evidence points to reviews conducted by more than 2 reviewers being more successful at finding security issues.Acknowledgments: European Union’s Horizon 2020 research and innovation programme under the Marie Sklodowska-Curie grant agreement No 642954Software Engineerin
Rcpp: Seamless R and C++ Integration
The Rcpp package simplifies integrating C++ code with R. It provides a consistent C++ class hierarchy that maps various types of R objects (vectors, matrices, functions, environments, . . . ) to dedicated C++ classes. Object interchange between R and C++ is managed by simple, flexible and extensible concepts which include broad support for C++ Standard Template Library idioms. C++ code can both be compiled, linked and loaded on the fly, or added via packages. Flexible error and exception code handling is provided. Rcpp substantially lowers the barrier for programmers wanting to combine C++ code with R.
STATIC CODE ANALYSIS
A lot of the defects that are present in a program are not visible to the compiler. Static code analysis is a way to find bugs and reduce the defects in a software application. This paper gives you an overview on static code analysis, well-known tools and the benefits of this practice.code, analysis
CODEWEAVE: exploring fine-grained mobility of code
This paper is concerned with an abstract exploration of code mobility constructs designed for use in settings where the level of granularity associated with the mobile units exhibits significant variability. Units of mobility that are both finer and coarser grained than the unit of execution are examined. To accomplish this, we take the extreme view that every line of code and every variable declaration are potentially mobile, i.e., it may be duplicated or moved from one program context to another on the same host or across the network. We also assume that complex code assemblies may move with equal ease. The result is CODEWEAVE, a model that shows how to develop new forms of code mobility, assign them precise meaning, and facilitate formal verification of programs employing them. The design of CODEWEAVE relies greatly on Mobile UNITY, a notation and proof logic for mobile computing. Mobile UNITY offers a computational milieu for examining a wide range of constructs and semantic alternatives in a clean abstract setting, i.e., unconstrained by compilation and performance considerations traditionally associated with programming language design. Ultimately, the notation offered by CODEWEAVE is given exact semantic definition by means of a direct mapping to the underlying Mobile UNITY model. The abstract and formal treatment of code mobility offered by CODEWEAVE establishes a technical foundation for examining competing proposals and for subsequent integration of some of the mobility constructs both at the language level and within middleware for mobility
Silicon 5 Code Generator
The goal of the project was to extend an already existing code generator that automatically generates web applications. The company Fenêtre develops complex web solutions with their in-house developed framework, called the Silicon Framework. The code generator generates basic functionality and a user interface for database maintenance screens, like view-, create-, edit-, list- and list-edit screens. This saves a lot of time for the developers of Fenêtre, because these screens are always required for new web applications. These screens, however, were not enough and that iswhy the generator needs to be extended. Sometimes, database changes are made after a web application has already been generated. Manual appending of new code is required at many different places in the application which is a very time-consuming and error-prone process. Automatically generating this new code at the right places in an existing project is a challenge, but favours the developer enormously. Additionally, in many cases representing the relations data alone, is not enough to get a good overview of the data in the interface of a database maintenance application. For example, a category table could have a relationship with the products table in a database. It would make a lot of sense that in a database maintenance screen, a category can be viewed with all of its products on the same screen and maybe edit products immediately. The challenge here is that automatic generation of code for this kind of relationships requires a lot of information to correctly represent this information in the user interface. The final product is a fully functional code generator that is able to generate screens which represent relations and its relationships data in an intuitive way. In addition, the generator also automatically appends screens, relationships screens and database changes to an existing project. Along theway, other compatibility issues were fixed with the always improving Silicon framework. Remaining possibilities and wishes are listed in the recommendation chapter. Finally, the code generator will be extended even more in the future while the advantages are becoming clearer.Electrical Engineering, Mathematics and Computer ScienceSoftware TechnologyTI380
- …
