Reducing Development Scoping Costs by Prototyping with Service Virtualization
By Chris Colosimo
April 17, 2017
3 min read
A common development challenge is accurately scoping the amount of effort required when creating new applications. This can occur when an application’s requirements are first being designed, or even before. Since one of the most frequently-overlooked capabilities of service virtualization is the ability to rapidly prototype and test the impact of new services directly from initial user stories, I’m going to address that today.
“There is no such thing as scope creep, only scope gallop.”
– Cornelius Fitchner
At the very beginning of an application’s lifecycle, there comes a time when the team meets to discuss what the code should do. Often, there are many questions surrounding the feasibility of a new application, and the burden falls on the developer to indicate whether something is possible and to scope the level of effort required.
When dealing with new technology or a completely new idea, this can be very difficult or nearly impossible. The developer must pull some (hopefully accurate) level of effort out of thin air. The way service virtualization can help here is by giving anyone the ability to rapidly develop a prototype of the service without even so much as a service contract. Essentially, the developer can build the service from the ground up to simply answer the “what if” question.
Leveraging service virtualization, the developer can accomplish this by modeling. With Parasoft Virtualize, developers can choose what type of protocol to deploy their service on, and essentially begin with a functional blank canvas. In actual development, developers must build a framework, which requires many lines of code to even start functioning in the desired way. In contrast, service virtualization allows anyone to rapidly prototype expected application behavior without code, building up small slices of functional behavior as required.
For example, you can create a service by adding elements into the response and then optionally add in additional data to respond with. Then, you can add logic where certain types of requests will receive specific responses from the service, and extend this to produce the desired application behavior. Usually in a matter of minutes, users can create a service that presents the necessary functionality that the actual application will have, and assess the value and environment impact instantly. This saves a tremendous amount of time and, in Parasoft Virtualize, requires no scripting.
This capability greatly expands a development team’s capacity to deliver technical requirements and accurately scope the level of effort on time, especially important for agile teams because there is inherent productivity debt incurred between the product owner and the scrum team. The scrum team needs to deliver an appropriate number of story points that they can commit to based on their capacity. The product owner needs to convey their vision for the desired functionality. The team will then begin to scope the level of effort required to deliver on their understanding of the expectations. But what if the functionality delivered by the team does not match the vision of the customer? They have to start the process over again. Prototyping the application’s functionality ahead of time allows them to reduce the number of cycles required to get it right.
For instance, when tasked with creating an API that will return a user’s information, by using prototyping in simulation, the developer can quickly decide what they want their response schema to look like when they start integrating with the API. If they were to notice this was presenting development challenges downstream, and it became necessary to change the order of the elements, they wouldn’t have to re-write code to do so. They could simply move the elements by dragging them into the correct order and re-deploy the virtual service themselves.
Additionally, developers could assess the performance impact this new service will introduce to the environment by setting realistic performance profiles in the virtual service.
By prototyping a service, development teams are able to provide realistic information back to the stakeholders quickly and continuously, by indicating areas where the application is going to introduce complexity before even writing a single line of code. They are also paving the way for testing teams to begin designing tests against the service before it even exists.
In the video below, I’ll show you how to prototype a new service from the ground up and manipulate the response logic in a few easy steps.