CS427: Software Engineering I

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Configuration management
Configuration Management
Chapter 7: Key Process Areas for Level 2: Repeatable - Arvind Kabir Yateesh.
More CMM Part Two : Details.
Configuration Management Managing Change. Points to Ponder Which is more important?  stability  progress Why is change potentially dangerous?
Sixth Hour Lecture 10:30 – 11:20 am, September 9 Framework for a Software Management Process – Artifacts of the Process (Part II, Chapter 6 of Royce’ book)
SE 555 Software Requirements & Specification Requirements Management.
CSC 395 – Software Engineering Lecture 25: SCM –or– Expecting Change From Everything But Vending Machines.
Configuration Management
Software Configuration Management
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Software Configuration Management
Software Configuration Management (SCM)
Software Engineering Institute Capability Maturity Model (CMM)
CSSE 375 Software Construction and Evolution: Configuration Management
Configuration Management Avoiding Costly Confusion mostly stolen from Chapter 27 of Pressman.
Configuration Management Managing Change. Points to Ponder Which is more important?  stability  progress Why is change potentially dangerous?
The Key Process Areas for Level 2: Repeatable Ralph Covington David Wang.
Software Engineering Modern Approaches
Module CC3002 Post Implementation Issues Lecture for Week 6 AY 2013 Spring.
Software Configuration Management (SCM)
1 ©equinox limited 2005 What the hell is Configuration Management anyway? Martin White Equinox Software Architects August 2005.
Project Tracking. Questions... Why should we track a project that is underway? What aspects of a project need tracking?
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Configuration Management (managing change). Starter Questions... Which is more important?  stability  progress Why is change potentially dangerous?
Creator: ACSession No: 16 Slide No: 1Reviewer: SS CSE300Advanced Software EngineeringFebruary 2006 (Software Quality) Configuration Management CSE300 Advanced.
Software Quality Assurance
Georgia Institute of Technology CS 4320 Fall 2003.
© Mahindra Satyam 2009 Configuration Management QMS Training.
Topics Covered Phase 1: Preliminary investigation Phase 1: Preliminary investigation Phase 2: Feasibility Study Phase 2: Feasibility Study Phase 3: System.
Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond,
Management of Software Project CSM Software Configuration Management (SCM)
Software Configuration Management (SCM) Source: Pressman, R., Software Engineering: A Practitioner ’ s Approach. Boston: McGraw Hill, Inc., 2005; Ghezzi,
System Maintenance Modifications or corrections made to an information system after it has been released to its customers Changing an information system.
Configuration Management
Software Engineering Lecture 9: Configuration Management.
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
Configuration & Build Management. Why Software Configuration Management ? The problem: Multiple people have to work on software that is changing More.
Software Configuration Management (SCM)
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Software Configuration Management (SCM)
Configuration Management
Software Configuration Management
Software Configuration Management CSC-532
Software Configuration Management
Software Project Configuration Management
Chapter 10, Software Configuration Management
Quality Assurance Week 5 Winter quarter 02/04/02 SOS
Chapter 11: Software Configuration Management
Software Configuration Management
Software Engineering (CSI 321)
Chapter 18 Maintaining Information Systems
Configuration Management Why do we need it? What does it do?
Configuration Management
Configuration Management and Prince2
Software Configuration Management
Systems Analysis and Design
Lecture 3 Change Management
CS427: Software Engineering I
Configuration Management (managing change)
Software Configuration Management
Chapter 25 – Configuration Management
Software Engineering D7032E
Baseline – IEEE definition
Chapter 11: Software Configuration Management
CS5123 Software Validation and Quality Assurance
Chapter # 6 Software Configuration Management
Configuration management
Software Configuration Management
Presentation transcript:

CS427: Software Engineering I Grigore Rosu

Today’s goals Quick Logistics Software Configuration Management Quiz 1 Change control Quiz 1

Course Logistics Wiki: http://wiki.cites.illinois.edu/wiki/display/cs427fa17 (videos!) Piazza: https://piazza.com/class#fall2017/cs427 Compass: https://compass2g.illinois.edu All class-wide announcements through compass or my.cs MP1 due Wednesday, 23:59; MP2 out today, 23:59 Follow the rules and the format specified on Wiki! MP1 due Wednesday, but recommended today (easy MP!) MP2 will be released today and due in one week Reminder MPs (30%), final exam (25%), project (40%), quizzes (5%) Bonus up to 3% for active participation (lectures, Piazza, …) Lots of “broad but shallow” reading Read, read, read everything we list on the wiki Book chapters and papers will be on EXAM

Software Configuration Management (SCM)

Why SCM Enables project management Basis for change management Which version of the system is being discussed/approved? If something goes wrong, whose/what change broke it Basis for change management If change is needed, how do you keep track of what needs to be changed and why? Some projects even have change boards / committees, approving / voting / debating / prioritsing changes

SCM SCM Definition, by the Software Engineering Institute (SEI) Discipline for controlling the evolution of software systems Four major aspects, among many other: Change control Version control Building Releasing Supported by tools Requires expertise and oversight More important on large projects

SCM SCM Definition, by the Software Engineering Institute (SEI) Discipline for controlling the evolution of software systems Four major aspects, among many other: Change control Version control Building Releasing Supported by tools Requires expertise and oversight More important on large projects

