Software Requirements: Understanding Problem Statements

Fiifi Dawson
5 min readOct 12, 2023

--

Guiding Light in the Software Maze: Navigating the intricate pathways of requirements to build towering successes.

Let’s talk about software projects. When we start one, it’s important to know exactly what we’re trying to build. Think of it like building a puzzle: if you don’t know what the final picture looks like, you’re going to have a hard time putting the pieces together. Like navigating a maze, you need a clear path, lest you find yourself trapped in a labyrinth of confusion. That’s where software requirements come in.

“The beginning is the most important part of the work.” — Plato

Definition

A Software Requirement is a beacon guiding developers through the fog of a project.

It shines light on the problem at hand without dictating the steps to solve it. It tells everyone what the software should do but not how to do it.

Building Block of Good Requirements

  1. Clearness: Be crystal clear. Like when you order a meal, you specify the ingredients or preferences to ensure it’s prepared to your liking.
  2. Consistency: No mixed signals. When driving, you can’t indicate left and turn right.
  3. Completeness: Don’t leave anything out. If you’re planning a road trip, you list everything you need.

“Consistency is the last refuge of the unimaginative.” — Oscar Wilde (In software, let’s be consistent but creative elsewhere!)

Classification of Requirements

From user-friendly requests to geeky tech jargon, requirements don many hats. Some are user-centric, painted in broad strokes. Others, like system-specific requirements, dive deep, targeting the technical gurus. Not to mention functionality and operational guidelines that shape the software’s very essence.

Depending on their nature or the audience they cater to, requirements can be categorized as:

  • User-Centric: Expressed in layman’s terms, these requirements enable non-tech-savvy clients to validate that their vision is accurately captured.
  • System-Specific: Detailed and technical, these are crafted for the technical team to guide the development and testing phases.
  • Functionality Driven (FRs): These paint a picture of the tasks the software will perform.
  • Operational Directives (NFRs): These provide guidelines on how the software should operate in varied conditions. They can be further divided into:
    · Product-oriented (e.g., the app should be mobile-responsive)
    · Performance-focused (e.g., the website should load within 3 seconds)
    · Organizational mandates (e.g., the coding should adhere to specific industry standards)

Decoding Functional Requirements

Akin to envisioning a movie scene, one must place themselves in the shoes of the user. Picture this:

On an online book platform, Jane wishes to save a book to her wishlist. She clicks a heart icon beside the book title. Later, she decides to comment on a book review. She types her thoughts and hits ‘submit’.

Based on the statement above, we can derive the basic functional requirements:

  1. Login Feature: The platform must offer a secure login mechanism for users using a username and password.
  2. Save a Book Feature: Users should have the capability to save books for later reference from the book listings.
  3. Comment Feature: The platform should facilitate users to post comments on books or existing reviews.
  4. Review Feature: Users must be able to write and submit reviews for the books they’ve read.
  5. User Profile & Management: Every user should possess a personal profile to oversee their saved books, comments, and reviews

Identifying Non-Functional Requirements

Non-functional requirements (NFRs) define how well a software system performs its tasks, encompassing aspects like security, usability, and scalability. They are pivotal in ensuring software offers a seamless, efficient user experience beyond just meeting its primary functions.

  1. Understand the Goal: What’s the main purpose of the software or system you’re working on?
  2. Stakeholder Interviews: Have conversations with those involved to learn what they expect in terms of how the system should work and feel.
  3. Analyze Use Cases: Look at different ways the system might be used. What do these scenarios tell you about how it should perform or what it should handle?
  4. Consider System Constraints: Are there any tech limits or specific tools you need to consider that might shape the requirements?
  5. Benchmark Analysis: Look at similar systems or apps. What standards or common features can you identify?
  6. Prioritize Requirements: All requirements aren’t created equal. Figure out which ones are most crucial and focus on those.
  7. Document Clearly: When you list out requirements, make sure they’re easy to understand and can be measured or checked.
  8. Review with Stakeholders: Go back to those key players and make sure what you’ve identified lines up with their expectations.

The Golden Rule Book: SRS

The Software Requirements Specification (SRS) is like a sacred scroll binding both the developer and the client. If ever in doubt, one can always revisit this scroll to find their way.

The SRS acts as a contract between both parties. If a promised feature is missing after the system is up and running, the client can refer to the SRS. Similarly, if the client requests an addition not covered in the original SRS, the service provider can refer to the document for clarification.

Case Study: Let’s Dive In!

Dawson University’s Accommodation App

A thriving institution, Dawson University, embarks on a quest to simplify accommodation bookings. The platform envisioned promises a seamless blend of functionality, ensuring students and property owners alike find what they seek.

Functional Magic:

  1. User Registration: Step into the realm and claim your identity.
  2. Accommodation Browsing: Wander through a gallery of choices.
  3. Search & Filter: Seek, and you shall find filters to guide your quest.
  4. Booking: Claim your space in this vast realm. … And many more!

Non-Functional Spells:

  1. Always Awake: The platform promises near-eternal vigilance, never sleeping on its watch. (Should be up 24/7)
  2. Fortress of Security: Ensuring every treasure (data) is guarded with zeal. … Plus, others that shape the realm’s ethos. (Users’ personal data should be protected.)

In Reflection

Embarking on a software journey without clear requirements is like setting sail without a compass. The horizon might beckon, but the path remains uncertain. Whether it’s the grand design of an Accommodation Booking Platform or a simple task manager, meticulous requirement gathering remains the unsung hero.

“The details are not the details. They make the design.” — Charles Eames

Crafting impeccable software is an art, and every artist needs their muse. In software engineering, that muse is a well-documented requirement.

--

--

Fiifi Dawson

Comp Eng student specializing in AI & robotics. Led tech initiatives with a keen interest in art & music. Embracing the tech-art crossover. #AI #TechArt