Skip to main content
main-content

Über dieses Buch

This book is about maintaining computer software. Its aim is to improve a pro­ gram's capacity for altering code to fit changing requirements and for detecting and correcting errors. The book is written primarily for systems analysts and programmers. But others will also find it interesting. Managers will find ways to decrease costs, improve the organization's performance, and lessen its liability exposure. Re­ searchers will be given principles to expand upon, and will be able to develop techniques for solving new problems that arise in the world of maintenance. Another group to benefit is students. They will be given a foundation from which to write clear unambiguous programs. Software maintenance is an important and timely area of investigation. It is the component that gives an information system its flexibility. It is also the source of many of its problems. Software is costly to maintain. It is the usual cause of system failures and is the frequently cited reason why systems operate in unintended ways. Most software problems are not serious and require only minor repairs. But some have resulted in the loss of significant physical and financial resources. Others have cost lives. The book argues for a new way of thinking about maintaining software. Tra­ ditional approaches, using software engineering and management disciplines, do not adequately address maintenance issues. What is proposed to solve problems utilizes a set of human factors principles that govern the programmer-software­ event world interactions and form the core of the maintenance process.

Inhaltsverzeichnis

Frontmatter

Facing the Problem

Frontmatter

Chapter 1. The Problem

Abstract
Throughout most of its life, software is being maintained. The period begins when the end user, or contracting agent, accepts responsibility for the program from its developers, and lasts until it is no longer considered useful. During this phase the program will have its capabilities enhanced and be corrected for errors many times. The purpose of this book is to extend the program's life by enabling these modifications to occur quickly and accurately, and to reduce maintenance expenditures.
Dennis D. Smith

Chapter 2. The Approach

Abstract
Descriptions of the software maintenance environment and definitions of the problems encountered provide a base from which to look for solutions. The search will be more efficient if an approach is adopted. The approach establishes a framework for solving problems, and hastens a conclusion whereby the causes of the problems are eliminated or are made less severe.
Dennis D. Smith

Chapter 3. The Attack

Abstract
The attack refers to the strategy and tactics used to resolve problems. It is a plan of action employed to direct the investigation of issues raised in the problem domain. Plans are developed within the bounds of the approach and use its vocabulary. Therefore, the plan proposed will seek to meet the information demands of the software maintainer.
Dennis D. Smith

Solutions Through Symbols

Frontmatter

Chapter 4. Some Basics

Abstract
Problems, like the ones found in software maintenance, are best resolved through a clear and fundamental understanding of their underlying causes. Common sense tells us that programmers who are able to readily comprehend the function of computer code and are able to quickly locate a desired program segment will have a decided edge over those who cannot. They will not only be able to complete maintenance tasks sooner, but will also perform them more accurately. Knowing some basics of how the mind, or long-term memory, operates lays the foundation upon which that understanding is able to be constructed.
Dennis D. Smith

Chapter 5. Naming

Abstract
Software maintainers learn the functions of programs primarily through their code. Aiding programmers in this pursuit are the names given to variables, routines, and files.
Dennis D. Smith

Chapter 6. Words and Letters

Abstract
Whether programming names are letter strings in procedural memory or words in semantic memory has a profound impact on the quality of software. Word and letter relationships help determine how names will be interpreted and learned. Understanding them, and the memories in which they are used, provides a basis from which existing software nomenclature can be better discerned and names can be abbreviated to form useful mnemonics.
Dennis D. Smith

Chapter 7. Abbreviations and Mnemonics

Abstract
Abbreviating words into useful mnemonic names has been a primary concern of programmers from the earliest days of computing. There are many abbreviating schemes about, and each programmer seems to have a favorite. However, processes are only as effective as the tenets upon which they are built. Methods that are not well thought out and principled are not able to handle the stream of coding alterations that occur during maintenance.
Dennis D. Smith

Chapter 8. Language

Abstract
Roughly defined, language is a collection of words and the rules governing their association, used to convey and receive thoughts within a community. It is studied to understand how words are, and can be, strung together to inform others.
Dennis D. Smith

Chapter 9. Language of Mnemonics

Abstract
A language of mnemonics is a naming convention designed for maintaining software. The names it provides augment the maintainer’s ability to solve problems, and enable program refinements and corrections to be made more quickly and more accurately.
Dennis D. Smith

Solutions Through Structure

Frontmatter

Chapter 10. More on Problem Solving

Abstract
Chapters 10 through 13 make up a section on the program's structure. The structure of a program may either facilitate or hinder maintenance. It regulates the flow of information, and in conjunction with referent names, aids cognition. An effective structure assembles the symbols of a program into forms that enhance problem solving.
Dennis D. Smith

Chapter 11. Solving Maintenance Problems

Abstract
Solving the problems that arise in software is the primary task of the maintainer. The problem definition, including the solution criteria and any additional information that is needed, is contained in a modification request or an error report. Transformation operations (e.g., adding, deleting, replacing, or rearranging code) are applied as required to the problem situation (i.e., the current state of the code) until the solution criteria are satisfied, ensuring that the other program functions operate as before. Throughout the process, the maintainer relies on timely and appropriate information.
Dennis D. Smith

Chapter 12. Other Considerations

Abstract
In programming, there is more to consider than solving user problems. Whether in design, code construction, or maintenance, the programmer should be considerate of the maintainer’s nature and working habits. With computer processing costs steadily declining and that of programming increasing, making the maintainer efficient is where the greatest savings can be realized.
Dennis D. Smith

Chapter 13. Cognitive Structures

Abstract
Most programs are large and complex, and their structure helps determine how well they will be maintained (Newsome & Katz, 1987). It is only in small programs that structure has little effect on comprehension and the capacity for modification (Sheil, 1981).
Dennis D. Smith

Implementation and Testing

Frontmatter

Chapter 14. Implementing the Solutions

Abstract
The knowledge gained about software maintenance does little good if it is not applied to the problem. The challenge before the software designer is to use it to craft solutions that meet the changing information demands of the current and future maintainer. The undertaking is difficult because programs, and the environments in which they are used and maintained, have different maintenance needs and must be evaluated separately.
Dennis D. Smith

Chapter 15. Testing

Abstract
Software is tested to ensure it satisfies the end user’s requirements (Rubey cited in Chudleigh, 1990), operates with other programs in the system, and is safe (i.e., it will not harm people or cause financial loss). Affecting the process is its construction (Laprie, 1990). A program that is easily understood and designed for maintenance stands a better chance of being free of errors than one lacking these traits (Chudleigh, 1990). But no matter how well thought out the design, or how thorough the testing, errors may remain in the code (Dijkstra quoted in Chudleigh, 1990).
Dennis D. Smith

Concluding Remarks

Frontmatter

Chapter 16. Concluding Remarks

Abstract
Designing maintainable software requires looking at programs and programming from the perspective of one about to alter the code. It is more than writing understandable code. It is a change in attitude that affects many decisions in the computer department. Making the computer efficient is still important. Only now it is weighed against the impact it has on maintenance.
Dennis D. Smith

Backmatter

Weitere Informationen