All Topics  
Software documentation

 

   Email Print
   Bookmark   Link






 

Software documentation



 
 
Software documentation or source code documentation is written text that accompanies computer
Computer

A computer is a machine that manipulates Data according to a list of Code .The first devices that resemble modern computers date to the mid-20th century , although the computer concept and various machines similar to computers existed earlier....
 software. It either explains how it operates or how to use it, and may mean different things to people in different roles.

mentation is an important part of software engineering. Types of documentation include:



irements documentation is the description of what a particular software does or shall fulfill.






Discussion
Ask a question about 'Software documentation'
Start a new discussion about 'Software documentation'
Answer questions from other users
Full Discussion Forum



Encyclopedia


Software documentation or source code documentation is written text that accompanies computer
Computer

A computer is a machine that manipulates Data according to a list of Code .The first devices that resemble modern computers date to the mid-20th century , although the computer concept and various machines similar to computers existed earlier....
 software. It either explains how it operates or how to use it, and may mean different things to people in different roles.

Types of software documentation

Documentation is an important part of software engineering. Types of documentation include:

  • Requirements - Statements that identify attributes, capabilities, characteristics, or qualities of a system. This is the foundation for what shall be or has been implemented.
  • Architecture/Design - Overview of software. Includes relations to an environment and construction principles to be used in design of software components.
  • Technical - Documentation of code, algorithms, interfaces, and APIs.
  • End User - Manuals for the end-user, system administrators and support staff.
  • Marketing - How to market the product and analysis of the market demand.


Requirements documentation

Requirements documentation is the description of what a particular software does or shall fulfill. It is used throughout development
Development

Development may refer to:...
 to communicate what the software does or shall do. It is also used as an agreement or as the foundation for agreement on what the software shall do. Requirements are produced and consumed by everyone involved in the production of software: end users, customer
Customer

A customer, also client, buyer or purchaser is the buyer or user of the paid products of an individual or organization, mostly called the supplier or seller....
s, product manager
Product Manager

A product manager researches, selects, develops, and places a company's products.A product manager considers numerous factors such as target demographic, the products offered by the competition, and how well the product fits in with the company's business model....
s, project manager
Project manager

A project manager is a professional in the field of project management. Project managers can have the responsibility of the planning, execution, and closing of any project, typically relating to construction industry, architecture, computer networking, telecommunications or software development....
s, sales
Sales

A sale is the pinnacle activity involved in selling products or services in return for money or other compensation. It is an act of completion of a commercial activity....
, marketing
Marketing

Marketing is defined by the American Marketing Association as the activity, set of institutions, and processes for creating, communicating, delivering, and exchanging offerings that have value for customers, clients, partners, and society at large....
, software architect
Software architect

Software architect is a general term with many accepted definitions, which refers to a broad range of roles. Generally-accepted terminology and certifications began appearing in connection with this role near the beginning of the 21st Century....
s, usability experts, interaction design
Interaction design

Interaction Design is the discipline of defining the behavior of products and systems that a user can interact with. The practice typically centers around complex technology systems such as Computer software, Handheld devices, and other electronic devices....
ers, developer
Developer

Developer can refer to:*A software developer, one who programs computers or designs the system to match the requirements of a systems analyst....
s, and testers, to name a few. Thus, requirements documentation has many different purposes.

Requirements come in a variety of styles, notations and formality. Requirements can be goal-like (e.g., distributed work environment), close to design (e.g., builds can be started by right-clicking a configuration file and select the 'build' function), and anything in between. They can be specified as statements in natural language
Natural language

In the philosophy of language, a natural language is a language that is spoken, Sign language, or writing by humans for general-purpose communication, as distinguished from formal languages and from constructed languages....
, as drawn figures, as detailed mathematical formulas, and as a combination of them all.

The variation and complexity of requirements documentation makes it a proven challenge. Requirements may be implicit and hard to uncover. It is difficult to know exactly how much documentation is needed and how much can be left to the architecture and design documentation, and it is difficult to know how to document requirements considering the variety of people that shall read and use the documentation. Unfortunately, requirements documentation is therefore very often incomplete or non-existent. The consequence is that changes to the software becomes very difficult and therefore time-consuming (expensive) and error prone (decreased software quality).

