The Enterprise Application Model introduced in this book suggests that an application is a network of component-based services driven by many different requirements. Each of the services has different requirements for its analysis, design, and construction. In order to develop software successfully in this type of environment, a multithreaded development approach is necessary. The analysis, design, and construction of components for each service requires:
Program Management has responsibility for driving toward a functional specification that captures the requirements of the delivered system in terms of the services. System requirements and features should be analyzed from the perspective of each of these categories of service in parallel. Once documented in the functional specification, the Development team will make implementation decisions that package the services as software components. Although some of the clear distinctions between the categories of service may blur in implementation, the skill sets and tools can still be identified as user/desktop focused (user services), enterprise/business focused (business services), and data focused (data services).
Once the services are defined, development on separate components can proceed in parallel in independent feature teams, as described earlier in this chapter. At interim milestones, components are integrated at predefined levels of functionality. This gives the teams valuable feedback and alerts management to any interoperability risks that may surface. Continuing iteratively, the components continue their separate but parallel development until the next integration milestone, and so on.