Many believe user stories are the same or equal to requirements written in a Specification. User stories have their origin in use cases, with extensions that provide a formulaic and artificial approach to describing system behaviour. A system can't be fully described by use cases, as they only deal with system behaviour initiated by external actors, but many have tried to substitute all activities done in Requirements Engineering with use cases. Use cases were popular in the mid-90s, together with the Unified Modelling Language, but was largely replaced by the scrum model from 2010 and forward. User stories suffer from the same problems as use cases, although one of its extensions allow system components to be modelled as actors – perhaps user stories should have been named actor stories to better describe what they do.
A Requirements Specification deals with many different perspectives that user stories often don't address explicitly or at all:
- Product services. User stories describe product services but that's all they do;
- User characteristics. The level of experience and background real users of the software need to have;
- General constraints and design constraints. This includes hardware constraints;
- External interfaces. The import and export of files and data, user experience (UX), interoperability requirements;
- Security and encryption;
- Evolvability. The software should be upgradeable, data and files from old releases should be able to be imported and converted to new formats;
- System and functional safety. Vital for safety and mission critical systems;
- Legacy and third party technology. Foundations that are hard to rewrite or declare as deprecated in future releases. The legacy is often the backbone of the product, while third party technology can be really hard to upgrade or replace;
- Patents and trademarks. Although the EU doesn't allow software patents since 1978 (Article 52), pre-1978 and outside-EU patents may still exist. The software can also infringe registered or unregistered trademarks. Unregistered trademarks can also be legally protected in some countries;
- Export restrictions. Treaties and international agreements (for example the Wassenaar Arrangement) may prohibit or restrict how technology is exported or accessed.
A Specification provides a context for applicable requirements by specifying them systematically and hierarchically in chapters that contain rationales, examples, references and body text. User stories fail to address these important perspectives.
Scenarios, use cases, and user stories are a contextual modelling of service requirements. They put service requirements in a specific context, it can be viewed as an instantiation of one or several requirements. As with classes and objects in programming, there can be many objects (scenarios) for a single class (the specified requirement). There are many ways to model service requirements: state diagrams, sequence diagrams, tables with natural language, goal modelling and other types of business modelling, are some of the examples that can be used when eliciting and validating requirements with stakeholders. Models are often easier to understand and reason about.
The purpose of a requirements model is different from specified requirements in general. A requirements model is used to explore and better understand elicited requirements. Building a requirements model often results in additional requirements, and may modify, rewrite or relinquish already specified requirements. The model is used as a tool for reasoning and understanding, helping team members to visualise the software before it's built.
Requirements models that are used instead of specified requirements are nothing but fragments that make it much harder to spot inconsistencies, conflicts and gaps in the knowledge. Writing and implementing one user story at a time creates a situation where unspecified user stories bring unnecessary changes and conflicts to past work. The speed that is gained in the beginning is lost when new user stories are added to an increasingly complex solution.
While software requirements can be written without the benefit of requirements models, the opposite is never true without serious problems with the execution of large projects. In Requirements Engineering, models can be discarded after the requirements have been specified, the team decides what to keep. A Requirements Specification is normally a document that is updated between product releases; the document exists as long as the product exists. User stories, on the other hand, are treated as tickets that are deprecated when the product is released, or even when the ticket has been implemented and tested. Teams who have made the decision to only work with user stories have also made sure that future releases will start with a clean sheet.