The need for requirements documentation is typically related to the complexity of the product, the impact of the product, and the life expectancy of the software. If the software is very complex or developed by many people (e.g., mobile phone software), requirements can help to better communicate what to achieve. If the software is safety-critical and can have negative impact on human life (e.g., nuclear power systems, medical equipment), more formal requirements documentation is often required. If the software is expected to live for only a month or two (e.g., very small mobile phone applications developed specifically for a certain campaign) very little requirements documentation may be needed. If the software is a first release that is later built upon, requirements documentation is very helpful when managing the change of the software and verifying that nothing has been broken in the software when it is modified.

Traditionally, requirements are specified in requirements documents (e.g. using word processing applications and spreadsheet applications). To manage the increased complexity and changing nature of requirements documentation (and software documentation in general), database-centric systems and special-purpose requirements management
Requirements management

Requirements management is the process of eliciting, documenting, analyzing, prioritizing and agreeing on requirements and then controlling change and communicating to relevant stakeholders....
 tools are advocated.

Architecture/Design documentation

Architecture documentation is a special breed of design document. In a way, architecture documents are third derivative from the code (design document
Design document

A design document is a written outline of the development of a course or a description of a software product that a software designer writes in order to give a software development team an overall guidance of the architecture of the software project....
 being second derivative, and code documents being first). Very little in the architecture documents is specific to the code itself. These documents do not describe how to program a particular routine, or even why that particular routine exists in the form that it does, but instead merely lays out the general requirements that would motivate the existence of such a routine. A good architecture document is short on details but thick on explanation. It may suggest approaches for lower level design, but leave the actual exploration trade studies to other documents.

Another breed of design docs is the comparison document, or trade study. This would often take the form of a whitepaper. It focuses on one specific aspect of the system and suggests alternate approaches. It could be at the user interface
User interface

The user interface is the aggregate of means by which people—the User s—Interaction with the system—a particular machine, device, computer program or other complex tools....
, code, design, or even architectural level. It will outline what the situation is, describe one or more alternatives, and enumerate the pros and cons of each. A good trade study document is heavy on research, expresses its idea clearly (without relying heavily on obtuse jargon
Jargon

Jargon is terminology which has been especially defined in relationship to a specific activity, profession, or group. In other words, the term covers the language used by people who work in a particular area or who have a common interest....
 to dazzle the reader), and most importantly is impartial. It should honestly and clearly explain the costs of whatever solution it offers as best. The objective of a trade study is to devise the best solution, rather than to push a particular point of view. It is perfectly acceptable to state no conclusion, or to conclude that none of the alternatives are sufficiently better than the baseline to warrant a change. It should be approached as a scientific endeavor, not as a marketing technique.

Technical documentation

This is what most programmer
Programmer

A programmer is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software....
s mean when using the term software documentation. When creating software, code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 alone is insufficient. There must be some text along with it to describe various aspects of its intended operation. It is important for the code documents to be thorough, but not so verbose that it becomes difficult to maintain them. Several How-to and overview documentation are found specific to the software application or software product being documented by API Writers
API Writer

An API Writer is an individual involved in writing documents related to Application Programming Interface targeted towards developers, system architects and designers....
. This documentation may be used by developers, testers and also the end customers or clients using this software application. Today, we see lot of high end applications in the field of power, energy, transportation, networks, aerospace, safety, security, industry automation and a variety of other domains. Technical documentation has become important within such organizations as the basic and advanced level of information may change over a period of time with architecture changes. Hence, technical documentation has gained lot of importance in recent times, especially in the software field.

Often, tools such as Doxygen
Doxygen

Doxygen is a documentation generator for C++, C , Java , Objective C programming language, Python , Interface description language , Fortran, VHDL, PHP, C Sharp programming language, and to some extent D programming language....
, NDoc
NDoc

NDoc is a code documentation generator for the Common Language Infrastructure. It is licensed under the GNU General Public License....
, javadoc
Javadoc

Javadoc is a documentation generator from Sun Microsystems for generating Application programming interface documentation in HTML format from Java source code....
, Sandcastle, ROBODoc
ROBODoc

ROBODoc is a documentation tool similar to javadoc and licensed under the GPL. It is used to extract application programming interface documentation from source code....
, POD
Plain Old Documentation

