Throughout the software industry, there are a lot of great ideas and knowledge about how to effectively develop software. This knowledge may be centered around 1) technologies, such as J2EE, .NET, and various tool environments; 2) various specialty domains, such as how to do iterative and agile development, how to build secure software, how to best leverage service-oriented architectures, or how to do distributed development; and 3) various vertical industry knowledge, such as how to deal with straight-through processing in the financial world, or how to build embedded systems for the auto industry.
The sources for all of these great ideas and knowledge include organizations doing software development, open source communities, the agile community, Software Process Improvement Networks (SPIN groups), product and technology companies, academia and software research groups, such as SEI Carnegie Mellon, University of British Columbia, and USC Center for Software Engineering, a variety of methodologists and companies capturing industry best practices into various knowledge bases, literature, and processes. The problems with these process assets are:
- Integration: When different media, notations, language, and terminology are used to express process assets, integration of the process assets becomes difficult to achieve. Furthermore, lack of standard interfaces makes it hard to integrate these assets with; project & portfolio management tools, such as IBM Rational Portfolio Manager, Rally's Agile Management Application or Microsoft Project; process management and support tools, such as WayPointer or IRIS; or development environments such as the Eclipse platform.
- Redundant and Isolated Work: When process assets are developed with limited collaboration between different groups, some groups may take part in redundant work, reinventing the wheel rather than adding value to preexisting work or failing to leverage ideas towards accelerating innovation.
- Flexibility and Communication: When process assets are developed without a framework that allows for integration and customization, they may not be effectively communicated for a specific project or organization.