software configuration management

48
SOFTWARE CONFIGURATION MANAGEMENT

description

 

Transcript of software configuration management

Page 1: software configuration management

SOFTWARE CONFIGURATION MANAGEMENT

Page 2: software configuration management

Some Sources• Ahmad K. Shuja, Jochen Krebs. IBM Rational Unified

Process Reference and Certification Guide—SolutionDesigner. IBM Press, 2008.

• Bellagio, David E. Milligan, Tom J. SoftwareConfiguration Management Strategies and IBM®Rational® ClearCase® Second Edition A PracticalIntroduction. Addison Wesley Professional, 2005.

• Aiello, Bob. Sachs, Leslie. Configuration ManagementBest Practices. Addison Wesley Professional, 2011.

• Kemper, Chris; Oxley, Ian. Foundation Version Control forweb developers. Friendsfot Apress, 2012.

• Londoño & Lozano, EAFIT University, 2010.

Page 3: software configuration management

Before…..Think about relation between:

Page 4: software configuration management

Before…

We must remember always…

Software is bounded only by thelimits of the human imagination.Uncontrolled and undirected,imagination can quickly give riseto nightmare

Page 5: software configuration management

Definition

Software Configuration Management (SCM) is a

software-engineering discipline comprising the tools

and techniques (processes or methodology) that a

company uses to manage change to its software

assets.

Page 6: software configuration management

Software Configuration

Management is how you control

the evolution of a software project

Page 7: software configuration management

IEEE Standard 828 (1983, 1998, 2005,2008, 2012).

http://standards.ieee.org/findstds/standard/828-2012.html

The minimum required contents of a SoftwareConfiguration Management Plan (SCMP) areestablished, and the specific activities to beaddressed and their requirements for anyportion of a software product's life cycle aredefined.

Page 8: software configuration management

IEEE Standard 828.

SCM constitutes a good engineeringpractice for all software projects, whetherphased development, rapid prototyping, orongoing maintenance.

It enhances the reliability and quality ofsoftware by (next..)

Page 9: software configuration management

IEEE Standard 8281. Providing structure for identifying and controlling

documentation, code, interfaces, and databasesto support all life-cycle phases

2. Supporting a chosen development/maintenancemethodology that fits the requirements,standards, policies, organization, andmanagement philosophy

3. Producing management and product informationconcerning the status of baselines, changecontrol, tests, releases, audits, etc

Page 10: software configuration management

According with SWEBOK 2004http://www.computer.org/portal/web/swebok/html/ch7#INTRO

Configuration management (CM) is the disciplineof identifying the configuration of a system atdistinct points in time for the purpose ofsystematically controlling changes to theconfiguration, and maintaining the integrity andtraceability of the configuration throughout thesystem life cycle.

Page 11: software configuration management

According withSWEBOK 2004

Page 12: software configuration management

Some CM standards and models

• IEEE 828• IEEE 1704 (1997)• IEEE 12207 Software Life Cycle Processes• CMMI• NTC-ISO-10007 como Administración de la

calidad – Directrices para la Administración de laConfiguración…

Page 13: software configuration management

Configuration Item Any selected artifact (file) or set of selected artifact to

manage its configuration and be treated as a single entity.Example:code, executable objects, scripts, documents, etc.

An aggregation of hardware, software or both kinds ofcomponents, designated for configuration managementand treated as one entity in the management process(IEEE Std 610.12).

An aggregation of work products selected for configurationmanagement and treated as a single entity in theprocess(CMMI).

Page 14: software configuration management

Software Configuration:

• Physic and functional features of the softwareexposed in a technical documentation orreached in a product (IEEE)

• Set of controlled configuration items, at a givenmoment of time (CMMI)

Page 15: software configuration management

Versions and Variants

One version is an instance of a configuration item or a system that differs in some form of another instance.

Predecessor - SuccessorRecord

The variants are equivalent versions infunctionality but differ in hardware or softwareenvironment

Page 16: software configuration management

Phase Version• Pla 1.0 1.1• Req 1.0 1.1 1.2 • Ana 1.0 1.1 • MD 1.0 1.1 • Cod 1.0 1.1 1.2 1.3

LB 0.0.1

1.31.2

1.4

LB 0.0.2

Page 17: software configuration management

• Branching• Build• Release• Delta

Page 18: software configuration management

