RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 72
TI Consider Multiple Solutions
A1 Jeff Patton,
K1 sketchboarding
K1 design studio
K1 design technique
AB Design teams rarely consider multiple solution ideas before committing to one. They often forget that an even better idea could be just around the corner, and consider alternative ideas only when they don't like the current one. Using sketchboarding, design studio, or a combination of these two techniques can let teams quickly ideate over many solutions. They then have a chance to arrive at a solution that no one individual had thought of.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.134
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.134

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 45
TI Code Conjurer: Pulling Reusable Software out of Thin Air
A1 Werner Janjic,
A1 Oliver Hummel,
A1 Colin Atkinson,
K1 software reuse
K1 open source software
K1 component-based development
K1 software search engines
K1 test-driven search
K1 reuse recommendation
K1 Eclipse plug-in
AB Accelerating the software development process by assembling new applications from existing software assets has been a goal of the IT industry for many years. However, most of today's systematic software reuse uses heavyweight approaches such as product-line engineering. Now, with the explosion in open source software repositories and the advent of a new generation of powerful software search engines, this is set to change. Code Conjurer is an Eclipse plug-in that extracts interface and test information from a developer's coding activities and uses this information to issue test-driven searches to a code-search engine. It presents components matching the developer's needs as reuse recommendations without disturbing the development work. Automated dependency resolution then allows selected components to be woven into the current project with minimal manual effort.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.110
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.110

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 38
TI Refactoring Tools: Fitness for Purpose
A1 Emerson Murphy-Hill,
A1 Andrew P. Black,
K1 keywords: refactoring
K1 software development
K1 software tools
AB Refactoring tools can improve the speed and accuracy with which developers create and maintain software—but only if they are used. In practice, tools are not used as much as they could be; this seems to be because sometimes they do not align with the refactoring tactic preferred by most programmers, a tactic the authors call "floss refactoring." They propose five principles that characterize successful floss-refactoring tools—principles that can help programmers to choose the most appropriate refactoring tools and also help toolsmiths to design tools that fit the programmer's purpose.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.123
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.123

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 10
TI The Biological Half-Life of Software Engineering Ideas
A1 Philippe Kruchten,
K1 software engineering
K1 software careers
K1 professional development
AB The first installment of this new column on professional development discusses how some software engineering ideas have a half-life. The author conjectures that this half-life is roughly five years, and outlines the need for software engineers to thus stay abreast of new technologies.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.127
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.127

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 22
TI Using Static Analysis to Find Bugs
A1 Nathaniel Ayewah,
A1 John Penix,
A1 J. David Morgenthaler,
A1 William Pugh,
A1 David Hovemeyer,
K1 static analysis
K1 FindBugs
K1 code quality
K1 bug patterns
K1 software defects
K1 software quality
AB Static analysis examines code in the absence of input data and without running the code. It can detect potential security violations (SQL injection), runtime errors (dereferencing a null pointer) and logical inconsistencies (a conditional test that can't possibly be true). Although a rich body of literature exists on algorithms and analytical frameworks used by such tools, reports describing experiences in industry are much harder to come by. The authors describe FindBugs, an open source static-analysis tool for Java, and experiences using it in production settings. FindBugs evaluates what kinds of defects can be effectively detected with relatively simple techniques and helps developers understand how to incorporate such tools into software development.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.130
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.130

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 95
TI Negative Productivity and What to Do about It
A1 Robert L. Glass,
K1 software development
K1 productivity
AB Three anecdotes show how one member of a work team can decrease the whole team's productivity.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.121
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.121

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 30
TI Automating Software Testing Using Program Analysis
A1 Michael Y. Levin,
A1 Wolfram Schulte,
A1 Patrice Godefroid,
A1 Nikolai Tillmann,
A1 Peli de Halleux,
A1 Aditya V. Nori,
A1 Sriram K. Rajamani,
K1 Software Testing
K1 Automatic Test Generation
K1 Program Verification
K1 Reliability
K1 Security
AB During the last 10 years, code inspection for standard programming errors has largely been automated with static code analysis. During the next 10 years, we expect to see similar progress in automating testing, and specifically test generation, thanks to advances in program analysis, efficient constraint solvers, and powerful computers. Three new tools from Microsoft combine techniques from static program analysis, dynamic analysis, model checking, and automated constraint solving while targeting different application domains.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.109
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.109

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 74
TI Achievements and Challenges in Cocomo-Based Software Resource Estimation
A1 Ricardo Valerdi,
A1 Barry W. Boehm,
K1 metrics
K1 measurement
K1 cost estimation
K1 Cocomo
K1 software engineering economics
AB This article summarizes major achievements and challenges of software resource estimation over the last 40 years, emphasizing the Cocomo suite of models. Critical issues that have enabled major achievements include the development of good model forms, criteria for evaluating models, methods for integrating expert judgment and statistical data analysis, and processes for developing new models that cover new software development approaches. The article also projects future trends in software development and evolution processes, along with their implications and challenges for future software resource estimation capabilities.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.133
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.133

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 53
TI Volta: Developing Distributed Applications by Recompiling
A1 Benjamin Livshits,
A1 Brian Beckman,
A1 Dragos Manolescu,
K1 distributed
K1 Internet-based software engineering tools and techniques; code generation; retargetable compilers; measurements; distributed programming; refactoring; Ajax
AB Mainstream languages and tools are tailored for sequential, nondistributed applications, with support for distributed computing provided only in library APIs. Such programming environments force developers to make decisions early in the application life cycle about where the code should run, structuring the entire application around partitioning decisions. Performance measurement might reveal that the original partitioning was wrong, but redistributing the application is expensive because redistributing is restructuring. This article describes a new kind of tool suite that recompiles executables into a distributed form on the basis of declarative user annotations, inserting most of the necessary remoting and synchronization boilerplate code and facilitating post hoc instrumentation to drive quantitative redistribution. Because the tools operate on the intermediate language CIL (.NET Common Intermediate Language), they're compatible with a wide variety of .NET programming languages and eventual execution environments, even those that don't support CIL directly, such as JavaScript.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.131
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.131

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 70
TI Enabling Change
A1 Rebecca J. Wirfs-Brock,
K1 software design
K1 refactoring
AB Enabling continued, steady change requires that we integrate design corrections and adjustments into the natural course of development.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.114
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.114

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 16
TI In or Out?
A1 J.B. Rainsberger,
K1 software development
K1 communication
K1 conflict
K1 team dynamics
AB Many people do great work but still can't satisfy their customers. When this happens to you, either learn to live with the results or take the reins and change them. Whichever path you choose, commit to it.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.117
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.117

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 4
TI Must Software Research Stand Divided?
A1 Hakan Erdogmus,
K1 empirical research
K1 empirical software engineering
K1 constructionist software engineering
AB A not-so-subtle divide separates empirical and constructionist software research. Constructionists maintain that software research should be about creating technologies, devising new methods. Empiricists are interested in studying and understanding existing approaches. The antagonism between the two camps does not serve our industry well—it needs both modes of research.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.120
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.120

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 84
TI A Replicated Survey of IT Software Project Failures
A1 Khaled El Emam,
A1 A. Günes Koru,
K1 software engineering management
K1 productivity
K1 programming teams
K1 project control and modeling
K1 review and evaluation
K1 risk management
K1 schedule and organizational issues
AB Despite various industry reports about the failure rates of software projects, there's still uncertainty about the actual figures. Researchers performed a global Web survey of IT departments in 2005 and 2007. The results suggest that the software crisis is perhaps exaggerated and that most software projects deliver. However, the overall project failure rate, including cancelled and completed but poorly performing projects, remains arguably high for an applied discipline.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.107
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.107

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 12
TI Developing Flexible Software Using Agent-Oriented Software Engineering
A1 Hisham Mubarak,
K1 agent-oriented software engineering
K1 agent platforms
AB Software agents are associated with modern industrial software. In various application fields such as e-business, telecommunications, logistics, and industrial automation, software based on agents seems to make the challenges in modern applications easier to overcome. However, it's often unclear what a software agent is and why problems can be better solved with it. Is it concerning a technology, an architecture, or a programming concept? This article presents a general introduction to software agent concepts from the software engineer's perspective, explaining the theoretical basis and clarifying to which type of problem software agents might represent a reasonable approach.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.135
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.135

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 7
TI How Do We Build Trust into E-commerce Web Sites?
A1 Patricia Beatty,
A1 Ejike Ofuonye,
A1 Scott Dick,
A1 James Miller,
A1 Ian Reay,
K1 trust
K1 e-commerce
K1 trust factors
AB Trust is a subjective, user-centric, context-dependent concept, and is thus difficult to define universally. On the Internet, several factors make trust more difficult to build, explaining why some successful brick-and-mortar retail chains have been unable to translate their reputation to the virtual platform the Web offers. Researchers in many fields have been interested in how to build trust in e-commerce sites. To address this issue, the authors reviewed the available literature on the topic, examining 28 relevant publications in depth to identify relationships among factors that impact trust.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.136
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.136

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 60
TI Tool Support for Continuous Quality Control
A1 Florian Deissenboeck,
A1 Stefan Wagner,
A1 Markus Pizka,
A1 Benjamin Hummel,
A1 Elmar Juergens,
A1 Benedikt Mas y Parareda,
K1 software engineering
K1 software quality
K1 project management
K1 project control and modeling
AB Over time, software systems suffer gradual quality decay and therefore costs can rise if organizations fail to take proactive countermeasures. Quality control is the first step to avoiding this cost trap. Continuous quality assessments help users identify quality problems early, when their removal is still inexpensive; they also aid decision making by providing an integrated view of a software system's current status. As a side effect, continuous and timely feedback helps developers and maintenance personnel improve their skills and thereby decreases the likelihood of future quality defects. To make regular quality control feasible, it must be highly automated, and assessment results must be presented in an aggregated manner to avoid overwhelming users with data. This article offers an overview of tools that aim to address these issues. The authors also discuss their own flexible, open-source toolkit, which supports the creation of dashboards for quality control.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.129
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.129

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 91
TI Inventive Tool Use to Comprehend Big Code
A1 Sukanya Ratanotayanon,
A1 Susan Elliott Sim,
K1 software maintenance
K1 program comprehension
K1 navigation and visualization tools
AB Software developers often need to understand a large body of unfamiliar code with little or no documentation, no experts to consult, and little time to do it. A post appeared in January 2008 on Slashdot, a technology news Web site, asking for tools and techniques that could help. This article analyzes 301 often passionate and sometimes articulate responses to this query, including the themes and the associated tool recommendations. The most common suggestions were to use a code navigation tool, use a design recovery tool, use a debugger to step through the code, create a runtime trace, use problem-based learning, ask people for help, study the code from top down, and print out all the code. This analysis presents an intriguing snapshot of how software developers in industry go about comprehending big code.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.118
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.118

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 68
TI Theater Improvisers Know the Requirements Game
A1 Neil Maiden,
A1 Martin Mahaux,
K1 requirements processes
K1 training
K1 improvisational theater
AB This article introduces improvisational theater, or improv, to support team-based innovation in requirements processes. It proposes improv to help workshop participants develop requirements soft skills through practice and play. The authors describe and demonstrate different improv techniques with simple examples, then advise readers on how to introduce them into requirements projects.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.128
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.128

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 18
TI Where's My Jetpack?
A1 Arthur Ryman,
A1 Diomidis Spinellis,
A1 Simon Helsen,
K1 software development tools
K1 abstraction
K1 source code
K1 quality
K1 outlook
AB Software development tools often fail to deliver on inflated promises. Rather than the predicted progression toward ever-increasing levels of abstraction, two simple trends have driven the evolution of currently available software development tools: integration at the source-code level and a focus on quality. Thus source code has become the bus that tools tap into for communicating with other tools. Also, focus has shifted from defect removal in the later phases to defect prevention in the earlier phases. In the future, tools are likely to support higher levels of abstraction, perhaps in the form of domain-specific languages communicated using XML.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.138
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.138

RT Journal Article
JF IEEE Software
YR 2008
VO 25
IS
SP 93
TI Nine Things You Can Do with Old Software
A1 Grady Booch,
K1 software architecture
K1 software architecture economics
K1 software development life cycle
AB Every new line of code quickly becomes legacy. When that legacy mounts, it forms a significantly massive pile of software, which cannot be ignored. This article discusses what we can do intentionally with such piles, from abandonment to evolution and many things in between.
PB IEEE Computer Society, [URL:http://www.computer.org]
SN 0740-7459
LA English
DO 10.1109/MS.2008.139
LK http://doi.ieeecomputersociety.org/10.1109/MS.2008.139