“Start with the end in mind.” — Stephen Covey
Having worked at Microsoft for several years, I have learned that one of the key ways to ensure successful software development is to start with a clear understanding of user goals, business goals, and system goals.
Too often, people jump right into the details of a project without first creating clarity around the larger goals, leading to failed projects and wasted time and resources.
Goals provide the structure and shape for success, and by focusing on them from the beginning, we can create better software requirements and ultimately deliver more successful projects.
How To Learn Software Requirements Better, Faster, Easier
The most effective way I’ve found to elicit requirements, is to simply ask:
- What are the user goals?
- What are the business goals?
- What are the system goals?
I like to follow on by asking about the boundaries (constraints) for goodness and the tests for success.
User Goals, Business Goals, and System Goals
User goals are the needs, expectations, and preferences of the users or customers that a product or service is intended to serve.
Business goals are the objectives, targets, or outcomes that a business aims to achieve through its products or services. Business goals address business value, getting the job done, compliance, etc.
System goals are the technical requirements or specifications that define the functionality, performance, and constraints of a software system. System goals address things like manageability, maintainability, evolvability, integration … etc.
In all cases of course, there’s flavors of quality attributes, experience, and service levels …etc.
Example of User Goals, Business Goals, and System Goals
Here’s a simple example of user goals, business goals, and system goals…
- To accomplish a specific task or activity
- To have an intuitive and user-friendly experience
- To feel satisfied with the product or service
- To have their needs and desires met
- To generate revenue or profits
- To increase market share or customer base
- To improve brand reputation or customer loyalty
- To comply with regulatory requirements or industry standards
- To be scalable and flexible to accommodate growth and change
- To be secure and reliable to protect user and business data
- To be maintainable and upgradable to support ongoing development and improvements
- To be efficient and performant to meet user and business needs in a timely manner.
How Do User Goals, Business Goals, and System Goals Relate to Use Cases and User Stories?
User goals, business goals, and system goals are the higher-level objectives that drive the development of software applications.
These goals serve as the basis for defining user requirements, system requirements, use cases, and user stories.
Let’s step into this…
- User goals represent the needs and desires of the end-users of the software application. They are typically described in the form of user requirements and user stories, which capture the functionality that the user needs to achieve their goals.
- Business goals represent the objectives of the organization that is developing the software application. They are typically described in the form of business requirements, which capture the business processes that the software needs to support.
- System goals represent the technical objectives of the software application. They are typically described in the form of system requirements, which capture the technical specifications that the software needs to meet in order to achieve its functional and non-functional requirements.
- Use cases and user stories are used to document how the software application will support the user goals and business goals. They provide a detailed description of how the user will interact with the system to achieve their goals and how the system will respond to those interactions. The use cases and user stories also provide a basis for testing and validation of the software application.
Design is How It Works
Understanding the different types of goals – user goals, business goals, and system goals – is crucial to developing effective software requirements. It provides a clear structure and direction for the development process and ensures that the end product meets the needs of the users and the business.
As Steve Jobs famously said, “Design is not just what it looks like and feels like. Design is how it works.”
And to make it work, we need to start with clear goals and requirements.