1 x 120-minute lecture weekly
1 x 120-minute workshop weekly
2 x 1-hour project works weekly
Enrolment not permitted
ENGR2792 has been successfully completed
Assumed knowledge
Fundamental knowledge of information systems and programming.
Topic description

This topic focuses on the design phase of the software development lifecycle, that is, the process of defining the internal structure of a software system that will serve as a basis for its construction. Software design strategies and methods will be covered with an emphasis on object-oriented analysis and design. Design patterns, quality assurance approaches and the need for systematic documentation will also be emphasised. The use of UML (unified Modelling Language) as a tool for structural and behavioural modelling will be introduced.

Educational aims

This topic introduces the process, techniques, and methods of software design with a particular emphasis on the object oriented paradigm. The aims are to extend students’ understanding of the nature and the role of architecture, component, interface, and design pattern in the context of software system design, and the need to take multiple perspectives and use modelling tools, such as UML (the Unified Modelling Language) to arrive at an optimal design. Opportunities to practice the application of tools, principles and methodologies will be provided to further students’ understanding of object-oriented analysis and design, as well as further developing their problem solving, teamwork and structured documentation skills.

Expected learning outcomes
On completion of this topic you will be expected to be able to:

  1. Describe the key features of the object-oriented paradigm
  2. Discuss the advantages and disadvantages of the object-oriented approach for software development
  3. Describe how the approach impacts on the nature of the development process
  4. Specify and perform the activities involved in object-oriented analysis and design (OOAD)
  5. Describe the basics of UML (the Unified Modelling Language) and apply these to OOAD
  6. Describe the nature of design patterns and their contribution to design solutions
  7. Understand the role of ethics in the software engineering process and as software engineers in general
  8. Conduct independent additional studies on issues related to software design and present findings in a written research report