The site that you are currently viewing is a static version of the Software Factory documentation delivered with the

version v7.2.
For up-to-date documentation, see the latest version.

Clearly define the functional needs

Objectives

Limit over-development and overconsumption of digital resources

The Standish Group’s CHAOS Report often cites that 45 to 64% of software features are rarely or never used. The development of these unused features (code, images, scripts, server resources…) leads to excessive resource mobilization, generating energy consumption for their design, storage, data transfer and execution, both on the client and server side.

Optimize user experience

A poorly thought-out user experience can encourage resource overconsumption (usage time, unnecessary requests, superfluous processing), thus increasing the overall environmental footprint of digital services.

Implementation

Ecodesign begins in the requirements analysis phase. To minimize resource consumption while optimizing the user experience, it is essential to define functional needs clearly before starting development. The goal is to design only the necessary functions and optimize their implementation to ensure a smooth and efficient user journey. This involves carefully analysing essential and non-essential features.

1. Incremental approach

An incremental approach with the client helps address this.
Example: When a client requests a comprehensive reporting dashboard, an incremental approach might start with: “Let’s implement the top 3 reports you need this quarter, validate they meet your needs, then expand based on actual usage patterns.”

Multiple methods can be used to support this approach like developing a Minimum Viable Product or using prototyping tools.

  • A Minimum Viable Product (MVP) is a simplified version of the product that includes only the core functionalities required to meet the main needs of users. The MVP is designed to be launched quickly, with minimal effort and cost, to validate assumptions, test features, and gather user feedback before proceeding with a more comprehensive development.

  • Prototyping is an excellent way to test and validate needs before committing to heavy development. Prototyping tools allow the creation of functional prototypes that simulate the user experience. These tools enable the quick design of interactive mockups, helping refine product requirements, identify truly necessary features, and validate the user journey’s usability before development begins. Prototyping helps explore different solutions and iterate quickly on needs, all while minimizing resource waste.

    Example of tools:

    • Figma
      • Context of use: For high-fidelity prototypes requiring design system integration (Quantum Thales Design System).
      • License: A license is not necessary to create an MVP but is necessary to work collaboratively.
      • To learn more about MVP on Figma: What is a Minimum Viable Product (MVP)? | Figma
    • Penpot
      • Context of use: For open-source projects or early-stage concept validation.
      • License: It’s an open-source tool.
    • [!WARNING] Warning : Be careful to data sensitivity when using online tools.

2. Priorization methods

Once the functional needs are identified, it’s crucial to determine which features to prioritize. Several prioritization methods can be used for this.

  • The MOSCOW method (Must have, Should have, Could have, Won’t have) is a technique for classifying requirements to define the priority of features:

    • Must have (M): Essential elements that the product cannot function without.
      Example: Secure authentication.

    • Should have (S): Important but not critical features. Their absence may impact the user experience but won’t undermine the product’s viability.
      Example: Exporting data to PDF.

    • Could have (C): Desirable features that are not essential. They can be implemented after higher-priority features if time and resources allow.
      Example: Customizing the interface theme.

    • Won’t have (W): Features not included in the current version but potentially considered for future versions.
      Example: Integrating a chatbot.

    To learn more about MOSCOW: What is MoSCoW Prioritization? | Overview of the MoSCoW Method

  • The YAGNI method (You Aren’t Gonna Need It) is based on a fundamental principle of agile software development, which states that a feature should not be implemented unless it is absolutely necessary. This approach encourages developing only what is strictly essential, avoiding unnecessary features, and maintaining simple and maintainable code.

    Example: if an application might eventually support multiple currencies in the future, but this need is not immediately expressed, the YAGNI method advises against implementing a complex multi-currency system at the start.

    To learn more about YAGNI method: YAGNI (“You Aren’t Gonna Need It,”): helps software engineers build with clarity, not clutter | by Saurabh Gupta | Medium

#1 Fight against over-engineering

#5 Be smart rather than big

1.2 – Has the digital service defined its target users, the target users’ actual job-related needs and expectations?