The development of software systems is a complex process involving a variety of individual tasks, collaborative work, and lifecycle management of the resulting products and product parts. Software development teams are supported in their work by a number of methods for the various production phases, and by appropriate tools of varying degrees of sophistication. Due to the immaterial nature of software, its development can be regarded as the goal-oriented production of a heterogeneous set of mostly highly-structured, interrelated units of information
Klaus R. Dittrich, Dimitris Tombros, Andreas Geppe