Reading:
How a Client Should Structure Requirements

Image

How a Client Should Structure Requirements

In any software development project there comes a decisive moment when the client transfers their vision of the future product to the development team. This is not merely the start of delivery. It is the point at which an idea begins to transform into a working system. At Software Planet Group, we see this moment as strategically important: the way requirements are structured directly affects cost, delivery speed and the quality of the final solution.

Requirements can be described at different levels. Choosing the right level is not a formality. It is a strategic decision. If the description is too abstract, uncertainty increases and estimates become unreliable. If it is too detailed and technical, the professional autonomy of the software development team is restricted. Between these two extremes lies an optimal layer that allows the business and the engineering team to speak the same language.

The first level is conceptual. This is a high level statement of intent, for example: “The user can generate a report.” The direction is clear, but the details are not. What data does the report include? Who has access to it? In which format is it produced? What filters are available? This level is useful for capturing an overall product vision, but it is insufficient for estimating budget or timelines. If a client limits requirements to this level, it signals that the product thinking is still immature. That is acceptable at an early discovery stage, but it becomes risky if a project plan is built on such vague input.

The second level is low level and technical. Here we see descriptions of modules, classes, database choices, API structures, integration patterns and data exchange protocols. In essence, this is architecture design. Sometimes a technically confident client attempts to define these details in advance. Modern tools such as ChatGPT even allow non technical founders to generate architectural diagrams. However, that does not mean this is the right way to structure communication in a professional software development partnership.

When a client hands over a fully defined architecture, they effectively reduce the software development company to an implementation contractor. The engineering team is expected to execute instructions rather than contribute expertise. The space for technical decision making disappears. For a service provider like Software Planet Group, this signals that the client is not seeking architectural insight, but additional hands. Moreover, if the solution later proves suboptimal, responsibility becomes blurred: the architecture was imposed externally, yet the team must maintain it. This is not a healthy long term collaboration model.

Between these two extremes lies the middle level – the behavioural level. This is where user stories and use cases operate. It is more concrete than a high level idea, yet does not descend into code or technical design. For example: “As a Finance Manager, I want to generate a transaction report for a selected period in CSV and PDF format so that I can share it with the accounting department.” This statement contains user context, expected output and business purpose. It gives the software development team enough clarity to ask precise questions, propose alternative solutions and produce a reliable estimate.

At Software Planet Group, we treat user stories not as a formal Agile ritual but as the starting point for professional dialogue. A user story is a headline for a conversation between client and engineers. During that conversation, constraints, edge cases, exceptions and non functional requirements emerge. A shared understanding is formed. Architecture remains the responsibility of the development team, while business logic remains the responsibility of the client. This separation preserves both business control and engineering excellence.

The middle level also provides a strategic advantage when selecting a software development partner. If requirements are structured as a consistent set of user stories, they can be shared with multiple software development companies to obtain comparable estimates. Each company evaluates the same expected system behaviour. If requirements are too abstract, every vendor interprets them differently. If they are overly technical, estimates will depend on attitudes towards the proposed architecture and willingness to follow an externally imposed design.

Consider, for example, a personal employee calendar within an ERP system used for planning tasks, meetings and reminders.

At the behavioural level, the requirements might be structured as follows.

The user can view the calendar by day, week and month. In each view mode, all accessible events are displayed with start and end time, event title and status. The user can switch between views and navigate to a selected date.

The user can create a new event. When creating an event, they specify title, start date and time, end date and time, description and optionally configure a reminder before the event begins. The system validates the input data, including verifying that the end time is greater than the start time, and then saves the event.

The user can edit an existing event if they have appropriate permissions. They can modify date, time, title, description and reminder settings. After saving, the system updates the event and reflects the changes in all calendar views.

The user can delete an event. Before deletion, the system requests confirmation. After confirmation, the event is removed and no longer displayed.

Beyond basic operations, a calendar module within ERP software development typically requires additional functionality.

The user can create recurring events. They can select recurrence type – daily, weekly, monthly or custom – and define an end date for recurrence. The system automatically generates the corresponding instances.

The user can configure reminders. Reminders may appear within the system and, if configured, be sent via email or internal ERP notifications.

The user can search events by title and filter the calendar by event type, status or period. Search results may appear as a list or as highlighted entries within the calendar grid.

The user can view availability for a selected period. When creating or editing an event, the system detects time overlaps and warns about conflicts.

The user can manage access rights to events, depending on role. For example, an event may be private or visible to a defined group of employees.

The user can export events for a selected period to a standard file format such as CSV or iCal for integration with external tools.

Notice what is deliberately absent from this description. There is no mention of database selection, event model structure, indexing strategies or the internal implementation of recurring logic. Yet the requirements are sufficiently detailed for a professional software development team to ask clarifying questions, assess complexity and propose a robust architectural solution.

This is what the middle level of requirements looks like. The client defines expected system behaviour and business value. The software development company takes responsibility for technical design and implementation. In custom software development, this boundary is essential.

The client’s task is not to write code or design internal system structures. Their task is to articulate clearly what behaviour they expect and what value the system must deliver. High level ideas provide direction. Low level decisions emerge through engineering design. But the transfer of requirements should occur at the level where meaningful professional dialogue is possible.

It is precisely at this level that genuine partnership in software development begins.

Related Stories

Running a Great Retrospective
January 19, 2018

Running a Great Retrospective

All too often in life, one simple mistake can lead to a stream of errors that if not stifled early enough, is bound to result in a flood of frustration.

Diagnosing and Dealing with Problems of Productivity
February 14, 2018

Diagnosing and Dealing with Problems of Productivity

So your software development team has had a bit more than a hiccup. Productivity has stalled and frustration is increasing by the day.

How to Create a Vibrant Company Culture
October 26, 2017

How to Create a Vibrant Company Culture

Within any organisation, corporate culture is widely regarded as one of the most important guarantors of success.