(Last modified Thu Jun 05 15:23 2008)
- [+] Overview
- [+] What the course is about
- [+] The items on the class home page
- [+] The class photo
- [+] Quick summary of the quarter
- [+] The categories of software requirements
- [+] Most common: functional (FR) vs. nonfunctional (NFR)
- [+] Perhaps more insightful: behavioral vs. developmental quality
- [+] Functional requirement: a system typically either meets it
(completely) or doesn't (at all). "The 'walk' light is on
only when that road's lights are red."
- [+] Nonfunctional requirement: a system typically meets it to a
degree. "The system is easy to use."
- [+] Nonfunctional requirements can be divided into
operationalizable and checkable (and perhaps a third category
of neither operationalizable nor testable -- this has not
been established yet)
- [+] Operationalizable: can be refined into a functional
requirement whose satisfaction implies the NFR's
satisfaction.
Example: Security (an NFR), refined into
Confidentiality (also NFR) and then into
PIN-authenticated (functional)
- [+] Checkable: cannot be operationalized, but there can be a
functional requirement for a system component that can
check and verify whether the NFR is being satisfied.
Example: Performance (NFR), refined into "Check
database workload", refined into "Monitor and report
number of queries answered per second" (FR)
- [+] Software quality
- [+] What is software quality?
- [+] How can we talk about quality?
- [+] The general idea of software quality
- [+] Some standard lists of ilities
- [+] Comparing ilities
- [+] Conflicts between ilities
- [+] The classic conflict: Security (integrity in ility
lists) vs. usability
- [+] Other pairs of ilities conflict as well
- [+] Specifying a quality attribute operationally
- [+] How can we reason about quality?
- [+] The structure of an argument
- [+] Claim
- [+] Grounds for claim
- [+] Warrant relating grounds to claim
- [+] Backing supporting appropriateness of warrant in this
context
- [+] Qualifier expressing the strength of the argument
- [+] Rebuttals giving the exceptional conditions under
which the argument does not hold
- [+] Using argument structure to support a claim
- [+] Using argument structure to analyze a claim
- [+] Using argument structure to choose a better claim that
you should be making instead
- [+] Examples
- [+] How can we build in quality during development?
- [+] Data on actual development projects
- [+] Well-known quality failures
- [+] QA planning
- [+] Spend an hour early rather than 100 hours later
- [+] Add reviews in every phase
- [+] The table illustrating how early detection of
problems can markedly reduce overall cost
- [+] Reviewing complements testing
- [+] Increase effectiveness of reviews by training
- [+] Reviewing software artifacts
- [+] Why review?
- [+] How to review effectively
- [+] Pressman's "golden guidelines"
- [+] In-class exercise (reviewing a document for a
specific audience and purpose)
- [+] Software risk items (SRIs)
- [+] Risk management
- [+] Allocating QA effort most effectively
- [+] Risk management actions
- [+] Probability x damage (quantitative == numeric)
- [+] Working some examples of quantitative rankings
- [+] Qualitative rankings (qualitative == not numeric)
- [+] Working some examples of qualitative rankins
- [+] Review of problematic material
- [+] What it means if you choose to assert S but can't come up
with a strong argument for S
- [+] Addressing the specifics of a question
- [+] hw1 B
- [+] "least relevant at the present day" vs. "less
relevant than in Boehm's day"
- [+] "less relevant than the other 19"
- [+] hw1 C
- [+] example systems
- [+] Software specification
- [+] Greek letters, mathematical words and plurals
- [+] Sets
- [+] Extensional vs. intensional
- [+] Cardinality
- [+] The empty set {}
- [+] {} is not nothing
- [+] { {} } is not the empty set (it is the set whose
only member is the empty set)
- [+] Subset
- [+] Equality between sets
- [+] Intersection, union, difference
- [+] Powerset
- [+] Why one way to write the powerset of X is 2 to the X
- [+] Constructing a powerset
- [+] A powerset and the subset relation form a partially
ordered set
- [+] Cartesian product of two sets
- [+] Properties of set operations
- [+] Closure
- [+] What it means for a set to be closed under an
operation
- [+] What the closure of a set under an operation is
- [+] Enumeration
- [+] Enumerating a finite set
- [+] Enumerating an infinite set
- [+] Enumerating the integers, the rationals
- [+] Diagonalization
- [+] The reals are not enumerable; there are more reals
than integers.
- [+] Why it's called diagonalization
- [+] How it identifies an example number which is not in
the list
- [+] Russell's paradox
- [+] The Russell set R
- [+] R is the set of all sets that do not contain
themselves
- [+] Characteristics of a good specification
- [+] It is unambiguous: it can only be interpreted one way
- [+] It can be used to verify a possible instance
- [+] Time-invariant vs temporal
- [+] time-invariant: always true or always false
- [+] temporal: only true at particular times
- [+] Sets and sequences as specifications
- [+] Set of acceptable states (time-invariant)
- [+] Set of acceptable sequences of states (temporal)
- [+] Logics
- [+] What is logic?
- [+] Meta-language and meta-statements
- [+] Propositional logic (PL)
- [+] True, false, NOT, AND, OR
- [+] Propositional variables (representing true or false)
- [+] There is just one PL language (but see below that
there are an infinite number of FOL languages)
- [+] Properties of PL operations
- [+] When do we say two PL statements alpha and beta
logically equivalent?
- [+] If for every interpretation (binding of T or F to
the propositional variables), either both alpha
and beta are true or both alpha and beta are false
- [+] Usually we use the properties of PL operations to
show two PL statements are logically equivalent
- [+] We can also use a truth table for the two
statements
- [+] What material implication is and is not
- [+] alpha arrow beta pronounced "if alpha then beta"
- [+] Is a logical operation ("if alpha then beta" is
equivalent to "not alpha, or beta")
- [+] Is not causality or implication
- [+] The paradoxes of classical logic
- [+] Binding precedence (watch out!)
- [+] Disproof in PL
- [+] disproving "not A" (one step)
- [+] disproving "A and B" (could be easy)
- [+] disproving "A or B" (always harder)
- [+] First-order logic (FOL)
- [+] Components of a FOL language
- [+] PL
- [+] Domain, names, functions, predicates
- [+] A domain consisting of a set of objects we
want to talk about (can be infinite)
- [+] Names of objects in the domain (usually only
names for some of them)
- [+] Functions representing relations among
objects in the domain
- [+] Predicates that are true or false of an
object, or of a list of objects
- [+] Variables referring to objects in the domain
- [+] Used by quantifications
- [+] Quantifications
- [+] Existential (a formula is true of some
object in the domain)
- [+] Universal (a formula is true of all objects
in the domain)
- [+] There are an infinite number of possible FOL languages
- [+] All FOL languages share the same logical symbols
- [+] PL
- [+] the set of variables (we usually use
lower-case letters), the quantifications
- [+] existential and universal quantifications
- [+] Decidability, completeness
- [+] Any "interesting" FOL is not decidable
- [+] Church's undecidability theorem
- [+] Any "interesting" FOL is either inconsistent or
incomplete
- [+] Goedel's first incompleteness theorem
- [+] The Goedel statement G
- [+] Informally, G is "G cannot be proven true"
- [+] Properties of FOL quantifiers
- [+] Binding precedence
- [+] Disproof in FOL
- [+] predicate applied to an object (one step)
- [+] universal (could be easy)
- [+] existential (always hard)
- [+] Temporal logic
- [+] diamond phi "eventually phi" (phi will be true at
some time in the future)
- [+] box phi "always phi" (phi will be true at all times
in the future)
- [+] Models of time
- [+] Time has a beginning (vs time began infinitely
ago)
- [+] Time has an ending (vs time continues infinitely
in the future)
- [+] Time is dense, like the reals (vs time is
discrete, like the integers)
- [+] Time is linear (vs time can branch in the future,
vs time could have branched in the past)
- [+] Formal languages as specifications
- [+] A formal language is a compact way of expressing a set of
sequences of symbols
- [+] Often the set is infinite (so using a language rather
than an enumeration is appealing)
- [+] Regular expressions
- [+] Each regular expression has:
- [+] an alphabet (the set of characters that appear in
the strings the regular expression specifies)
- [+] possibly some metacharacters
- [+] [ and ] defining a character class
- [+] | indicating an alternation between two
patterns (one or the other)
- [+] Closures
- [+] ? (0 or 1)
- [+] + (1 or more)
- [+] * (0 or more)
- [+] {m,n} (a metasymbol composed of several
characters)
- [+] {m,}
- [+] ( and ) enclosing a subpattern evaluated
before its containing pattern
- [+] CFGs
- [+] Terminals, nonterminals, rules
- [+] Replacement (in terms of production)
- [+] (Parsing, in terms of reduction)
- [+] The language produced by a CFG
- [+] The language recognized by a CFG
- [+] The Chomsky hierarchy
- [+] The hierarchy
- [+] Regular languages/expressions, finite state
machines
- [+] Context-free languages/grammars, pushdown automata
- [+] Context-sensitive languages/grammars, linear
bounded automata
- [+] Recursive languages, unrestricted grammars,
Turning machines
- [+] Interesting examples
- [+] Context-free but not regular: a^ib^i
- [+] Context-sensitive but not context-free: a^ib^ic^i
- [+] Recursive but not context-sensitive: all strings
xi that are not in the language of the ith
context-sensitive grammar, for any specific
enumeration of the context-sensitive grammars
- [+] Not recursive: all strings that either do not
describe Turing machines, or do not describe
Turing machines that do not accept their own
descriptions
- [+] Scenarios and other narrative / interaction models
- [+] Scenarios
- [+] Use cases
- [+] MSCs
- [+] State-based models
- [+] Statecharts
- [+] FSP, labelled transition systems; partial views of state
models
- [+] Software testing
- [+] Fault-error-failure
- [+] Goals and strategies
- [+] Effectiveness, efficiency
- [+] Coverage and when to stop testing
- [+] Test cases
- [+] Oracles
- [+] Automated support for testing
- [+] Regression testing