|
Let's say you have an application and you are exposing it (or any of its parts) as a web service. Should such an activity be treated as requirement or should it be considered an architectural decision? Answering this question is important as it impacts how requirements are identified and how the application is tested. If exposing the application as a web service is a requirement, it should be captured somewhere, web service client must be identified as a user, interoperability requirement must be identified and documented and test cases must be written from web services perspective. On the other hand, if exposing the application as a web services is an architectural decision, only SAD (Software Architecture Document) and design documents need to mention it. Use cases, test scripts and even the supplementary specifications could be web services agnostic. So, a natural question is, when to treat exposing web services as a requirement? Treat web services as a requirement when - There is a business driver to expose the system as a web service. For example, a system may expose a web service that calculates the distance between two zip codes and/or provides a list of zip codes given the center zip code and the radius. There may be a business reason (generate revenue) to make this web service available to retailers wanting to implement store locator functionality in their own environments
- Web services are to be provided to or consumed from the business partners. For example, an airline reservation system may have to invoke web services to reserve hotel and car to provide its users with a streamlined reservation experience. Since the web service invocation happens between separate businesses (typically governed by contracts), it should be treated as a business requirement
- Web service client is a system user. In other words, when web service is provided or consumed at the system boundary, it should be treated as a requirement. For example, a stock quote service may have a browser based user interface (client within the system boundary) BUT it may also have to be exposed as a web service (client outside the system boundary). In this case, there are two different types of users using the system: browser user and web service client. Since the system user the outside
As mentioned above, when exposing web service is a business requirement, it impacts the way requirements are identified, documented and tested. I will talk more about this in a future blog. EDIT on December 15, 2006: Corrected some spelling and grammar mistakes
|