An activity involving professionals such as Technology Architects, System Analysts, Project Managers, Programmers, Technical Writers and Testers (QA/QC). Sometimes it is performed just by Computer Scientists or SoftwareDevelopers (in which case they singlehandedly play all the above roles) that consumes massive amounts of coffee and pizza and generates bugs, code, documentation, RepetitiveStressInjury, EyeStrain?, and LowerBackProblem?s.
Documentation, from design documentation, to in-line code documentation, to deployment documentation, to user documentation, even though one of the most important activities for proper software development and maintenance through its life cycle, seems to be in most cases an afterthought. (MattHeusser adds - yes, of course, it is an afterthought. The purpose of SoftwareDevelopment is to produce the software. Documentation may be valuable, but it isn't software. Otherwise, we'd call it DocumentationDevelopment - right?)
It's not always like this..
It generates documentation? Since when? (HaHaOnlySerious)
It generates a (perceived) need for documentation, which, if and when actually produced, is promptly filed away and forgotten. -- JohnReynoldsTheStudent
My concern is, given a certain piece of software, which is the enough, useful and readable documentation that must be generated, to make the corresponding maintenance task independent of the original/previous programmers - Metodio Cruz
In regard to documents: the documents produced as a part of the process of software development should be little different from those produced by any other engineering discipline. Of course, this is presuming that the other required components of the process have already produced their own documents:
See: MostApplicationsNeedaUserManual, WithoutaUserManual, ProductTesting, AcceptanceTesting, BetaTesting, LanguageWars