Exam crib sheet Thu, Dec 14: 475 final exam 10:30-12:30 Reading to review UML: ch 1-9 topics summary: overview of design cycle Use cases Sidebars on design by contract, CRC cards, testing UML diagram types: class, sequence, collaboration, package, state, activity Design Patterns (Gang of 4): Chapters 1 and 2 plus 8 specific patterns: Singleton, Observer, Adapter, Decorator, Factory, Abstract Factory, Composite, Flyweight CRC cards: oopsla paper Testing handout (Liskov/Guttag): black box vs glass box, unit vs integration and some additional topics to review Design documents. Inception Elaboration Requirements: domain functions, system attributes. Use cases (role of the different headings title, actors, purpose, description, alternate courses, type, cross references specification principles invariants, pre and post-conditions. How used. iterative construction support tools design environments, document drafting support: Dome, Rational Rose Database: SQL, JDBC, mysql, Oracle, Access archiving and distributing: cvs, tar, jar code and documentation assembly: make, javadoc client/server client: Java Swing applets, html forms server: Servlets and HTTPServlets Grammar driven object/method determination. Explain how to use this idea. frameworks: client-server, model-view-controller Glass box testing question: Give an all-paths test suite for method Foo::bar(). class Foo { [local fields (local state variables of each object of class Foo) ] /** * y <- bar( [args] ) * precondition: [statement about local state of object and args at the * time member bar is called.] * postcondition: [ statement about local state of object, output value, * and any mutable args at the time member bar returns.] */ public int bar( [args] ) { ... if ( ... ) { for( ... ) ...; ... } else { ... while ( ... ) ...; } } } Black box testing question: Give a good suite of test data sets for black box testing of method Foo::bar(). Also give the expected results, that is describe how to know if the postcontitions are met for each test data set. class Foo { [local fields (local state variables of each object of class Foo) ] /** * y <- bar( [args] ) * precondition: [statement about local state of object and args at the * time member bar is called.] * postcondition: [ statement about local state of object, output value, * and any mutable args at the time member bar returns.] */ public int bar( [args] ){...} }