What are some well-known formal methods applied in software engineering?
What is the difference between a software requirement and
a software specification?
The introductory lecture identified phases of the software development
life cycle.
List each of these phases and explain the purpose/activities of each.
A particular software engineering formal method is often targeted
at a particular phase of software development. List the formal methods
that we will cover in this class along with the development phase in which
they will be used.
What are the perceived strengths of formal methods in software engineering?
What are the perceived weaknesses of formal methods in software engineering?
What do we mean by strong formal method and why are such
methods potentially more attractive than "non-strong" methods?
Be able to define the following: set, relation, function, scalar, partial
function, total function.
Be able to define the following properties of binary relations: reflexive,
transitive, symmetric, anti-symmetric.
Be able to define and compute the following operations on sets and
relations
set union, intersection, difference, complement, inclusion
relation composition, transposition
Be able to define the semantics of first-order predicate calculus
(conjunction, disjunction, implication, negation, and universal and
existential quantifiers).
Understand the implicit constraints associated with relation
multiplicity declarations.
Give a one paragraph summary of UML class diagrams explaining their purpose,
primary semantic components, application domains in which
they've been effective, forms of commercially available tool support.
Be able read and draw UML class diagrams.
Understand how to render a UML class diagram as an object model in USE.
Be able to create object and association instances in USE.
Understand and be able to apply the different command line options
of USE.
Given a UML class diagram, be able to generate the corresponding
Java code skeletons.
Given some Java code, be able to construct the corresponding
UML type diagrams.
Give a one paragraph summary of UML's OCL notation explaining its purpose,
primary semantic components, how they can be used in applications,
forms of commercially available tool support.
Be able to use simple OCL specifications.
Give several paragraphs contrasting OCL and Alloy --
refering to their notational differences, semantic differences, and
relative expressive capabilities.
Given OCL constraints, explain how these might be enforced
cleanly at the source code level.