Open sourcesoftware or, more accurately, freely licensed open sourcesoftware (FLOSS) at first appears to present a dilemma when adopted as part of a business model. If users are allowed to access, modify, and/or red...
详细信息
Open sourcesoftware or, more accurately, freely licensed open sourcesoftware (FLOSS) at first appears to present a dilemma when adopted as part of a business model. If users are allowed to access, modify, and/or redistribute the sourcecode, how does a company protect its intellectual property and, more fundamentally, sell something that can be easily and legally reproduced?
CrowdSummarizer exploits crowdsourcing, gamification, and natural-language processing to automatically generate high-level summaries of Java program methods. Researchers have implemented it as an Eclipse plug-in toget...
详细信息
CrowdSummarizer exploits crowdsourcing, gamification, and natural-language processing to automatically generate high-level summaries of Java program methods. Researchers have implemented it as an Eclipse plug-in together with a web-based code summarization game that can be played by the crowd.
Collaborative design exposes software architects to the risk of making conflicting modeling changes that either can’t be merged or, when merged, violate consistency rules, nonfunctional requirements, or other system ...
详细信息
Collaborative design exposes software architects to the risk of making conflicting modeling changes that either can’t be merged or, when merged, violate consistency rules, nonfunctional requirements, or other system constraints. Such design conflicts are common and incur a high cost, including having to redo and abandon work. Proactive conflict detection can alleviate this risk. This article motivates the need for design conflict detection, describes the benefits of such detection to practitioners, and identifies requirements for building detection tools. In particular, FLAME is a collaborative-design framework that efficiently and continuously detects design conflicts. This article is part of a theme issue on collaborative modeling.
Continuous integration has been around for a while now, but the habits it suggests are far from common practice. Automated builds, a thorough test suite, and committing to the mainline branch every day sound simple at...
详细信息
Continuous integration has been around for a while now, but the habits it suggests are far from common practice. Automated builds, a thorough test suite, and committing to the mainline branch every day sound simple at first, but they require a responsible team to implement and constant care. What starts with improved tooling can be a catalyst for long-lasting change in your company's shipping culture. Continuous integration is more than a set of practices, it's a mindset that has one thing in mind: increasing customer value. The Web extra at http://***/tDl_cHfrJZo is an audio podcast of the Tools of the Trade column discusses how continuous integration is more than a set of practices, it's a mindset that has one thing in mind: increasing customer value.
Programs sometimes tend to lose their structure and clarity through the addition of error handling. Often, more than half of a code base ends up dedicated to various types of error detection and recovery, obscuring th...
详细信息
Programs sometimes tend to lose their structure and clarity through the addition of error handling. Often, more than half of a code base ends up dedicated to various types of error detection and recovery, obscuring the nominal control flow that defines the basic structure. The challenge in writing reliable code is to find ways to remove code from an application by simplifying and generalizing, rather than continuing to add more.
The kind of staged computation that will discuss here is something quite different: It is the very use of compilers. A compiler transforms a program from one notation ("sourcecode") to another notation (&qu...
详细信息
The kind of staged computation that will discuss here is something quite different: It is the very use of compilers. A compiler transforms a program from one notation ("sourcecode") to another notation ("executable binary"). Executing a piece of sourcecode thus requires two stages: the first stage, compilation, produces the code that is run in the second stage, execution. But that is not the end of the story. The compiler you run is typically an executable binary stored somewhere in your computer's file system, and so are the libraries that a program makes use of. These binaries have been produced by someone else, on another computer, using yet another compiler. So our two-stage computation is really a many-stage computation, with the results of the initial stages stored on some server for downloading by people like you. Package managers, such as apt used by Linux distributions such as Debian or Ubuntu, or Homebrew for macOS, make this approach straightforward in practice.
Design by contract (DBC) is a technique that improves the quality of your team's code. It yields code with both a logical and a procedural nature, where the contracts state declaratively what will happen, and the ...
详细信息
Design by contract (DBC) is a technique that improves the quality of your team's code. It yields code with both a logical and a procedural nature, where the contracts state declaratively what will happen, and the implementations procedurally cause the desired effect. The team can reason either logically, by using the contracts, or procedurally, by following the code line by line, but the former allows them to reason about far larger programs. It also creates conditions for deliberate practice so developers using DBC grow their design skills faster.
sourcecode reveals abstractions from two places: the problem and the solution. It's easier to design and evolve a system when you understand each of them separately before you combine them in code. With skill, it...
详细信息
sourcecode reveals abstractions from two places: the problem and the solution. It's easier to design and evolve a system when you understand each of them separately before you combine them in code. With skill, it's possible to separate those concerns in the code. Declarative understanding of the abstractions is the most useful and easy to convey. However, current software development processes rarely guide developers to do this.
Test smells are poorly designed tests and negatively affect the quality of test suites and production code. We present the largest catalog of test smells, along with a summary of guidelines, techniques, and tools used...
详细信息
Test smells are poorly designed tests and negatively affect the quality of test suites and production code. We present the largest catalog of test smells, along with a summary of guidelines, techniques, and tools used to deal with test smells.
code review has been widely adopted by and adapted to open source and industrial projects. code review practices have undergone extensive research, with most studies relying on trace data from tool reviews, sometimes ...
详细信息
code review has been widely adopted by and adapted to open source and industrial projects. code review practices have undergone extensive research, with most studies relying on trace data from tool reviews, sometimes augmented by surveys and interviews. Several recent industrial research studies, along with blog posts and white papers, have revealed additional insights on code reviewing “from the trenches.” Unfortunately, the lessons learned about code reviewing are widely dispersed and poorly summarized by the existing literature. In particular, practitioners wishing to adopt or reflect on an existing or new code review process might have difficulty determining what challenges to expect and which best practices to adopt for their development context. Building on the existing literature, this article adds insights from a recent large-scale study of Microsoft developers to summarize the challenges that code-change authors and reviewers face, suggest best code-reviewing practices, and discuss tradeoffs that practitioners should consider. This article is part of a theme issue on Process Improvement.
暂无评论