Constructing nontrivial software is a complex task
problem analysis
overall design
documentation
testing
maintenance
management of all of the above
Neither the details nor the big picture must be permanently lost in the rush to get a system shipped.
Software production activity: