CSE 331 wrapup CSE 331 University of Washington. CSE 331 goals Enable students to manage complexity ensure correctness write modest programs.

Slides:



Advertisements
Similar presentations
Configuration Management
Advertisements

25 February 2009Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department.
Object-Oriented Software Development CS 3331 Fall 2009.
Software Engineering CSE470: Process 15 Software Engineering Phases Definition: What? Development: How? Maintenance: Managing change Umbrella Activities:
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
CSC 402 Requirements Engineering 1. 2 Problem Definition Requirements Definition informal statement of need for system natural language statement of what.
1 Software Engineering II Presentation Software Maintenance.
The Waterfall Model A Case Study
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.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Mastering OOA/OOD with UML. Contents Introduction Requirements Overview OOAOOD.
Design, Implementation and Maintenance
Effective Methods for Software and Systems Integration
Formal Methods 1. Software Engineering and Formal Methods  Every software engineering methodology is based on a recommended development process  proceeding.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
CPIS 357 Software Quality & Testing
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
CSE 140 wrapup Michael Ernst CSE 140 University of Washington.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
What is a Business Analyst? A Business Analyst is someone who works as a liaison among stakeholders in order to elicit, analyze, communicate and validate.
High Performance Embedded Computing © 2007 Elsevier Lecture 3: Design Methodologies Embedded Computing Systems Mikko Lipasti, adapted from M. Schulte Based.
High Performance Embedded Computing © 2007 Elsevier Chapter 1, part 2: Embedded Computing High Performance Embedded Computing Wayne Wolf.
The First in GPON Verification Classic Mistakes Verification Leadership Seminar Racheli Ganot FlexLight Networks.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
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.
Formal Methods in Software Engineering
Software Engineering Principles. SE Principles Principles are statements describing desirable properties of the product and process.
CSCI 521 Final Exam Review. Why Establish a Standard Process? It is nearly impossible to have a high quality product without a high quality process. Standard.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.
The Software Development Process
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.
Software Maintenance Speaker: Jerry Gao Ph.D. San Jose State University URL: Sept., 2001.
CSE 190p wrapup Michael Ernst CSE 190p University of Washington.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
Scientific Debugging. Errors in Software Errors are unexpected behaviors or outputs in programs As long as software is developed by humans, it will contain.
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.
CSE 303 – Software Design and Architecture
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.
SOFTWARE PROCESS IMPROVEMENT SHARATH CHANDAR REDDY ALETI CSC 532 TERM PAPER.
Formal Methods in Software Engineering1 Today’s Agenda  Mailing list  Syllabus  Introduction.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Course: Software Engineering – Design I IntroductionSlide Number 1 What is a specification Description of a (computer) system, which:  is precise;  defines.
C++ for Engineers and Scientists, Second Edition 1 Problem Solution and Software Development Software development procedure: method for solving problems.
© Chinese University, CSE Dept. Software Engineering / Topic 3: Software Engineering Principles Your Name: _____________________ Computer Science.
© Chinese University, CSE Dept. Software Engineering / Software Engineering Topic 1: Software Engineering: A Preview Your Name: ____________________.
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.
Zach Tatlock / Winter 2016 CSE 331 Software Design and Implementation Lecture 24 Wrap Up.
A Method for Improving Code Reuse System Prasanthi.S.
Configuration Management
CSE 331 Software Design & Implementation
Configuration Management
Classical Waterfall Model
CSE 331 Software Design and Implementation
CSE 331 Software Design & Implementation
CSE 303 Concepts and Tools for Software Development
CSE 331 Software Design & Implementation
CSE 331 Software Design & Implementation
Presentation transcript:

CSE 331 wrapup CSE 331 University of Washington

CSE 331 goals Enable students to manage complexity ensure correctness write modest programs

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

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

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

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 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

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

Correctness In the end, only correctness matters Near-correctness is often easy! Correctness can be difficult How to determine the goal? Requirements elicitation 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 Returnin gave a little practice

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 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

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: The problem sets 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!

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