Home -> About Us -> Security & Privacy -> Terms of Use -> Add Url -> Add Your Article
Search:   
spunkycontent.com spunkycontent.com
Add Url
 

Teens & Children

Shopping & Auction

Self Healing

Music & Entertainment

Technology & Science

Society & Communities

Property & Estate

Finance & Investment

Home Family & Garden

Healthcare & Treatment

Drink & Food

Adventure & Sports

Indoor Games

Fitness & Health

Relationship & Lifestyle

Education & Learning

Automobile & Automotive

Careers & Employment

Travel & Vacation

Business & Companies

Issues & News

Computers & Software

Government & Politics

Culture & Art


 

  Home –› Computers & Software –› Software Resources
   
 

(Paper) Documentation Considered Harmful

   
Author: Bruce Taylor

Introduction Its been part of programmers training since the earliest days: Documentation is part of the product! But our current ways of documenting requirements, architecture, design, and code are vestiges of earlier eras, when word processors and virtual paper were the only choice for communicating ideas. Consider the disadvantages of paper-based documentation:

  • The written word is not always the best way to convey complicated information, especially for engineers who arent comfortable writing large documents.
  • It can be complex and costly to produce all the paper documentation required for a large system.
  • Virtually no one reads with attention any document over fifteen pages in length.
  • It is difficult to keep virtual paper documents up to date with the systems they describe, and document maintenance can be a large component of system costs.
  • The investment in virtual paper documentation can be a barrier to refactoring components, even when they need it desperately.
And yet, the need to describe the purpose and structure of the software to people than the developers remains, so how can we get the benefits of documentation without the drawbacks of paper?

Requirements and Functional Documentation

Software projects typically start with producing a Requirements Specification, which describes to the engineers the problem to be solved, and a Functional Specification, which describes back to the product managers the proposed solution. Both of these documents can be very large, very broad in scope, and very detailed; and they are almost never complete, consistent or correct.

But suppose that we replaced the whole process of requirements definition with a more incremental, inclusive approach. If a user team of product managers, QA staff, and customers sat down with engineers, the combined team could solve both specification problems at the same time. But instead of writing a massive Requirements specification, consider writing individual requirements as sentences or short paragraphs on story cards. And instead of writing elaborate descriptions of system behavior, think about using pictures: UML use case diagrams. Not only are these notations easier to write, they are easier to modify because the requirements are small and modular.

The Functional Specification can be expressed with feature walkthroughs, which can be described either on feature story cards, or through paper prototypes, or through mockup systems with partial UI and skeleton data and functionality. All three of these formats have the advantage of being incremental, easy to modify, and inherently unambiguous.

Architecture Documentation

Large systems often have massive architectural documents with complete descriptions of components, interfaces, and sequencing relationships. And all of this information is valuable, but only for initial architectural design and review. After the architecture is established, the only document of any value is a simple architectural overview to help a new architect understand the general structure of the system. Detailed package specifications should be generated from the code itself, rather than being laboriously written and updated by hand.

Design Documentation

Similarly, design documentation is very useful for reviewing the design of a component and ensuring that it fits into the architecture, but is not very useful to a programmer trying to learn how a component is structured: most programmers would rather dive into the component and learn from the code how it works.

The exception to this assertion that design documentation is not useful after the design review is the documentation of component interfaces. But this information should not be written in a virtual paper document, it should be kept as close to the code as possible, in a JavaDoc comments (Java) or in the .h (C/C++) header file so that it is easier for programmers to keep it up to date.

Code Documentation

One of the first lessons that novice programmers learn is the admonition, You have to comment your code! And yet, most experienced programmers find in-line documentation to be irrelevant, annoying, or often wrong. A better investment of a programmers time is to concentrate on transparent coding: choosing meaningful names, using well-known design patterns, keeping methods short and coherent, and providing an occasional hint to help the reader over a complex algorithm.

Conclusion: Whats Left?

Documentation is important, but it should be used in ways that help the software developers, rather than getting in their way:

  • Choose a good notation for the documentation: use English as a last resort.
  • Throw the documentation away after it has served its purpose.
  • Keep the documentation as close to the code as possible.

Author Bio:

Bruce Taylor

Bruce Taylor provides Organizational Development, corporate and executive coaching to a wide variety of businesses. Mr Taylor has extensive background in Psychology, Human Resources, and Software Engineering. He holds a Masters degree in Computer Science from Duke University, a Masters in Psychology from the University of Massachusetts, and a Certificate in Job Stress and Healthy Workplace Design from the University of Massachusetts.

Mr Taylor trained in coaching at Mentor Coach, and will receive ICF certification in 2006.

You can search for this article using: free software, free software downloads, cheap computer software, discount software
 
 
 

Related Articles

 
Buying Guide to Graphics Cards
 
The Surefire Way To Make Money With Google Adsense... Each And Every Month!
 
Helping you Learn all tips of Search Engine Optimization: Optimizing Your Title Tag
 
Two Search Engine Optimization Myths Debunked
 
Advertising Your Work From Home Internet Business With PPC Search Engines
 
The Benefits of SEO Training
 
Steps for Search Engine Optimizations to Achieve International Ranking
 
Marketing Your Site with a Difference
 
Cure your Outlook Malaise and Work Faster
 
How To Guarantee Quality Traffic Even If It Is Very Low
 
 
 
   Home -> Security & Privacy -> Terms of Use
Copyright © www.spunkycontent.com - All Rights Reserved Worldwide.