Some Sources• Ahmad K. Shuja, Jochen Krebs. IBM Rational Unified Process Reference and Certification Guide—Solution Designer. IBM Press, 2008.• Bellagio, David E. Milligan, Tom J. Software Configuration Management Strategies and IBM® Rational® ClearCase® Second Edition A Practical Introduction. Addison Wesley Professional, 2005.• Aiello, Bob. Sachs, Leslie. Configuration Management Best Practices. Addison Wesley Professional, 2011.• Kemper, Chris; Oxley, Ian. Foundation Version Control for web developers. Friendsfot Apress, 2012.• Londoño & Lozano, EAFIT University, 2010.
Before…..Think about relation between:
Before…We must remember always…Software is bounded only by thelimits of the human imagination.Uncontrolled and undirected,imagination can quickly give riseto nightmare
DefinitionSoftware Configuration Management (SCM) is asoftware-engineering discipline comprising the toolsand techniques (processes or methodology) that acompany uses to manage change to its softwareassets.
Software Configuration Management is how you controlthe evolution of a software project
IEEE Standard 828 (1983, 1998, 2005, 2008, 2012). http://standards.ieee.org/findstds/standard/828-2012.htmlThe minimum required contents of a SoftwareConfiguration Management Plan (SCMP) areestablished, and the specific activities to beaddressed and their requirements for anyportion of a software products life cycle aredefined.
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..)
IEEE Standard 8281. Providing structure for identifying and controlling documentation, code, interfaces, and databases to support all life-cycle phases2. Supporting a chosen development/maintenance methodology that fits the requirements, standards, policies, organization, and management philosophy3. Producing management and product information concerning the status of baselines, change control, tests, releases, audits, etc
According with SWEBOK 2004http://www.computer.org/portal/web/swebok/html/ch7#INTROConfiguration 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.
According withSWEBOK 2004
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 la Configuración…
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 of components, designated for configuration management and treated as one entity in the management process (IEEE Std 610.12). An aggregation of work products selected for configuration management and treated as a single entity in the process(CMMI).
Software Configuration:• Physic and functional features of the software exposed in a technical documentation or reached in a product (IEEE)• Set of controlled configuration items, at a given moment of time (CMMI)
Versions and VariantsOne version is an instance of a configuration item or a system that differs in some form of another instance. Predecessor - Successor RecordThe variants are equivalent versions in functionality but differ in hardware or software environment
• Build: Combination of components of a system in executable components in a target configuration.• Release: More than just the executable code, it includes installation files, data, settings, release notes and 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.
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 LB 0.0.1 Controlled Power Enviroments Factor Correction
Baselines are used to trackthe software configurationat a discrete point in time
About Baselines – RUPA baseline is a snapshot in time of one version of each work product in the project repository. It provides an official standard on which subsequent work is to be based, and to which only authorized changes can be made. After an initial baseline is established every subsequent change to a baseline is recorded as a delta until the next baseline is set.The three main reasons for creating baselines are reproducibility, traceability, and reporting.
Rule of Baselinesbaselines should be created at the end of each project iteration
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 into versioned subsystems.• Create baselines at project milestones.• Record and track requests for change.
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.
Be CarefulSCM component is a set of related files and directories that are versioned, shared, built, and baselined as a single unit ¿?
Be CarefulChange request management involves tracking requests for changes to a software system. These requests can result from defects found by a testing organization, defects reported by customers, enhancement requests from the field or customers, or new ideas produced internally.
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 an SCM tool.• The goal of successful SCM is to allow as much change as possible while still maintaining control of the software. SCM tools help automate tedious, manual, and error-prone pieces of the SCM process, and can ensure that your project can support all of the SCM best practices.
SCM Tools Examples (web–Collaborative!)• GitHub• GoogleCode• Gforge• Jazz• Microsoft Team Foundation Server• …
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 enforce serialized change to any given file)• To identify collections of file versions• To extract/retrieve versions of files from the repository
Basic operations (Note: check-in - commit)
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 is performed on your project specifically, how an SCM tool is applied to accomplish a set of tasks.• A key mistake most people make is to assume that an SCM tool will, in and of itself, solve their SCM problems or support their SCM requirements. How you apply the SCM tool to your development environment is called the usage model, or SCM process. It is this model or process that will in part determine how successfully you address your SCM issues.
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 activities used to plan and track project progress with the artifacts being changed• Implementation of the UCM model is realized by both process and tools
UCM ProcessSource: Chapter 3 - Bellagio, David E. Milligan, Tom J. Software ConfigurationManagement Strategies and IBM® Rational® ClearCase® Second Edition APractical Introduction. Addison Wesley Professional, 2005
Unified Change ManagementUCM was derived from observed best practices in thousands of development organizations that demonstrated a capability to develop software in a robust, scalable, and repeatable way. By automating these best practices, UCM provides value to a development organization in many ways, but four areas are key:• Abstraction: we work best on higher-level tasks• Communication: about individual activities, relieving developers of the burden of remembering the specific files and versions they created to fulfill activities on which they worked
Unified Change Management• Stability: the project progresses in a known, controlled way with markers placed along the way to denote intermediate stable points• Control: mechanisms to assist in managing the flow of changes from a developers isolated development stream to a project-integration area or to other developers; tracking, managing, and controlling the flow of changes from the projects integration area or from other developers streams; and assisting in integrating those changes
UCM Process Overview
A new role…The configuration manager is familiar with an organizations configuration and change-management processes and with the SCM tools being used. The configuration manager is responsible for creating and maintaining the physical infrastructure necessary to implement the design. This primarily involves creating and maintaining repositories and importing existing files and directories. (In some organizations the configuration manager is also responsible for things such as disk space allocation, network resources, and backup strategies as they relate to SCM data. The process described here allocates these activities to the system administrator.)
The Architect: Defining the Implementation Model
The Configuration Manager: Setting Up the SCM Environment
The Project Manager: Managing a Project
The Developer: Joining a Project and Doing Development
The Integrator: Integration, Build, and Release
FinallyUCM provides the software-configuration management tools and processes to achieve effective, efficient software development. It does this by building upon a model that unifies the activities and artifacts upon which projects are built and progress. This model serves to raise the level of abstraction at which development is done; to provide stability for projects and individual contributors; to manage, track, and control the flow of changes in a project; and, finally, to provide facilities for automated project metrics as well as real-time communication about a projects activities and artifacts. You have seen that the UCM process can be described in terms of five roles: the architect, the configuration manager, the project manager, the developer, and the integrator.
IEEE 828 propose a structure for a SCM Plan; it mustconstains: IEEE-828 SCM Plan Describes the purpose of the plan, the scope of itsIntroduction application, the key terms and references Who - Indicates the responsibilities and authority to carrySCM Management out the activity plan How - Indicates all activities to be performed in theSCM Activities application to the project When - Indicates the required coordination of SCMSCM Shedule activities with other activities in the project What - Indicates the tools, human and physicalSCM Resources resources to implement the plan Indicates how the plan will be maintained during itsSCM Maintance Plan application
Plan según propuesta de NTC-ISO 10007 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 documentosIntroducción relacionados y aplicables en orden de prioridad 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 yPolíticas y procedimientos control de los informes. Se recomienda elaborar un árbol de la familia de IC con las especificaciones, convención de numeración, las líneas base por serIdentificación de la configuración establecidas. Indicar la organización, composición y téminos de JC y su relación con otras juntas. Además se debe especificar los procedimientosControl de la configuración para el control de cambios. Definir los procedimientos para recolectar los registros y como seRecuento del estado de la configuración deben mantener los datos necesarios para producir informes. Se debe incluir la lista de auditorías a realizar, los procedimientos deAuditoría de la Configuración auditorias y las autoridades y disciplinas involucradas.
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 the organization obtain low-quality products faster• SCM allows the improvement of product quality, understanding and knowing how it should be implemented in projects (it is a critical success factor).• Tools are used to benefit the SCM implementation, but have it without having done a previous training, without defined policies and without established metrics, is a practice that leads to the automation of chaos.