Software documentation: Difference between revisions

Content deleted Content added
 
(21 intermediate revisions by 19 users not shown)
Line 1:
{{Short description|Explains the functionality of software}}
{{more citations needed|date=March 2013}}
{{Software development process}}
'''Software documentation''' is written text or illustration that accompanies computer [[software]] or is embedded in the source code. The documentation either explains how the software operates or how to use it, and may mean different things to people in different roles.
 
[[Documentation]] is an important part of software engineering. Types of documentation include:
* [[Requirement]]s – Statements that identify attributes, capabilities, characteristics, or qualities of a system. This is the foundation for what will 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 [[API documentation|API]]sAPIs.
* [[End user]] – Manuals for the end-user, system administrators and support staff.
* Marketing – How to market the product and analysis of the market demand.
 
== Types ==
=== Requirements documentation ===
[[Requirement]]s documentation is the description of what a particular software does or shallshould do. It is used throughout [[Software development|development]] to communicate how the software functions or how it is intended to operate. It is also used as an agreement or as the foundation for agreement on what the software will do. Requirements are produced and consumed by everyone involved in the production of software, including: [[end user]]s, [[customer]]s, [[project manager]]s, [[sales]], [[marketing]], [[software architect]]s, [[usability engineering|usability engineers]], [[interaction design]]ers, [[software developer|developer]]s, and [[Software testing|testers]].
 
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 selecting the 'build' function''), and anything in between. They can be specified as statements in [[natural language]], as drawn figures, as detailed [[mathematical formula]]s, or as a combination of them all.
Line 23 ⟶ 22:
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]] tools are advocated.
 
In Agile software development, requirements are often expressed as [[User Storiesstory|''user stories'']] with accompanying acceptance criteria. User stories are typically part of a feature, or an epic, which is a broader functionality or set of related functionalities that deliver a specific value to the user based on the business requirements.
 
=== Architecture design documentation ===
Line 84 ⟶ 83:
Typically, the user documentation describes each feature of the program, and assists the user in realizing these features. It is very important for user documents to not be confusing, and for them to be up to date. User documents do not need to be organized in any particular way, but it is very important for them to have a thorough [[Index (publishing)|index]]. Consistency and simplicity are also very valuable. User documentation is considered to constitute a contract specifying what the software will do. [[API Writer]]s 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]].
 
User documentation can be produced in a variety of online and print formats.<ref>{{cite webbook| url = http://dl.acm.org/citation.cfm?id=2775457| title = RH Earle, MA Rosso, KE Alexander (2015) User preferences of software documentation genres. Proceedings of the 33rd Annual International Conference on the Design of Communication (ACM SIGDOC).| date = 16 July 2015| pages = 1–10| doi = 10.1145/2775441.2775457| isbn = 978-1-4503-3648-2}}</ref> However, there are three broad ways in which user documentation can be organized.
# '''Tutorial:''' A [[tutorial]] approach is considered the most useful for a new user, in which they are guided through each step of accomplishing particular tasks.<ref name=kdp>{{cite web
| last = Woelz
| first = Carlos
| title = The KDE Documentation Primer
| url = httphttps://i18n.kde.org/docs/doc-primer/index.html
| access-date = 15 June 2009 }}</ref>
# '''Thematic:''' A [[Theme (literature)|thematic]] approach, where chapters or sections concentrate on one particular area of interest, is of more general use to an intermediate user. Some authors prefer to convey their ideas through a knowledge based article to facilitate the user needs. This approach is usually practiced by a dynamic industry, such as [[Information technology]].<ref name=kbad>{{cite web
Line 134 ⟶ 133:
# '''Collaboration''': Enabling multiple contributors to work on documentation simultaneously, similar to code development.
 
==== Benefits of Docs as Code: ====
 
* '''Consistency''': Documentation can be kept in sync with the codebase, ensuring accuracy.
* '''Automation''': Automated tools can handle repetitive tasks, such as formatting and deployment.
* '''Collaboration''': Encourages contributions from various team members, including developers, testers, and product managers.Combining Docs as Code with Agile methodologies creates a robust framework for maintaining high-quality, up-to-date documentation. Here’sHere's how to integrate the two:
 
# '''Setup Version Control''': Start by placing your documentation in a version control system. Structure it similarly to your codebase.