Deliverables: Zero-Feature Release Build process, installation process, code repository, automated testing framework, bug tracking system Maybe no tests.

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Lecture 9 Improving Software Design CSC301-Winter 2011 – University of Toronto – Department of Computer Science Hesam C. Esfahani
SOLID Object Oriented Design Craig Berntson
CS CS 5150 Software Engineering Lecture 5 by Stephen Purpura Matching Process to Risk.
Software Engineering.
Student Startup Sequence Verify network connection Rotate to Landscape mode Start Presenter 2.0 Maximize Application Role->Student Connect->Classroom 2.
Outline (Mis)communicating expectations Schedule of class-related deliverables Specific final release deliverables Your questions Intellectual activity:
10 Aug 2005CSE403, Summer'05, Lecture 15 Lecture 15: Configuration Management, Software Maintenance, and Code Reviews (Part I) Valentin Razmov.
29 Jul 2005CSE403, Summer'05 Student Startup Sequence Verify network connection Rotate to Landscape mode Start Presenter 2.0 Maximize Application Role->Student.
Administrivia Lifecycle Architecture (LCA) group assignment will go out later today. Informal feedback meetings with LCO groups EasyShare: Mon, 2:45pm-3:15pm,
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
1 Jul 2005CSE403, Summer'05, Section 02 Section 02: Life Cycle Architecture Review Valentin Razmov.
15 Jul 2005CSE403, Summer'05, Lecture 10 Lecture 10: Incremental Releases Valentin Razmov.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
Outline Your questions Upcoming milestone deliverables Testing in the project lifecycle Analyzing scenarios using inference diagrams Mistakes to avoid.
13 Jul 2006CSE403, Summer'06, Lecture10 Lifecycle Architecture Review: Preliminary Feedback Valentin Razmov.
INFO 637Lecture #31 Software Engineering Process II Launching & Strategy INFO 637 Glenn Booker.
1 Design and Integration: Part 1 Nuggets about Design vs Project Management.
Managing Software Quality
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
1 CSE 403 Software Lifecycle Models Reading: Rapid Development Ch. 7, 25 (further reading: Ch. 21, 35, 36, 20) These lecture slides are copyright (C) Marty.
Dillon: CSE470: SE, Process1 Software Engineering Phases l Definition: What? l Development: How? l Maintenance: Managing change l Umbrella Activities:
CSE G674/2009 Project Project Management Section Presented by: Amir Aref Adib.
Object Oriented Analysis and Design Introduction.
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.
Extreme Programming Daniel Baranowski 3/29/06. What is Extreme Programming? An agile development methodology Created by Kent Beck in the mid 1990’s A.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
22 Jul 2005CSE403, Summer'05, Lecture 12 Lecture 12: Scheduling, Estimation, and Prioritization (Part II) Valentin Razmov.
EXtreme Programming: An Introduction Presentation by: Jon Banta.
T-unit: Tcl Unit Test Package Automated Unit Test Package For Tcl Procedures Final Presentation Joseph Boyle Loyola Marymount University.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
LECTURE 38: REFACTORING CSC 395 – Software Engineering.
Sofia Bulgaria Summer School IST eXPERT: Best Practice on e-Project Development 30 June - 2 July 2003 eXtreme programming.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 12-5 Software Engineering Design Goals.
1 Design and Integration: Part 2. 2 Plus Delta Feedback Reading and lecture repeat Ambiguous questions on quizzes Attendance quizzes Boring white lecture.
T Iteration demo T Iteration Demo Team Balboa I1 - Iteration
Incremental Design Why incremental design? Goal of incremental design Tools for incremental design  UML diagrams  Design principles  Design patterns.
Elements of OO Abstraction Encapsulation Modularity Hierarchy: Inheritance & Aggregation 4 major/essential elements3 minor/helpful elements Typing Concurrency.
06 Jul 2006CSE403, Summer'06, Lecture08 Lecture 08: Requirements Gathering Techniques (Part II) Valentin Razmov “The goal of requirements engineering is.
05 Jul 2006CSE403, Summer'06, Lecture07 Administrivia Informal feedback meetings with LCO groups FantasySportsLeague: still to come today Individual assignment.
Five design principles
11 Jul 2005CSE403, Summer'05, Lecture 08 Lecture 08: Best Practices for Software Design (Part I) Valentin Razmov.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
CSE 403, Spring 2007, Alverson Agile Development Practices.
Integrating the Code during the Development Alexander Vakrilov Telerik Corporation
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
07 Jul 2006CSE403, Summer'06, Lecture10 Lecture 10: Core Principles and Best Practices for Software Design (Part I) “Treat design as a wicked, sloppy,
Deliverables: Beta Release Installation package Application sources and binaries One-step build for all sources Latest specification & design documents.
Extreme Software Engineering A Hands-On Approach From Extreme Software Engineering: A Hands-On Approach Daniel H. Steinberg Daniel W. Palmer.
Beginning Software Craftsmanship Brendan Enrick Steve Smith
07 Aug 2006CSE403, Summer'06 Final Exam: Take-home versus In-class Valentin Razmov Take-home No rush to complete in 1 hour at 9:40am More realistic (but.
14 Jul 2005CSE403, Summer'05, Lecture 09 Lecture 09: Fundamental Principles and Best Practices for Software Design Valentin Razmov.
27 Jul 2006CSE403, Summer'06, Lecture 15 Midterm Exam Statistics Other statistics: Average: 40.6 Median: 42.3 Std Dev: 6.2 Max: 46.5 Min: 28 Easiest Problems:
Process 4 Hours.
Managing the Project Lifecycle
Software Architecture & Difference from Design
CSE687 - Object Oriented Design class notes Survey of the C++ Programming Language Jim Fawcett Spring 2004.
Best Practices for Software System Design
Applied Software Implementation & Testing
Lecture 02: Software Lifecycle Models
Lecture 03: Software Lifecycle Models
Outline Your one-minute feedback from last week Peer reviews
Lecture 09: Software Architecture (Part I)
Questions First On class? On project? On material we’ve discussed?
Questions First On class? On project? On material we’ve discussed?
Overview Activities from additional UP disciplines are needed to bring a system into being Implementation Testing Deployment Configuration and change management.
Dependency Inversion principle
Presentation transcript:

