Discusses ways to develop software system designs that have the same tangibility as designs for hard objects such as buildings or computer hardware. Shows how to use steps called "essential tasks" to explain how each requirement will be satisfied, covering six essential tasks necessary for good run-time and build-time requirements, domain information, behavior identification and allocation, behavior description, and software system architecture. For software developers and managers. Annotation c. by Book News, Inc., Portland, Or.