CSE 331 SOFTWARE DESIGN & IMPLEMENTATION MIDTERM REVIEW Autumn 2011.

Slides:



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

CSE341: Programming Languages Lecture 16 Datatype-Style Programming With Lists or Structs Dan Grossman Winter 2013.
Chapter 10 THINKING IN OBJECTS 1 Object Oriented programming Instructor: Dr. Essam H. Houssein.
General OO Concepts and Principles CSE301 University of Sunderland Harry R. Erwin, PhD.
CS 211 Inheritance AAA.
Inheritance Inheritance Reserved word protected Reserved word super
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION WORKSHEET B Autumn 2011 Today’s Process If you haven’t completed the solution sheet for Worksheet B, please leave.
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION TESTING II Autumn 2011.
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Immutable Objects and Classes.
1 The Design of Class Mechanism for MOBY. 2 Earlier Software designers have to choose between the following schemes for the development Earlier Software.
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
Aalborg Media Lab 23-Jun-15 Inheritance Lecture 10 Chapter 8.
ECE122 L17: Method Development and Testing April 5, 2007 ECE 122 Engineering Problem Solving with Java Lecture 17 Method Development and Testing.
8.1 Classes & Inheritance Inheritance Objects are created to model ‘things’ Sometimes, ‘things’ may be different, but still have many attributes.
3/15/05H-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Evaluating Class Diagrams Topics include: Cohesion, Coupling Law of Demeter (handout)
Architecture, Implementation, and Testing Architecture and Implementation Prescriptive architecture vs. descriptive architecture Prescriptive architecture:
CSE 331 Software Design & Implementation Dan Grossman Fall 2014 Data Abstraction: Abstract Data Types (ADTs) (Based on slides by Mike Ernst, David Notkin,
Slides by Vinod Rathnam with material from Alex Mariakakis Kellen Donohue, David Mailhot, and Hal Perkins Midterm Review.
EECE 310: Software Engineering Final Exam Review.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
CSC 211 Introduction to Design Patterns. Intro to the course Syllabus About the textbook – Read the introduction and Chapter 1 Good attendance is the.
SOFTWARE DESIGN.
Guided Notes Ch. 9 ADT and Modules Ch. 10 Object-Oriented Programming PHP support for OOP and Assignment 4 Term project proposal C++ and Java Designer.
Effective C#, Chapter 1: C# Language Elements Last Updated: Fall 2011.
Low-Level Detailed Design SAD (Soft Arch Design) Mid-level Detailed Design Low-Level Detailed Design Design Finalization Design Document.
OOP Class Lawrence D’Antonio Lecture 3 An Overview of C++
332 Final Review Last updated Fall 2013 Professor Ammann.
Kal Bugrara, Ph.DSoftware Engineering Northeastern University Fundamentals Of Software Engineering Lecture V.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Abstract Data Types – Examples / Summary (Based on slides by Mike Ernst and David Notkin)
90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. 1 Lecture 1: Introduction Data.
Object-Oriented Programming © 2013 Goodrich, Tamassia, Goldwasser1Object-Oriented Programming.
Evaluating an Object-Oriented Design ©SoftMoore ConsultingSlide 1.
1 Inheritance Reserved word protected Reserved word super Overriding methods Class Hierarchies Reading for this lecture: L&L 9.1 – 9.4.
Inheritance Type/Subtype Relationship. Inheritance Idea: An object B of one type, termed child class, inherits from another object A of another type,
Chapter 5 Classes and Methods II Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition) by S.N. Kamin, D. Mickunas, E.
PROGRAMMING TESTING B MODULE 2: SOFTWARE SYSTEMS 22 NOVEMBER 2013.
Refactoring Agile Development Project. Lecture roadmap Refactoring Some issues to address when coding.
Lecture 2: Review of Object Orientation. © Lethbridge/La ganière 2005 Chapter 2: Review of Object Orientation What is Object Orientation? Procedural.
Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)
 Description of Inheritance  Base Class Object  Subclass, Subtype, and Substitutability  Forms of Inheritance  Modifiers and Inheritance  The Benefits.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
619 Final Review Last updated Fall 2011 Paul Ammann.
3/1/01H-1 © 2001 T. Horton CS 494 Object-Oriented Analysis & Design Evaluating Class Diagrams Topics include: Cohesion, Coupling Law of Demeter (handout)
Liang, Introduction to Java Programming, Eighth Edition, (c) 2011 Pearson Education, Inc. All rights reserved Fall 2013 Chapter 10 Thinking.
Slides by Alex Mariakakis Section 5: Midterm Review.
CompSci 280 S Introduction to Software Development
Introduction to CS/SWE 332
Week 2, Day 1: The Factory Method Pattern
Chapter 11 Object-Oriented Design
CSE 331 Software Design & Implementation
Interfaces and Inheritance
Objects First with Java A Practical Introduction using BlueJ
Abstraction Functions and Representation Invariants
Introduction to Data Structures
CSE341: Programming Languages Lecture 16 Datatype-Style Programming With Lists or Structs Dan Grossman Autumn 2018.
Section 6: Midterm Review
CSE 1030: Data Structure Mark Shtern.
Implementing Non-Static Features
Introduction to CS/SWE 332
CSE341: Programming Languages Lecture 16 Datatype-Style Programming With Lists or Structs Dan Grossman Autumn 2017.
Lecture 4: Data Abstraction CS201j: Engineering Software
619 Final Review Last updated Spring 2010 © : Paul Ammann.
619 Final Review Fall 2017 Professor Ammann.
Data Structures and Algorithms for Information Processing
Objects First with Java A Practical Introduction using BlueJ
Objects First with Java A Practical Introduction using BlueJ
CS 112 Programming 2 Lecture 02 Abstract Classes & Interfaces (2)
Presentation transcript:

CSE 331 SOFTWARE DESIGN & IMPLEMENTATION MIDTERM REVIEW Autumn 2011

The other kind of testing… CSE 331 Autumn  Actually, it’s the same as software testing (mostly)  By picking effective subdomains, I hope to determine how likely it is that you understand the material – it’s inherently sampling, not proof  In this situation, a single test suite will be executed across 56 different processors

The form of the test: Subject to some (but limited) change CSE 331 Autumn  Part I: True/false with a brief justification  5-10 questions  Two examples from last year  “hashCode can be determined at most once – that is, only when it is first actually requested by a client and then it can be cached.”  “If an immutable object throws an exception, it is never left in an undesirable or indeterminate state.” In small groups, spend two minutes discussing these

Part II: Testing CSE 331 Autumn  More than on last year’s exam – now about 20% of the total points  Don’t worry about white-box testing, as we haven’t yet covered it  Likely kinds of questions  In what ways is/is not unit testing like ? You will not need a deep understanding of these other kinds of testing  Write some black-box tests for a given specification and describe what subdomains they are intended to address

Part III: Specifications CSE 331 Autumn  (Not entirely distinct from the next Part on ADTs)  Likely kinds of questions  Infer a likely specification (requires/modifies/etc.) from a piece of code  Given a specification, provide an implementation that is almost surely not what the specification intended  ??

Part IV: ADTs 6  Likely kinds of concepts to be tested  Is one ADT specification a true subtype of another ADT specification? Some variant of the following question from last year In small groups, spend two minutes discussing this example question

Part IV: ADTs continued 7  Likely kinds of concepts to be tested  What is, or is wrong with, a representation invariant for a given class?  Is there representation exposure? How might you fix it?  Relationship of representation invariants and abstraction functions In small groups, spend two minutes discussing this example question

Part V: Miscellaneous CSE 331 Autumn  This part might not be included  And if included, I’m not yet sure what it will be

Per lecture: points to focus upon But others are fair game still CSE 331 Autumn  Lecture 1 – introduction  Programs (implementation) satisfying specifications  It’s tricky business  It’s a many-to-many mapping  No notion of a “correct” specification  Some can surely admit implementations that are highly unlikely to be desired

Lecture 2 – specifications CSE 331 Autumn  The value of specifications in addressing complexity in software  The dual roles of client and implementer  What does the client depend upon?  What does the implementer need to provide?  Why is a specification useful for this?  Why not just read code? Just use documentation? Just use Java interfaces? Etc.?  Javadoc and the 331 extensions to it

Lecture 3 – testing CSE 331 Autumn  Testing is one form of quality assurance for software  Testing terminology – pass, fail, test case, test suite, …  General notion of kinds of testing  Subdomains  JUnit’s role – what can it help you do and not do?

Lecture 4 – equality CSE 331 Autumn  Different notions of equality  Key underlying properties of (any useful) equality  Relationship of equals and hashCode  Overriding vs. overloading

Lectures 5 and 6 – ADTs CSE 331 Autumn  Motivations for the use of ADTs  Primary focus on ADT operations rather than representations  Different kinds of ADT operations (observers, mutators, etc.) and differences between mutable and immutable ADTs  Hide the implementation decisions to allow change  Abstraction function – what is it, why is it important, how is it used?  Representation invariant – what is it, why is it important, how is it used?  The relationship between the AF and RI, the ADT and its implementation (that diagram)  Representation exposure – what is it, how to eliminate it?

Lecture 7 – subtyping & subclassing CSE 331 Autumn  A way to share behaviors and/or code  Weaker and stronger specifications – and the relationship to satisfying implementations  True subtyping vs. Java subtyping – allowing substitutability  Subtyping is over specifications; subclassing is over implementations – both use similar mechanisms in Java  Mutability can be useful, but can confuse the issue of true subtyping

Lecture 8 – modular design principles CSE 331 Autumn  Cohesion (why together?) and coupling (how do modules interact?)  Different kinds of dependences – invokes, names, extends, etc.  Ways to manage dependences – e.g., Law of Demeter  Module dependence diagrams (largely to identify coupling)

Lecture 9 – design style CSE 331 Autumn  Long list of good things to do in coding  Method, field, constructor design  Naming  Class design ideals (cohesion, coupling, clarity, etc.)  Documentation  Invariants  static vs. non-static; public vs. private ; etc.  Selecting types  Independence of views

Lectures CSE 331 Autumn  Design patterns, basic GUI  Not a focus of this test – will be fair game on the final