Many software development organizations are focused on evolving mature processes to improve the predictability of software management and the performance of their software lines of business (in terms of product quality, time to market, return on investment, and productivity). While process definition and tailoring are necessary, a significant level of process automation is also required in order for modern software development projects to operate profitably.
Automation needs grow depending on the scale of the effort. Just as the construction process varies depending on whether you are building a dollhouse, a single-family home, or a skyscraper, the software process varies across the spectrum from single-person spreadsheet tasks to large-scale, multiple-organization, catastrophic cost-of-failure applications. The techniques, training, time scales, acceptance criteria, and levels of automation differ significantly at opposite ends of the spectrum.
Most software organizations are confronted with the task of integrating their own environment and infrastructure for software development. This process typically results in the selection of more or less incompatible tools that have different information repositories, are supplied by different vendors, work on different platforms, use different jargon, and are based on different process assumptions. Integrating such an infrastructure has proven to be much more problematic than expected.
Key Points a The environment must be a first-class artifact of the process.
▲ Process automation, and change management in particular, are critical to an iterative process. If change is too expensive, the development organization will resist it.
▲ Round-trip engineering and integrated environments promote change freedom and effective evolution of technical artifacts.
▲ Metrics automation is crucial to effective project control.
▲ External stakeholders need access to environment resources to improve interaction with the development team and add value to the process.
Automating the development process and establishing an infrastructure for supporting the various project workflows are important activities of the engineering stage of the life cycle. They include the tool selection, custom toolsmithing, and process automation necessary to perform against the development plan with acceptable efficiency. Evolving the development environment into the maintenance environment is also crucial to any long-lived software development project.
To complicate matters further, it is rare to find stakeholders who treat the environment as a first-class artifact necessary for the continued maintenance of the product. The environment that provides the process automation is a tangible artifact that is critical to the life-cycle cost of the system being developed. The top-level WBS recommended in Chapter 10 recognizes the environment as a first-class workflow.
Section 3.2 introduced three levels of process. Each level requires a certain degree of process automation for the corresponding process to be carried out efficiently:
1. Metaprocess: an organization's policies, procedures, and practices for managing a software-intensive line of business. The automation support for this level is called an infrastructure. An infrastructure is an inventory of preferred tools, artifact templates, microprocess guidelines, macroprocess guidelines, project performance repository, database of organizational skill sets, and library of precedent examples of past project plans and results.
2. Macroprocess: a project's policies, procedures, and practices for producing a complete software product within certain cost, schedule, and quality constraints. The automation support for a project's process is called an environment. An environment is a specific collection of tools to produce a specific set of artifacts as governed by a specific project plan.
3. Microprocess: a project team's policies, procedures, and practices for achieving an artifact of the software process. The automation support for generating an artifact is generally called a tool. Typical tools include requirements management, visual modeling, compilers, editors, debuggers, change management, metrics automation, document automation, test automation, cost estimation, and workflow automation.
While the main focus of process automation is the workflow of a project-level environment, the infrastructure context of the project's parent organization and the tool building blocks are important prerequisites.
Was this article helpful?
What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.