Prerequisites: 95-713Java II Large-scale software development has been described as one of the most difficult of human undertakings. This course examines the reasons for the inherent complexity of software construction, and presents structured methods to deal effectively with it. While other techniques will be briefly examined, the course will focus on the object-oriented approach to analysis and design. Students will gain an appreciation of the difference between writing programs and building software. Problem formulation and decomposition (analysis) and solution building (design) will be covered, but emphasis will also be given to the management of software development and maintenance. Students will work in small groups, each group having the responsibility for developing a software module. These modules will ultimately be interlocked into a functioning software product. Commercial software development tools will be used in several stages of the development process.