In his CM: the Next Generation series, Joe Farah gives us a glimpse into the trends that CM experts will need to tackle and master based upon industry trends and future technology challenges.
the tool supports the change model as well.
10 Change-based Promotion Model: There is a change-based promotion model which is used to drive promotion of changes through the system. This can be used to automate the build process by harvesting changes at a given promotion level for inclusing into a nightly build.
11 Automatic Build/Make/ANT File Generation: Ideally, a 3G CM tool, supports the automatic generation of build and Make files.
12 Workspace synchronization/rebasing automation: Workspace synchronization is automated from a given user initiation. This may involve some user interaction to resolve merge conflicts.
13 Interactive Build/Release Comparisons: The user interface allows the comparison of builds and/or releases from the perspective of change packages, source code differences, problem/feature differences, and requirements addressed. It should be possible to summarize and zoom in to such content/differences.
14 Support for Multiple Baseline Bulk-loading: Loading of multiple baselines of data from the pre-existing CM tool is supported. As such, the tool does not have to be used only going forward, but can replace virtually all usage of pre-existing tools.
15 Data Filtering/Find on Data Browsers: Data browsers within the tool support some level of filtering or "find" operation
16 Queued Exclusive Checkouts: Exclusive checkouts can be queued in the case that a file is already checked out.
17 Eclipse Integration: A 3G tool should support integration with Eclipse development environments.
18 Rapid Performance: A 3G CM tool must be responsive. It must be possible to use it during meetings without delaying proceedings. A poor performing tool dramatically reduces the user-friendliness of the tool, and this is unacceptable for 3G solutions.
19 File System Browser Integration: At some level, it should be possible to view file revisions in the repository directly from the the operating system platform. Typically, 3G capability might be restricted to a file explorer view, or might automatically mirror various CM configurations in real file system directories.
20 Formal Support of Stream Based Development: A 3G tool must permit a natural development cycle which meshes with the marketing releases of the products under development. As most products follow a repetitive release cycle, the CM tool must support an organization which clearly map development efforts, planning data, and file branches onto the streams of release development.
21 Minimizing Branch/Merge - Elimination of Labeling: Branching and merging is rationalized in a 3G tool by the introduction of first order objects and mechanisms which support various CM operations without the need to use branching. Branching should be primarily reserved for parallel development (ideally, parallel development streams only), providing an intuitive branching strategy. Labelling on branches, changes, file revisions, etc. are now inferred from user context, user operations and traceability data rather than through a manual labelling technique. All "labels" are now automatically supplied by the tool.
22 Integrated Process Workflow Capability: The statue-based process model of a 2G tool is expanded to full state-based object flow, with roles, permissions, rules, triggers and tracking, and to work flow capabilities across objects.
23 Access Control Beyond File System: Fine grained access control is provided based on roles defined in the CM tool. This goes beyond the traditional file system (owner, group, world) access control, to very specific role-based, and even user-based, permissions.
24 Multiple-site Distributed Development Capability: Support for distributed development is supported, while maintaining the ability to create consistent backups. Distribution of data applies to all elements of the ALM, not just source code.
25 Scalability to hundreds per server/platform: The CM tool should not require more than one server at a single site unless several hundred users are using the CM repository at that site.