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. The course will focus on the object-oriented approach for analysis and design where students will study Object-oriented modeling (OOM) techniques supported by the Unified Modeling Language framework and learn its application throughout the entire software development life cycle. Students will also gain an appreciation of the difference between writing programs and doing analysis and design.
Problem formulation and decomposition (analysis) and solution building (design) will be covered. Students will work in small groups with each group having the responsibility for requirements analysis, design and implementation of a software system. Case tools will be used in several stages of the development process. Knowledge of an Object-Oriented language such as Java or C++ is a pre-requisite for this course.
Develop a working understanding of formal object-oriented analysis and design processes,
Develop an appreciation for and understanding of the risks inherent to large-scale software development,
Learn (through experience!) techniques, processes, and artifacts that can mitigate these risks,
Develop the skills to determine which processes and OOAD techniques should be applied to a given project, and
Develop an understanding of the application of OOAD practices from a software project