Processes, Tools, & Best Practices. My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window.

Slides:



Advertisements
Similar presentations
As an agilist, I want to write great user stories so that... Ryan Tampa Bay Agile Meetup.
Advertisements

System Analysis & Design Methods V Extreme Programming XP/dX.
Eralp Erat Senior Software Developer MCP,MCAD.NET,MCSD.NET.
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
Objectives Explain the purpose and various phases of the traditional systems development life cycle (SDLC) Explain when to use an adaptive approach to.
CS 325: Software Engineering January 13, 2015 Introduction Defining Software Engineering SWE vs. CS Software Life-Cycle Software Processes Waterfall Process.
<<replace with Customer Logo>>
Dr. Tom WayCSC Semester Review CSC 4700 Software Engineering.
GAI Proprietary Information
6 December ’s  60’s “Cowboys” wrote software anyway that they could Difference between best programmers and worst as high as 28:1 (many sources)
NJIT From Inception to Elaboration Chapter 8 Applying UML and Patterns Craig Larman.
Software Engineering. How many lines of code? Average CS1004 assignment: 200 lines Average CS4115 project: 5000 lines Corporate e-commerce project: 80,000.
Software Engineering.
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
James Tam Introduction To Design Patterns You will learn about design techniques that have been successfully applied to different scenarios.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
15 Jul 2005CSE403, Summer'05, Lecture 10 Lecture 10: Incremental Releases Valentin Razmov.
From Inception to Elaboration Chapter 8 Applying UML and Patterns -Craig Larman.
COMP 350: Object Oriented Analysis and Design Lecture 2
Objectives Explain the purpose and various phases of the traditional systems development life cycle (SDLC) Explain when to use an adaptive approach to.
Mastering OOA/OOD with UML. Contents Introduction Requirements Overview OOAOOD.
Agile Testing with Testing Anywhere The road to automation need not be long.
Project Management Lecture 5+6 MS Saba Sahar.
Standardize on Team Foundation Server across the enterprise with Teamprise Corey Steffen General Manager
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
Process: A Generic View
QWise software engineering – refactored! Testing, testing A first-look at the new testing capabilities in Visual Studio 2010 Mathias Olausson.
Systems Design. Systems Design Skills People skill (25%) - Listening, understanding others, understanding between two lines, conflict resolution, handling.
Design Patterns Trends and Case Study John Hurst June 2005.
CryptKeeper Project Plan 1 CryptKeeper Project Plan.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
2Object-Oriented Analysis and Design with the Unified Process Objectives  Explain the purpose and various phases of the traditional systems development.
Chapter 1 The Systems Development Environment
Agile Software Development Brian Link
Craig Berntson
LECTURE 1 What does a Business Analyst do? IFS 231 Business Analysis.
Satzinger Chp. 2 Part Part 4 of 4 2 Object-Oriented Analysis and Design with the Unified Process Testing Testing is critical discipline Testing activities.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 1 Introduction to Java in the Context of Software Engineering.
T-unit: Tcl Unit Test Package Automated Unit Test Package For Tcl Procedures Final Presentation Joseph Boyle Loyola Marymount University.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
CS 325: Software Engineering February 12, 2015 Applying Responsibility-Assignment Patterns Design Patterns Situation-Specific Patterns Responsibility-Assignment.
4/23/ :45 PM © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered.
1 Software Process Models-ii Presented By; Mehwish Shafiq.
Mastergoal Machine Learning Environment Phase III Presentation Alejandro Alliana CIS895 MSE Project – KSU.
1 SEG4910 – Projet génie logiciel en fin d’études / Software Engineering Capstone Project Review of Analysis and Iterative Development Timothy C. Lethbridge.
Chapter 2 Iterative, Evolutionary, and Agile You should use iterative development only on projects that you want to succeed. - Martin Fowler 1CS
Project Management All projects need to be “managed” –Cost (people-effort, tools, education, etc.) –schedule –deliverables and “associated” characteristics.
Lecture 2 –Approaches to Systems Development Method 10/9/15 1.
DAVID STOTTS DEPT. OF COMPUTER SCIENCE UNIV. OF NORTH CAROLINA AT CHAPEL HILL Extreme Programming.
Dive Into Java A Roadmap to Effective Java Programming.
EFinanceFactory Andriy Kurhanevych, development group manager.
The Goal: To Climb Above The Competition Copyright 2005: I Lead Projects, L.L.C. Course Description Project Process Workplates Project Process Workplates.
Overview of RUP Lunch and Learn. Overview of RUP © 2008 Cardinal Solutions Group 2 Welcome  Introductions  What is your experience with RUP  What is.
Developing a Project Management Standard for Your Organization Francine DiMicele, PMP June 08, 2015 NC Piedmont Triad Chapter.
Ivar Jacobson, Grady Booch, and James Rumbaugh The Unified Software Development Process Addison Wesley, : James Rumbaugh's OOMD 1992: Ivar Jacobson's.
Rational Unified Process (RUP)
Information Architecture 2 Mailing List? No Class Scheduled October 23 Books? -Beck, K. (1999). Extreme Programming Explained: Embrace Change.Extreme Programming.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Object Oriented Methodology Course Introduction. Objectives A 3-credit hour graduate course explaining the development of object oriented software systems.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
CHAPTER ELEVEN Information System Development and Programming Languages Copyright © Cengage Learning. All rights reserved.
Software Engineering cosc 4359 Spring 2017.
Advanced Programming Dr. Sadi Seker.
Software Process Models
Refactoring.
Presentation transcript:

