Week 1
Tuesday's Lecture (20 Sep 2016):
Software engineering overview
[slides]
Required Readings:
Suggested Readings:
The aim with the above readings is to deepen your understanding of
what software engineering is, why the term was invented and is still
used, and why problems still exist.
Thursday's Lecture (22 Sep 2016):
Requirements engineering
[slides]
Required Readings:
- SWEBOK V3
Chapter 1 on Software Requirements.
Suggested Readings:
- Sommerville, Requirements Engineering chapter (locate it using the index).
Tutorials: No tutorials in Week 1 (or Weeks 2 and 3)
Week 2
Tuesday's Lecture (27 Sep 2016):
Use Cases
[slides]
Required Readings:
- The
System Requirements Specification for the Tokeneer ID
Station industrial case study. Look at the structure of the
Use-Case-like scenarios in Section 5, noting the different kinds
of fields in each scenario. How are these scenarios different from
the use cases presented in class? More generally, observe the kinds of information also
included elsewhere in the document.
Suggested Readings:
- Sommerville, Requirements Engineering chapter and sections on
Use Cases (locate them using the index).
- Use Case Fundamentals post on Alistair
Cockburn's website. Cockburn is author of books on writing
effective Use Cases and Agile software development.
- Stevens, Ch 7: The Essentials of
Use Case Models.
- Fowler, Ch 9: Use Cases
Thursday's Lecture (29 Sep 2016):
Software design and modelling
[slides]
Suggested readings:
- SWEBOK v3
Ch2 on Software Design, particularly Sections 1-3. By its nature,
SWEBOK is rather terse: it lists important topics but includes
often only very brief explanations.
- Sommerville Chapter on Architectural Design (Ch 11 in 8th Ed, Ch 6 in 9th and 10th Eds,)
- An
Introduction to Software Architecture CMU Tech Report. David Garlan and Mary Shaw. 1994.
- The Software Architecture and Design section, Chapters 1-3, of the
Microsoft
Application Architecture Guide, 2nd Ed. Ch 2 has a good survey
of key design principles.
The last three readings all cover a number of architectural styles
(also known as architectural patterns). The 3rd year SAPM course
goes into architectural styles in detail. For this course, you
should aim for basic familiarity with 2 or 3 styles, enough that you
can briefly describe each style and discuss how it realises general
design principles such as those outlined in the slides or covered
by the last reading.
Tutorials: No tutorials this week
Week 3
Tuesday's Lecture (4 Oct 2016):
UML Class diagrams
[slides]
Suggested readings:
- Stevens: Ch 3, Ch 5, Ch 2 for OO concepts, Ch 6 for abstract
classes and interfaces
- Lots online: search for "UML class diagram"
Thursday's Lecture (6 Oct 2016):
UML interaction diagrams
[slides]
Required reading: At least one of
You should know the idea of the CRC cards technique, including the basics of
what each letter in "CRC" refers to.
Suggested reading:
- Stevens: Ch 9 for basics of UML Sequence diagrams, Ch 10 for conditional and iterative behaviour
Tutorials: No tutorials this week
Week 4
Tuesday (11 Oct 2016):
NO LECTURE
Thursday's Lecture (13 Oct 2016):
Design Patterns [slides]
Required reading:
- Wikipedia entries on
Observer Pattern and
Template
Method Pattern.
You should know and understand those patterns
to the extent that you could use them, describe them in UML class and
sequence diagrams, and explain what they achieve and how
Suggested reading:
Read more on design patterns, e.g.
Tutorial 1:
Questions to work on before
the tutorial.
Week 5
Tuesday's Lecture (18 Oct 2016):
Construction I: version control and system building
[slides]
Required reading:
Suggested reading:
Thursday's Lecture (20 Oct 2016):
Construction II: good coding
[slides]
Required Readings:
Tutorials: No tutorials this week
Week 6
Tuesday's Lecture (25 Oct 2016):
Verification, validation and testing
[slides]
Thursday (27 Oct 2016):
NO LECTURE
Tutorial 2:
Questions to work on before
the tutorial.
Week 7
Tuesday's Lecture (1 Nov 2016):
Refactoring [slides]
Thursday's Lecture (3 Nov 2016):
Deployment and maintenance
[slides],
Bug reporting
[slides]
Tutorials: No tutorials this week
Week 8
Tuesday's Lecture (8 Nov 2016): Preview of coursework 3
Thursday's Lecture (10 Nov 2016):
Introduction to software processes
[slides]
Tutorial 3:
Week 9
Tuesday's Lecture (15 Nov 2016):
Agile processes and Extreme Programming
[slides]
Thursday's Lecture (17 Nov 2016):
Risk management and improving quality
[slides]
Tutorials: No tutorials this week
Week 10
Tuesday's Lecture (22 Nov 2016):
Non-functional requirements, reliability
[slides],
Usability
[slides]
Thursday's Lecture (24 Nov 2016):
IP and licensing [slides],
Ethics [slides].
Tutorial 4:
Questions to work on before
the tutorial.
Week 11
NO LECTURES THIS WEEK
Slides originally authored by Perdita Stevens and adapted by Nigel
Goddard, Ajitha Rajan and Paul Jackson.