12-February-2003cse403-12-Construction © 2003 University of Washington1 Construction CSE 403, Winter 2003 Software Engineering

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Agile Software Distribution
HP Quality Center Overview.
The Joel Test: 12 Steps to Better Code By Tim Denton.
The “Lifecycle” of Software. Chapter 5. Alternatives to the Waterfall Model The “Waterfall” model can mislead: boundaries between phases are not always.
Software Construction
Software Delivery. Software Delivery Management  Managing Requirements and Changes  Managing Resources  Managing Configuration  Managing Defects 
CSCU 411 Software Engineering Chapter 2 Introduction to Software Engineering Management.
Software Quality Assurance Inspection by Ross Simmerman Software developers follow a method of software quality assurance and try to eliminate bugs prior.
CSE 331 wrapup CSE 331 University of Washington. CSE 331 goals Enable students to manage complexity ensure correctness write modest programs.
15 Jul 2005CSE403, Summer'05, Lecture 10 Lecture 10: Incremental Releases Valentin Razmov.
CS CS 5150 Software Engineering Lecture 20 Acceptance and Delivery.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Systems Analysis and Design in a Changing World, 6th Edition
Implementation. We we came from… Planning Analysis Design Implementation Identify Problem/Value. Feasibility Analysis. Project Management. Understand.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
Configuration Management
System Integration and Build Management Christian Schröder Roman Antonov.
Michael Solomon Tugboat Software Managing the Software Development Process.
Effective Methods for Software and Systems Integration
Estimation Wrap-up CSE 403, Spring 2008, Alverson Spolsky.
Unit Testing & Defensive Programming. F-22 Raptor Fighter.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
Software Development Life Cycle Decisions Project Management Disciplines Stacey Shearn September 8, 2005.
University of Palestine software engineering department Testing of Software Systems Fundamentals of testing instructor: Tasneem Darwish.
Pragmatic Projects Prepared by Doug Glidden. Pragmatic Projects Pragmatic Teams Ubiquitous Automation Ruthless Testing It’s All Writing Great Expectations.
Business Driven Technology Unit 5 Transforming Organizations McGraw-Hill/Irwin Copyright © 2013 by The McGraw-Hill Companies, Inc. All rights reserved.
Software Engineering Modern Approaches
@benday #vslive Automated Build, Test & Deploy with TFS, ASP.NET, and SQL Server Benjamin
Moving into the Testing Phase Revised for October 22, 2008.
Software Project Planning CS470. What is Planning? Phases of a project can be mostly predicted Planning is the process of estimating the time and resources.
6-January-2003cse Introduction © 2003 University of Washington1 Introduction CSE 403, Winter 2003 Software Engineering
The Joel Test 12 Steps to Better Code. Readings The Joel Test (by Joel Spolsky) 043.html.
Understand Application Lifecycle Management
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
1 Lecture 19 Configuration Management Software Engineering.
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
1 Software Development Configuration management. \ 2 Software Configuration  Items that comprise all information produced as part of the software development.
Configuration Management (CM)
T-unit: Tcl Unit Test Package Automated Unit Test Package For Tcl Procedures Final Presentation Joseph Boyle Loyola Marymount University.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
Rapid Development Part 2 Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft Mihail V. Mihaylov (Mike Ramm) CEO, RammSoft February.
13-January-2003cse LifeCycle © 2003 University of Washington1 Lifecycle CSE 403, Winter 2003 Software Engineering
From Quality Control to Quality Assurance…and Beyond Alan Page Microsoft.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
CSE 331 Software Design & Implementation Hal Perkins Autumn 2012 Wrapup 1.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Reduce Development and Testing Time on Embedded Space Programs With Auto- Generated Code Software Engineer Northrop Grumman Electronic Systems Matthew.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
Week 7-10 MondayTuesdayWednesdayThursdayFriday Joel test & interviewing No reading GroupsReviewsSectionProgress report due Readings out Reading dueGroups.
Unit 17: SDLC. Systems Development Life Cycle Five Major Phases Plus Documentation throughout Plus Evaluation…
Version Control and SVN ECE 297. Why Do We Need Version Control?
Biological Model Engineering Peter Saffrey, Department of Medicine Cakes Talk Monday, October 20, 2008.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
Chapter 8: Maintenance and Software Evolution Ronald J. Leach Copyright Ronald J. Leach, 1997, 2009, 2014,
© 2005 Prentice Hall, Decision Support Systems and Intelligent Systems, 7th Edition, Turban, Aronson, and Liang 6-1 Chapter 6 Decision Support System Development.
Tools Shane Cantrell Zach Crisman. Tools CVS FogBUGZ (Bug Tracking) Unit Testing (JUnit, Jakarta Cactus) Catalyst Web Tools (BB and Surveys) Mailman ( .
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Software Development.
Software Configuration Management
Constructing Deploying and Maintaining Enterprise Systems
Managing the Project Lifecycle
CSE 303 Concepts and Tools for Software Development
Chapter 7 –Implementation Issues
CSE 403, Winter 2003 Software Engineering
Presentation transcript:

12-February-2003cse Construction © 2003 University of Washington1 Construction CSE 403, Winter 2003 Software Engineering

12-February-2003cse Construction © 2003 University of Washington2 Readings and References Reading »Chapters 4-6, Pragmatic Programmer, Hunt and Thomas Other References »Chapter 18, Daily Build and Smoke Test, Rapid Development, McConnell »The Joel Test: 12 Steps to Better Code, Joel Spolsky

12-February-2003cse Construction © 2003 University of Washington3 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

12-February-2003cse Construction © 2003 University of Washington4 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 ( , change visibility) »source code revision management »bug tracking

12-February-2003cse Construction © 2003 University of Washington5 The Joel Test Do you use source control? Can you make a build in one step? Do you make daily builds? Do you have a bug database? Do you fix bugs before writing new code? Do you have an up-to-date schedule? Do you have a spec? Do programmers have quiet working conditions? Do you use the best tools money can buy? Do you have testers? Do new candidates write code during their interview? Do you do hallway usability testing?

12-February-2003cse Construction © 2003 University of Washington6 Disclaimer (Spolsky) Of course, these are not the only factors that determine success or failure: »in particular, if you have a great software team working on a product that nobody wants, well, people aren't going to want it. »And it's possible to imagine a team of "gunslingers" that doesn't do any of this stuff that still manages to produce incredible software that changes the world. But, all else being equal, if you get these 12 things right, you'll have a disciplined team that can consistently deliver.

12-February-2003cse Construction © 2003 University of Washington7 Software Configuration Management (SCM) SCM is the practice of managing project artifacts so the the project stays in a consistent state over time »processes for evaluating proposed changes »tracking changes and enabling roll-back »handling multiple versions Most often applied to source code, but also beneficial for requirements, design, test cases, user documentation, scripts, etc, etc

12-February-2003cse Construction © 2003 University of Washington8 Source Control The team product is a complete working program »correctly built from synchronized and correct source code and resources and tested appropriately Multiple people working on one collection of sources can be a nightmare unless managed well »Overlapping changes, old and inconsistent versions »Disks crash, houses burn, computers are stolen »There are good tools to help you manage integration! use CVS, not caffeine

12-February-2003cse Construction © 2003 University of Washington9 Make a build in one step On good teams, there’s a single script you can run that »does a full checkout from scratch »rebuilds every line of code »makes the binary executable files in all versions, languages and #ifdef combinations »creates the installation package »creates the final media - CDROM, web site, … All steps are automatic and exercised regularly

12-February-2003cse Construction © 2003 University of Washington10 Daily Build and Smoke Test Build the entire product every day and run a good test suite against the new version »automatic and frequent »canary in the mine - find out early that you’ve got problems and fix them before disaster strikes Benefits »Minimizes integration risk »Reduces risk of low quality »Supports easier defect diagnosis »Improves morale - developers, managers, customers

12-February-2003cse Construction © 2003 University of Washington11 Using Daily Build and Smoke Test Build daily »Developers check in working modules »The build is the heartbeat or sync pulse of project Check for broken builds and fix problems »Define appropriate quality level »At minimum, build should be useful for testing complete compile, link, package, and pass smoke test Smoke test daily »exercise entire system from end to end »grow the tests with the system

12-February-2003cse Construction © 2003 University of Washington12 Use a bug data base You need to know »how to reproduce the bug »expected behavior, actual behavior »current owner of the bug »status (open, fixed) You can’t keep the bug list in your head! There are numerous tools available »Don’t use something that is so fussy that it is a big pain to enter, comment on, and close bugs »free trial version of FogBUGZ is available »an Excel spreadsheet can do the job

12-February-2003cse Construction © 2003 University of Washington13 Fix bugs before writing new code Don’t build the termites into the structure »Bugs are always easier to find soon after creation rather than after time has gone by Sometimes bugs reveal fundamental problems »you may have a basic concurrency problem! You can’t accurately schedule the repair and release of a system made from defective parts held together with duct tape and prayer

12-February-2003cse Construction © 2003 University of Washington14 Up to date schedule “It will be done when it’s done!” »When will my computer be repaired? »When will you finish your degree? »When will you have a releasable product? Confidence in the schedule enables all sorts of decision making and planning to go on »lower stress, higher morale all around A good schedule helps you resist feature creep »Don’t let the doodads build up and delay delivery

12-February-2003cse Construction © 2003 University of Washington15 Have a Good Specification Know what you are building »Write it early »Keep it up to date The spec is the tool that can help you see where you are going to have problems »Are the scenarios realistic? »How you are going to accomplish the promises? »It’s a lot easier on everybody to change the promise now than to break the promise later

12-February-2003cse Construction © 2003 University of Washington16 Have quiet working conditions Minimize uncontrollable distractions »turn off your »turn off Pizzlet notifier Be focussed when you are alone and working »get in the zone and blast away Be focussed when you are meeting and discussing with others »communication is important, so make good use of the time you are together

12-February-2003cse Construction © 2003 University of Washington17 Use the best tools money can buy This doesn’t mean the most expensive tools! Spend the time to understand »which tools you need »which tools you already have »what you need to be more productive If you need an investment, think about how to request it then stand up and request it »There is a lot of money available, why should it be spent on you?

12-February-2003cse Construction © 2003 University of Washington18 Use testers as basic part of the team Testing is a different mindset from developing It can be interesting to do and very revealing in its results Your customers are going to test all the nooks and crannies of your system anyway »testers are your friends, not your enemy! »find out the problems now, not after shipping

12-February-2003cse Construction © 2003 University of Washington19 Write code during interviews We are not hiring, but still... »You are writing code while learning the processes »You are using a variety of tools and processes Think about your projects at an abstract level »Could you describe the successes and problems in the project life cycle? »Could you lay out a project plan for a hypothetical system product that uses a reasoned selection of tools and techniques?

12-February-2003cse Construction © 2003 University of Washington20 Hallway Usability Testing Does this project and its design make sense to somebody who is not married to the project? Let somebody new use the product »Do they understand what it is? »Do they like it? »Do they make assumptions that you never thought of? »It only takes a few people doing this to understand if you are on track.

12-February-2003cse Construction © 2003 University of Washington21 Some support tools Ant - build, package, test integrator JUnit - testing framework JavaNCSS - simple code metrics JDepend - design quality metrics Checkstyle - coding standard checker FogBUGZ - bug tracking CVS - source code revision management