Hao Zhong Shanghai Jiao Tong University

Slides:



Advertisements
Similar presentations
Facilitated by Joanne Fraser RiverSystems
Advertisements

CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Chapter 10 Schedule Your Schedule. Copyright 2004 by Pearson Education, Inc. Identifying And Scheduling Tasks The schedule from the Software Development.
David Notkin Autumn 2009 CSE303 Lecture 22 Subversion is an open source version control system. Social Implications Friday version control system.
Chapter 15 Design, Coding, and Testing. Copyright © 2005 Pearson Addison-Wesley. All rights reserved Design Document The next step in the Software.
Low level CASE: Source Code Management. Source Code Management  Also known as Configuration Management  Source Code Managers are tools that: –Archive.
Source Code Management Or Configuration Management: How I learned to Stop Worrying and Hate My Co-workers Less.
1 CSc Senior Project Software Testing. 2 Preface “The amount of required study of testing techniques is trivial – a few hours over the course of.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
CS4723 Software Validation and Quality Assurance Lecture 9 Bug Report Management.
Chapter 9 – Software Evolution and Maintenance
Prof. Aiken CS 169 Lecture 71 Version Control CS169 Lecture 7.
Estimation Wrap-up CSE 403, Spring 2008, Alverson Spolsky.
1 Microsoft’s Process Redmond in the 90’s Article by Roger Sherman, Director of Testing, Worldwide Products Group, Microsoft.
Version Control with Subversion Quick Reference of Subversion.
Understand Application Lifecycle Management
Software Engineering CS3003 Lecture 3 Software maintenance and evolution.
1 Lecture 19 Configuration Management Software Engineering.
Git – versioning and managing your software L. Grewe.
Version control Using Git Version control, using Git1.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
Version Control. How do you share code? Discussion.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
CS5103 Software Engineering Lecture 11 Versioning and Issue Tracking.
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
Software Quality Assurance SOFTWARE DEFECT. Defect Repair Defect Repair is a process of repairing the defective part or replacing it, as needed. For example,
T Iteration Demo Team DTT Project planning (PP) Iteration
Version Control and SVN ECE 297. Why Do We Need Version Control?
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
1 CSE 303 Lecture 19 Version control and Subversion ( svn ) slides created by Marty Stepp
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
Git workflows: using multiple branches for parallel development SE-2800 Dr. Mark L. Hornick 1.
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Source Control Dr. Scott Schaefer. Version Control Systems Allow for maintenance and archiving of multiple versions of code / other files Designed for.
Architecture Review 10/11/2004
Information Systems and Network Engineering Laboratory II
By Wilmer Arellano Spring 2010
Software Configuration Management
Software Engineering Management
Groupname [PP|…|FD] Iteration
Concurrent Versions System User guide for CS408
Project Management Chapter 3.
Systems Analysis and Design in a Changing World, 4th Edition
LECTURE 2: Software Configuration Management
Version Control.
Source Control Dr. Scott Schaefer.
Chapter 18 Maintaining Information Systems
Version control, using Git
Software Project Management
T Project Review Group: pdm I2 Iteration
LCGAA nightlies infrastructure
Software Documentation
CVS revisions UML diagram
Concurrent Version Control
Version Control System
Software Engineering (CSI 321)
LECTURE 3: Software Configuration Management
Software Project Management
Introduction to CAST Technical Support
Objects First with Java
Design and Programming
Chapter 9 – Software Evolution and Maintenance
Software Engineering D7032E
CSE 303 Concepts and Tools for Software Development
Version Control System - Git
Version Control CS169 Lecture 7 Prof. Aiken CS 169 Lecture 7.
CS5123 Software Validation and Quality Assurance
Software Configuration Management
Information system analysis and design
Presentation transcript:

Hao Zhong Shanghai Jiao Tong University Project manager Hao Zhong Shanghai Jiao Tong University

Last class Debugging Automatic program repair Delta debugging Stub, Fake object Mock Automatic program repair A recent hot research topic Cons and Pros Latest progress State of the art

Role A project manager is a professional in the field of project management. Project managers have the responsibility of the planning, procurement and execution of a project, in any domain of engineering. Bosses Developer Ambitious goals No Surprises Schedule Budget Project Manager Customer Bugs Quality engineer Inconsistent requirements Bad designs

Goal The art of managing projects to a successful completion. Scope Time Cost

Cost estimation COCOMO Requirement-based estimation Function points Use cases Design-based estimation Class diagram Analogy-based estimation Past projects

Planning Determine needed resources for each task People Computers, testing system Develop a time line with milestones Describe deliverables Assign deliverables to specific people Associate Milestones with Deliverables Schedule tasks Some tasks depend on others Some tasks compete for resources Monitor progress Status reports can be email messages or meetings

