Skip to main content

Joe Farah

Profile picture for user Joe Farah

Member for

13 years 8 months

Joe Farah is the President and CEO of Neuma Technology and is a regular contributor to the Techwell Community. Prior to co-founding Neuma in 1990 and directing the development of CM+, Joe was Director of Software Architecture and Technology at Mitel, and in the 1970s a Development Manager at Nortel (Bell-Northern Research) where he developed the Program Library System (PLS). A software developer since the late 1960s, Joe holds a B.A.Sc. degree in Engineering Science from the University of Toronto. You can contact Joe at [email protected]

Company
Neuma Technology
Job Function
Configuration Management
Job Title
President & CEO
Industry
Computer Software - SaaS
Interests
Agile
Architecture
Configuration Management
Design Development Lifecycles
Country
Canada

President and CEO of Neuma Technology, Joe Farah is a regular contributor to the CM Journal. Prior to cofounding Neuma in 1990, he was a director of software at Mitel. In the 1970s, Joe developed the Program Library System (PLS), still heavily used by Nortel (Bell-Northern Research), where he worked at the time. He's been a software developer since the late 1960s.

All Articles by Joe Farah


All Stories by Joe Farah

What Is the Real Difference between Software Configuration Management and Hardware Configuration Management?In his CM: The Next Generation Series, Joe Farah recently noticed an increasing level of discussion on CM communities discussing software configuration management (SCM) versus hardware configuration management (HCM). Remember that there are many similarities between hardware and software, but there are certain differences that significantly impact your ability to develop and manage.
Automating a Process to Attain Higher QualityIn his CM: The Next Generation Series, Joe Farah examines the following three steps that deal with process: defining the process, automating the process, and improving process quality. When a process is automated, problems can be repeated and are much easier to diagnose and correct. As the problems are corrected, we attain higher quality.
What Is CM Architecture, Anyway?In his CM: The Next Generation Series, Joe Farah writes that there are two sides to answering that question. One deals with your CM solution’s architecture, and the other, which may be closely related, deals with the architecture of your tools.
After Ten Years: One Person's Stance on the Agile ManifestoIn his CM: The Next Generation Series, Joe Farah often writes about ALM relative to agile. In this article, he lays out his views on the Agile Manifesto specifically. From collaboration and clear communication to the focus on individuals over tools, Joe covers what works, and what he thinks could work better.
Global Software Development CM and ALM for Global Software Development

In his CM: The Next Generation Series, Joe Farah writes that there are many reasons that organizations or government agencies use distributed development. Whatever the reason, a software development team, and indeed the entire product team, needs to do all it can to ensure that development proceeds smoothly.

 

Defining a Software Configuration Management Process to Improve QualityJoe Farah explains that to successfully build a software configuration management (SCM) process, you must have a solid understanding of the objects you need to manage and a good feel for what SCM is supposed to accomplish.
What a Small Team Really Needs for Software Configuration Management

In his CM: The Next Generation series, Joe Farah writes that software configuration management (SCM) can be a daunting venture for a small team. It seems that many solutions require a lot of effort and money, but this is not always the case. This article looks at what a small team really needs for CM.

