This is the home page for the School of Informatics course "SAPM:
Software Architecture, Process, and Management", given by Allan Clark
in January-March of 2013. If you have any questions/comments/suggestions
then please contact me via email: a.d.clark at ed.ac.uk
Course Description
This course considers the many ways in which development and maintenance
of large software systems differs from that of small systems. It
discusses the high level architectural decisions that may control the
complexity of such systems, and the architectural degradation that leads
to legacy systems. It considers the processes by which large systems can
be developed and the role of managers in planning and guiding
development, predicting and mitigating risks, and improving quality.
The lectures and exam are identical for level 10 and level 11 students
but MSc students (level 11) undertake more advanced coursework to meet
the additional learning outcome.
Further information can be found
here(for level 10)
and
here(for level 11)
Grading
The final exam counts for 75%, and the coursework count for 25%.
This is the same for both level 10 and level 11 students, although the
coursework is different for each, see below.
Coursework
I promised a more formal description to be posted on Friday, but other
commitments have taken priority, so I will endeavour to do this over
the weekend.
- Level 11
-
Variable deadline no later than Thursday 28th of March 4pm
- Level 10
-
Variable dealines
no later than Monday 18th of March 4pm
- Feedback
-
Feedback will be given within two weeks of the deadline. The deadlines
are variable so that means the feedback deadlines are also variable.
With feedback students will receive provisional marks, but for the
level 10 students a part of your mark is available throughout the
course and so a grade given before its end will necessarily be
provisional.
- Lecture slides
-
coursework.pdf
- Formal Handout
-
-
- General University rules for course work
-
Exam
The exam time table has not yet been set but will be in the semester 2
examination diet. The following information has been copied from
here and is here only for convenience and
should not be relied upon.
The Semester 2 Examination diet will run from
Monday 29 April - Saturday 25 May 2013 (inclusive of Saturdays).
Publication date is Monday 19 March.
August Resit Examination diet will run from
Monday 12 August to Saturday 24 August (inclusive of Saturdays).
Publication dates will be announced in due course.
Course Blog
The course blog is
now live
.
Please post comments and add to the debate. When you do remember to include
your name and/or matriculation number. You may be awarded some marks for
your coursework if you are involved in insightful discussions.
IMPORTANT:
Please do not submit to me in Word format. Please submit in plain text.
You can use
standard markdown
to provide some basic formatting.
If you really feel you require substantial formatting let me know.
Alternatively you can submit in HTML format.
Course Issues
The course now has an
issues tracker. Please use this to report any way in which you believe
the course could be improved. This is hosted on github which unfortunately
requires that you are logged in (and have an account in the first place).
If you would rather submit an issue report anonymously, please simply email
me, you can use one of many anonymous email services such as
send-email.org. Please use the subject
"SAPM Issues".
Topics
This is the list of topics that have appeared in the lectures so far.
-
- Topic
- Introduction
- Intended Delivery Lecture Date
-
Monday January 14th
- Description
- Overview and motivation for the course.
- Slides
- introduction.pdf
- Required Readings
-
- Suggested Readings
-
-
- Topic
- Formal project management
- Intended Delivery Lecture Date
-
Monday 21st January
- Description
- Introducing "traditional" project management techniques,
such as work breakdown structures, network diagrams, critical
paths, Gantt charts, etc., and evaluating whether and how they
can be used in software projects.
Mainly sets the stage for later discussions.
- Slides
-
project-management.pdf
- Required Readings
-
- Suggested Readings
-
-
- Topic
- Tools for Software Projects
- Intended Delivery Lecture Date
-
Thursday 24th January
- Description
- Discussing automated tools helpful for running large
software projects.
- Slides
-
software-project-tools.pdf
- Required Readings
-
- Suggested Readings
-
-
- Topic
-
Estimating size and effort
- Intended Delivery Lecture Date
-
Monday 28th January
- Description
-
Discussing techniques for estimating how much effort will be
required for a project. The basic problem: estimates are needed
at the start of the project, in order to make decisions, yet data
is available at the end of the project, when it no longer
matters. Yet one must do something!
- Slides
- estimation.pdf
- Required Readings
- None
- Suggested Readings
-
-
Facts 8-13 inclusive from,
Robert L. Glass,
Facts and Fallacies of Software Engineering,
2002,
Addison-Wesley
- Boehm, B., Clark, B., Horowitz, E., Madachy, R., Shelby, R.,
and Westland, C.,
Cost models for future software life cycle processes:
COCOMO 2.0
Annals of Software Engineering, 1995.
(Can be a tough read)
- Humphrey 2002, A Discipline for Software
Engineering, ISBN 0-201-18095-2: Chapter 4-5.
-
- Topic
-
Measuring Software
- Intended Delivery Lecture Date
-
Thursday 31st January
- Description
-
Discussing how, what, and why to measure
quantities needed for project planning and execution, but that
material is mainly for self-study because much of it was already
covered in earlier courses. Main message: you need data to
run your project properly, but you can't usually measure what you
really want to know, and measuring something you can trust takes
a lot of time and effort, so you need to focus on measuring the
few key things on which the success of your project most depends.
- measurement.pdf
- Required Readings
-
- Suggested Readings
-
- S.L. Pfleeger, R. Jeffery, B. Curtis, B. Kitchenham. Status Report on Software Measurement. IEEE Software, March/April 1997.
- R.J. Offen, R. Jeffery. Establishing Software Measurements Programs. IEEE Software, March/April 1997.
- J. Boegh, S. De Panfilis, B. Kitchenham, A. Pasquini, A Method for Software Quality Planning, Control, and Evaluation. IEEE Software, March/April 1999.
-
- Topic
-
Design Patterns
- Intended Delivery Lecture Date
-
Monday 4th February
- Description
-
Briefly introducing design patterns focusing on one example
pattern (Composite). For more detail, see the required reading
below. The main focus is on how design patterns can help large
teams communicate more efficiently and effectively.
- Slides
- design-patterns.pdf
- Required Readings
-
-
Wikipedia entry on Design Patterns (click on `Composite')
-
- Reference
-
M. Fowler.
Avoiding Repetition
IEEE Software, 18(1), 2001.
- Deadline
- Monday 11th of February
- First Blogger
- Open
- Second Blogger
- Open
-
- Reference
-
T. Winn, P. Calder.
Is This a Pattern?
IEEE Software, 19(1):59-66, January/February, 2002.
- Deadline
- Monday 11th of February
- First Blogger
- s0829961
- Second Blogger
- s0931717
- Suggested Readings
-
-
- Reference
-
F. Buschmann, K. Henney, D.C. Schmidt.
Past, Present, and Future Trends in Software Patterns.
IEEE Software, 24(4):31-37, July, 2007.
- Deadline
- Monday 11th of February
- First Blogger
- s0814845
- Second Blogger
- s0927596
- Erich Gamma, Richard Helm, Ralph E. Johnson, and John M. Vlissides. 1993. Design Patterns: Abstraction and Reuse of Object-Oriented Design. In Proceedings of the 7th European Conference on Object-Oriented Programming (ECOOP '93), Oscar Nierstrasz (Ed.). Springer-Verlag, London, UK, UK, 406-431.
- D. Manolescu, W. Kozaczynski, A. Miller, J. Hogg. The Growing Divide in the Patterns World. IEEE Software, 24(4):61-67, July 2007.
- M.P. Cline. The pros and cons of adopting and applying design patterns in the real world. Communications of the ACM, 39(10):47-49, October, 1996.
- L. D'Adderio, R. Dewar, A. Lloyd, P. Stevens. Has the pattern emperor any clothes? A controversy in three acts. In ACM/SIGSOFT Software Engineering Notes, Jan/Feb 2002.
- Gamma, Helm, Johnson, and Vlissides 1995, Design Patterns: Elements of Reusable Object-Oriented Software Addison-Wesley, ISBN 020163361X.
- L. Rising. Understanding the Power of Abstraction in Patterns. IEEE Software, July/August 2007.
-
- Topic
-
Architecture Patterns
- Intended Delivery Lecture Date
-
Monday 4th February
- Description
-
Introducing architectural patterns, focusing on how they can
allow large systems to be broken up into chunks that developers
or small teams can understand and implement somewhat
independently. Discussion continues next week.
- Slides
-
architectural-patterns.pdf
- Required Readings
-
-
- Reference
-
N.B. Harrison, P. Avgeriou, U. Zdun.
Using Patterns to Capture Architectural Decisions.
IEEE Software, July/August 2007.
- Deadline
- Monday 11th of February
- First Blogger
- s0937942
- Second Blogger
- s0923194
-
- Reference
-
Michael Armbrust, Armando Fox, Rean Griffith,
Anthony D. Joseph, Randy Katz, Andy Konwinski,
Gunho Lee, David Patterson, Ariel Rabkin,
Ion Stoica, and Matei Zaharia. 2010.
A view of cloud computing.
Communications of the ACM 53, 4 (April 2010), 50-58.
- Deadline
- Monday 11th of February
- First Blogger
- s0907806
- Second Blogger
- s1260575
- Suggested Readings
-
-
- Reference
-
M. Stal.
Using Architectural Patterns and Blueprints for Service-Oriented Architecture.
IEEE Software, March/April 2006.
- Deadline
- Monday 11th of February
- First Blogger
- s0950134
- Second Blogger
- s0930584
-
- Reference
-
M. Hafiz, P. Adamczyk, R.E. Johnson.
Organizing Security Patterns.
IEEE Software, July/August 2007.
- Deadline
- Monday 11th of February
- First Blogger
- s0942753
- Second Blogger
- s0975046
-
- Reference
-
Brian Hayes. 2008.
Cloud computing.
Communications of the ACM 51, 7 (July 2008), 9-11.
- Deadline
- Monday 11th of February
- First Blogger
- s0922504
- Second Blogger
- s0818057
-
- Reference
-
Mike P. Papazoglou and Willem-Jan Heuvel. 2007.
Service oriented architectures:
approaches, technologies and research issues.
The VLDB Journal 16, 3 (July 2007), 389-415.
- Deadline
- Monday 11th of February
- First Blogger
- Open
- Second Blogger
- Open
- Buschmann, Meunier, Rohnert, Sommerlad & Stal 1996, A
System of Patterns, ISBN 0471958697: Chapter 2.
-
- Topic
-
Scripting
- Intended Delivery Lecture Date
-
Thursday 7th February
- Description
-
Describing Scripted Components architectural pattern.
Scripted Components is perhaps the most fundamental pattern
applying to most large programs, and deserves serious
consideration before starting any large system.
- Slides
-
scripting-architecture.pdf
- Required Readings
-
- Suggested Readings
-
-
- Topic
-
Methodologies
- Intended Delivery Lecture Date
-
Monday 11th February
- Description
-
Presenting material on the Waterfall Model, focusing on why it
is an inappropriate metaphor for software development, and
reviewing material on the Unified Process, focusing on how UP
uses modeling to discover problems as early as possible, before
software is coded and set in stone.
Discussing XP and other agile methodologies, focusing on how
they strive to keep software from ever being set in stone,
remaining flexible and responsive to changing requirements, rather
than trying to do everything up front.
- Slides
-
methodologies.pdf
- Required Readings
-
- Suggested Readings
-
-
- Reference
-
M. C. Paulk.
Extreme Programming from a CMM Perspective.
IEEE Software, November/December 2001.
- Deadline
- Monday 25th of February
- First Blogger
- s0923534
- Second Blogger
- s0948339
-
- Reference
-
Various authors,
Manifesto for Agile Software Development.
IEEE Software, November/December 2001.
- Deadline
- Monday 25th of February
- First Blogger
- Open
- Second Blogger
- Open
-
- Reference
-
P. Schuh.
Recovery, Redemption, and Extreme Programming.
IEEE Software, November/December 2001.
- Deadline
- Monday 25th of February
- First Blogger
- s0821562
- Second Blogger
- s0943749
- Jacobson, Booch and Rumbaugh 1999, The Unified Software Development Process, ISBN 0201571692: Chapter 1.
- IBM Rational Unified Process (proprietary)
- Beck 2004, Extreme Programming Explained, ISBN 0321278658. (Start with this introduction; may want to check out this resource site)
- Cohn 2004, User Stories Applied, ISBN 0321205685, chapter 2 (available for free download at userstories.com);
see also examples of things that are not user stories.
-
- Reference
- Brooks 1982,
Mythical Man-month,
ISBN 0201835959 (for updated 1995 edition).
- Deadline
- Monday 25th of February
- First Blogger
- s0912336
- Second Blogger
- s0905642
-
- Reference
- Brooks 1987,
No Silver Bullet
- Deadline
- Monday 25th of February
- First Blogger
- s0956075
- Second Blogger
- s0786789
-
- Topic
-
Software Failures
- Intended Delivery Lecture Date
-
Thursday 14th February
- Description
-
Describing a litany of software project failures, trying to tease
out the sources of failure. Ultimately the same reasons crop up
again and again, but there are many of them, ranging from
social/organisational through unmanaged technical risk, poor design
and implementation to bad delivery, rollout and support. Awareness
of some these possibilities might, one hopes, mitigate their
likelihood in future.
- Slides
-
failures.pdf
- Required Readings
-
-
- Reference
-
R. N. Charette (September 2005).
Why Software Fails. IEEE Spectrum.
- Deadline
- Thursday 28th February
- First Blogger
- s0901522
- Second Blogger
- s0940933
- Suggested Readings
-
-
- Topic
-
Risk Management
- Intended Delivery Lecture Date
-
Monday 25th February
- Description
-
Discussing techniques for anticipating and planning around major
risks to the success of your project.
- Slides
-
risk-management.pdf
- Required Readings
-
- Suggested Readings
-
- Marvin J. Carr, Suresh L. Konda, Ira Monarch, F. Carol Ulrich, Clay F. Walker (1993). Taxonomy-Based Risk Identification, Technical Report, CMU/SEI-93-TR-6, ESC-TR-93-183.
- R. Fairley. Risk Management For Software Projects. IEEE Software, May 1994.
- R.E. Fairley. Software Risk Management. IEEE Software, May/June 2005.
- Charette 1990, Application Strategies for Risk Analysis, New York: McGraw-Hill.
- Ould 1999, Managing Software Quality and Business Risk, ISBN 0-471-99782-X: Chapter 3.
-
- Topic
-
People and Groups
- Intended Delivery Lecture Date
-
Thursday 28th February
- Description
-
Discussing human factors in software development, at the level of
individuals, small teams, and large organisations (including
the Capability Maturity Management model, ISO-9000, and root cause
analysis).
- Slides
-
people-and-groups.pdf
- Required Readings
-
- Suggested Readings
-
-
- Topic
-
Open Source Development
- Intended Delivery Lecture Date
-
Monday 4th March
- Description
-
Discussing open source development methodologies,
principles, and sample projects, as examples of
large-scale distributed software development.
- Slides
-
open-source.pdf
- Required Readings
-
- Suggested Readings
-
-
- Topic
-
Software Evolution
- Intended Delivery Lecture Date
-
Thursday 7th March
- Description
-
Discussing methods for dealing with changes to software systems
over time, including reverse engineering, refactoring an existing
design into a more suitable one, and how to add features to or
interface with legacy systems.
- Slides
-
evolution.pdf
- Required Readings
-
- Suggested Readings
-
-
- Topic
-
Semester Summary
- Intended Delivery Lecture Date
-
Monday 11th March
- Description
-
Discussing what you need to know for the final exam, and how
to focus your revision time. (Last class meeting.)
- Slides
- summary.pdf
- Required Readings
- None
Topics
This is the list of topics that will be discussed in forthcoming lectures.
- No remaining topics to be lectured
Miscellaneous Links
This is just a section for some links related to the course.
- Related Reading
-
Reading that might interest you or give you a different perspective about
something which is covered in the course, generally a list of blog-post
links.
- Revision Control Software
-
If you are new to revision control software, I don't see any great
need to look beyond git and mercurial, other than often large software
houses use out-of-date tools simply through inertia. Even so learning
git or mercurial should prepare you well enough to quickly get up to
speed in any sane revision control software.