CSE 403, Winter 2003 Software Engineering

Slides:



Advertisements
Similar presentations
Building Bug-Free O-O Software: An Introduction to Design By Contract A presentation about Design By Contract and the Eiffel software development tool.
Advertisements

The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Software Construction
CS 3500 SE - 1 Software Engineering: It’s Much More Than Programming! Sources: “Software Engineering: A Practitioner’s Approach - Fourth Edition” Pressman,
Designing the system Conceptual design and technical design
PowerPoint Presentation for Dennis, Wixom & Tegarden Systems Analysis and Design Copyright 2001 © John Wiley & Sons, Inc. All rights reserved. Slide 1.
1 Objectives To introduces the concept of software Design. To introduce the concept of Object- Oriented Design (OOD). To Define various aspects about object.
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Introduction to High-Level Language Programming
Chapter 5CSA 217 Design in Construction Chapter 5 1.
1 BTEC HNC Systems Support Castle College 2007/8 Systems Analysis Lecture 9 Introduction to Design.
6-January-2003cse Introduction © 2003 University of Washington1 Introduction CSE 403, Winter 2003 Software Engineering
CSE 303 – Software Design and Architecture
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
GCSE OCR 3 A451 Computing Professional standards
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Slide 1 Construction (Testing) Chapter 15 Alan Dennis, Barbara Wixom, and David Tegarden John Wiley & Sons, Inc. Slides by Fred Niederman Edited by Solomon.
Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft February.
SE: CHAPTER 7 Writing The Program
1 CS 501 Spring 2004 CS 501: Software Engineering Lecture 2 Software Processes.
The Software Development Process
Chapter 6 CASE Tools Software Engineering Chapter 6-- CASE TOOLS
Designing Classes. Software changes Software is not like a novel that is written once and then remains unchanged. Software is extended, corrected, maintained,
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Intermediate 2 Computing Unit 2 - Software Development.
MNP1163/MANP1163 (Software Construction).  Minimizing complexity  Anticipating change  Constructing for verification  Reuse  Standards in software.
CSI 1340 Introduction to Computer Science II Chapter 1 Software Engineering Principles.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
JavaScript Introduction and Background. 2 Web languages Three formal languages HTML JavaScript CSS Three different tasks Document description Client-side.
Final Fantasy ½: IOC Overview Team Q CSE 403 Winter ‘03 I’ve got something special for you.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
Chapter 9 Database Planning, Design, and Administration Transparencies © Pearson Education Limited 1995, 2005.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
INTRO. To I.T Razan N. AlShihabi
Software Development.
What is Wrong with Models?
Information Systems Development
Types for Programs and Proofs
Chapter 18 Maintaining Information Systems
Data Abstraction: The Walls
Complexity Time: 2 Hours.
Design and Implementation
Design and Maintenance of Web Applications in J2EE
Objects First with Java
Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach
Design and Programming
The Object-Oriented Thought Process Chapter 05
Model-View-Controller Patterns and Frameworks
Introduction to Systems Analysis and Design
Thursday’s Lecture Chemistry Building Musspratt Lecture Theatre,
Chapter 2 – Software Processes
Chapter 9 – Software Evolution and Maintenance
Programming Logic and Design Fourth Edition, Comprehensive
An Introduction to Software Architecture
Chapter 7 –Implementation Issues
Cost Estimation Van Vliet, chapter 7 Glenn D. Blank.
Chapter 13: Construction
Chapter 8 Software Evolution.
CS 240 – Advanced Programming Concepts
Applying Use Cases (Chapters 25,26)
Chapter 5 Architectural Design.
Introduction Software maintenance:
Software Re-engineering and Reverse Engineering
Programming Logic and Design Eighth Edition
Logical Architecture & UML Package Diagrams
Presentation transcript:

CSE 403, Winter 2003 Software Engineering LittleApp to BigApp CSE 403, Winter 2003 Software Engineering http://www.cs.washington.edu/education/courses/403/03wi/ 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

Readings and References Chapters 1-3, Pragmatic Programmer, Hunt and Thomas Other References Chapter 19, Designing for Change, Rapid Development, McConnell Perfection and Simplicity, and Designing Distributed Systems, from A Conversation with Ken Arnold, by Bill Venners, artima.com 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

