Short Description
In this unit, students examine how problems are analysed to create requirements specifications, how systems are designed through abstract models, how to plan, test, and maintain software, and how to organise these processes into a software life cycle. They will learn how software engineering is a collaborative process that involves conversations, not just with clients, but with fellow engineers too. Students will learn to think about the software they are producing and to build functioning teams that can work together to deliver software to clients. There will be content about implementation in general, and we will talk about program design from an object-oriented perspective.
You’ll learn to:
- Identify issues and appropriate solutions for the design and implementation of complex software problems
- Perform evaluations of design solutions to determine if they are fit for purpose
- Demonstrate an understanding of the principles of software development paradigms and their relationship to the appropriateness of an eventual software solution
- Critically evaluate and contrast contemporary software engineering paradigms for defined software engineering problems, given a set of relevant development constraints
Topics covered in this unit may include (but are not limited to) the following:
- The building blocks of software
- Software design paradigms: Waterfall, Iterative, Agile, (for example: Scrum, XP, Kanban), Test-Driven Development (TDD)
- Software engineering concepts
- Principles for engineering complex software systems