Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Laurie Williams is active.

Publication


Featured researches published by Laurie Williams.


IEEE Computer | 2003

Agile software development: it's about feedback and change

Laurie Williams; Alistair Cockburn

Currently, the focus is on determining how to blend agile methodologies with plan-driven approaches to software development.


technical symposium on computer science education | 2003

Improving the CS1 experience with pair programming

Nachiappan Nagappan; Laurie Williams; Miriam Ferzli; Eric N. Wiebe; Kai Yang; Carol Miller; Suzanne Balik

Pair programming is a practice in which two programmers work collaboratively at one computer, on the same design, algorithm, or code. Prior research indicates that pair programmers produce higher quality code in essentially half the time taken by solo programmers. An experiment was run to assess the efficacy of pair programming in an introductory Computer Science course. Student pair programmers were more self-sufficient, generally perform better on projects and exams, and were more likely to complete the class with a grade of C or better than their solo counterparts. Results indicate that pair programming creates a laboratory environment conducive to more advanced, active learning than traditional labs; students and lab instructors report labs to be more productive and less frustrating.


Lecture Notes in Computer Science | 2002

Empirical Findings in Agile Methods

Mikael Lindvall; Victor R. Basili; Barry W. Boehm; Patricia Dockhorn Costa; Kathleen Dangle; Forrest Shull; Roseanne Tesoriero; Laurie Williams; Marvin V. Zelkowitz

In recent years, the use of, interest in, and controversy about Agile methodologies have realized dramatic growth. Anecdotal evidence is rising regarding the effectiveness of agile methodologies in certain environments and for specified projects. However, collection and analysis of empirical evidence of this effectiveness and classification of appropriate environments for Agile projects has not been conducted. Researchers from four institutions organized an eWorkshop to synchronously and virtually discuss and gather experiences and knowledge from eighteen Agile experts spread across the globe. These experts characterized Agile Methods and communicated experiences using these methods on small to very large teams. They discussed the importance of staffing Agile teams with highly skilled developers. They shared common success factors and identified warning signs of problems in Agile projects. These and other findings and heuristics gathered through this valuable exchange can be useful to researchers and to practitioners as they establish an experience base for better decision making.


IEEE Transactions on Software Engineering | 2011

Evaluating Complexity, Code Churn, and Developer Activity Metrics as Indicators of Software Vulnerabilities

Yonghee Shin; Andrew Meneely; Laurie Williams; Jason A. Osborne

Security inspection and testing require experts in security who think like an attacker. Security experts need to know code locations on which to focus their testing and inspection efforts. Since vulnerabilities are rare occurrences, locating vulnerable code locations can be a challenging task. We investigated whether software metrics obtained from source code and development history are discriminative and predictive of vulnerable code locations. If so, security experts can use this prediction to prioritize security inspection and testing efforts. The metrics we investigated fall into three categories: complexity, code churn, and developer activity metrics. We performed two empirical case studies on large, widely used open-source projects: the Mozilla Firefox web browser and the Red Hat Enterprise Linux kernel. The results indicate that 24 of the 28 metrics collected are discriminative of vulnerabilities for both projects. The models using all three types of metrics together predicted over 80 percent of the known vulnerable files with less than 25 percent false positives for both projects. Compared to a random selection of files for inspection and testing, these models would have reduced the number of files and the number of lines of code to inspect or test by over 71 and 28 percent, respectively, for both projects.


international conference on software engineering | 2003

Assessing test-driven development at IBM

E.M. Maximilien; Laurie Williams

In a software development group of IBM Retail Store Solutions, we built a non-trivial software system based on a stable standard specification using a disciplined, rigorous unit testing and build approach based on the test-driven development (TDD) practice. Using this practice, we reduced our defect rate by about 50 percent compared to a similar system that was built using an ad-hoc unit testing approach. The project completed on time with minimal development productivity impact. Additionally, the suite of automated unit test cases created via TDD is a reusable and extendable asset that will continue to improve quality over the lifetime of the software system. The test suite will be the basis for quality checks and will serve as a quality contract between all members of the team.


IEEE Transactions on Software Engineering | 2006

On the value of static analysis for fault detection in software

Jiang Zheng; Laurie Williams; Nachiappan Nagappan; Will Snipes; John P. Hudepohl; Mladen A. Vouk

