21.01.2022 Views

Sommerville-Software-Engineering-10ed

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

546 Chapter 18 ■ Service-oriented software engineering

SetupComputation

Request

processor

Store

results

OK

No processor

Set up job

parameters

Report

completion

Download

data

Restart

Fail

OK

Start

computation

VectorProcService

Check

Availability

Return

results

Allocate

resources

Initialize

Compute

Figure 18.16 Interacting

workflows

Carry out the computation

Return the results to the client service

In BPMN terms, the workflow for each organization is represented in a separate

pool. It is shown graphically by enclosing the workflow for each participant in the

process in a rectangle, with the name written vertically on the left edge. The workflows

in each pool are coordinated by exchanging messages. In situations where

different parts of an organization are involved in a workflow, pools are divided into

named “lanes.” Each lane shows the activities in that part of the organization.

Once a business process model has been designed, it has to be refined depending

on the services that have been discovered. As I suggested in the discussion of Figure

18.14, the model may go through a number of iterations until a design that allows the

maximum possible reuse of available services has been created.

Once the final design is available, you can then develop the final service-oriented

system. This involves implementing services that are not available for reuse and converting

the workflow model into an executable program. As services are implementation-language

independent, new services can be written in any language. The workflow

model may be automatically processed to create an executable WS-BPEL model if

SOAP-based services are used. Alternatively, if RESTful services are used, the workflow

may be manually programmed, with the model acting as a program specification.

18.4.2 Testing service compositions

Testing is important in all system development processes as it demonstrates that a

system meets its functional and non-functional requirements and detects defects that

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!