Preview: IEEE Software
IEEE Software's mission is to build the community of leading and future software practitioners. The magazine delivers reliable, useful, leading-edge software development information to keep engineers and managers abreast of rapid technology change. The au
Published: Mon, 3 Nov 2014 15:35:36 GMT
PrePrint: Onboarding in Open Source Software Projects
In today's world, many companies turn to open source projects as a source for increased productivity and innovation. A major challenge with managing this kind of development is the onboarding of new developers into virtual teams which drive such projects. However, there is little guidance on how to arrange the initiation of new members into such teams and how to overcome the learning curve. This case study on Open Source Software projects shows that mentoring can have a significant impact on onboarding new members into virtual software development teams.
PrePrint: Five years of Software Architecture Checking: A Case Study of Eclipse
Over time, source code tends to drift from the intended software architecture, often resulting in loss of desired software qualities. To help keep code aligned with intended architecture, the developers of core parts of the open-source Eclipse platform introduced a tool to express and check architectural rules. We analyze five years of Eclipse architecture checking reports produced by the tool. We describe the kinds of rules the developers found helpful to check, how code diverges from intended architecture, and how developers deal with architectural violations over time.
PrePrint: A Comprehensive Evaluation of Widespread Python Implementations
Python is a widely used general-purpose dynamic language. Due to its popularity, many different implementations exist for the two distinct Python 2 and Python 3 language versions. We evaluated seven different implementations of both language versions to facilitate the selection of one of them. For this purpose, we carefully selected a collection of 523 programs to be executed in each implementation. Runtime performance and memory consumption are evaluated, and some important qualitative characteristics of each implementation are also discussed.
PrePrint: Projecting a Modular Future
We describe two innovations in programming languages: modularity and projectional editing. Language modularity refers to the ability to combine independently developed languages without changing their respective definitions. A language is not anymore a fixed quantity, instead it can be extended with domain-specific constructs as needed. Projectional editing refers to a technique of building editors and IDEs that avoid the need for parsers. They support a wide range of tightly integrated notations including textual, symbolic, tabular and graphical. In addition, by avoiding parsers, the well-known limitations of grammar composition are avoided as well. The article illustrates the consequences of these two innovations for the design of (programming) languages with three examples. First, we discuss a set of modular extensions of C for embedded programming that enables efficient code generation and formal analysis. Second, we discuss a language for requirements engineering that flexibly combines structured and unstructured (prose) data. Third, we illustrate a language for defining insurance rules that makes use of mathematical notations. All examples rely on the open source JetBrains MPS language workbench.
PrePrint: Programming with Implicit Flows
Modern software differs significantly from traditional computer applications that mostly process reasonably small amounts of static input data-sets in batch mode. Modern software increasingly processes massive amounts of data, whereby it is also often the case that new input data is produced and/or existing data is modified on the fly. Consequently, programming models that facilitate the development of such software are emerging. What characterizes them is that data, respectively changes thereof, implicitly flow through computation modules. The software engineer declaratively defines computations as compositions of other computations without explicitly modeling how data should flow along dependency relations between data producer and data consumer modules, letting the runtime to automatically manage and optimize data flows.
PrePrint: Evolution of Software Systems with Extensible Languages and DSLs
Domain-specific languages (DSLs) provide various advantages regarding the maintainability of software systems. Unfortunately, existing approaches to DSLs do not support the integration of DSLs and their maintenance benefits into existing software systems. Based on the extensible programming language SugarJ, we present a process for integrating DLSs into existing software systems, we report on our experience in integrating three DSLs into two existing software systems, and we outline a roadmap for the development of tool support for the integration of DSLs.
PrePrint: What are hackathons for?
A swift execution from idea to market has become a key competitive advantage for software companies to enable them to survive and grow in turbulent business environments. Companies have begun to use hackathons to combat this challenge. A hackathon is a highly engaging, continuous event where people in small groups produce working software prototypes in a limited amount of time. This article examines hackathons in light of the experiences of a software product company called F-Secure. Hackathons were found to be a beneficial engineering solution to the fundamental business problem of how to make revenue from an idea, solving the phases spanning "from an idea to a software prototype." However, the main challenge of hackathons concerns how to transform those promising prototypes into finalized products that create revenue and real business value.
PrePrint: Inner Source--Adopting Open Source Development Practices within Organizations: A Tutorial
Inner source, the adoption and tailoring of Open Source development practices inside organizations, is a topic of increasing interest. While Inner Source offers a number of benefits, in our experience many practitioners are unclear as to what Inner Source is, and what steps to take towards adoption. In this article we present a tutorial in which we outline nine key factors, pertaining to product, process and organization, which we have found to be important in working with organizations who are interested in Inner Source. This paper illustrates these nine factors with three inner source initiatives that we have studied.
PrePrint: On the Relationship between the Number of Ad Libraries in an Android App and its Rating
One of the most popular ways to monetize a free app is by including advertisements in the app. There are several advertising (ad) companies that provide these ads to the app developers through ad libraries that need to be integrated in the app. However, the demand for ads far exceeds the supply for them. This obstacle may lead app developers to include several ad libraries from different ad companies in their app to assure receiving an ad when requested. However, there is no empirical evidence so far about how many ad libraries are integrated in an app. Additionally, there is no current research to examine if including many different ad libraries has an impact on the ratings of an app. In this paper, we examine these two issues, by empirically examining thousands of Android apps. We find that there are apps with as many as 28 ad libraries. We find no evidence that the number of ad libraries in an app is related to the ratings that an app can get. However, including certain specific ad libraries can negatively impact the rating of an app.