• Build: Combination of components of a system inexecutable components in a target configuration.

• Release: More than just the executable code, itincludes installation files, data, settings, release notesand manuals. They are created for external use

• Delta: it is used to recover the history of an item. Difference between the new version and the previous.

Page 19: software configuration management

BaselineSpecification or product that has been formally reviewedand approved, provides a basis for future development and can onlybe changed through a formal change control.

IN OUT

ControlledEnviroments

LB 0.0.1

PowerFactorCorrection

Page 20: software configuration management

Baselines are used to track the software configuration at a discrete point in time

Page 21: software configuration management

About Baselines – RUPA baseline is a 'snapshot' in time of one version of each work

product in the project repository. It provides an officialstandard on which subsequent work is to be based,and to which only authorized changes can be made.After an initial baseline is established every subsequentchange to a baseline is recorded as a delta until the nextbaseline is set.

The three main reasons for creating baselines arereproducibility, traceability, and reporting.

Page 22: software configuration management

Rule of Baselines

baselines should be created at the end of each project

iteration

Page 23: software configuration management

SCM Best Practices • Identify and store artifacts in a secure repository.

• Control and audit changes to artifacts.

• Organize versioned artifacts into versioned components.

• Organize versioned components and subsystems intoversioned subsystems.

• Create baselines at project milestones.

• Record and track requests for change.

Page 24: software configuration management

SCM Best Practices • Organize and integrate consistent sets of versions using

activities.

• Maintain stable and consistent workspaces.

• Support concurrent changes to artifacts and components.

• Integrate early and often.

• Ensure reproducibility of software builds.

Page 25: software configuration management

Be Careful

SCM component is a set of related filesand directories that are versioned,shared, built, and baselined as asingle unit

¿?

Page 26: software configuration management

Be Careful

Page 27: software configuration management

Be Careful

Change request management involves trackingrequests for changes to a software system.These requests can result from defects foundby a testing organization, defects reported bycustomers, enhancement requests from thefield or customers, or new ideas producedinternally.

Page 28: software configuration management

SCM Tools• SCM tools are software tools that automate and facilitate

the application of the SCM best practices.

• It is unrealistic to try to maintain effective SCM without anSCM tool.

• The goal of successful SCM is to allow as much change aspossible while still maintaining control of the software.SCM tools help automate tedious, manual, and error-pronepieces of the SCM process, and can ensure that yourproject can support all of the SCM best practices.

Page 29: software configuration management

SCM Tools Examples

• CVS

• Subversion

• Bugzilla

• Mantis

• IBM Rational ClearCase

• GIT

Page 30: software configuration management

SCM Tools Examples (web–Collaborative!)

• GitHub

• GoogleCode

• Gforge

• Jazz

• Microsoft Team Foundation Server

• …

Page 31: software configuration management

SCM Tools Basic Functions• To maintain a library or repository of files

• To create and store multiple versions of files

• To provide a mechanism for locking (to enforceserialized change to any given file)

• To identify collections of file versions

• To extract/retrieve versions of files from therepository

Page 32: software configuration management

Basic operations (Note: check-in - commit)

Page 33: software configuration management

SCM Process• A process defines the steps by which you perform a specific

task or set of tasks. An SCM process is the way SCM isperformed on your project specifically, how an SCM tool isapplied to accomplish a set of tasks.

• A key mistake most people make is to assume that an SCMtool will, in and of itself, solve their SCM problems or supporttheir SCM requirements. How you apply the SCM tool toyour development environment is called the usagemodel, or SCM process. It is this model or process that willin part determine how successfully you address your SCMissues.

Page 34: software configuration management

Unified Change Management• is a software-configuration management process for software

development that spans the development life cycle,managing change to requirements, design models,documentation, components, test cases, and source code

• Fundamental to UCM is the unification of the activitiesused to plan and track project progress with the artifactsbeing changed

• Implementation of the UCM model is realized by both processand tools

Page 35: software configuration management

UCM Process

Source: Chapter 3 - Bellagio, David E. Milligan, Tom J. Software ConfigurationManagement Strategies and IBM® Rational® ClearCase® Second Edition A Practical Introduction. Addison Wesley Professional, 2005

Page 36: software configuration management

Unified Change ManagementUCM was derived from observed best practices in thousands of

