The software industry abounds with expert knowledge of how to develop software effectively. That knowledge may be centered on (1) technologies, such as J2EE, .NET, or various tool environments; (2) various specialty domains, such as how to build secure software, how to best leverage service-oriented architectures, or how to do distributed development; and (3) various industry-specific bodies of 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 companies doing software development; the agile community; Software Process Improvement Networks (SPIN groups); product and technology companies; academia and software research groups, such as SEI Carnegie Mellon and USC Center for Software Engineering; and a variety of thought leaders, practice leaders, and companies capturing industry best practices into various knowledge bases, books, and processes. Presently, most of these process assets have a number of limitations:
The purpose of EPF is to address the above issues by facilitating cohesion and usefulness of process assets and best practices. EPF also aims to foster an environment for effective collaboration and innovation in software development by bringing together communities and having them express process assets using a standard format. EPF also supports the ability to express a diversity of views in how to develop software, since this diversity drives innovation. The goals of EPF are further discussed in the following section. |