Author_Institution :
Dept. of Comput. Sci. & Eng., Nebraska Univ., Lincoln, NE
Abstract :
Summary form only given. Not long ago, most software was written by professional programmers, who could be presumed to have an interest in software engineering methodologies and in tools and techniques for improving software dependability. Today, however, a great deal of software is written not by professionals but by end-users, who create applications such as multimedia simulations, dynamic Web pages, and spreadsheets. Applications such as these are often used to guide important decisions or aid in important tasks, and it is important that they be sufficiently dependable, but evidence shows that they frequently are not. For example, studies have shown that a large percentage of the spreadsheets created by end-users contain faults, and stories abound of spreadsheet faults that have led to multi-million dollar losses. Despite such evidence, until recently, relatively little research had been done to help end-users create more dependable software. In this paper, I´ll show that it´s possible to address this problem by adapting formal software engineering techniques to the realm of end-user programming. Focusing on work done in the spreadsheet application paradigm, I present several of approaches to using program analysis techniques to help end-users build more dependable spreadsheets. Behind the scenes, these methodologies use static analyses such as dataflow analysis and slicing, together with dynamic analyses such as execution monitoring, to support user tasks such as validation and fault localization. I show how, to accommodate the user base of spreadsheet languages, an interface to these methodologies can be provided that does not require users to understand the theory behind the analyses, yet supports the interactive, incremental process by which spreadsheets are created. I present empirical results gathered in the use of these methodologies, that highlight several costs and benefits tradeoffs
Keywords :
data flow analysis; program slicing; program verification; software fault tolerance; software quality; spreadsheet programs; system monitoring; dataflow analysis; dependable software engineering; dynamic analysis; end-user programming; execution monitoring; fault localization; program analysis; program slicing; software dependability; spreadsheet application; spreadsheet languages; static analysis; validation; Application software; Computer aided manufacturing; Computer science; Data analysis; Programming profession; Software engineering; Software maintenance; Software quality; Software testing; Software tools;