Top Ten Requirements for Your CM and ALM StrategyJoe Farah takes an in-depth look at the top ten requirements needed for a successful next-generation configuration management and application lifecycle management solution strategy.
How to Build a CM and ALM StrategyJoe Farah writes that a next-generation CM and ALM strategy may seem aggressive, but it will help ensure that you're happy with the result. It will make sure that you deal with the entire problem domain from an organization perspective, rather than just the part your team is traditionally comfortable with.
Ten Capabilities that ALM Tools Must SupportJ
Build Capability BasicsA basic build capability is founded on two key fundamentals: the ability to reproduce the build and the ability to automate the build process. Without these two fundamentals, you're fighting an uphill battle. Reproduction of the build implies that you have a CM system able to capture the build definition. Automation helps to ensure that no manual errors can play into the production, but this is just the beginning. These build basics will help set you on the right path for high-quality changes.
Build Management Essentials You Need to KnowJoe Farah writes that it used to be that reproducibility was the holy grail of build process and capabilities. While that is still the central requirement, good build management processes and tools can take you a lot further, a lot faster, and with better quality.
A Primer on a Next Generation Application Lifecycle Management ToolJoe Farah gives a primer on a next generation ALM tool that reinforces the concepts of next generation ALM. Next generation ALM tools are, well, somewhat futuristic. After all we're talking about the next generation. But it's hard to talk about abstract and idealistic concepts if they are too hard to picture.
What Else Does Application Lifecycle Management Need?Joe Farah writes on what application lifecycle management (ALM) needs, plus the underpinnings and structures that are in place within a CM and ALM tool that help give the tool significant character.
How Vendors Can Move the CM and ALM Industries ForwardJoe Farah writes from a vendor's perspective where he explains what to do help the configuration management (CM) and application lifecycle management (ALM) industry move forward. Make sure the CM and ALM components and features that you're working on are well defined.
Does Size Matter for Application Lifecycle Management?Joe Farah attempts to answer whether or not size matters for application lifecycle management. The next generation of CM and ALM processes and tools change the game for small teams. It's no longer a question of what parts of the ALM process we cut out or ignore. Instead, it's how can I compete against a Goliath competitor.
Moving Beyond Configuration Management to Application Lifecycle ManagementPerhaps when there was less market pressure, or fewer applications and products with far fewer computers, it was fine to focus on software design and implementation. Joe Farah writes that in those days of old, managing the new flexibility and capabilities afforded by software was the big challenge, but we've come a long way since then.
Don't Relegate Release Management to a Product's ReleaseJoe Farah writes that there are two key requirements: release management has to start prior to development and the tools and processes available for release management are equally applicable and important for everyone on the product team, not just for the release team.
Why Agile Development Requires Agile Configuration ManagementIn his CM: The Next Generation Series, Joe Farah writes that anyone who thinks that agile development implies minimal CM is probably in the situation of not having to deal with customers. Instead, agile development requires agile CM; configuration management tuned to the agile development shop and philosophy.
What a Fragmented Industry Gets Wrong with SCM StandardsIn his CM: The Next Generation Series, Joe Farah writes that one of the biggest problems with software configuration management (SCM) standards is that the industry is currently too fragmented. Sure, there are many ways to do things and plenty of high-level standards out there, but as a whole, the industry uses different terminology for the most basic concepts and fails to understand that standards must go beyond ability and push the industry forward.
Ten Application Lifecycle Management (ALM) "Best" PracticesIn his CM: The Next Generation Seriesm Joe Farah identifies and discusses ten application lifecycle management (ALM) best practices.
The Tools, Processes, and Infrastructure of ALMEnterprise CM is not a simple feature, process, or edict. It is the establishment of tools, processes, and infrastructure so that management can confidently reap the benefits of CM and ALM across the enterprise.
A Recap of the Last Decade of Configuration ManagementJoe Farah looks back at the last ten years to see where CM and ALM has come from and then forward another ten to see where it's going. In some ways, a lot has happened in the past decade, but in other ways, the progress has been painfully slow.
Three Wishes for Software Configuration Management (SCM)Joe Farah writes of three Christmas wishes he has for the world of software configuration management (SCM). If we do these key things properly, we won't just see an jump in SCM maturity. We'll see a fire that spreads the wealth.
Why Software Configuration Management is Essential for a Small BusinessExactly how big should an organization be before CM must take an active part in the development team? The answer is simple: CM, when properly adopted, gives an advantage to the small business that is necessary for it to compete. It doesn't really matter the size your company, you still have to successfully develop, build, distribute, and track your software.
New Branching Standards for Configuration ManagementJoe Farah explores a potential standard for next generation branching. It not only has advanced capabilities and processes, but can also significantly reduce CM complexity and increase CM automation.
How to Build a Configuration Management PlanIf you're planning a configuration management (CM) project, it's time to build a CM Plan. Joe Farah writes on on a number of areas that need to be addressed in your plan in order to follow software configuration management (SCM) best practices.
Essentials of the Build ProcessBuild is central to CM and iit's critical to do it right. A basic build capability is founded on two key fundamentals: the ability to reproduce the build and the ability to automate the build process. Without these fundamentals, you're fighting an uphill battle. Reproduction of the build implies that you have a CM system able to capture the build definition. Automation helps to ensure that no manual errors can play into the production, but this is just a basic build capability.
How to Evaluate CM and ALM Tools