Plain Old Documentation, abbreviated pod, is a simplemarkup language used to document the Perl programming language....
 , TwinText
TwinText

TwinText is a proprietary Software documentation Tool. It can generate HTML documents from a variety of programming languages, including C++, C , Java , Interface description language, PHP, C Sharp programming language, and Visual Basic....
 , or Universal Report can be used to auto-generate the code documents—that is, they extract the comments from the source code and create reference manuals in such forms as text or HTML
HTML

HTML, an Acronym and initialism of HyperText Markup Language, is the predominant markup language for Web pages. It provides a means to describe the structure of text-based information in a document?by denoting certain text as links, headings, paragraphs, lists, and so on?and to supplement that text with interactive forms, embedded '...
 files. Code documents are often organized into a reference guide style, allowing a programmer to quickly look up an arbitrary function or class.

Many programmers really like the idea of auto-generating documentation for various reasons. For example, because it is extracted from the source code itself (for example, through comment
Comment (computer programming)

In computer programming, a comment is a programming language construct used to embed programmer-readable annotations in the source code of a computer program....
s), the programmer can write it while referring to his code, and can use the same tools he used to create the source code, to make the documentation. This makes it much easier to keep the documentation up-to-date.

Of course, a downside is that only programmers can edit this kind of documentation, and it depends on them to refresh the output (for example, by running a cron job to update the documents nightly). Some would characterize this as a pro rather than a con.

Donald Knuth
Donald Knuth

Donald Ervin Knuth is a renowned computer science and Emeritus of the Art of Computer Programming at Stanford University.Author of the seminal multi-volume work The Art of Computer Programming , Knuth has been called the "father" of the run-time analysis, contributing to the development of, and systematizing formal mathematical techn...
 has insisted on the fact that documentation can be a very difficult afterthought process and has advocated literate programming
Literate programming

Literate programming is an approach to programming which was introduced by Donald Knuth. Knuth conceived literate programming as an alternative to the structured programming paradigm of the 1970s....
, writing at the same time and location as the source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 and extracted by automatic means.

Elucidative Programming is the result of practical applications of Literate Programming in real programming contexts. The Elucidative paradigm proposes that source code and documentation be stored separately. This paradigm was inspired by the same experimental findings that produced . Often, software developers need to be able to create and access information that is not going to be part of the source file itself. Such annotations are usually part of several software development activities, such as code walks and porting, where third party source code is analysed in a functional way. Annotations can therefore help the developer during any stage of software development where a formal documentation system would hinder progress. stores annotations in separate files, linking the information to the source code dynamically.

User documentation

Unlike code documents, user documents are usually far more diverse with respect to the source code of the program, and instead simply describe how it is used.

In the case of a software library, the code documents and user documents could be effectively equivalent and are worth conjoining, but for a general application this is not often true. On the other hand, the Lisp machine
Lisp machine

Lisp machines were general-purpose computers designed to efficiently run Lisp programming language as their main programming language. In a sense, they were the first commercial single-user Computer workstation....
 grew out of a tradition in which every piece of code had an attached documentation string. In combination with strong search capabilities (based on a Unix
Unix

Unix is a computer operating system originally developed in 1969 by a group of American Telephone & Telegraph employees at Bell Labs, including Ken Thompson , Dennis Ritchie, Douglas McIlroy, and Joe Ossanna....
-like apropos command), and online sources, Lisp users could look up documentation prepared by these API Writers
API Writer

An API Writer is an individual involved in writing documents related to Application Programming Interface targeted towards developers, system architects and designers....
 and paste the associated function directly into their own code. This level of ease of use is unheard of in putatively more modern systems.

Typically, the user documentation describes each feature of the program, and assists the user in realizing these features. A good user document can also go so far as to provide thorough troubleshooting assistance. It is very important for user documents to not be confusing, and for them to be up to date. User documents need not be organized in any particular way, but it is very important for them to have a thorough index
Index (publishing)

An index is a list of words or phrases and associated pointers to where useful material relating to that heading can be found in a document. In a traditional back-of-the-book index the headings will include names of people, places and events, and concepts selected by a person as being relevant and of interest to a possible reader of the boo...
. Consistency and simplicity are also very valuable. User documentation is considered to constitute a contract specifying what the software will do. API Writers
API Writer

