Making Your Development Infrastructure Work For You
By Adam Kolawa, Co-Founder of Parasoft
This new monthly column will provide tips for getting the most out of your existing development infrastructure. Infrastructure components, such as source control systems, build systems, regression systems, bug tracking systems, and requirements management systems, are commonplace in almost any development group these days. However, most development teams that I've worked with don't take full advantage of what these components have to offer. This column shows you how your team can improve its development process by simply using your existing infrastructure components in new ways.
In the upcoming months, I'll offer specific tips that you can apply to your own development process. However, in this first column, I want to define what I mean by the development infrastructure and its specific components:
- The development infrastructure: The collection of components that a software development team uses to develop quality software.
- A source control system: A system that provides a central place where the team members can store and access their entire source code base. Examples include CVS, RCS, Visual SourceSafe, and ClearCase.
- An automated build system: A system that builds the application every night by automatically executing the required build procedure steps at the scheduled time, without any human intervention.
- A requirements management system: A system used for recording and tracking product feature requests.
- A bug-tracking system: A system used to record and track errors and feature requests. Examples include Bugzilla and GNATS.
- Automated testing tools: The tools that team developers and testers use to verify software and to detect and prevent software problems, such as functionality errors, reliability problems, performance problems, or security vulnerabilities. Examples include open source tools, such as XUnit testing frameworks, commercial testing tools, and any scripts or testing technologies that your team or organization has developed.
- A regression system: Any tool or combination of tools that can automatically run all of your existing tests on your entire code base on a regular basis (preferably nightly, as part of the automated build). Its purpose is to help you identify when code modifications cause previously working functionality to regress, or fail. For example, the regression system may be a script that runs one or more automated testing tools in batch mode.
Because all of these infrastructure components are shared across the team, it's important that you work with your team members to implement any of the tips that you choose to follow. If the tips are not understood and applied by all team members, they will not achieve the expected benefits.
Next month, I will discuss tips for using source control systems because each team's source control system controls and stores the team's most valuable asset: its shared code base. I will introduce tips related to such issues as:
- Using and maintaining developer sandboxes
- Using and maintaining build sandboxes
- Determining how much code to check out and for how long
- Determining when new/modified code should be added to source control
- Storing different software versions in source control
- Using versioning functionality
- Using parallel development functionality