University of St Andrews
MSc in Advanced Computer Science: Advanced Software Engineering
This web site supports my course module in Advanced Software Engineering and gives you access to all of the materials on the course. Notes etc. will also be put on the studres server but not before they are available here.
Textbook
The recommended textbook for the course is:
Software Engineering, 8th edition. Ian Sommerville. Addison Wesley. 2006.
This general book on software engineering will provide you with:
1. Required background knowledge for the course.
2. Supporting material for this module on Advanced Software Engineering
3. Supporting material for the 2nd semester module on Critical Systems Engineering.The 8th edition of the book is an update of the 7th edition which includes much of the material required. If you already own a copy of the 7th edition, please email me and I will arrange to make the additional material that is required for this course available to you.
The material in this course is based on Chapters 18, 19 and 31.
Course material
Coursework
Assessment for this course is entirely based on coursework – there are no formal examinations. You will be expected to complete two pieces of coursework – a review of papers on software reuse and related topics and a practical implementation of software services.
The coursework specification will be made available and will be discussed during the lecturing period
Summarising and critiquing research papers
Service-based software development
Background and pre-requisites
This is a course on advanced software engineering, therefore I will assume that you already have an understanding of some fundamentals of software engineering. You may have covered these in your undergraduate course or you may have read about them elsewhere.
For students without any previous exposure to software engineering, you must be aware of basic notions of software engineering:
Chapter 1, Introduction. Software Engineering, 7th or 8th edition
All students must be familiar with the notion of a software process and different types of software process. This is covered in:
Chapter 4, Software Processes. Software Engineering, 7th or 8th edition.
Developing requirements is a fundamental part of software engineering and you should understand what a requirement it and what is included in a requirements document. This is covered in:
Chapter 6, Software requirements. Software Engineering, 7th or 8th edition.
You should also be familiar with the notion of modelling a system using the Unified Modeling Language (UML). Different types of model that may be developed are covered in:
Chapter 8, System models, Software Engineering, 7th or 8th edition.
Further examples on the UML are covered in Chapter 14, Object-oriented design.
For an overview of the UML constructs, I recommend:
Using UML: Software Engineering with Objects and Components. Authors:, Perdita Stevens with Rob Pooley. Publisher:, Addison-Wesley