Deliverables: Zero-Feature Release Build process, installation process, code repository, automated testing framework, bug tracking system Maybe no tests yet and no tickets in the bug tracking system Installation package Includes all of the items below Demo of one-step build and component communication Checks out all sources from repository, compiles and builds binaries, packages them along with all existing documentation and automated tests, and places the result on a known site ready for downloading Shows that your main components identified in the design can successfully communicate (be integrated) with each other Latest specification, design, and test plan documents Keep them short! Consider what is / isn’t important for customers / devs. Up-to-date schedule Includes what has been done and what remains to be done Release notes Detailed instructions on how to run the demo Known issues with prioritization Questions to consider: Who is your audience – developers or end users? What do they expect? What defines success for them?

Deliverables (tentative list): Beta Release Installation package Application sources and binaries One-step build for all sources Latest spec & design documents Keep it short! Consider what is/isn’t important for customers/devs. Release notes Detailed instructions on how to run a (small) demo of your app Known issues with prioritization, expressed in a bug tracking system Up-to-date test plan Automated tests (unit and acceptance) Up-to-date schedule Including what has been done and what remains to be done Questions to consider: Who is your audience – customers or developers? What do they expect from this release? What defines success for them?

Deliverables (tentative list): Final Release Installation packages Including all of the items below Application sources and binaries Separate distributions (installation packages) for customers and developers One-step build – from compiling all sources to creating installation packages User & technical documentation (separate) User doc: What does my mom need to know (and do) to run this product? Technical doc: What does a support team need to know to work on version 2? Release notes Known issues with associated severities & priorities Include a link to your bug tracking system’s tasks/tickets that reflect those issues Specify where your current code repository is Instructions on running the installer and your app are moved to the user doc. Latest test plan Automated tests (unit and acceptance) Test coverage would be a very welcome addition. Up-to-date schedule Things that have been accomplished (of those that were planned) Features (of those initially planned) that are now pushed to version 2 or abandoned How much would each such feature cost (in terms of dev effort)? Questions to consider: Who is your audience – customers or developers? What do they expect from this release? What defines success for them?

17 Jul 2006CSE403, Summer'06, Lecture10 Beware: Frequent Mistakes Made by Students in Previous SE Classes Communication-related: Failing to submit (for the preliminary releases and even for the final release!) key required components Missing documentation, tests, etc. Not having a backup person who knows how to put together deliverables and submit Submitting code without clear instructions about how to run it if one starts from scratch Most customers aren’t as tech-savvy as you are! Customers/users aren’t intimately familiar with your project and your way of doing things.