Planning Program Evaluation and Review Technique (PERT) Represent tasks and their dependencies Estimate amount of time for each task Compute the time for entire project How to compute the critical path?

Planning Start to Start (SS): The task cannot start until the predecessor starts, although it may start later. Finish to Finish (FF): The task cannot end before the predecessor ends, although it may end later.

Risks Problem harder than we thought Developers get bored and quit Developers like new technology. It doesn’t work System is too slow Customers don’t know what they want Customers run out of money and kill the project

How to handle the risks Process should address biggest risks Wrong requirements Constantly changing requirements Inadequate schedule

How to handle the risks Process should address biggest risks Wrong requirements Iterative development Work closely with customer Constantly changing requirements Design More budget Inadequate schedule Increase resource Reduce scope

Risk management Risk assessment: a document listing risks, their likelihood, and their severity Decide whether you are going to try to avoid this risk or just to monitor it Go through requirements with domain experts Go through designs with developers Balance budget and delivers with your boss Know your team members Know how to replace members. communication

Version control

Version control A repository to store all staged versions (actually a base version and differences for many version control systems) A local copy for the user (or local copies for users) to edit A user can fetch a staged version from the repository or commit a local copy as a new staged version to the repository fetch commit

Diff A Diff is a description of the difference between two versions of a document (source file) The difference is described as how to change one version to make it become the other Version 1: Version 2: x = 0; x = 1; Y = 1; y = 1; Diff: - x = 0; + x = 1;

Version Control Client Record the revision information of each file The repository version The time of last checkout / pull When update / commit, files can be Unchanged, current – no change in LC and Repo Changed, current – only changes in LC Commit will apply changes to repository Unchanged, outdated – only changes in Repo Update will apply change to LC Changed, outdated – both LC and Repo changes Need to merge!

Concurrent Development Assume that we have 2 developers They use a repository on a server They have their only local copies, LCA and LCB When update, repository is changed to a new version (v13)

Concurrent Development

During the update/pull Find common ancestor (v12) Compute Diff(v12, v13): replace line 20 with “void g(int i)” Apply Diff(v12, v13) to LC

Merge Conflict

Merge Conflict Happens Merge will leave a partially merged file Your change and repo change will both appear in the file Edit the file and commit the manually merged file Must update before commit

Merge is textual Code may not work after merge Merge problems Developer A makes the change: f (int x, int y) -> f(int x, int y, int z) Developer B makes the change: insert f(a, b) Merge problems Code will not compile It is lucky that it does not compile! Communication: notify the people who may be affected Auto test suite and Regression testing!! M. Tufano, F. Palomba, G. Bavota, M. Di Penta, R. Oliveto, A. De Lucia, and D. Poshyvanyk. There and back again: Can you compile that snapshot? Journal of Software: Evolution and Process, 2016.

Branch Users report bugs for a released version Bug fixes are applied on this specific version Programmers are developing to next version (branch) Need to merge before the next release

Other reasons for branches? Temporary versions Implement new features (tentative) Isolate changes to have a stable trunk Eventually merge back to the trunk Snapshot for testing Development continues Fixes eventually merge back to the trunk Separate branch for different release Different OS, …

Merge Branches Merge changes of a branch to the trunk Done on a local copy Find the common ancestor(v12) Find changes fro v12 to v16branch Apply changes to v15trunk

Merge Branches: tracking Branch may continue after a merge Goes to v18 and v20 Branch records the last merge (v16) Apply Diff(v16branch, v20branch) to v19trunk

Version control: tips Small commits Avoid commit noises Place every logically separate change as a commit Allows more meaningful commit messages Reverted independently Avoid commit noises Make sure the code build before commit (especially after merge) Unit test or if possible an automatic test suite

Version control: tips Write clear commit messages Better structured with some styles Issue number!!!

Issue tracking system A platform for developers to communicate with each other Like a forum People can register and raise an issue The one who raise the issue will describe the issue in details More structured for describing issues Component, assignees, schedules, status, resolution Customizable Change the contents while progress is made (status, resolution)

Example JIRA

Type of issues Bug report (e.g., system shows wrong message) About a bug of the software Should include: Step to reproduce Expected behavior Actual behavior Stack trace or error message if any New feature (e.g., add sorting to results) About add a new feature, e.g., add sorting by modify time Improvement (e.g., replace with a better sorting algorithm) …

Process of an issue States Open Assign Invalid Fixed Closed Won’t fix Duplicated Reopened … Explain and record how open source manages its development  Why do programmers write issue number to commit messages? ERP for your team

Programming Knowledge vs Age

This class Project manager Responsibility Cost estimation Planning Risk CVS Issue tracker (open source)

Next class UI designer