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. Students will 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, each group having the responsibility for analysis, design and implementation of a software system. Case tools will be used in several stages of the development process.
Learning Objectives:
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
management perspective
Tentative Weekly Plan
Grading (Theory 75%)