Subject details

Upon successful completion of this subject you should be able to:

  • explain and apply the main aspects of software engineering;
  • evaluate requirements for a software system;
  • apply the process of analysis and design using the object-oriented approach;
  • work effectively in a team to analyse the requirements of a complex software system, and solve problems by creating appropriate designs that satisfies these requirements;
  • communicate effectively with others, especially regarding the progress of the system development and the content of the design;
  • recognise and describe current trends in the area of software engineering. 
    • Introduction to Software Engineering
    • Process and Tools, Introduction to TDD
    • Team work, Project Management and Java
    • UML use case diagrams,user stories
    • UML class and object diagrams
    • UML communication and sequence Diagrams
    • Design Principles and Patterns
    • State Diagrams
    • Activity Diagrams
    • Testing
  • Study resources

    • Instructional methods

      • Discussion forum/Discussion Board
      • Embedded Multimedia
      • Online Quizzes/Tests
      • Online assignment submission
      • Podcasting/Lecture capture
      • Standard Media
      • Streaming Multimedia
      • Web links
    • Online materials

      • Resources and Links
      • Printable format materials
      • Audio-Video streaming
      • Quizzes

You are recommended to have completed the following subjects(s) or have equivalent knowledge before starting this subject:


Or have equivalent programming experience before starting this subject.

Special requirements

  • OtherDetails -

    Stable broadband connection required to access online learning materials and live chat sessions/recordings. (note: mobile broadband users may have difficulties participating in live chat sessions)

This subject is designed to provide you opportunity to gain knowledge and skills necessary to analyse, design and implement complex software engineering projects.

You should learn to analyse and design fairly complex real-life systems, working as teams. You are also made aware of current software engineering standards and processes. You are also taught to consider qualitative aspects including maintainability, extensibility, reusability and robustness in every stage of the software-engineering life-cycle. 

At the end of the subject you should be able to combine top-down and bottom-up approaches to software design and choose the most appropriate process considering the underlying technology, project duration, the level of risks and the customer expectations.

  • Assignment 1 (15%)
  • Assignment 2 (15%)
  • Assignment 3 (20%)
  • Invigilated Exam (50%)

Textbook information is pending.

Related degrees