Software Engineering Process. Kevin Cathey



Similar documents
Software configuration management

Theme 1 Software Processes. Software Configuration Management

Version Control! Scenarios, Working with Git!

Continuous Integration. CSC 440: Software Engineering Slide #1

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number.

Maven or how to automate java builds, tests and version management with open source tools

Using Subversion in Computer Science

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Introducing Xcode Source Control

Source Control Systems

Software Construction

SOFTWARE DEVELOPMENT BASICS SED

Software Development Management. Mathieu Lacage - DREAM

CSCB07 Software Design Version Control

Revision control systems (RCS) and

Modelica Language Development Process Version June 27, 2015

Version Control with Subversion and Xcode

Software Engineering I (02161)

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

TIME. Programming in the large. Lecture 22: Configuration Management. Agenda for today. About your Future. CM: The short version. CM: The long version

SOE. managing change in system development projects: configuration management

Version Control Tools

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

Automatic promotion and versioning with Oracle Data Integrator 12c

Version Control Systems: SVN and GIT. How do VCS support SW development teams?

CSE 70: Software Development Pipeline Version Control with Subversion, Continuous Integration with Bamboo, Issue Tracking with Jira

Software Quality Exercise 2

Version Control Tutorial using TortoiseSVN and. TortoiseGit

Version Control with Subversion

Delivering Quality Software with Continuous Integration

Software Configuration Management

Improving your Drupal Development workflow with Continuous Integration

Barely Sufficient Software Engineering: 10 Practices to Improve Your Research CSE Software

Software Configuration Management.

Continuous integration End of the big bang integration era

Advanced Computing Tools for Applied Research Chapter 4. Version control

Version Control with. Ben Morgan

ISTQB Certified Tester. Foundation Level. Sample Exam 1

Configuration & Build Management

White Paper. Software Development Best Practices: Enterprise Code Portal

Application Lifecycle Management White Paper. Source Code Management Best Practice: Applying Economic Logic to Migration ALM

Introduction to Source Control ---

Global Software Change Management for PVCS Version Manager

Software Configuration Management and Continuous Integration

Basic Testing Concepts and Terminology

Version Uncontrolled! : How to Manage Your Version Control

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Lab 0 (Setting up your Development Environment) Week 1

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Software Engineering talk

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Build management & Continuous integration. with Maven & Hudson

Kevin Lee Technical Consultant As part of a normal software build and release process

Efficient Automated Build and Deployment Framework with Parallel Process

Software Life Cycles and Configuration Management

Ensure Merge Accuracy in Continuous Integration Development Environments

E-vote 2011 Version: 1.0 Testing and Approval Date: 26/10/2009. E-vote SSA-U Appendix 5 Testing and Approval Project: E-vote 2011

Version Control with Git

Software Configuration Management Best Practices for Continuous Integration

Software Engineering Best Practices. Christian Hartshorne Field Engineer Daniel Thomas Internal Sales Engineer

Version Control with Git. Dylan Nugent

Using SVN to Manage Source RTL

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Software Configuration Management. Context. Learning Objectives

Introduction to Subversion

Continuous Integration Optimizing Your Release Management Process

Continuous Integration (CI)

Improving software quality with an automated build process

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

Putting It All Together. Vagrant Drush Version Control

Achieving Continuous Integration with Drupal

Foreword by Martin Fowler *

Version Control for Computational Economists: An Introduction

Test Plan Template: (Name of the Product) Prepared by: (Names of Preparers) (Date) TABLE OF CONTENTS

Source Code Control & Bugtracking

MATLAB as a Collaboration Platform Marta Wilczkowiak Senior Applications Engineer MathWorks

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Software Configuration Management. Addendum zu Kapitel 13

MDSplus Automated Build and Distribution System

Version Control. Version Control

Software infrastructure for Java development projects

planet.pks.mpg.de /trac Do you need Trac? Components of Trac Usage Examples

Content. Development Tools 2(63)

Testing Rails. by Josh Steiner. thoughtbot

Managing Agile Projects in TestTrack GUIDE

Surround SCM Best Practices

Miguel A. Figueroa Villanueva Xabriel J. Collazo Mojica. ICOM 5047 Capstone Miguel A. Figueroa Villanueva University of Puerto Rico Mayagüez Campus

Transcription:

Software Engineering Process Kevin Cathey

Where are we going?

Last Week iphone Application Technologies Workshop This Week Software Engineering Process Thanksgiving Break Write some code, yo 2 Dec Options: Introduction to MyCampus application architecture or iphone Graphics 2 Dec ++ Project work

Software Engineering Process

Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning. Rick Cook, The Wizardry Compiled

Introduce the core concepts of Software Engineering: what it means to work on a team to make a product by an immovable deadline. Me on the purpose of today s talk

Software Engineering From a High Level

Software Engineering Timeline NOV 19 Start (what we have) Goals (the end product)

