619 Final Review Last updated Spring 2010 © 2003 -2008: Paul Ammann.

Slides:



Advertisements
Similar presentations
Identity and Equality Based on material by Michael Ernst, University of Washington.
Advertisements

Mutability SWE 332 Fall 2011 Paul Ammann. SWE 3322 Data Abstraction Operation Categories Creators Create objects of a data abstraction Producers Create.
Data Abstraction II SWE 619 Software Construction Last Modified, Spring 2009 Paul Ammann.
Principles of Object-Oriented Software Development Behavioral refinement.
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
Cmp Sci 187: Midterm Review Based on Lecture Notes.
8.1 Classes & Inheritance Inheritance Objects are created to model ‘things’ Sometimes, ‘things’ may be different, but still have many attributes.
Specifications Liskov Chapter 9 SWE 619 Last Updated Fall 2008.
CISC6795: Spring Object-Oriented Programming: Polymorphism.
1 Abstraction  Identify important aspects and ignore the details  Permeates software development programming languages are abstractions built on hardware.
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION MIDTERM REVIEW Autumn 2011.
SWE 619 © Paul Ammann Procedural Abstraction and Design by Contract Paul Ammann Information & Software Engineering SWE 619 Software Construction cs.gmu.edu/~pammann/
Effective C#, Chapter 1: C# Language Elements Last Updated: Fall 2011.
332 Final Review Last updated Fall 2013 Professor Ammann.
Design Patterns Gang Qian Department of Computer Science University of Central Oklahoma.
OO as a language for acm l OO phrase l Mental model of key concepts.
619 Final Review Last updated Spring 2008 © : Paul Ammann.
Type Abstraction Liskov, Chapter 7. 2 Liskov Substitution Principle In any client code, if the supertype object is substituted by a subtype object, the.
Type Abstraction SWE Spring October 05Kaushik, Ammann Substitution Principle “In any client code, if supertype object is substituted.
CS 151: Object-Oriented Design October 15 Class Meeting Department of Computer Science San Jose State University Fall 2013 Instructor: Ron Mak
Design Patterns Introduction
Introduction to Patterns. Introduction to Patterns Pattern: Webster definition of Pattern: Something regarded as a normative example to be copied.
Data Abstraction SWE 619 Software Construction Last Modified, Spring 2009 Paul Ammann.
Ceg860 (Prasad)L17IT1 Inheritance Techniques Subcontracting Anchored Types.
PROGRAMMING TESTING B MODULE 2: SOFTWARE SYSTEMS 22 NOVEMBER 2013.
Example to motivate discussion We have two lists (of menu items) one implemented using ArrayList and another using Arrays. How does one work with these.
PROGRAMMING PRE- AND POSTCONDITIONS, INVARIANTS AND METHOD CONTRACTS B MODULE 2: SOFTWARE SYSTEMS 13 NOVEMBER 2013.
CS 210 Proxy Pattern Nov 16 th, RMI – A quick review A simple, easy to understand tutorial is located here:
Object orientation and Packaging in Java Object Orientation and Packaging Introduction: After completing this chapter, you will be able to identify.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
619 Final Review Last updated Fall 2011 Paul Ammann.
CSCE 240 – Intro to Software Engineering Lecture 3.
EECE 309: Software Engineering
Introduction to CS/SWE 332
Lecture 12 Inheritance.
Chapter 10 Design Patterns.
MPCS – Advanced java Programming
Common Design Patterns
Introduction to Design Patterns
Component Based Software Engineering
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2004.
Design Patterns.
Specifications Liskov Chapter 9
Lecture 2 of Computer Science II
object oriented Principles of software design
Type Abstraction SWE Spring 2009.
Review for the Midterm Exam
Abstraction Functions and Representation Invariants
SWE 332 Last Modified Spring 2010 Paul Ammann
Component-Level Design
CSE 1030: Data Structure Mark Shtern.
Type Abstraction Liskov, Chapter 7.
Generic programming in Java
Introduction to CS/SWE 332
SWE 619 Software Construction Last Modified, Fall 2015 Paul Ammann
Method Verification CS/SWE 332 Paul Ammann.
An Introduction to Software Architecture
619 Final Review Fall 2017 Professor Ammann.
Seminar 2 Design of Informatics Systems
ISpec: A Compositional Approach to Interface Specification
SWE 619 Last modified Fall 2007 Saket Kaushik, Paul Ammann
Chapter 8, Design Patterns Introduction
Lecture 13: Subtyping Rules Killer Bear Climber
CMPE 135 Object-Oriented Analysis and Design March 7 Class Meeting
Type Abstraction SWE Spring 2013.
Jim Fawcett CSE687 – Object Oriented Design Spring 2014
Software Development Process Using UML Recap
Inheritance Lakshmish Ramaswamy.
Abstract Types Defined as Classes of Variables
Method Verification Paul Ammann.
Presentation transcript:

