Learning Outcomes At the end of this course, students should be able to:
describe the concept of the software life cycle;
explain the phases of requirements analysis, design, development, testing and maintenance in a typical software life cycle;
differentiate amongst the various software development models;
utilise UML for object-oriented analysis and design;
describe different design architectures;
explain the various tasks involved in software project management; and
describe the basic legal issues related to Software Engineering.
Course Contents Software Engineering concepts and principles. Design, development and testing of software systems. Software processes: software lifecycle and process models. Process assessment models. Software process metrics. Life cycle of software system. Software requirements and specifications. Software design. Software architecture. Software metrics. Software quality and testing. Software architecture. Software validation. Software evolution: software maintenance; characteristics of maintainable software; re-engineering; legacy systems; software reuse. Software Engineering and its place as a computing discipline. Software project management: team management; project scheduling; software measurement and estimation techniques; risk analysis; software quality assurance; software configuration management. Software Engineering and law.