No single software fault-detection technique is capable of addressing all fault-detection concerns. Similarly to software reviews and testing, static analysis tools (or automated static analysis) can be used to remove defects prior to release of a software product. To determine to what extent automated static analysis can help in the economic production of a high-quality product, we have analyzed static analysis faults and test and customer-reported failures for three large-scale industrial software systems developed at Nortel Networks. The data indicate that automated static analysis is an affordable means of software fault detection. Using the orthogonal defect classification scheme, we found that automated static analysis is effective at identifying assignment and checking faults, allowing the later software production phases to focus on more complex, functional, and algorithmic faults. A majority of the defects found by automated static analysis appear to be produced by a few key types of programmer errors and some of these types have the potential to cause security vulnerabilities. Statistical analysis results indicate the number of automated static analysis faults can be effective for identifying problem modules. Our results indicate static analysis tools are complementary to other fault-detection techniques for the economic production of a high-quality software product.


Computer Science Education | 2002

In Support of Pair Programming in the Introductory Computer Science Course

Laurie Williams; Eric N. Wiebe; Kai Yang; Miriam Ferzli; Carol Miller

A formal pair programming experiment was run at North Carolina to empirically assess the educational efficacy of the technique in a CS1 course. Results indicate that students who practice pair programming perform better on programming projects and are more likely to succeed by completing the class with a C or better. Student pairs are more self-sufficient which reduces their reliance on the teaching staff. Qualitatively, paired students demonstrate higher order thinking skills than students who work alone. These results are supportive of pair programming as a collaborative learning technique.


foundations of software engineering | 2008

Predicting failures with developer networks and social network analysis

Andrew Meneely; Laurie Williams; Will Snipes; Jason A. Osborne

Software fails and fixing it is expensive. Research in failure prediction has been highly successful at modeling software failures. Few models, however, consider the key cause of failures in software: people. Understanding the structure of developer collaboration could explain a lot about the reliability of the final product. We examine this collaboration structure with the developer network derived from code churn information that can predict failures at the file level. We conducted a case study involving a mature Nortel networking product of over three million lines of code. Failure prediction models were developed using test and post-release failure data from two releases, then validated against a subsequent release. One models prioritization revealed 58% of the failures in 20% of the files compared with the optimal prioritization that would have found 61% in 20% of the files, indicating that a significant correlation exists between file-based developer network metrics and failures.


acm symposium on applied computing | 2003

An initial investigation of test driven development in industry

Boby George; Laurie Williams

Test Driven Development (TDD) is a software development practice in which unit test cases are incrementally written prior to code implementation. In our research, we ran a set of structured experiments with 24 professional pair programmers. One group developed code using TDD while the other a waterfall-like approach. Both groups developed a small Java program. We found that the TDD developers produced higher quality code, which passed 18% more functional black box test cases. However, TDD developer pairs took 16% more time for development. A moderate correlation between time spent and the resulting quality was established upon analysis. It is conjectured that the resulting high quality of code written using the TDD practice may be due to the granularity of TDD, which may encourage more frequent and tighter verification and validation. Lastly, the programmers which followed a waterfall-like process often did not write the required automated test cases after completing their code, which might be indicative of the tendency among practitioners toward inadequate testing. This observation supports that TDD has the potential of increasing the level of testing in the industry as testing as an integral part of code development.


Information & Software Technology | 2004

A structured experiment of test-driven development

Boby George; Laurie Williams

Abstract Test Driven Development (TDD) is a software development practice in which unit test cases are incrementally written prior to code implementation. We ran a set of structured experiments with 24 professional pair programmers. One group developed a small Java program using TDD while the other (control group), used a waterfall-like approach. Experimental results, subject to external validity concerns, tend to indicate that TDD programmers produce higher quality code because they passed 18% more functional black-box test cases. However, the TDD programmers took 16% more time. Statistical analysis of the results showed that a moderate statistical correlation existed between time spent and the resulting quality. Lastly, the programmers in the control group often did not write the required automated test cases after completing their code. Hence it could be perceived that waterfall-like approaches do not encourage adequate testing. This intuitive observation supports the perception that TDD has the potential for increasing the level of unit testing in the software industry.

Collaboration


Dive into the Laurie Williams's collaboration.

Top Co-Authors

Avatar

Mladen A. Vouk

North Carolina State University

View shared research outputs
Top Co-Authors

Avatar

Lucas Layman

North Carolina State University

View shared research outputs
Top Co-Authors

Avatar

Andrew Meneely

Rochester Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

Jason A. Osborne

North Carolina State University

View shared research outputs
Top Co-Authors

Avatar

Michael Gegick

North Carolina State University

View shared research outputs
Top Co-Authors

Avatar

Ben H. Smith

North Carolina State University

View shared research outputs
Top Co-Authors

Avatar

Jason Tyler King

North Carolina State University

View shared research outputs
Top Co-Authors

Avatar

Patrick Morrison

North Carolina State University

View shared research outputs
Top Co-Authors

Avatar

Akond Rahman

North Carolina State University

View shared research outputs
Researchain Logo
Decentralizing Knowledge