An API Writer is an individual involved in writing documents related to Application Programming Interface targeted towards developers, system architects and designers....
 are very well accomplished towards writing good user documents as they would be well aware of the software architecture and programming techniques used. See also Technical Writing
Technical writing

Technical writing, a form of technical communication, is a style of formal writing and is used in fields as diverse as computer hardware and software, chemistry, the aerospace, robotics, finance, consumer electronics, and biotechnology....
.

There are three broad ways in which user documentation can be organized. Tutorial:A tutorial
Tutorial

A tutorial is one method of transferring knowledge and may be used as a part of learning. More interactivity and specific than a book or a lecture; a tutorial seeks to teach by example and supply the information to complete a certain task....
 approach is considered the most useful for a new user, in which they are guided through each step of accomplishing particular tasks. Thematic:A thematic
Theme (literature)

A theme is a simile used to relate to idioms and or literary work a message or lesson conveyed by a written text. This message is usually about life, society or human nature....
 approach, where chapters or sections concentrate on one particular area of interest, is of more general use to an intermediate user. List or Reference:The final type of organizing principle is one in which commands or tasks are simply listed alphabetically or logically grouped, often via cross-referenced indexes. This latter approach is of greater use to advanced users who know exactly what sort of information they are looking for.

A common complaint among users regarding software documentation is that only one of these three approaches was taken to the near-exclusion of the other two. It is common to limit provided software documentation for personal computer
Personal computer

A personal computer is any general-purpose computer whose original sales price, size, and capabilities make it useful for individuals, and which is intended to be operated directly by an end user, with no intervening computer operator....
s to online help
Online help

Online help is topic-oriented, procedural or reference information delivered through computer software. It is a form of User Assistance. Most online help is designed to give assistance in the use of a software application or operating system, but can also be used to present information on a broad range of subjects....
 that give only reference information on commands or menu items. The job of tutoring new users or helping more experienced users get the most out of a program is left to private publishers, who are often given significant assistance by the software developer.

Marketing documentation

For many applications it is necessary to have some promotional materials to encourage casual observers to spend more time learning about the product. This form of documentation has three purposes:-

  1. To excite the potential user about the product and instill in them a desire for becoming more involved with it.
  2. To inform them about what exactly the product does, so that their expectations are in line with what they will be receiving.
  3. To explain the position of this product with respect to other alternatives.


One good marketing technique is to provide clear and memorable catch phrases that exemplify the point we wish to convey, and also emphasize the interoperability of the program with anything else provided by the manufacturer.

See also

  • API Writer
    API Writer

    An API Writer is an individual involved in writing documents related to Application Programming Interface targeted towards developers, system architects and designers....
  • Comparison of documentation generators
  • Design by contract
    Design by contract

    Design by Contract or Programming by Contract is an approach to designing computer software. It prescribes that software designers should define Formal methods, precise and verifiable interface specifications for Component-based software engineering#Software component based upon the theory of abstract data types and the conceptual metaph...
  • Docstring
    Docstring

    In programming, a docstring is a string literal specified in source code that is used, like a comment , to document a specific segment of code. Unlike conventional source code comments, or even specifically formatted comments like Javadoc documentation, docstrings are not stripped from the source tree when it is parsed, but are retained thro...
  • User Assistance
    User Assistance

    User assistance is a general term for guided assistance to a user of a software product. The phrase incorporates all forms of help available to a user....
  • Design document
    Design document

    A design document is a written outline of the development of a course or a description of a software product that a software designer writes in order to give a software development team an overall guidance of the architecture of the software project....
  • README files
    README

    A readme file contains information about other files in a directory or archive and is very commonly distributed with computer software. Such a file is usually a text file called README.TXT, README.1ST, READ.ME, or simply README, although some Microsoft Windows software may occasionally include a R...
  • Unified Modeling Language
    Unified Modeling Language

    Unified Modeling Language is a standardized general-purpose modeling language in the field of software engineering.UML includes a set of graphical notation techniques to create abstract models of specific systems....
     UML
  • Literate programming
    Literate programming

    Literate programming is an approach to programming which was introduced by Donald Knuth. Knuth conceived literate programming as an alternative to the structured programming paradigm of the 1970s....


External links

  • - a source code annotation framework for architectural, design and technical documentation