(Last modified Thu Jun 05 15:23 2008)

home teaching teaching schedule site map

In4matx 115
Software Specification and
Quality Engineering
Spring 2008
Outline of class material
- [+] 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

Share-Alike Made with jEdit Valid CSS! Valid HTML 4.01! UC Irvine Thomas A. Alspaugh
Assistant Professor, Informatics Dept.
School of Information and Computer Sciences