Benefits of Software Inspections
by
Daniel L. Brinton
Entering Freshman, Colorado School of Mines
Abstract:
Software inspections benefit not only the end-user of the code, but also the developer. The developer learns three things. The first is a more efficient way of coding. This is accomplished via suggestions made by the software inspector and the developer develops methods of performing programming tasks in a manner that is not so obscure and cumbersome to understand. The second is the developer learns to verbalize and explain pieces of code to others. Development of code and the explanation of it are two different things, the explanation of which is more difficult. In addition, when one can explain one's code to others, then one has a more in-depth knowledge of the code. The third thing a developer learns is how to analyze his or her own code critically. Self-analysis of code eliminates the need for code revision if it is done properly. Moreover, if the code is not inspected and errors are found, the code must be corrected then inspected again- Finally, the mastery of code analysis can lead to higher paying jobs such as a project leader or systems analyst.
Software inspections benefit not only the end-user of the code, but also the developer. The personal experience one gains from writing code coupled with software inspections is vast. Some of the things a developer learns due to software inspections are that the developer learns a more efficient way of coding, the developer learns to verbalize and explain pieces of code to others, and finally, a developer learns to analyze his or her own code critically.
The most obvious way a software inspection can help a developer is that a developer can learn more efficient ways of coding simply by listening to the suggestions of the person inspecting the software. Most often, the person inspecting the software is an expert developer with many seasons of programming under his or her belt. Consequently, these experienced software developers often will suggest ways of accomplishing programming tasks in a more efficient manner. In addition, the software becomes transformed from an inefficient chunk of code, to a flowing waterfall that runs smoothly down a mountain slope.
Another way a software inspection helps a developer, is that the developer is forced to write code that performs tasks in a manner that is not obscure and cumbersome to understand by others. The reason that code needs to be clear and concise is that another person, or persons, will be scrutinizing the code. When it is hard for others to understand code, then the code is obviously written in a far more difficult manner than in which it needs to be written. Moreover, when it comes time for the code to be updated, unless the code is extensively commented and documented, the team updating the code will have a hard time understanding what the intention of the code is, and why it was written in such an abstruse manner.
Learning better methods of coding is not the only benefit of software inspections,. the developer learns to verbalize and explain code to others. Writing code and explaining what code is accomplishing are two different things. Developing code is quite easy when one knows the programming language, and has a little experience. There is a myriad of ways of writing code that accomplishes the same task. For this, it is difficult for a code inspector to understand the mission of the code without the help of the codes author. Since the only way a developer can help the software inspector to understand the methods and mission of the code is through verbal explanation, it is imperative that the developer know how to verbalize what his or her code accomplishes. In theory, this sounds simple, but trying to explain what the code is doing is quite difficult. However, when one learns how to describe what ones code is doing, then obviously one has a more in-depth, rounded knowledge of programming.
The final way software inspections help a developer is that the developer learns to analyze his or her code critically. The analysis of ones code critically has two obvious benefits. The first benefit is that developer-analysis of the code eliminates the need for code revision if it is executed properly. The second benefit of analyzing ones code is that the mastery of code analysis can lead to higher paying jobs such as a project leader or a systems analyst.
When a developer can properly analyze his or her code critically, the code revision is usually not necessary. If a developer can catch a bug in the code before the code inspection, then the developer is saving time. After being audited, if the code has no errors and no memory leaks, then the code is ready to for implementation. However, if code is audited and errors are found, then the process must be repeated; the code must be revised, then the code has to be inspected again. Obviously, when a developer can analyze his or her own code critically, this saves time. Moreover, a developer that can analyze code critically is far more valuable to a development team than a developer that can only code.
The mastery of code analysis can lead to higher paying jobs. This sounds simple, however the fact of the matter is that one of the major differences between project leaders and developers is experience. One facet of experience gained during the course of programming is code analysis. The better one knows code analysis, the better one is prepared for a job as a project leader or systems analyst. In addition, coding can sometimes seem repetitive and boring. Therefore, a more interesting job is in order. Since the average person bored by years of programming probably does not want to stop programming, a job that is a mixture of management and programming, such as a project leader, or one that is a mixture of research and programming such as a systems analyst would definitely be a good choice.
The personal experience gained from developing code coupled with software inspections is vast. The developer learns more efficient ways of coding, how to verbalize and explain pieces of code and to analyze his or her own code critically. The benefits of learning more efficient ways of coding are that easier ways of performing programming tasks can be learned, and the code developed evolves so that it is not so obscure and cumbersome to understand. When the developer learns to verbalize and explain pieces of code to others the developer hones his or her interpersonal skills, and when the one can perfectly describe ones code, then one has a more in-depth knowledge of what ones code accomplishes. The mastery of learning to analyze ones code critically eliminates the need for code revision and supplemental code inspections and can lead to higher paying jobs such as a project leader and systems analyst. In conclusion, the benefits of code inspections are seen not only by the end-user, but also by the developer. The developer whose code is scrutinized is far better than bug-infested code and software inspections teach the developer valuable lessons.