CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.

Slides:



Advertisements
Similar presentations
Configuration Management
Advertisements

Annoucements  Next labs 9 and 10 are paired for everyone. So don’t miss the lab.  There is a review session for the quiz on Monday, November 4, at 8:00.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
CSE 331 wrapup CSE 331 University of Washington. CSE 331 goals Enable students to manage complexity ensure correctness write modest programs.
MADALINA CROITORU Software Engineering week 1 Madalina Croitoru IUT Montpellier.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
1 Software Engineering II Presentation Software Maintenance.
Managing Reuse Presented by: Aisha Al-Hammadi. Outline Introduction History. The technical and managerial advantages of Reusing Solutions. The main challenges.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
CSC230 Software Design (Engineering)
Effective Methods for Software and Systems Integration
Chapter : Software Process
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
CPIS 357 Software Quality & Testing
EECE 310 Software Engineering Lecture 0: Course Orientation.
Top-Down Design and Modular Development
CSE 140 wrapup Michael Ernst CSE 140 University of Washington.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Lecture 0 – Course Introduction 1CSE 331 Au12 One handout up front!
CSE 331 SOFTWARE DESIGN & IMPLEMENTATION MIDTERM REVIEW Autumn 2011.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Software Development. Software Developers Refresher A person or organization that designs software and writes the programs. Software development is the.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
COMP 121 Week 1: Testing and Debugging. Testing Program testing can be used to show the presence of bugs, but never to show their absence! ~ Edsger Dijkstra.
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
Introduction to CSE 331 Software Design & Implementation Winter 2011
Chapter 7 Software Engineering Introduction to CS 1 st Semester, 2015 Sanghyun Park.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
CS Data Structures I Chapter 2 Principles of Programming & Software Engineering.
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
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.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
CS5103 Software Engineering Lecture 02 More on Software Process Models.
CSE 190p wrapup Michael Ernst CSE 190p University of Washington.
CS-112 Object Oriented Concepts Course Syllabus. Outline  Instructor and Prerequisites  What this course is  Learning outcomes  Degree program outcomes.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
CSE 331 Software Design & Implementation Dan Grossman Spring 2015 Course Victory Lap (Based on slides by Mike Ernst, Dan Grossman, David Notkin, Hal Perkins)
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
CSE 160 Wrap-Up CSE 160 Spring 2015 University of Washington 1.
Software Engineering for Capstone Courses Richard Anderson CSE 481b Winter 2007.
Objects First With Java A Practical Introduction Using BlueJ Well-behaved objects 2.1.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
Well-behaved objects Main concepts to be covered Testing Debugging Test automation Writing for maintainability Objects First with Java - A Practical.
Course: Software Engineering – Design I IntroductionSlide Number 1 What is a specification Description of a (computer) system, which:  is precise;  defines.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (1/2)
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
Software Design and Development Development Methodoligies Computing Science.
CSE 160 Wrap-Up UW CSE 160 Winter Presentations on Thursday 8:30-10:20am, Thursday 3/17 No more than 5 slides (including title slide) Time limit.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Zach Tatlock / Winter 2016 CSE 331 Software Design and Implementation Lecture 24 Wrap Up.
Advanced Software Engineering Dr. Cheng
Principles of Programming & Software Engineering
Outline Your one-minute feedback from last week
Configuration Management
Types for Programs and Proofs
CSE 374 Programming Concepts & Tools
CSE 331 Software Design & Implementation
CSE 331 Software Design and Implementation
Introduction to Software Testing
EECE 310 Software Engineering
CSE 331 Software Design & Implementation
CSE403 Software Engineering Autumn 2001
CSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation
What Is Good Software(Program)?
Presentation transcript:

CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1

10 weeks ago… We have 10 weeks to move to a level well above novice programmer: –Principled, systematic programming: What does it mean to get it right? How do we know when we get there? What are best practices for doing this? –Effective use of languages and tools: Java, IDEs, debuggers, JUnit, JavaDoc, svn The principles are ultimately more important than the details –Larger programs 2

A huge thanks to the folks who made it work 3

CSE 331 goals Enable you to manage complexity ensure correctness write modest programs (modest by industry standards, that is….) 4

CSE 331 topics Manage complexity: –Abstraction –Specification –Modularity –Program design & organization OO design, dependences, design patterns, tradeoffs –Subtyping –Documentation Ensure correctness: –Reasoning –Testing –Debugging Write programs: –Practice and feedback –Introduction to: tools (version control, debuggers), understanding libraries, software process, requirements, usability 5

Divide and conquer: Modularity, abstraction, specs No one person can understand all of a realistic system Modularity permits focusing on just one part Abstraction enables ignoring detail Specifications (and documentation) formally describe behavior Reasoning relies on all three to understand/fix errors Or to avoid them in the first place 6

Getting it right ahead of time Design: predicting implications Example: understanding interconnections, module dependency diagrams Understanding the strengths and weaknesses If you don’t understand a design, you can’t use it Documentation matters! 7

Documentation Everyone wants good documentation when using a system Not everyone likes writing documentation Documentation is often the most important part of a user interface What’s obvious to you may not be obvious to others 8 An undocumented software system has zero commercial value. John Chapin CTO of Vanu, Inc.

Testing Helps you understand what you didn’t understand while designing and implementing A good test suite exercises each behavior Theory: revealing subdomains, proves correctness Practice: code coverage, value coverage, boundary values Practice: testing reveals errors, never proves correctness A good test suite makes a developer fearless during maintenance 9

Maintenance Maintenance accounts for most of the effort spent on a successful software system –often 90% or more A good design enables the system to adapt to new requirements while maintaining quality –Think about the long term, but don’t prematurely optimize Good documentation enables others to understand the design A good test suite greatly reduces the risks of changes –And is a big part of the documentation/history of the project 10

Correctness In the end, only correctness matters Near-correctness is often easy! Getting it right can be difficult How to determine the goal? Requirements Design documents for the customer How to increase the likelihood of achieving the goal? Unlikely without use of modularity, abstraction, specification, documentation, design, … Doing the job right is usually justified by return on investment (ROI) How to verify that you achieved it? Testing Reasoning (formal or informal) helps! Use proofs and tools as appropriate 11

Working in a team No one person can understand all of a realistic system Break the system into pieces Use modularity, abstraction, specification, documentation Different points of view bring value Diversity is not just a “feel good” issue Work effectively with others Sometimes challenging, usually worth it Manage your resources effectively Time, people Engineering is about tradeoffs Both technical and management contributions are critical 12

How CSE 331 fits together 13 Lectures: ideas Specifications Testing Subtyping Equality & identity Polymorphism Design patterns Reasoning, debugging Events Usability, teamwork  Assignments: get practice  Design classes  Write tests  Write subclasses  Override equals, use collections  Write generic class  Larger designs  Correctness, testing  GUIs  (For fun and for future use)

What you have learned in CSE 331 Compare your skills today to 3 months ago Theory: abstraction, specification, design Practice: implementation, testing Theory & practice: correctness Bottom line: Much of what we’ve done would be easy for you today This is a measure of how much you have learned There is no such thing as a “born” programmer! Your next project can be more ambitious Genius is 1% inspiration and 99% perspiration. Thomas A. Edison

What you will learn later Your next project can be much more ambitious Know your limits Be humble (reality helps you with this) You will continue to learn Building interesting systems is never easy Like any worthwhile endeavor Practice is a good teacher Requires thoughtful introspection Don’t learn only by trial and error! 15

What comes next? Classes –CSE 403 Software Engineering Focuses more on requirements, sofware lifecycle, teamwork –Capstone projects –Any class that requires software design and implementation Research –In software engineering & programming systems –In any topic that involves software Having an impact on the world –Jobs (and job interviews) –Larger programming projects The purpose of computing is insight, not numbers. Richard W. Hamming Numerical Methods for Scientists and Engineers

Go forth and conquer System building is fun! It’s even more fun when you build it successfully Pay attention to what matters Use the techniques and tools of CSE 331 effectively 17