Software Robustness: From Requirements to Verification
Doctoral thesis, 2013

The importance of software quality increases as software products become more intertwined with our everyday lives. A critical software quality attribute is robustness, i.e. that the software shows stable behavior in stressful conditions and when receiving faulty inputs. Even though this has been a long-term goal in software engineering, few studies directly target robustness. The overall goal of this thesis is to identify gaps in the knowledge and take steps towards improving and creating methods to work with software robustness. To identify gaps in the state of knowledge, this thesis first describes a systematic review of the academic literature on software robustness. The results, based on analysis of 144 relevant papers, suggest that the most prominent contributions on robustness are methods and tools for random testing on the external interfaces of systems. Another finding is the lack of empirical evidence and guidelines on how to dene and specify robustness. Additionally, there is a lack of methods to elicit, analyze, and specify robustness requirements in a systematic way, and to test these requirements. To address the goals of the thesis, we have worked with ve industrial companies. We examined the state of practice by conducting interviews and analyzing requirements documents at some of our partner companies to identify improvement potential. The results show that there also is a lack of systematic methods to specify and test quality requirements in practice. Furthermore, unverifiable quality requirements are still a source of problem and high cost to software development projects. To address these issues, we constructed a framework for analysis, elicitation, and specification of software robustness (ROAST). Based on simple models for root causes and symptoms of robustness failures, we have identified 19 patterns for robustness requirements. Further, ROAST includes a notion of specification levels that helps practitioners refine high-level requirements to a verifiable level. The framework has been evaluated using document analysis, interviews, and surveys at the partner companies. The evaluations have investigated the usefulness, quality, and generalizability of ROAST and have helped us improve the framework over time. The last part of the thesis uses the patterns in ROAST, to specify generic robustness properties that the system should fulfill. We present a testing framework, RobusTest, that uses these properties to automatically generate robustness test cases. This provides a more focused testing than complete random testing. We have implemented and evaluated parts of this framework and found robustness issues in open source and well-tested industrial systems. This thesis provides guidelines for and discusses how practitioners can more systematically work with robustness from requirements elicitation and analysis to testing.

robustness

quality requirements

requirements patterns

robustness testing

requirements specification

non-functional requirements

requirements refinement

HC3
Opponent: Tor Stålhane

Author

Ali Shahrokni

Chalmers, Computer Science and Engineering (Chalmers), Software Engineering (Chalmers)

RobusTest: A Framework for Automated Testing of Software Robustness

APSEC 2011,; (2011)p. 171-178

Paper in proceeding

Robustness Verification Challenges in Automotive Telematics Software

21st International Conference on Software Engineering and Knowledge Engineering, SEKE 2009, Boston, MA, United States, 1-3 July 2009,; (2009)p. 460-465

Paper in proceeding

A systematic review of software robustness

Information and Software Technology,; Vol. 55(2013)p. 1-17

Review article

Areas of Advance

Information and Communication Technology

Subject Categories

Software Engineering

ISBN

978-91-7385-831-1

Doktorsavhandlingar vid Chalmers tekniska högskola. Ny serie: 3512

HC3

Opponent: Tor Stålhane

More information

Created

10/6/2017