Introduction To Software Project Management
Introduction To Software Project Management
Lecture 1
Introduction to Software Project
Management
Overview
Software engineering
Software project management
Formal methods
[Bauer, 1969]
[Blanchard, 1998]
value
nextLight : Light → Light
nextLight(l) is
case l of
red → redamber,
redamber → green,
green → amber,
amber → red
end,
Software Project 28
Management
limit : Junction → Nat
limit(j) is
if ns(j) isin {amber, redamber} \/
ew(j) isin {amber, redamber}
then 1 else 4 end,
Software Project 29
Management
Critical properties
Safety:
Not both green at the same time:
G(safe(junction))
i.e. Globally (in all states), the junction is safe
Liveness:
In each direction, lights will eventually go green:
G(F(ns(junction) = green))
i.e. Globally, in the Future, North-South is green
/\ G(F(ew(junction) = green))
ltl_assertion
[safe] T |- G(safe(junction)),
[live_ns] T |- G(F(ns(junction) = green)),
[live_ew] T |- G(F(ew(junction) = green))
Software Project 32
Management
Counterexample for 'safe':
========================
Step 0:
junction = mk_Junction(red, red, 0)
------------------------
Step 1:
junction = mk_Junction(red, red, 1)
...
Step 4:
junction = mk_Junction(red, red, 4)
------------------------
Step 5:
junction = mk_Junction(redamber, redamber, 0)
...
Step 7:
junction = mk_Junction(green, green, 0)
Summary:
The assertion 'safe' is invalid.
The assertion 'live_ns' is valid.
The assertion 'live_ew' located at is valid.
Software Project 33
Management
What are formal methods for?
Clarify and fix requirements
Support early analysis:
Static analysis
Testing
Model checking
Proof
Provide a basis for implementation