development organizations that demonstrated a capability todevelop software in a robust, scalable, and repeatable way. Byautomating these best practices, UCM provides value to adevelopment organization in many ways, but four areas are key:

• Abstraction: we work best on higher-level tasks

• Communication: about individual activities, relievingdevelopers of the burden of remembering the specificfiles and versions they created to fulfill activities onwhich they worked

Page 37: software configuration management

Unified Change Management• Stability: the project progresses in a known, controlled

way with markers placed along the way to denoteintermediate stable points

• Control: mechanisms to assist in managing the flow ofchanges from a developer's isolated developmentstream to a project-integration area or to otherdevelopers; tracking, managing, and controlling theflow of changes from the project's integration area orfrom other developer's streams; and assisting inintegrating those changes

Page 38: software configuration management

UCM Process Overview

Page 39: software configuration management

A new role…The configuration manager is familiar with an organization's

configuration and change-management processes and with theSCM tools being used. The configuration manager isresponsible for creating and maintaining the physicalinfrastructure necessary to implement the design. Thisprimarily involves creating and maintaining repositories andimporting existing files and directories. (In some organizationsthe configuration manager is also responsible for things such asdisk space allocation, network resources, and backup strategiesas they relate to SCM data. The process described hereallocates these activities to the system administrator.)

Page 40: software configuration management

The Architect: Defining the Implementation Model

Page 41: software configuration management

The Configuration Manager: Setting Up the SCM Environment

Page 42: software configuration management

The Project Manager: Managing a Project

Page 43: software configuration management

The Developer: Joining a Project and Doing Development

Page 44: software configuration management

The Integrator: Integration, Build, and Release

Page 45: software configuration management

FinallyUCM provides the software-configuration management tools and

processes to achieve effective, efficient software development. It doesthis by building upon a model that unifies the activities and artifactsupon which projects are built and progress. This model serves to raisethe level of abstraction at which development is done; to providestability for projects and individual contributors; to manage, track, andcontrol the flow of changes in a project; and, finally, to provide facilitiesfor automated project metrics as well as real-time communicationabout a project's activities and artifacts. You have seen that the UCMprocess can be described in terms of five roles: the architect, theconfiguration manager, the project manager, the developer, and theintegrator.

Page 46: software configuration management

IEEE 828 propose a structure for a SCM Plan; it mustconstains:

IntroductionDescribes the purpose of the plan, the scope of its application, the key terms and references

SCM ManagementWho - Indicates the responsibilities and authority to carry out the activity plan

SCM ActivitiesHow - Indicates all activities to be performed in the application to the project

SCM SheduleWhen - Indicates the required coordination of SCM activities with other activities in the project

SCM ResourcesWhat - Indicates the tools, human and physical resources to implement the plan

SCM Maintance PlanIndicates how the plan will be maintained during its application

IEEE-828 SCM Plan

Page 47: software configuration management

Introducción

Describir el sistema o los ítems de configuración a los cuales se les aplica el plan, además el propósito del plan y los documentos relacionados y aplicables en orden de prioridad

Políticas y procedimientos

Incluir los elementos de la administración de la configuración que estén acordados. Se deben definir las políticas, organización y las responsabilidades, criterios para selección de los IC y la frecuencia y control de los informes.

Identif icación de la configuración

Se recomienda elaborar un árbol de la familia de IC con las especif icaciones, convención de numeración, las líneas base por ser establecidas.

Control de la configuración

Indicar la organización, composición y téminos de JC y su relación con otras juntas. Además se debe especif icar los procedimientos para el control de cambios.

Recuento del estado de la configuraciónDefinir los procedimientos para recolectar los registros y como se deben mantener los datos necesarios para producir informes.

Auditoría de la ConfiguraciónSe debe incluir la lista de auditorías a realizar, los procedimientos de auditorias y las autoridades y disciplinas involucradas.

Plan según propuesta de NTC-ISO 10007

Page 48: software configuration management

You must remember…• SCM is a strategic practice oriented to products, projects and

organization, helping to reduce the chaos.

• With tools only, we can only achieve to automate processes, so theorganization obtain low-quality products faster

• SCM allows the improvement of product quality, understanding andknowing how it should be implemented in projects (it is a criticalsuccess factor).

• Tools are used to benefit the SCM implementation, but have it withouthaving done a previous training, without defined policies and withoutestablished metrics, is a practice that leads to the automation of chaos.