Milestones Milestones denote sub-goals and deadlines when certain kinds or priorities of work need to be completed. Example: Milestone 1: Have some cool demos Milestone 2: Be feature complete Milestone 3: Only allow priority one bugs Milestone 4: Release candidate (RC) Milestone 5: Final release (GM Golden Master ) During the process, you seed beta versions of software.

Software Engineering Timeline NOV 19 Start (what we have) Goals (the end product)

Software Engineering Timeline NOV 19 Now (what we have) Milestone 1 (Sake) Maps done Milestone 2 (Maguro) Feature complete Milestone 3 (Fugu) GM MyCampus (the end product)

Main Components of Software Engineering

Software Engineering Components What you will encounter when making software Software Configuration Management (SCM) Version Control Automated Building Bug Tracking Refactoring Testing Debugging Reverse Engineering

Software Configuration Management Version Control Why? Keep track of versions of software as it changes. What s broken since revision 11? Keep track of old versions in order to recreate customer issues. Have independent versions that get merged (branches). Backup Avoid catastrophes. Common version control systems Subversion (SVN) * CVS Git Perforce

Software Configuration Management Version Control Terminology Term Repository Software Config. Item Revision Working copy Commit Trunk Branch Tag (Submission) Top of tree Merge Back-out Definition Central location of all software configuration items. Any item that is versionable: source file, folder, image, etc. Numbered snap shot of the repository. Version of repository running locally on your machine, where you do your work. Putting changes back into the repository from a working copy. Main line of development. Independent version of some part of trunk (or trunk in its entirety). Version of software known to work and released to others for testing (has a build number). Latest revision (last revision in trunk... top of tree... get it?). Taking changes from one place and welding them into another; a forward change. A reverse merge; a backward change.

Software Configuration Management Automated Building Periodically (every night, every three days, etc) you build the entire project or set of projects. This way, you can catch commits that break the build, and back them out quickly. Every morning, receive an email on the building status of the software. If there are problems, you can respond quickly. Automated build systems Simple cron job buildbot

Software Configuration Management Bug Tracking Everything is a bug. If the software doesn t do it now, it's a bug. One objective (mostly) way to track progress. Typical bug pieces: title, description, diagnosis (running dialog of what might be wrong), state, assignee, milestone, priority, classification, originator (duh), modification dates, other things (source changes, dependencies, fix order, personal label, etc). Change control Commit-level: code reviews. Ideally you wouldn t commit nonreviewed code to trunk. High-level: At certain milestones, only allow certain kinds or priorities of bugs to be committed. Change tracking system we re going to use: Trac.

Trac Project management wiki. Capabilities View and edit project milestones and details. File and track bugs. Integrate with SVN repository to browse source and see change logs. Our Trac wiki: http://acm.uiuc.edu/projects/macwarriors

Demo SVN and Trac

Refactoring A refactor is a change made to the architecture, design, or general implementation of a piece of software that does not change the visible functionality of an application. Why you refactor: Make things clearer. Prepare things for expansion. When not to refactor: refactoring is not fixing a bug. If it doesn t work before, refactoring won t fix it. This is where design and architecture evolve. Great books and articles: Refactoring by Martin Fowler OO Design Quality Metrics by Robert Martin

If it isn t tested, it doesn t work. Ralph Johnson, SE professor

Testing One of the most critical parts of Software Engineering. Tests find bugs, among many things. prove the existence of bugs, not their absence. make changing things easier. provide a concrete quality metric. help you see and understand what software should and should not do they provide examples.

Testing Kinds of tests: unit tests, system tests, integration tests, fuzz tests, stress tests, regression tests, Test delivery options: Automated: run over and over. Run for every build. Manual: run occasionally (when you have the time). Test development methods: Black-box: Written with no knowledge of internal workings of the software Does the software do what it should? White-box: Developer writes them with the understanding of the internal workings of the program Does the software not do what it shouldn t? Testing framework we will be using: SenTestingKit.

Other Items Debugging You have to know how to use GDB efficiently. Reverse Engineering Critical when working on your first huge pre-existing project. Check out A Pattern Language for Reverse Engineering by Demeyer, Ducasse, and Nierstrasz.

Software Development Cycle Review Start with a project Make core classes Design an interface Code Build Debug Profile Write tests Implement

Software Development Process Submission is started Bug is filed Integrate bugs to Build Get bug in Analyze Branch trunk Build and run tests Software Dev. Cycle Create tag Run all unit tests Merge with trunk Build bugs to Verify Commit Verify bug to Close Bug to Integrate Submitter You

So exactly how?

Division of Labor In MyCampus, there are a number of modules: Maps Food Events Directory Parking Courses (?) Per module, team up in pairs. All modules will descend from same base class. Each pair will fill in the implementation for module. Don t have to be involved in architecture, unless you want to.