619 Final Review Last updated Spring 2010 © 2003 -2008: Paul Ammann

Agenda Review Topics Covered Highlight Key Technical Concepts Identify Areas for Study on Final Final May Test Several Concepts in a Given Question Goal: Strong Showing on Final

Procedural Abstractions Specifications Preconditions (Requires Clause) Postconditions (Effects Clause) Modifies Clause You Can Read and Write Such Specifications Issues: Minimality Underdetermined Behavior Deterministic Implementations Generality

Exceptions Rationale for Exceptions Total vs. Partial Specifications Replacing Preconditions with Defined Behavior Role of “FailureException” Specifications Include Exception Returns Checked vs. Unchecked Exceptions Bloch’s List of Standard Exceptions Masking vs. Reflection

Data Abstraction Fundamental Topic Specifications for: Expect Significant Exam Coverage Specifications for: Overview (Typical “Object”) Abstraction Function (toString()) Representation Invariant (repOk()) Methods You Can Expect to Write/Modify Some or All of These Understanding, not Formality, is the Focus

More Data Abstraction IntSet and Poly Examples Mutability Reasoning about Data Abstractions Role of Abstraction Function Value of Abstraction Function in Specific Examples Role of Representation Invariant Value of Representation Invariant in Specific Examples How to Argue a that Method Meets its Contract Other Issues Exposing the Rep Adequacy

Iteration Abstraction Specifying Iterators Preconditions and Postconditions Constraints on Modifications While Generator is in Use Implementing Iterators in Java Abstraction Functions for Iterators Value of Abstraction Function in Specific Examples Abstraction Function For Extensions Allowing a prev() as well as a next() method Allowing a remove() method

Type Hierarchy Fundamental Topic Uses of Type Hierarchy Mechanisms Substitution Principle Uses of Type Hierarchy Extending Behavior vs. Multiple Implementations Mechanisms Extensions, Abstract Classes, Interfaces Understanding Overriding vs. Overloading Dynamic Dispatching Apparent Type vs. Actual Type

Type Hierarchy Reasoning About Subtypes Signature Rule Methods Rule Rules for Exceptions Methods Rule Preconditions/Postconditions More Rules for Exceptions Properties Rule

Generics Replacing raw types with generics Eliminating unchecked warnings Generic interactions with Lists vs. Arrays Covariant Arrays vs. Invariant Generics Generifying types and methods Bounded wildcards Relaxing the invariance of generics

Polymorphic Abstraction Element Subtype vs. Related Subtype Comparable vs Comparator Addable vs. Adder Be Prepared to Analyze and/or Complete an Implementation

Concurrency Simple Thread Interactions Shared Access to Mutable Data Synchronized Methods Possible Executions in the Absence of Synchronization Roles for wait() and notify()

Specification Checking Specifications for Common Properties Temporal Logic for Specification Computational Tree Logic (CTL) Linear Temporal Logic (LTL) Simple Specification Patterns KSU material Huth and Ryan is also a excellent source

Methods Common to All Objects equals() Transitivity, Symmetry, Substitution for Subtypes hashcode() Consistency with equals() toString() clone() Why is Liskov’s clone() (page 97) wrong? Comparable

Classes and Interfaces Immutability Why it is Preferable How to Achieve Composition vs. Inheritance Why is Composition Preferable? Potential Problems for Inheritance Mechanisms to Prohibit Inheritance

Specifications Specificand Sets Generality vs. Restrictiveness Redundancy Definitions Examples Relevance to Type Abstraction Methods Rule

Design Patterns Introduction to Design Patterns Characterization of Patterns Name Problem Solution Consequences Example Patterns Factory, Singleton, Bridge, Decorator, Command, Iterator, State, Template

Secure Programming Introduction to Secure Implementation What is software NOT supposed to do? Bugs Misuse Cases Vulnerabilities/Exploits You need to think about the bad guy! Most vulnerabilities are simple mistakes YOUR software can be better

Special Topics Junit How to extract basic tests from a contract What is Junit How to use Junit How to write tests in JUnit How to extract basic tests from a contract Cover each exceptional condition Cover “normal” behavior May require several tests

Wrap Up Open Book (May decide against…) Open Slides (paper, not electronic) Closed Notes (May have one index card) Questions?