Program Programming System Programming Product Programming Systems 3 X LittleApp interfaces, system integration 3 X Programming Product Programming Systems Product generalization, testing, documentation, maintenance BigApp from Mythical Man-Month 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

From LittleApp to BigApp Our LittleApp prototypes have shown that the basic concepts are workable Likely open issues Correctness - dummy data Completeness - inflexible sources, usability Robustness - frustrating response to errors Style - design, generalization, documentation 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

cse403-11-LA2BA © 2003 University of Washington Design issues Interfaces What are the defined interfaces? Which fundamental decisions cannot be changed and still use the same architecture? Modules What are the major modules using those interfaces? Can fundamental design decisions in one module be changed without affecting the other modules? Documentation 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

cse403-11-LA2BA © 2003 University of Washington Designing for Change Change happens underlying technology changes, a performance goal is not met, new requirements are levied perhaps the product is a success and lives for a decade or two! A successful design hides the implementation decisions can change locally without causing ripples throughout the entire structure 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

Not a single tool, but an approach Identify areas likely to change Use information hiding to conceal the design decisions Develop a change plan Define families of programs Use object-oriented design from McConnell, Chap 19 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

cse403-11-LA2BA © 2003 University of Washington What might change? Hardware for sure - many possible platforms File formats - how many graphics formats? Inputs and outputs, user’s natural language Non-standard language features, libraries Features that are difficult to implement (AWT) Global variables Specific data structures and abstract data types Business rules, sequence of actions Requirements that were excluded, new features 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

Implementation is not just a detail What is important to keep in mind when you are designing a distributed system? A distributed system, in the sense in which I take any interest, means a system in which the failure of an unknown computer can screw you. Failure is the defining difference between distributed and local programming, so you have to design distributed systems with the expectation of failure. from Designing Distributed Systems, A Conversation with Ken Arnold, by Bill Venners 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

cse403-11-LA2BA © 2003 University of Washington Develop a change plan Use abstract interfaces first, then classes Never use hardcoded literals Use late binding strategies dynamic allocation of data structures let the data structure tell you how big it is Use table driven strategies getAppProperty(String key) midlet jad file getInitParameter(String name) servlet web.xml file servlet name to class mapping in web.xml 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

cse403-11-LA2BA © 2003 University of Washington More change plan Don’t duplicate code or state put it in a single method and call it when needed Keep the methods and classes simple and cohesive easier to reuse or use in a new way Avoid coupling Keep the general purpose layers free of implementation leakage from below 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

Define families of programs What are the change vectors? If your product is a success, where will it go next? international? - language, currency, measurement system scale? - cell, PDA, desktop browser, server product distribution? - corporate, personal retail, educational, ad supported, free “lite” Think about the minimal subset of functions needed in all versions and how to present it 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

Perfection and Simplicity I once heard you say there is no such thing as a perfect design. Could you clarify what you meant by that? There is no such thing as a perfect design for a couple of reasons. All designs take place in context … who will be using your design? … if you try to create a perfect design you will expend a huge amount of effort ... then there's the problem of predicting the future. The best that people can reasonably hope for is to put forth an appropriate amount of effort and get a good design that is sufficient. fromPerfection and Simplicity, A Conversation with Ken Arnold, by Bill Venners 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

cse403-11-LA2BA © 2003 University of Washington Now build it! Bad design leads you down the wrong road Bad construction takes you down a road full of potholes and bone-jarring problems Good construction techniques help build in quality the first time avoid having to back up and start over provide good visibility on how it’s going without using made-up numbers “we’re 96% done” 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

Some construction fundamentals Agreed-on coding standards naming, layout, documentation Data-related concepts scope, persistence, binding times Control-related complexity, control structures, exceptions Errors and exceptions assertions, defining and handling exceptions 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

More construction fundamentals Integration strategies Unit-testing and debugging Build and packaging practices Code tuning and performance measurement Programming tools editors, IDE, interoperability group work support tools (email, change visibility) source code revision management bug tracking 10-February-2003 cse403-11-LA2BA © 2003 University of Washington

cse403-11-LA2BA © 2003 University of Washington http://java.sun.com/people/arnold/ Someday this will no doubt be a vivacious page, brimming with fascinating information, penetrating analysis, and the most succulent links. Until then, this will have to do. 10-February-2003 cse403-11-LA2BA © 2003 University of Washington