Slicing by Input Parameter (Datatypes)
In most cases a business process or whatever function that the new feature is intended to automate requires some data to perform its actions. For the sake of this discussion we will refer to this data as Input Parameters. Data of different types in most cases will need to be processed differently. For example a search for a customer's last name would most likely require a String Comparison against the LastName field in a database while a search for a customer by their Customer ID would require an Integer Comparison against the CustomerID field in a database. Some User Stories can be split based on the datatypes they return or the parameters they are supposed to handle.
Take, for example, a search function for a standard ecommerce website:
As Customer, I want to search through available products so I can view their details and order them;
Since there are potentially many different ways a customer might want to search for a product that they need or have previously ordered, each one of these search methods could be considered as a unique User Story:
As a Customer, I want to search for a product by the order date, so that I can find products that I have ordered before;
As Customer, I want to search for a product by its Product Id, so that I can find a product that I am familiar with;
As Customer, I want to search for products within a Price Range, so that the search results are relevant;
As Customer, I want to search for products by Color, so that the search results are more relevant;
As Customer, I want to search for products by Category, so that the search results are more relevant;
As we begin to think on a more granular level about the search function we can more clearly understand the kinds of search criteria the customer might be used. This allows us to more accurately implement the customers desired functionality, but it also allows a Product Owner to make decisions about priority within the feature and not just at the story level. For example, with just a few products in a new ecommerce web application paging 10 products at a time may not be necessary. Or maybe some of the search functionality can be implemented in a simplified manner for the time being. Another example is breaking down the User Story based on how the returned data is displayed. Perhaps our ultimate goal is to have sales results and product ratings displayed as beautiful 3D charts and animated graphics dynamically produced based on real-time sales data. But for the first release the sales manager will simply import the sales data into excel and manually export 3D charts and graphs from excel on a weekly basis.
Slicing User Stories – Method 4 ***** Slicing User Stories – Method 6