The full version of the software requirements specification we used can be found here and the slides I used showing the exercises you did (although we didn't get to the third) are here.
A few of the main points discussed were:
Why not a generalization (inheritance)? Because there isn't a clear Is-A relationship between them. The one that is tempting (and might be appropriate in other applications) is the idea that maybe "a Subtask is a Task". However, we know from the SRS that a Subtask does not have states other than open and closed -- for example, maybe you can defer a Task but not a Subtask. This suggests that it probably isn't true that any context that would work with a Task would also work with a Subtask, which is what we'd need for a generalization relationship that way round. Technically, we might have more luck with "a Task is a Subtask" but that will probably fail by a Subtask having the capability to contact its parent, which won't (always) make sense for a Task, and besides, it sounds weird, i.e., it doesn't correctly model the concepts in the domain.
perdita@inf.ed.ac.uk
)
Informatics Forum, 10 Crichton Street, Edinburgh, EH8 9AB, Scotland, UK
Tel: +44 131 651 5661, Fax: +44 131 651 1426, E-mail: school-office@inf.ed.ac.uk Please contact our webadmin with any comments or corrections. Logging and Cookies Unless explicitly stated otherwise, all material is copyright © The University of Edinburgh |