SCM Keep track of how product changes over time and be able to reproduce any version of it Control how product changes; make sure needed changes have been made and no improper changes have been made Not only code, but also non-code resources: “Test suite for version 6.4.3 does not work for other versions. It is almost like the test suites for 6.4.2 and 6.4.4.” “Manual for v.6.4.3 slightly different than for other versions.” Bug fixes … Design changes … Use cases ...

Necessary Activities to Handle Change Request Suppose we decided to implement a change request… Has it been implemented fully? (tests, code, manuals, documentation) What parts of the system were affected by that change? I look at a program/document Why is it like this? When was it written, by whom? Tracing both ways: change control + version control linked through IDs

Versions, Branches release 3.2 3.1 3.3 mainline branch 3.2.1.2

Branches Traditional advice for old version control Avoid (long-lived) branches if possible Modern version control (Git, HG…) Encourage (use of short-lived) branches Good reasons to branch Fixing bugs in customer version Experimental version Political fights

Bad reasons to branch Support different hardware platform; instead: Make subclasses Use conditional compilation Make portability library Support different customer; instead: Separate unchanged code and changed code Unchanged code goes in a library Make subclasses / use conditional compilation for changed code

SCM according to the SEI A discipline for controlling the evolution of software systems Has many aspects Identification of items under management Change control / management Status accounting Audit and review

Identification What are the configuration items (CI)? That is, “the what” of configuration management? E.g.: files, documents, requirements, models, plans, whiteboard pictures, phone conversations, meeting / teleconference videos, user stories, tests, etc., etc., etc. CIs may have types: hardware, software, doc, people, … How do you name them? Unique IDs, at a minimum What is the relationship between CIs? Versions Baseline Release

Versions Each version is a collection of Cis Each CI is versioned V3.1 V3.1.1 V3.1.2 V3 V3.2 V3.3.2 V3.3 V3.3.1

Baseline Baseline is a software configuration item that has been reviewed and agreed upon, and that can be changed only through formal change control procedures Intermediate versions that haven’t been reviewed are CIs but not baselines Baseline serves as a basis for defining change This is the central purpose of a baseline Baselines are often subjected to SCM audits

Release Release is a software configuration item that the developers give to other people Release should be a baseline

Control Who is allowed to read/write configuration items? How do you know if changes are allowed/correct?

Status accounting Reporting the status of components and change requests Which components have changed this week? Which components did Bob change? Which components have the most changes? Which change requests are more than a month old and of priority 3 or greater?

Audit and review

Audit and review How do we know that the build script is OK? How do we know that only authorized people can change the main, customer-visible interface? Can we actually run the version from September 8, 2015? CIs and their versions and changes are critical for audit

Change Control Change request Change control authority New feature Bug report Change control authority Decides which changes should be carried out Should link code changes to change requests

Example: Bugzilla Originally developed for Mozilla http://bugzilla.mozilla.org https://developer.mozilla.org/en/Bug_writing_guidelines Bugzilla is a database for bugs. It lets people report bugs and assigns these bugs to the appropriate developers. Developers can use Bugzilla to keep a to- do list as well as to prioritize, schedule and track dependencies

Bugzilla Each bug report has: unique ID, name of reporter, description of bug, component, developer, dependency, [attachments] Status unconfirmed, new, resolved, verified, closed Severity blocker, critical, major, normal, minor, trivial, enhancement

Resolving a bug FIXED: INVALID: not a bug, or not a bug in Mozilla WONTFIX : a bug that will never be fixed LATER: a bug that won’t be fixed now REMIND: maybe now, maybe later DUPLICATE WORKSFORME

Topics to Ponder - Class Exercise, Groups of 3 - What is the dynamics of people using a change control system? Developers Testers Users Managers What about security issues in Bugzilla? 5 Minutes

To Make SCM Work Requires: Bureaucracy Discipline, training Tools Version control – git, svn, cvs, … Change control – bugzilla, mantis, jira, … Building – mvn, ant, make, … Releasing – Maven Central and Nexus, …

SCM Manager Complex tools need expert to manage them SCM expert will Maintain tools Maintain configuration files, make branches Do the merging Create policies on version control, change control

Alternatives Toolsmith (often project manager) supports SCM tools Architect defines configuration files Developers merge their code back into mainline Managers and technical leads define policies for version control and change control

From required reading: “Software Configuration Management Patterns: Effective Teamwork, Practical Integration” Steve Berczuk Brad Appleton

Various tests Smoke test Unit test Regression test Ensure that the system still runs after you make a change Unit test Ensure that a module is not broken after you make a change Regression test Ensure that existing code doesn’t get worse as you make other improvements

Developer issues Private Workspace Private System Build Prevent integration issues from distracting you, and from your changes causing others problems, by developing in a Private Workspace. Private System Build Avoid breaking the build by doing a Private System Build before committing changes to the Repository

Codeline Policy Active Development Line Release Line Private Versions Holds bug fixes for a release Private Versions Task Branch Hide a disruptive task from the rest of the team Release Prep Codeline

Summary of SCM Four aspects Supported by tools Change control Version control Building Releasing Supported by tools Requires expertise and oversight More important on large projects