the role of debugging within software engineering environments
Programming environments (PEs) support a single programmer developing small- to medium-scale programs, whereas software development support systems and software engineering environments (SE 2 s) support whole project teams, developing large-scale software. There is no reason to believe that one and only one support system may exist. The usefulness of one or the other depends on the particular situation of software development. Debugging is distinguished from testing and defined not only for removing bugs from programs (dynamic debugging) but also from documents describing the programs (static debugging). The key problem of debugging is understanding the software. Debugging may be supported by static analysis tools and by interactive debugging systems which help both to understand the software better and to estimate the impacts of an intended change. Graphical representations are also very useful for better understanding system structures and for recognizing faults and clashes faster. Tools may furthermore be used to report errors and corrections, and to maintain these reports. In the context of PEs and SE 2 s the tools supporting debugging are connected. Tools can be based on a uniform internal representation, allowing a uniform user interface. Tasks and corresponding tools can be tailored to each other, avoiding duplication of work. One task knows what the others have already done. One knows if certain types of errors have been prevented or removed, i.e. if static analysis tools prevent data flow errors during runtime. Tools and results of other tasks may be used, i.e. cross reference lists and test path reports. Similarities and differences of debugging in PEs and in SE 2 s are discussed by some example systems. The discussion is concluded by demonstrating possible influences on future software development by personal computers, knowledge engineering, and predicative programming.
software engineering environment programming environment software development support system testing dynamic debugging static debugging static analysis validation