Joe Farah writes that evaluating and selecting configuration managment (CM) and application lifecycle management (ALM) tools is an opportunity both to ensure that you have a good process in place and to learn the present state and the state-of-the art in CM and ALM technology.

Using Dashboards to Clarify Project and Product Perspectives in SCMJ
Five Mistakes a Company Can Make When Using Configuration ManagementJoe Farah details five mistakes a company can make when using configuration management (CM). Until we start to admit to our mistakes and strive to reach the next generation of CM, we'll stagnate.
The Events That Will Help Shape the Future of Configuration ManagementJoe Farah details the events that will help shape the coming year of configuration management (CM) and application lifecycle management (ALM). The CM and ALM industry will prosper as companies look at how they can reduce costs.
Determine How a Vendor's Tool Will Support Your Project CM PlanI've seen countless sets of requirements and RFIs come my way for acquiring new CM/ALM tools. However, it is a very rare occasion when I see a company actually publish (and send out) the project CM Plan to potential tool vendors. In my most recent encounter of this approach, the pitch was: How would you change this plan based on your CM/ALM solution for us? This project has it right—not just a set of requirements, but an actual CM Plan, and not so much, "What does your tool do?" as, "What will our CM Plan look like with your solution?"
Selecting a CM/ALM Tool That Will Add Value to All UsersSelecting a CM/ALM tool is no small task these days. The CM/ALM tool is no longer just another developer tool, such as a compiler or IDE environment. Instead, it forms the backbone of a development organization. It will strongly influence an organization's ability to measure and control quality, meet schedules, comply to requirements and assess development costs. It will also be the central focus for all development processes. It will support a key knowledge base, and will be viewed as the vault for both software and product assets.
How Does the Shift Toward Web-Based Technology Influence CM?While the definition of Web 2.0 has barely begun to settle down, applications must start to react. Web 2.0 is, from a technology viewpoint, mostly a combination of collaborative web technology and application web interfaces that mimic their native client counterparts. From a social viewpoint, it's a communication and information transition: blogs, Facebook, integrated chat, and meeting capabilities create a web base of knowledge so that anyone can search for anyone or anything and communicate or contribute to the subject matter. From a CM/ALM perspective, there has always been a need to have a base of knowledge, of data, and of people. The success of CM depends on it. So how really does Web 2.0 play into the next generation of CM?
New Developments in Builds and Deployment ManagementT
Your Small Business Can't Afford to Not Invest in SCMIt used to be that SCM was a complex and effort-intensive process that small projects and businesses could not affort to invest in. Tools were expensive, automation was a daunting task, and the imposition of process on the small development team would take away the small business advantage of moving quickly. Today, and certainly in the next generation of CM, quite the opposite is true. How can that be?
The Practice of Good Release Management Processes in CMWe build software as part of a system or as its own entire product. The goal is to meet the requirements established by the customer, the market and/or the cost/benefits analysis. Product releases are meant to move us from some starting point to our ultimate product over a period of time: months, years or even decades. Release management starts not with the delivery of software, but with the identification of what we're planning to put into the product. The timing and content of releases helps us to manage releases so that they are not too onerous on the customer and so that we stay in a competitive position with our products. Good release management processes will ensure that you know what is going to go into your product, what actually went into the product, and what changes the customer is going to realize upon upgrading.
CM Tools and Transparency in IT GovernanceWhen it comes to IT governance, a key issue is transparency of process and data, all the way up the chain.
What the Next Standard of CM Will Look LikeWhen will the ultimate software configuration management (CM) standard emerge? Although Joe Farah suspects that it may never happen, he recommends the next standard: one that will be very well defined, highly flexible, and will cater to agile development, automation, CMMI, and more.
How the Next Generation of CM and ALM Solutions Will Influence the MarketCM architecture has the ability to influence the market even more so than vice versa. The complexity of CM and ALM forces vendors to take the lead in market development. But the market will have its influence, and those solutions with strong architectures will be in the best position to serve that market. Last year at this time, I identified where I thought the CM solution space was heading generally. Looking back two and three years ago, I painted a bit of a picture of what defines 3rd and 4th generation CM/ALM solutions. Over the next couple of years, we should expect to see competitive and market pressures push the industry into the 3rd generation.
The Connection between Testing and CMTesting is a complex discipline. There are various approaches, methodologies, strategies. So where is the connection with CM? As with development, requirements specifications, and other aspects of product development, the connection is on the management side. A software configuration management audit is really about demonstrating that you have test case coverage for your requirements and that the test cases have been successfully run against the target build.
Top 10 Best Practices in Configuration ManagementJoe Farah identifies the top ten "best" practices in configuration management and goes even further by listing ten more runner-up practices.
Addressing Challenges to Ensure Successful Tool IntegrationsTool integrations have been going on ever since the initial days of JCL (IBM's Job Control Language). JCL actually made things a lot simpler. But as tools have become more complex and diverse, tool integration presents many challenges. How do you integrate user interface and simplify the corresponding training? What about administration? How do you deal with varying scalability capabilities, and varying server requirements? What about multiple site operation? Successful tool integrations must effectively address these issues and must do so by starting from a process-centric view of the world.
Commonsense CM Strategies to Meet Good Quality RequirementsQuality requirements are an elusive goal for any complex product development effort. A strong process and good tools can help advance requirements toward higher quality over time. The product development team plays an important role in establishing quality requirements. In a well-oiled customer/ developer relationship, frequent feedback will go both ways. Unknowns will be explored and change will occur. It's important that CM/ALM tools can clearly track requirements and their changes in a way that helps to capture increasingly improved requirement baselines.
Traceability and Auditability: Satisfying your CustomersWhen we deliver software products, we need to be able to tell our customers what they're getting. Not only product documentation, but specifically, every time we deliver a new release we need to relay what problems were fixed and what new features were added. If the software is subject to periodic audits, we need to tell them even more, especially the abiltiy to trace a requirement or change request to what was changed.
Configuration Management Planning: What To Do Before you StartConfiguration management planning should not start as you put together your CM Plan. By then, you've already predisposed yourself to how your plan is going to play out.
Why It's Important for CM and Project Management to Work TogetherOne of the problems with Configuration Management (CM) and Project Management (PM) is that the tools and the data repositories for each are separate. As a result the processes are quite separate. The project manager takes a set of requirements and decomposes them into tasks, which are then prioritized, scheduled and assigned. The CM team creates configuration items and tries to tie the CIs back to the requirements so that they can be properly audited. When CM and PM work together they tend to enhance each others function, and eliminate potential overlap in the processes.
How to Make Your CM Process AgileTo make your CM process agile, go through it and identify how you can reduce end-user complexity, tool misfits, and areas of greatest risk. An agile CM process is one that supports all team members, making them more productive and simplifying their management tasks.
Finding the Right Mix of ALM Processes and Tools for Design and ImplementationConfiguration management is complex. As a product evolves, CM gets even more complex, as complexity breeds problems. So how do we continually march our product configurations toward higher and higher quality? You need good people, process, tools, and automation. People define and put the processes in place. Tools are used to automate the processes and to bury the complexity of CM below the user level. Development is a process that takes ideas and turns them into products. There are many techniques and tools to do design and implementation. The right mix is required to effectively develop a competitive product. On the management side of things, the same is true. Application lifecycle management requires the right set of processes and tools to allow the design efforts to be properly leveraged and to yield the best quality.
Establishing Effective Software Metrics for the Measures You WantThe goal of software metrics is to have a rich collection of data and an easy way of mining the data to establish the metrics for those measures deemed important to process, team, and product improvement. When you measure something and publish the measurement regularly, improvement happens. This is because a focus is brought on the public results.
Change Management Is Essential to the Building ProcessesBuilding is considered to be one of the fundamentals of configuration management, even though some might argue that building isn't really CM. The reason it is fundamental is that the build/verification cycle provides proof of reproducibility if done correctly. It forces CM to be done correctly so that only the objects from the CM repository are used to reproduce the build. When formal build processes are correct, they need no information that resides outside of a CM repository. When properly done, the build record is created prior to the build (i.e., a build notice) rather than as a result of the build, with that record being used to drive the build process. An integral change management capability is an essential component of such a build process.
The Business of Software DevelopmentThe software development business, once the domain of a few advanced technology companies, is now pervasive. Why? Because software is less costly and easier to modify than hardware. At first glance this is obvious; building a software telephone switch is a lot less costly than the hardware equivalent. Looking more closely, though, software products have far more features and, therefore, are more complex than hardware products. Software is easier to change, but this just adds to the level of complexity, especially on the management side. Software allows us to build products that are more complex.
Six Ways to Build Reliable ApplicationsI came across a paper the other day in Better Software titled, "Code Improvement" by Jeff Grover and Zhon Johansen. It's a short, but good article focusing on developing well-designed code. My favorite point was "Start/Finish each task by refactoring". In other words, stop the entropy of expanding your software solution by ensuring that the code is as minimal as necessary to meet the requirements. There are parallels in the CM world that ultimately lead to a reliable CM process and tool support capability. In this article, I'll venture where I don't usually go: inside our own development environment to bring out a few points that may apply equally to general development and to a CM environment.
Seamless Integrated Tops Wishlist for CM/ALM Tool SuitesThere are a lot of CM/ALM solutions out there - so where are we headed? In my opinion, the future of CM/ALM will be defined by the level of tool suite integration, more than by any other factor in the 3rd and 4th Generations of tools. And basic "integration" will not cut it. Putting tools together into a single package with some glue and triggers to help the tools interact is helpful, but will fall short of market demand. "seamless integration" will be a requirement. No advance is more important to the next generation of CM tools. What about cost? What about ease-of-use? How about traceability? The answer is simple: first seamless integration, and the rest will follow. If you haven't seen a seamlessly integrated tool suite, you may not fully grasp this statement. But seamlessly integrated tools are the ones that will be dominant in the future. Let's look at why.
Do Your CM/ALM Tools Help Secure Your Development Assets?You're part of a very successful growing software company. As you approach the office one morning, fire trucks out front indicate that this is not business as usual. Fortunately, you have nightly off-site back-ups. Unfortunately, you'll need equipment, software, back-up recovery operations, and perhaps things can be back to normal in a few days with limited data loss. Or maybe you've noticed data problems creeping into your development repository ever since the recent round of layoffs. Or a hacker. Maybe there was a critical disk crash. Or maybe a new software release has introduced data inconsistency. There are many ways your development assets can be compromised. So you really need many avenues to secure them. Your CM and/or ALM suites are part of your development backbone - they must be up to the task of getting you back on your feet, the same day.
Using CM to Manage Application DeploymentIncreasingly application deployment is a focus of the total CM picture. Why should it be? Isn't it something separate? Integration of application deployment with configuration management can both simplify the process and, in the optimal case, permit multiple simultaneous deployments without any additional effort. A goal here might be to allow different users to see a different versions of the application. Or it might be just to automate deployment. In this article, we'll look at the two main trends in deployment : the single point network application deployment and the more traditional deployment for either installation packaging or in-house use.
How We Got from Version Control to Product ManagementVersion control (VC) has been around long before software. But it wasn't until the late 1960s and early 1970s that it emerged as a common software function. Today, version control is still necessary, but is a much smaller piece of the configuration management (CM) and product management (PM) pictures. While version control is a relatively simple application, configuration management is anything but. No wonder it is embraced with such reluctance. This doesn't have to be the case. The key to adopting a successful CM program is to select tools which help you to automate the complexity without taking short cuts that will lead to problems down the road.
Is Agile Configuration Management Worth the Effort?

What is agile CM? If you think it's doing the minimal amount of CM, think again. Instead, it's minimizing and streamlining the work to do all of the CM tasks that are necessary. It adapts to changing CM requirements fairly easily. Agile CM doesn't just happen - it's a combination of good CM process, good CM tools, and CM automation. If you fall short on any of these, your CM process will not be very agile.

Will Open Source Dominate Development Management?Open Source is a great concept, thmough any resisted at first. Can you remember a time when it was valid to use the argument that, "Nobody will commit to supporting it, so you're taking your chances"? Today, I see it differently. There are loads of support for open source products, even better than for commercial products in many cases. So does that make it the winner?
A Look Ahead to the Third Generation of CM ToolsEvery year we like to take a look at where the CM industry is going. There are always two sides to the story. Where is technology moving, and where is the market moving? Technology is moving ahead at a good clip, from some vendors, while stagnant with others. The same can be said of the market. There are those looking at a full ALM solution or an Enterprise CM solution, while there are others who are looking primarily for a version control/build tool, possibly with some change management.
Using Merge To Yank A ChangeI'll keep this one short. If you have a change that has been made to a file (or even to a change package of files) somewhere in the past and you would like to eliminate that change from the past, you can do so with a judicious use of almost any merge tool.
Integrated Tools Enhance Distributed Development

When I look at the prospect of a distributed development effort, it scares me. So much depends on having the right people and good communicators, all in the right places. It also depends on the successful merging of cultures, but more and more distributed development is taking place.

CM Generations and a Vision for the FutureIt was 1978 when I first introduced change packages (a.k.a. updates) as the central feature of an in-house CM system. It's still in use today supporting a 40 million LOC project. It was 1982 when I introduced the concept of streams to rationalize branching along the product roadmap. Little did I know that a quarter century later, these concepts would just be starting to move to the forefront.
Metrics and Process Maturity

In keeping with the season, I'll try to keep this month's article on the Light side (both Chanukah and Christmas are Festivals of Light). Not easy to do when talking about metrics. If you're serious about attaining SEI CMM Level 5 certification, or about improving your processes in an effective manner, metrics are critical. Changing processes based on gut feel, or even based on some other organization's best practices can lead you backwards. Metrics not only permit you to detect this, but give you the basic data you need to improve your processes.

Making Incremental Integration Work for You

Recent CM Crossroads posts have suggested that a branch-per-change branching strategy is good because it gives you the ability to maintain a stable "main" trunk, while integrating a change at a time if you want. As Joseph Reedick put it in one of his responses:

Changes: The Crossroads Between Project CM and Product CM

Project perspective or product perspective - what's the best way to look at configuration management. Well... both. We'll journey through both sides, giving this author's perspective of each, and showing how changes form the crossroads between project CM and product CM. Right off the bat, we'll need to agree on some definitions.

The Road To Production QualityMy product is ready on CD. It's better than the previous release in respect to both quality and functionality perspectives. Does that mean it's ready to be released as a production product? How do I know when it's really ready?
Moving Dependency Tracking Into The CM ProcessLast month I spent a bit of time describing how a CM tool could support the creation and comparison of builds, to support the building of multiple variants, etc., based on a single baseline. This month, I will focus on how the CM tool can simplify the build process, moving the process out of "Make" files while supporting the creation of reusable, layered software.
CM: The Nerve of Your Life Cycle Management

Most CM professionals, I think, would agree that the CM database is not just another component of Application Life-Cycle (ALC) management, it's really at the heart of the matter. I'd like to say that the CM function shares the same stature - it's not just another component of your ALC management - it's the nerve. In fact, I'd like to go one step further and say that the integration of CM and Data Management (DM) capabilities, when done properly, can transform your ALC management environment into a next generation engine that will empower each component of your environment.

Taking the Complexity out of Release Management

CM is complex enough without having to worry about managing releases! Release management, however, isn't just part of CM, it should be driving your CM solution.

Release management deals with defining, using and managing the set of deliverables (the Build), for all of your customers. This includes the creation of records to subsequently identify release contents, the creation of variant builds, patch releases, incremental releases, and the support of parallel streams of releases (older product releases, current release(s) and future releases). It also deals with the ability to know what’s in a release and to compare one release (e.g. one being sent to a customer) to another (e.g. the one the customer currently has so that the customer is well aware of the changes being made to his environment and how they match up against his requirements). In an end-to-end product management environment, release management spans the entire spectrum from requirements management through to product retirement.

Multi-Site Servers - Get it Right

I've been involved in database development for 30 years and CM development for over a quarter century. I'm confused. Why is it so difficult to get working multi-site solutions? The specification is clear, to start off anyway: I want to see the same thing whether my client is connected to the London server or the New York server.

Configuration Management VS Change Management - Who's in ControlDiscussion has gone around a number of times on the issue. There's even been a poll on the issue. Is configuration management part of change management or vice versa? Everyone has an opinion and there does not seem to be a consensus. What's the problem? Well, here's how I see it.
Evaluating CM Tools

How do you evaluate a CM tool? What's important to you? Did you know that a good CM tool could actually make the difference between success and failure?

Is It Upward Compatible?

I want to touch on one of the most basic and fundamental issues of configuration management that developers have to deal with. A common question addressed early on in a project is: Do I need to branch this software and maintain a parallel version? A common answer is: Well, if it's not upward compatible.

Workspace Management Front and CenterWorkspace management has been an increasingly important component of CM over the years. Gone are the days when the only workspace operations were checkout, checkin, build/make, and the occasional file merge operation. Today, the workspace is at the center of a developer's interaction with the CM tool. Ideally, it is not just a file holder, but rather embodies an entire development context. More and more that context is accessed through a richer CM tool interface, from an IDE environment, or even through the file system. In the modern CM tool, the workspace must actively provide guidance to the developer rather than lying dormant waiting for a developer to manage it.
Testing and CM - A High Quality MarriageDo you need to improve an area of your team's performance? Measure it and post the results. Over time you will see the performance improve. If you want to improve the quality of your product, measure it. Over time you will see the quality improve. Testing is the key to measuring quality, and CM is an equal partner. A good CM partner will provide both the communication capabilities and the information base to enable the relationships needed for a quality marriage.
Requirements Driven Development: A Stream-Based WBS ApproachRequirements are a must have. Or should have. Maybe a want. OK, maybe not really requirements. When it comes down to it, you need to understand why you're building what you're building in sufficient detail so that you will know if what you built does the job. You also need full traceability to show that you have met the requirements. Developers work to a set of requirements, but these are not the same as the product requirements, which are again different from the customers' requirements. And what about ad hoc requests? Where do they fit in?
The Journey Through Traceability to Process ControlTaking a team from an undisciplined product development strategy, through an organized process with visible tracks, to a mostly automated, self-improving process is a long journey. It requires a good understanding of change, an adequate SCM tool or tool suite, good people for sure, and a lot of common sense. The journey is well worth the effort, though. I've been down the road more than once. It leads you to the path where you can manage properly and let the configuration management be handled automatically.
Automating CM or Application Lifecycle ManagementAutomation is at the heart of excellence in the field of configuration management. Unless a wider definition of CM is used, that of application lifecycle management, automation will fall far short of the mark. As we enter this still young millennium and look back at the progress of CM, it's clear that the industry has, for the most part, been creating tools to fight fires and to avoid them. Spot solutions originally dealing with version control, change management, problem/issue/defect tracking, etc., have given way to more integration. Yet as a whole, the industry has fallen far short of the mark required for CM, or ALM, automation.
To Branch or Not To Branch (and Merge/Test)I don't like merging. When I merge I've got to retest. This is especially difficult if the merging occurs a few days/weeks after the original change. Come to think of it, I don't really like branching, but that depends. Do I have to merge whenever I branch? Do I use branching for a specific discipline or is it a catch-all operation which gives me all sorts of capabilities in return for a spaghetti-like spider web of branches and merges? What about all the labeling that goes with it? There must be a better way, a way to reduce branching, and merging, while increasing automation and reducing complexity. What is it?