- Critically assess an informal text-based software requirements document, identifying ambiguities,
omissions and inconsistencies. Translate such a document into
object-oriented requirements using a Noun/Verb/Relational-Phrase methodology.
Construct a data dictionary, and relate this to the original requirements
document using hypertext technology.
-
Identify, express in text, and formalise using LSCs the
important use-cases in a requirements document. You should be able to distinguish between normal and exceptional
scenarios.
-
Draw LSCs using the Play-Engine, given a pre-existing user interface model.
You should be able to organise your charts within a project, using the Play-Engine.
You should also be able to modify the different components
of a project with an understanding of the technical effects of any changes
-
Exercise a set of LSCs using the Play-Engine simulator to study their interaction,
and how they co-operate to achieve the user requirements. You should understand what incomplete
and inconsistent requirements are, and how to identify these by using simulation.
-
Translate a short piece (less than 20 lines) of object-oriented code into a flowchart.
You should understand the meaning of a valid labelling of such a chart by logical assertions
according to Floyd's invariant assertion method.
-
Construct a valid labelling of a flowchart by means of dragging a pre-condition forwards, or a
postcondition backwards, and using basic logical transformations.
You should be able to use your knowledge of programming to synthesize
loop invariants and thus prove a program is mathematically correct with respect to a software requirement.
-
Understand the syntax of a simple sequential object-oriented programming language and be able to correctly add extra features to the syntax.
-
Understand the operational semantics of a simple sequential object-oriented programming language and be able to correctly add extra features to the semantics (for example garbage collection) that define the meaning of new syntactic features.
-
Understand the logic of a simple sequential object-oriented programming language and be able to explain the meaning of rules of inference.
-
Understand the concept of an abstract data type, how it relates to a class definition, and be able to define new simple data types.