A vertical slice, sometimes abbreviated to VS, is a type of milestone, benchmark, or deadline, with emphasis on demonstrating progress across all components of a project[better source needed]. It could be considered a project management buzzword[by whom?], and may have originated in the games industry[better source needed].
The term 'vertical slice' refers to a cross-sectional slice through the layers that form the structure of the software code base. It is mostly used in Scrum terminology where the work is planned in terms of features (or stories). For example as a very basic approach, a software project may consist of three layers (or components): Data access layer (bottom), Business logic layer (middle) and User interface Layer (top). In this very common approach, a vertical slice means a bit of every layer. Again as an example, a new feature request like 'showing x information on main screen' would contain these work bits:
- Work in the UI that will display the information
- Work in the business layer to transform the information
- Work in the database layer to store / fetch the information.
So a vertical slice can be defined as 'the sum of the work that has to be done in every layer that is involved in getting a specific feature working'. A vertical slice doesn't necessarily affect every component in the software. For example, if the solution contains a web service, it would live in the same 'floor' as the UI, and a feature like 'supporting login/logout in webservice' that involves only the web service doesn't require a change in the UI, but the business and database access layers.
Vertical User Stories
Practically speaking when writing user stories and/or breaking down epics into user stories you must take into consideration the developers time. If your user story isn't a vertical user story the developer may not be able to complete the story in the committed to timeframe. Either way it makes everyone's life a lot easier to work from vertical user stories. The reason I write here about vertical user stories is because that is where it starts. The Product Owner and/or Product Analyst (BA) must write vertical user stories so that the team can develop and test vertical slices.
Writing Vertical User Stories
Below is an example of a vertical user story. Notice the one action in the user story. Though you will develop many elements in this user story such as forgot password, remember me and the like, the main focus is that the end user must be able to log into the web portal in order to perform the functions of the end users job. Also, keep in mind that though the vertical user story may seem simple it in fact might not be. In this case the wireframe, UX/UI, vertical user story and acceptance criteria enables this vertical user story to be completed with a certain level of high confidence by the team.
As an end user I must be able to login to my company portal so that I can perform the functions of my job.
- Verify that I can log into the system
- Verify that my login credentials will be remembered
- Verify that I can reset my own password by clicking the "Forgot Password" link
- Verify that I cannot navigate back to the landing page without first logging in
Dissected by Layer
As a developer, you will need to think about every file encapsulated in each layer that needs to be created and/or extended in order to complete this “Login User” Story.