4.5 SOA Project Roles
The notion of handling exceptions in a manual fashion brings to light the key significance of people involved in SOA projects and the roles they might play. SOA projects involve many familiar project roles: project manager, business analyst, architect, developer, security specialist, and system and database administrator. However, these roles were created for different purposes and might have different inherent meanings based on the organization's viewpoint. To appropriately structure an SOA project, you need to consider that these roles might need to evolve to match the componentization and decomposition of the applications into services. In addition, implementing an SOA might also call for some additional roles.
In the following sections, we explain the functions of roles, and then we discuss roles versus skills in a project, followed by the phases in the project where these roles might apply. We then describe how these roles can be extended under SOA, as well as the new roles that follow. Finally, we examine some of the interactions among the various roles in SOA projects.
4.5.1 The Function of Roles
There is no single, global, standard definition of all IT jobs, not to mention SOA projects. Many jobs require certifications, a defined knowledge base, or cognitive tests; however, these certifications cannot always truly prove a candidate's applied knowledge, skill transfer, and creativity aspects. Because the team size, the workload, the types of work, and the subjects needed to solve IT problems vary greatly across companies, industries, and geographies, flexible teams with some specialist members are necessary. To coordinate such teams, the leaders (the architects and project managers) have to demonstrate the aforementioned capabilities beyond mere subject knowledge.
In this book, we use the notion of roles because doing so brings some order to the chaos. Roles are related to project phases and define an abstraction layer separate from actual job descriptions and assigned human resources. All project team members take on one or more roles.
Roles are a common concept in project management and design methodologies. The role concept establishes a commonly understood vocabulary, which has proven to be a powerful instrument at project-initiation time. A role does not imply that a specific individual person must execute the tasks that are associated with the role; instead, it implies an identity (an individual, a team, an organization, and so on) that fulfills that part of the process.
4.5.2 Roles and Skills
Identifying the roles involved in your project will certainly help, but finding the right people with appropriate skills is crucial. Services typically are technologically lightweight and simple; this is part of their power. With this technology, islands of heterogeneous systems can be more easily opened up for collaboration. However, along with these new possibilities come new sources of errors. SOA projects may be a new kind of project for your organization, but chances are they will not be a simpler kind of project.
An SOA project team setup should reflect these specific issues with the inclusion of appropriate skill levels and talents. We highly recommend a mix of practitioners who have experience with different platforms, different technical problems, and different skill domains. This is especially important for the SOA architect. If such a person is not available to the team, it would be feasible to have additional (part-time) co-architects to fill the gaps.
4.5.3 Project Phases
Development projects have different phases, requiring different skills and collaborations throughout the lifecycle, and SOA projects are no different. Independent of your organization's choice of the individual methodology used (waterfall approach or others), most projects will generally include the following development phases:
- Requirements engineering
- Business domain analysis
- Solution architecture outline
- High- and low-level design
- Analysis and design (today mainly OOAD and DB design)
- Various test phases (such as unit, integration, system, and acceptance tests)
- Going live
Aspects such as service modeling (for example, using a coarse- or fine-grained interface), choice of SOAP engine (IBM WebSphere SOAP, Apache Axis, or Apache SOAP 2.3), and organizing interoperability tests are primarily examples of Web service–specific considerations. The nature of these issues varies. For example, service modeling prerequisites a different skill and mindset than interoperability testing.
4.5.4 Examining and Adapting Roles
The following sections look into a model that shows how existing roles work in SOA development projects. For presentation purposes, we divided the roles in our model into two categories—existing roles and new roles—followed by a discussion on the integration of both categories.
Because SOA projects are just another type of development project, it is not surprising that we find a lot of well-known roles that we can define as a category of existing roles. However, some of the existing roles receive additional SOA-related responsibilities. From our SOA project experiences, we saw the need to establish new roles, which are listed as the new roles section. Please keep in mind that these are general descriptions of roles rather than detailed job descriptions.
4.5.5 A Look at Existing Roles
Let's start with the six roles you may have seen (or participated as) on different technical projects: the project manager, the business analyst, the architect, the developer, the security specialist, and the system and database administrator. Note that this list is certainly nonexclusive, and it is not always applicable to every organization. Therefore, we have limited the list to the most prevalent roles that will later apply to SOA projects.
18.104.22.168 The IT Project Manager
The project manager has the overall management and leadership responsibility for the project team. He or she defines and tracks project plans and determines the work breakdown structure. For an SOA project, certain additional skills and knowledge are needed to best perform this role, as described in Section 22.214.171.124, "The SOA Project Manager."
126.96.36.199 The Business Analyst
The business analyst harvests the functional requirements of business users and provides domain knowledge to the team. He or she must understand the business language and have industry- and domain-specific skills. In an SOA approach, the business analyst should use a component business modeling approach, a technique for modeling an enterprise as disjunctive components in order to identify opportunities for innovation or improvement.
188.8.131.52 The Architect
This is the technical leader of the project. The architect's task is to develop the logical and physical layout (structure) of the overall solution and its components.
184.108.40.206 The Developer
The developer creates and tests the software implementation. In SOA, the role is not significantly different, with the exception of the code written in SOA projects, which is written as services. This turns the developer into a service developer.
220.127.116.11 The Security Specialist
The security specialist is responsible for the definition of security guidelines (policies) and the implementation of security means adhering to these guidelines. The domain for this role is described in Chapter 8, "Securing the SOA Environment."
18.104.22.168 The System and Database Administrator
This role performs the installation and provides ongoing maintenance on the technical infrastructure: the hardware, operating and database systems, and middleware. Certain aspects of information integration under SOA were described in Chapter 3, "Architecture Elements." This role typically falls into the domain of the classic database administrator.
22.214.171.124 The Service Deployer
The service deployer takes the development artifacts and installs them in the target runtime environment, generates stubs and skeletons for the target environment from WSDL and installs them together with the service implementations, and provides JAX-RPC (Java API for XML-based remote procedure calls) mapping and handler configuration through services-specific deployment descriptors.
126.96.36.199 The Service Integration Tester
The service integration tester is responsible for the various standard test stages such as integration, load, and acceptance tests. He or she also defines test cases for services interoperability and conformance tests. This role is aligned to the architect and to the governance bodies, as previously described. It is the quality assurance role.
188.8.131.52 The Toolsmith
The role of toolsmith is responsible for designing and implementing the project-specific scripts, generators, and other utilities needed by various aspects of the SOA. The degree of standardization in the Web services world now makes it possible, for example, to develop custom WSDL-, JAX-RPC-, or JSR-109-aware tools.
184.108.40.206 The Knowledge Transfer Facilitator
This role provides access to subject matter experts and technical instructors who bring in extended knowledge regarding SOA, on-demand, and in most cases, Web services concepts and implementation assets. By relating the use cases created during requirements gathering to the functions of this role, this role can easily be taken by so-called customer-proxies that represent individual service requests within the SOA.
220.127.116.11 The SOA Project Manager
This role is an evolution of the classic project manager. The SOA project manager not only needs to plan for much shorter delivery cycles, but he or she must also establish new acceptance models. The project manager has to work with service providers to establish the appropriate service-level agreements and resource usage. This role becomes more important with increased use of aggregated services (those that are composed of other services).
18.104.22.168 The SOA System Administrator
In this role, in addition to managing and monitoring the platform infrastructure, the system administrator also manages the business and service-level agreements within the SOA.
4.5.6 A Look at New Roles
In addition to the revised roles, there are other roles involved with SOA projects: the SOA architect, the service modeler or designer, the process flow designer, the service developer, the integration specialist, the interoperability tester, the UDDI administrator, the UDDI designer, and finally, the services governor.
22.214.171.124 The SOA Architect
The architect role evolves into an SOA architect, a mediator between business and technology. More than a structural architect, as in the role of a classic software architect, the SOA architect acts more like a city planner, with a higher-level view. This person plays a dynamic business-to-IT adaptation role to transform the ideas and concepts of business operations into terms and concepts available in the IT infrastructure. In this role, the SOA architect is responsible for the end-to-end service requestor and provider design and takes care of inquiring about and stating the non-functional service requirements.
126.96.36.199 The Service Modeler or Designer
A service modeler applies data and function modeling techniques to define the service interface contracts, including the schemas for messages during an exchange. The service modeler works with the SOA architect to create these contracts.
188.8.131.52 The Process Flow Designer
In place of an integration specialist, this role investigates the explicit, declarative, service orchestration (aggregation, composition) possibilities. It concentrates on the technical process flows that support given business processes. It is an optional role in most cases.
184.108.40.206 The Service Developer
The service developer is typically an enterprise developer, expert in programming models such as J2EE and familiar with Web services concepts and XML. The role develops service interfaces and implementations on the provider side and service invocation code on the requestor side of service interactions. The service developer is probably the best-equipped role today. An SOA development environment focuses on providing tool-based support for designing and deploying service-based components.
It is the role of the SOA architect to ensure that the SOA developers are not overemphasizing the use of technology. It often becomes easy to expose any piece of logic as a service but at the cost of ignoring best practices for defining the granularity of these services, thus impacting overall performance and manageability. For example, you can easily turn a useful, simple, calculation function into a service so that it can be called from numerous other services.
A service developer using WS-* and J2EE standards-based tooling might also have some subroles:
- Web Services designer and programmer, with implementation skills in J2EE, C++, or .NET
- Legacy integration and adaptation designer, with services-enabled adaptation skills
220.127.116.11 The Integration Specialist
Integration specialists are mediators and users of both the service modeler's and the process flow designer's work. They typically have a broad-based technical knowledge in the integration field because they will need some understanding of SOA systems, enterprise integration means, business processes, and applications coded in Java or other languages. Tools like WebSphere Business Integration Workbench™ allow the person in this role to compose complex systems of available services.
18.104.22.168 The Interoperability Tester
The interoperability tester verifies that any developed requestor and provider implementations will interoperate seamlessly. Another primary activity is to ensure Web Services Interoperability (WS-I) conformance and industry standard conformance.
22.214.171.124 The UDDI Administrator
The UDDI administrator defines how a generic UDDI data model can be customized and populated with services. This is, in most cases, an optional role. It also depends on whether UDDI is chosen as the standard or there is an alternate proprietary data model in the organization. In this case, there might be another similar role, often part of the IT governance body, that acts as administrator.
126.96.36.199 The UDDI Designer
There might be the need for a UDDI designer who is responsible for planning, designing, and building the UDDI registry where services are published and announced for the various levels of the SOA.
188.8.131.52 The Services Governor
This is an important new role that has the cross-enterprise responsibility, on the SOA governance team, to validate and select the business services most appropriate for the given enterprise and then identify who owns them. This role can be played by either SOA architects or business analysts when working in the SOA governance team.
4.5.7 Integrating Existing and New Roles
These new roles originate from existing ones (for example, SOA architect and service developer). However, we believe that for the new roles, the introduction of new names for these roles is justified. Each of the roles addresses a different aspect of the project as a whole. Earlier we stated that one person typically wears several hats, in other words acts in more than one role. However, a project's risk decreases if different people with broad and diverse skills are on board. There are situations in which only such a purposeful cooperation of different individuals can unveil the crucial issues of the project and lead to a sound solution.
On the other hand, the communication overhead increases with each new team member. There is no single or simple answer to the roles-to-people mapping challenge. There are many different opinions and controversies regarding how it should be approached. As previously mentioned, the assignment of individuals to these various roles depends on the situation, the skills and experiences available, and the scope of the project.
Rather than entering a debate about what is the optimal formation, consider the following scenario: A fictitious company in the insurance industry has decided to build a new set of mid-office business applications for risk and policy management, and the set has to interface with two different backend systems. Both backend systems have been built as J2EE applications: one uses EJBs and the other uses only servlets, JSPs, and JDBC to connect to its customer and contract databases.
During the initial stages of the development project, the roles defined in the example are assigned to team members. In addition to the Web services-specific activities, the standard project tasks and roles are also identified and assigned. To illustrate how a team setup can look, Table 4.1 shows an example of selected new roles, their tasks, prerequisite skills, and supporting tools. Additionally, we list the other roles on the team that collaborate with each selected role.
Because the definition of roles depends on the concrete project situation, assignments to the actual people cannot be prescribed in a standardized way; they have to be defined and assigned per the needs of the situation. Assignments can be used by the project manager in cooperation with the SOA architect to create the work breakdown for the project at hand. Further corporate guidelines, restrictions, and best practices are influencing the final project setup and management.
In addition to the previously mentioned roles at the SOA level, there is a complementary list of roles specific to Web services in the developerWorks article, "Web Services project roles," by Olaf Zimmermann and Frank Mueller (2004).