ENGINEERING TRIPOS PART IIA –
Module 3F6 – Software Engineering
Software forms an important part of many modern engineering products, from
telecommunications to automotive to internet-based systems. This course will
provide an understanding of the technical and management processes involved in
the design of software systems. Software engineering concepts are considered at
a range of scales, from the manipulation of object-orientated concepts, through
architectural design components, to the building of large software systems.
Object-Oriented Software Design. (8L)
- The Concepts Behind Software Design: abstraction, problem partitioning, how to identify components.
Object-Orientated Programming Design and Analysis: classes and objects,
encapsulation and data hiding, abstraction and inheritance, polymorphism.
Formal Tools: introduction to UML.
Design Patterns: frequently occurring design techniques
and their role in building systems.
- User Interface Design: use cases, designing for the user, UI design patterns.
Software Systems and Engineering (8L)
Concurrent and Distributed Systems: basic concepts, architecture, maintenance.
Database Systems: database management systems, transaction processing,
concurrency control, check-pointing and recovery.
- Software Development Methodologies: from waterfall to agile programming.
Software Management: project lifecycle, source code control, code reviews, testing, the nightly build, release management, maintenance and refactoring, organising teams.
On completion of the course students should:
Object-Orientated Software Design
Understand the benefits of object-oriented analysis and design, its concepts and processes.
Be familiar with formal design tools for object
orientated design and analysis.
Recognise and understand some frequently used design
Be aware of the process involved in user interface design.
Software Systems and Engineering
Appreciate the basic design issues and concepts in distributed,
real time and concurrent systems.
Understand software development methodologies.
- Understand the main issues and processes necessary to achieve effective software product development.
Please see the Booklist for Part IIA Courses for references for this module.
Last updated: December 2012