This module introduces the necessary conceptual and analytical tools for systematic and rigorous development of software systems. It covers four main areas of software development, namely object-oriented system analysis, object-oriented system modelling and design, implementation, and testing, with emphasis on system modelling, design and implementation of software modules that work cooperatively to fulfill the system’s requirements. Tools for software development, such as Universal Modelling Language, program specification, and testing methods will be taught. Software engineering issues such as modularisation criteria, program correctness, and software quality will be covered. This module must be taken together with CS2101 Effective Communication for Technologists.