Processes, Tools, & Best Practices

My Background Lexmark Software Development for 15 years (‘93 – ‘08) – Multi-tier Java application servers – Window s printer drivers – Windows applications – Java, C, C++, Visual Basic, Perl, PHP IBM co-op in Raleigh, NC for 2 semesters (’91 & ‘92) – OS/2 Network Manager Installer Siemens co-op in Orlando, FL for 2 semesters (‘89) – System testing of telecom switching systems

Project Development Process Generally 2 camps at Lexmark: 1.Waterfall (old school) Greatly depends on getting all of the requirements up front. Large chunks of separate work (design docs, dev., test, …) Test and customers come late in the process. The process is not designed around change. 2.Iterative (agile) Light requirements (stories) and documentation. Small chunks of work. (light docs., small dev., small test.) Test and customer/stakeholder are part of the process. The process is designed around change.

Waterfall Development DefinitionPlanningProductionTermination Charter Approved Project Plan Approved Deliverables Approved Closeout Report Approved Gates: Phases: Need for Project Met High-level Software Design Software & Test Implementation Integration & Rollout Test/PTR High-level Design Approved Full Function Acceptance Gates: Phases : Low-level Software & Test Design Rollout Readines s Review Low-level Design Approved Production Project Under Change Management -Business Need -Deliverables -Scope -Success Criteria Activities: -Scope -Milestone schedule -Risks -Team -Execute -Monitor -Adjust -Gather feedback -Analyze project -Improve Time: A week or twoFew daysWeeks to yearsA week

Iterative Development DefinitionPlanningProductionTermination Charter Approved Project Plan Approved Deliverables Approved Closeout Report Approved Gates: Phases: Need for Project Met -Business Need -Deliverables -Scope -Success Criteria Activities: -Scope -Milestone schedule -Risks -Team -Execute -Monitor -Adjust -Gather feedback -Analyze project -Improve Time: A week or twoFew daysWeeks to yearsA week

Project Prerequisites Before getting too far into a project, the team needs to buy into and adopt a common set of best practices: – terminology – general process layout – coding standards that are automatically enforced by IDEs – automated tests & certain code coverage are required – communication methods (IM, Twiki, doc. templates, …)

Requirements Gathering Requirement sources: – Customers (world wide, US, local; technical and non-tech.) – Marketing (customer and business needs) – Development and Test (technical needs) Found it best to focus on a few customers first Tools – sticky notes – web applications (Trac, Redline, Telelogic) – spreadsheets and/or Word docs. (user stories to heavy specs.) – TWiki pages

Iteration Planning Include everyone (dev., test, project management, marketing, etc.). Break work up into small deliverables so customer(s) can be engaged for early feedback. – can be discovery work, prototyping, tools dev., code reviews, product units, etc. Size the deliverables by flash cards in the group Light/flexible documentation of planning on – TWiki web pages …or – spreadsheet …or – MS Project

Development/Test/Release Code Repository (Subversion) Development IDE (Eclipse, MS DevStudio, …) Continual Build System (CruiseControl, Rational Suite, …) Automated Testing – Unit Testing (JUnit, CUnit, etc.) – Integration Testing (JUnit) – Acceptance Testing (JUnit) Problem Tracking System (TeamTrack, Rational Suite) Quick, light weight, communications & documentation tools (Twiki, web forum app., IM, etc.) Stress and Stability Test Environment

Development/Test/Release (cont.) Need many PCs for dev., test, and support – many OSs to support Win9x Win2K WinXP 2003 Server Vista 2008 Server Mac Linux … different service pack levels … 32-bit, 64-bit … many languages - FIGSBP, Chinese Trad., Chinese Simp., Japanese, Korean, …) – tool: using virtual machines more and more

References Agile Estimating and Planning – by Mike Cohn Lean Software Development: An Agile Toolkit – by Mary Poppendieck and Tom Poppendieck Interface Oriented Design: With Patterns – by Ken Pugh Test-Driven Development: A Practical Guide – by David Astels Design Patterns: Elements of Reusable Object-Oriented Software (a.k.a. Gang-of-Four Book) – by Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides Refactoring: Improving the Design of Existing Code – by Martin Fowler, Kent Beck, John Brant, and William Opdyke

Questions ?