ENGINEERING TRIPOS PART IIA –
2012/2013
Module 3F6 – Software Engineering
and Design
|
Timing:
|
Lent
|
|
Prerequisites:
|
None
|
|
Structure:
|
16L
|
AIMS
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.
SYLLABUS
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.
OBJECTIVES
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
patterns.
-
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.
REFERENCES
Please see the Booklist for Part IIA Courses for references for this module.
Last updated: December 2012
teaching-office@eng.cam.ac.uk