17 Jul 2006CSE403, Summer'06, Lecture10 Lecture 10: Core Principles and Best Practices for Software Design (Part III) “Treat design as a wicked, sloppy, heuristic process. Don’t settle for the first design that occurs to you. Collaborate. Strive for simplicity. Prototype when you need to. Iterate, iterate, and iterate again. You’ll be happy with your designs.” -- Steve McConnell, Code Complete (2 nd ed.), Ch. 5 Valentin Razmov

17 Jul 2006CSE403, Summer'06, Lecture10 Outline Time-tested software design principles Principle of Loose/Weak Coupling Principle of Strong Cohesion / Single Responsibility Open-Closed Principle More coming today, with examples… Valentin Razmov

17 Jul 2006CSE403, Summer'06, Lecture10 Resources “Code Complete”, 2 nd ed., by Steve McConnell Ch. 5: “The Pragmatic Programmer”, by Andrew Hunt and David Thomas Ch. 2 (sections 7, 8, 9) Ch. 5 (sections 26, 28, 29) “Agile Software Development – Principles, Patterns and Practices”, by Robert C. Martin See handout “Design Patterns Explained”, by Alan Shalloway and James Trott Valentin Razmov

17 Jul 2006CSE403, Summer'06, Lecture10 Principles for Good Design: Interface Segregation Principle “Clients should not be forced to depend on methods that they do not use.” Example: Dogs jump but don’t sing. Valentin Razmov

17 Jul 2006CSE403, Summer'06, Lecture10 Principles for Good Design: Dependency Inversion Principle (Example) #define TEMP_GAUGE 0x86 #define FURNACE 0x87 #define ENGAGE 1 #define DISENGAGE 0 void Regulate( double minTemp, double maxTemp) { for(;;) { while (read(TEMP_GAUGE)>minTemp) wait(1); set(FURNACE, ENGAGE); while (read(TEMP_GAUGE)<maxTemp) wait(1); set(FURNACE, ENGAGE); } void Regulate( Thermometer t, Heater h, double minTemp, double maxTemp) { for(;;) { while (t.Read() > minTemp) wait(1); h.Engage(); while (t.Read() < maxTemp) wait(1); h.Disengage(); } Valentin Razmov

17 Jul 2006CSE403, Summer'06, Lecture10 Principles for Good Design: Dependency Inversion Principle (A) “High-level modules should not depend on low-level modules. Both should depend on abstractions.” (B) “Abstractions should not depend on details. Details should depend on abstractions.” Example: Separation of policy and mechanism Question: Is this principle an argument for structuring systems using layers? Valentin Razmov

17 Jul 2006CSE403, Summer'06, Lecture10 Principles for Good Design: Liskov Substitution Principle “Subtypes must be substitutable for their base types.” This is different from saying that there must be an IS-A relationship between the two types. Example: Is Square always substitutable for Rectangle? Valentin Razmov

17 Jul 2006CSE403, Summer'06, Lecture10 Symptoms of Bad Designs: Process Smells Flawed or risky design processes: “Design by committee” Everyone on the committee puts in their favorite features into the “soup.” What is the result? Moral: The design must be owned and managed (and fended for) by someone. Not having several design options to choose from Not iterating over designs Other examples? Valentin Razmov

17 Jul 2006CSE403, Summer'06, Lecture10 Symptoms of Bad Designs: Product Smells Design product smells: Rigidity – changes force other changes Fragility – changes cause system to break in unexpected ways Immobility – can’t extract and reuse subcomponents Viscosity – hard to do the right thing, easy to do the wrong thing Needless complexity – excessive infrastructure with no clear benefit Needless repetition – repeating structures, but no abstractions Opacity – code is hard to read and understand Valentin Razmov Source: “Agile Software Development: Principles, Patterns, and Practices”, by Robert Martin

17 Jul 2006CSE403, Summer'06, Lecture10 Additional Principles for Building Software Systems Make the common case fast and the uncommon case correct. But do not spend time on optimizing code early on. “It is easier to optimize correct code than to correct optimized code.” -- Donald Knuth Among the three desirable aspects – consistency, availability, and no network partitioning – you can only have two. Fail early, gracefully, and transparently. Establish and maintain a clear audit trail. It requires little investment upfront but is invaluable for debugging purposes. Valentin Razmov