There are classic techniques to gathering software requirements. In recents years new techniques has been created, which are the most relevant for you?
There are several techniques for gathering software requirements. Some of the most current ones include:
One of the techniques that I find very useful and frequently use in requirements engineering is rapid prototyping. The technique involves the creation of functional software prototypes as early as possible in the development process to obtain feedback from users and stakeholders, and validate the requirements. Rapid prototyping can help to quickly identify and validate requirements, and facilitate communication between stakeholders and the development team. It is also an effective way to reduce the risk of developing software that does not meet user needs and detect usability and human-computer interaction issues early in the development process.
It is important to note that rapid prototypes can be of high or low fidelity, depending on the level of detail and complexity that needs to be validated. Low-fidelity prototypes focus on the general functionality of the software, while high-fidelity prototypes have a higher level of detail and focus on the appearance and interaction of the user. Rapid prototyping is a valuable technique for identifying and validating requirements, as recommended by the International Requirements Engineering Board (IREB).
Some of the most relevant modern requirements gathering techniques are: • Agile methods: Agile methods like user stories, backlogs, sprint planning, etc. These iterative approaches are well suited for today's fast-paced software development. • Prototyping: Building prototypes and wireframes to visually capture requirements. This helps stakeholders better understand and provide feedback on requirements. • Crowdsourcing: Using crowdsourcing platforms to gather input from a large, diverse group of people. This can help generate innovative ideas and requirements. • Data mining: Analyzing data from websites, mobile apps, software usage, etc. This can reveal underlying needs and uncover new requirements opportunities. • Journey mapping: Mapping the step-by-step experiences of users. This helps provide a holistic view of requirements to build a seamless user experience. • Video use cases: Recording videos showing how users would interact with the proposed software. This brings requirements to life in an interactive, visual way. • 3D modeling: Building 3D models or virtual reality experiences to simulate the software usage environment. This immersive approach leads to a deeper understanding of requirements.
Requirement elicitation techniques provide the best results given the project at hand and appropriate stakeholders. There are a variety of requirement elicitation techniques, here are some of the most popular methods.
Brainstorming – Designed to: Uncover new, innovative ideas and solutions. How to: Assemble a mix of key stakeholders for an open conversation on innovative ideas and solutions. As facilitator, the business analyst ensures that the conversation stays on topic and records ideas discussed. Interviews – Designed to: Obtain a stakeholder’s one-on-one insight on the business need or viability of given solutions. How to: Create questions that will allow to be open about the issues on the table. Questions can be shared in advance or be conducted as a conversation. The interviewer should take notes and share them to ensure he or she correctly understood the point of view. Observation – Designed to: Provide a direct view of how a stakeholder performs a particular process. How to: Observation can be conducted passively—the facilitator watches the stakeholder work without interrupting—or actively—the facilitator asks questions about the work as it is being performed. In both cases, the facilitator should take notes and get feedback from the stakeholder on the information collected. Prototyping – Designed to: Collect feedback from non-technical stakeholders by showing them an example with which they can physically interact. How to: At first prototyping can be executed via storyboard, interactive screen, virtual mock-up, navigation flow, etc. The exact method depends on the project, but it is usually an iterative process that is improved based on input. As more requirements come forward, more detailed prototypes are created to ensure they meet the expectations as recorded. Requirements workshops – Designed to: Get the stakeholders together in a structured, time-based setting to elicit, refine, and edit requirements. Stakeholders can discuss and provide immediate input on identified business needs. How to: Set a specific timeframe and agenda for the workshop. Include brainstorming, focus group, and prototyping (if applicable) opportunities within the schedule. Use these to guide the discussion and record input. Surveys – Designed to: Obtain objective feedback from large groups of customers or end-users. How to: Choose participants wisely based on desired criteria. Create clear questions that do not lead the respondents. Questions can have a number of finite choices or be open-ended—for best results consider the goal of the question, as well as the number of respondents, to determine the best structure for proper analysis. As is often the case, a variety of requirements elicitation methods can be employed to unearth the business needs of a project. For example, a business analyst may ask specific requirements questions in a focus group, in a brainstorming session, or during observation. A business analyst may also conduct surveys before a requirements workshop, or create a prototype to be used during
Las técnicas desarrolladas para la elicitación y toma precisa de requisitos del software tienen la finalidad de mejorar la manera en la cual se establecen los requisitos a la hora de crear soluciones informáticas, ya que es posible concretar lo que el cliente en realidad necesita y lo que el desarrollador tiene la capacidad de hacer. Durante la elicitación de requisitos de software, han surgido varias técnicas y enfoques a lo largo de los años, algunas de estas técnicas más utilizadas son:
Entrevistas esta es una técnica comúnmente utilizada para obtener información directamente de los interesados y usuarios del sistema. El objetivo es obtener información detallada sobre las necesidades y expectativas de los usuarios.
Los talleres son sesiones de trabajo colaborativo en las que los miembros del equipo de desarrollo y los interesados se reúnen para discutir y generar requisitos.
La observación directa de los usuarios mientras realiza sus tareas puede proporcionar información valiosa sobre cómo se utiliza actualmente el sistema y qué mejoras podrían ser necesarias. Esta técnica puede realizarse mediante la observación en persona o el análisis de grabaciones de video.
Crear prototipos rápidos y tangibles del sistema puede ayudar a los usuarios a visualizar y comprender mejor las funcionalidades y características que se esperan. Estos prototipos se pueden utilizar como punto de partida para obtener comentarios y refinar los requisitos.
Técnica de Análisis de documentos, esta técnica implica revisar y analizar documentos existentes, como manuales de usuario, informes y políticas empresariales, para identificar requisitos y entender el contexto en el que se desarrollará el sistema.
Yes, there are several classic techniques for gathering software requirements, such as interviews, questionnaires, focus groups, prototypes, use cases, among others. However, in recent years, new techniques have been developed to improve software requirements elicitation.Some of the most relevant techniques for me are: Design thinking: This technique focuses on understanding the needs of the user through empathy, observation and experimentation. Design thinking helps stakeholders focus on what really matters to the end user. User stories: This technique focuses on the creation of user stories that describe the needs and desires of the end user. User stories are created in collaboration with end users and the development team to ensure that user needs are properly understood. Business Process Modeling: This technique focuses on understanding and improving the organization's business processes. Business process modeling helps identify the software requirements needed to automate and improve business processes. Data analysis: This technique focuses on data analysis to understand user needs and improve decision making. Data mining, sentiment analysis, and other data analysis techniques can be used to understand user needs. Rapid Prototyping: This technique focuses on rapid prototyping to gain feedback and validate ideas. Prototypes are created in collaboration with end users and the development team to ensure that user needs are properly understood. Use Case Modeling: This technique focuses on creating use case models that describe how the end user interacts with the software. Use case models are created in collaboration with end users and the development team to understand how the software should work.
Entre las técnicas más actuales están:
Desarrollo Conjunto de Aplicaciones ( JAD ): Es una técnica que se utiliza para promover la cooperación y el trabajo en equipo entre usuarios y analistas. Consiste en realizar sesiones en las que participan usuarios expertos del dominio junto a analistas de software. La idea es aprovechar la dinámica de grupos aplicando un proceso de trabajo sistemático y organizado, apoyado por elementos visuales de comunicación y comprensión de soluciones.
Desarrollo rápido de Prototipos: Los prototipos suelen consistir en versiones reducidas, demos o conjuntos de pantallas (que no son totalmente operativos) de la aplicación pedida. Esta técnica es particularmente útil cuando:
- El área de la aplicación no está bien definida (posiblemente por ser algo muy novedoso).
- El costo del rechazo de la aplicación por los usuarios es muy alto.
- Es necesario evaluar previamente el impacto del sistema en los usuarios y en la organización.
ETHICS ( Implementación Efectiva de Sistemas Informáticos desde los puntos de vista Humano y Técnico): Constituye un método bastante evolucionado para fomentar la participación de los usuarios en los proyectos. Coordina la perspectiva social de los sistemas con su implementación técnica. Un sistema no tiene éxito si no se ajusta a los factores sociales y organizacionales que rigen a la empresa. Se busca la satisfacción de los empleados en el trabajo a través de estudios integrales. Los requisitos técnicos del sistema serán los necesarios para mejorar la situación de los empleados (y, por lo tanto, su productividad) en función de dichos análisis.
Pero no se deben olvidar otras técnicas muy utilizadas como son las entrevistas, las tormentas de ideas, los cuestionarios, los puntos de vistas, los escenarios(casos de uso, historias de usuario), estudio de la documentación. Es recomendable combinar las técnicas para la educción de requisitos completos
Some of the latest techniques for gathering software requirements are:
1. Design Thinking: This technique focuses on a deep understanding of the user and their needs. It is based on collaboration and creative thinking to design solutions that meet the users' needs. It can be used to gather and validate requirements in all stages of the software lifecycle.
2. User Story Mapping: This is a visual technique that allows development teams to understand how users interact with the software. A map is created that shows user activities and the software functionalities necessary to support those activities. This technique helps development teams prioritize requirements and identify opportunities for improvement.
3. Event Storming: This technique focuses on a deep understanding of business processes and user interactions with the software. It is a visual modeling technique that uses post-its to represent events, actions, and entities. It is used to identify and validate requirements and to identify opportunities for improvement in business processes.
4. Machine Learning: This technique uses algorithms to analyze large datasets and identify patterns and trends. It can be used to analyze user data and identify behavior patterns that can be used to identify software requirements.
One of the modern techniques that i frequently use is collaborative brainstorming sessions, especially in agile development, since it allows the identification of a large number of possible requirements (functional and non-functional) in a short period of time and from various points of view (the more stakeholders participate, the better). A negative point is that it requires the coordination of the time of the involved people and sometimes the quality of these sessions depends on the experience of these involved people.
The current techniques for gathering software requirements include interviews, surveys and questionnaires, brainstorming sessions, use case analysis, prototyping, joint application design, and Agile/Scrum methodology. The selection of the technique depends on factors such as project complexity, number of stakeholders, and available resources. These techniques are intended to ensure that requirements gathering is done effectively, efficiently, and accurately in order to produce software that best meets the needs and expectations of end-users.
Hay varias técnicas disponibles para la obtención, sin embargo, las técnicas comúnmente utilizadas las dejo a continuación:
Existen varias técnicas actuales para recopilar requisitos de software, algunas de las cuales se describen a continuación:
Entrevistas: son una técnica común y efectiva para recopilar requisitos de software. Se pueden realizar entrevistas individuales o en grupo con los interesados clave para obtener información sobre sus necesidades y requisitos.
Cuestionarios: pueden utilizar para obtener información de un gran número de interesados. Los cuestionarios pueden ser estructurados o no estructurados y se pueden enviar en línea o en papel.
Talleres: involucran a un grupo de interesados clave para discutir y definir los requisitos. Los talleres pueden ser útiles para obtener una comprensión más profunda del problema y para fomentar la colaboración y la comunicación entre los interesados.
Observación: implica la observación directa de los usuarios mientras realizan sus tareas. La observación puede ayudar a identificar problemas y necesidades del usuario que pueden no ser evidentes a través de entrevistas o cuestionarios.
Prototipado: permite al eductor contar con un objeto de análisis y así recuperar la información de requisitos adecuadamente.
Análisis de documentos: implica el análisis de documentos existentes, como manuales de usuario, especificaciones de requisitos y otros documentos relacionados con el proyecto.
Mesas de trabajo (Workshops): Es una técnica efectiva para obtener información rápidamente de varias personas. Se pueden combinar con otras técnicas como pueden ser las entrevistas y cuestionarios
Tormenta de ideas: Es una sesión de trabajo estructurada orientada para obtener la mayor cantidad de ideas posibles. En una primera fase, se deben identificar la mayor cantidad de ideas, para luego evaluarlas. Todas las ideas deben ser consideradas y deben limitarse que una idea se le ahogue o critique antes de tener tiempo de desarrollarla.
Some techniques for gathering software requirements are:
Entre las técnicas de educción de requisitos más conocidas están: las entrevistas, las encuestas, la observación y el análisis de documentos.
· Entrevistas: Implican discutir con los usuarios y las partes interesadas para entender sus necesidades y expectativas del sistema. Las entrevistas pueden ser estructuradas o no estructuradas y pueden ser realizadas en persona o por medios virtuales.
· Encuestas: Esta técnica implica enviar cuestionarios a los usuarios y las partes interesadas para obtener información sobre el sistema. Pueden ser útiles para obtener información de grandes grupos de usuarios y partes interesadas.
· Observación: La observación es una técnica que implica observar a los usuarios mientras utilizan el sistema o realizan tareas relacionadas con el sistema. La observación permite a los analistas de requisitos comprender mejor cómo se utiliza el sistema y qué características son importantes para los usuarios.
· Análisis de documentos: implica el análisis de documentos existentes, como manuales de usuario, especificaciones de requisitos y otros documentos relacionados con el proyecto.
Actualmente además de las anteriores, se han vuelto populares las siguientes técnicas.
· Design thinking: esta técnica se centra en el usuario y se enfoca en comprender las necesidades y deseos del usuario final del software. Se trata de un proceso iterativo que fomenta la creatividad y la innovación en el diseño y desarrollo del software.
· Historias de usuario: Las historias de usuario son una técnica popular en el desarrollo ágil de software que se utiliza para describir los requisitos del sistema desde la perspectiva del usuario final. Las historias de usuario suelen incluir una descripción del usuario, la tarea que debe realizar y el resultado deseado.
· Prototipado rápido: esta técnica consiste en construir rápidamente prototipos del software para obtener retroalimentación temprana de los usuarios y stakeholders. El prototipado rápido puede ayudar a identificar los requisitos del software de manera más eficiente y a asegurar que el software cumpla con las expectativas de los usuarios.
Cada técnica tiene sus propias fortalezas y debilidades, y la elección de la técnica adecuada dependerá de los requisitos específicos del proyecto y de las necesidades de los usuarios y stakeholders involucrados.
Effective software requirements gathering is fundamental to project success. There are various current techniques for gathering software requirements that can be used individually or in combination to achieve a complete and accurate understanding of project requirements. Some of the most current techniques include stakeholder interviews, online surveys, focus groups, rapid prototyping, use case analysis, data analysis, and business process modeling. Each technique has its own advantages and disadvantages, and the choice of the appropriate technique will depend on the specific project and stakeholder needs. It is important to select and apply the techniques appropriately to ensure effective and accurate requirements gathering, which in turn will contribute to the quality of the resulting software and project success.
There are several current techniques for gathering software requirements that software teams commonly use. Overall, the best technique for gathering software requirements depends on the project's specific needs and the stakeholders involved. Many software teams use a combination of techniques to gather more comprehensive requirements, and regular communication with stakeholders throughout the development process is critical to ensure that requirements are met. Some of these techniques include the interviews, surveys, focus groups, user stories, use cases, prototyping, observation, etc.
One-on-one or group interviews with stakeholders can be an effective way to gather requirements. Interviews can provide valuable information about stakeholders' needs, wants, and expectations. On the other hand, the surveys can be used to gather data and feedback from a large group of stakeholders. These are often used when it is not practical to conduct interviews with each individual stakeholder. Similar to these is the observation, stakeholders as they work can provide valuable information about how they interact with the system and what features are most important to them.
In case of the focus groups, these bring together a group of stakeholders to discuss and share their opinions and ideas. They can be useful in identifying common themes and issues among stakeholders. On the other hand, a user story is a brief statement that describes a specific task that a user needs to perform. They are often used in agile software development methodologies to capture requirements from the user's perspective.
Last but not least important, there are the design of use cases, witch describe how a user interacts with the system to accomplish a specific task. These can be useful in identifying the different scenarios that a system must be able to handle, and these are as important as the prototype, witch is a working model of the software system that can be used to gather requirements by allowing stakeholders to interact with the system and provide feedback.
Existen varias técnicas modernas para la educción de requisitos que, junto a las técnicas ¨clásicas ¨ pueden ayudar a los equipos a comprender mejor las necesidades de los usuarios, colaborar de manera efectiva y adaptarse rápidamente a los requisitos y prioridades cambiantes. Entre ellas se destacan:
1. Desing Thinking: es un enfoque centrado en el usuario para resolver problemas que enfatiza la empatía, la creatividad y la experimentación. Implica comprender las necesidades y objetivos de los usuarios, generar múltiples ideas y soluciones y probar para recopilar comentarios y refinar los requisitos.
2. Prototipado: es una práctica que implica crear versiones tempranas y simplificadas de un producto o sistema, con la finalidad de evaluar su funcionalidad, usabilidad y eficiencia antes de la implementación final.
3. Mapeo de historias de usuario: Esta técnica implica crear un mapa visual de historias de usuario, que son descripciones breves e informales de características o requisitos desde la perspectiva del usuario final.
4. Arqueología de sistemas: análisis de sistemas de la competencia.
5. Reutilización de requisitos.
6. Mapas de roles y perfilado de usuarios.
Cada técnica tiene sus propias fortalezas y debilidades, y la elección de la técnica más adecuada dependerá de muchos factores, como el tipo de proyecto, el contexto, los objetivos y las necesidades de los interesados.
La obtencion de requisitos se trata de obtener información de las partes interesadas. En otras palabras, una vez que el análisis empresarial se ha comunicado con las partes interesadas para comprender sus requisitos, se puede describir como elicitación. También se puede describir como una recopilación de requisitos. La obtención de requisitos se puede realizar comunicándose directamente con las partes interesadas o realizando algunas investigaciones o experimentos. Las actividades pueden ser planificadas, no planificadas o ambas. Existen varias técnicas utilizadas para la obtención de requisitos de software, aquí te menciono algunas de las más comunes:
- Lluvia de ideas: Esta técnica se utiliza para generar nuevas ideas y encontrar una solución para un problema específico. Los miembros incluidos para la lluvia de ideas pueden ser expertos en el dominio, expertos en la materia. Múltiples ideas e información le brindan un depósito de conocimientos y puede elegir entre diferentes ideas.Esta sesión generalmente se lleva a cabo alrededor de la mesa de discusión. Todos los participantes deben tener la misma cantidad de tiempo para expresar sus ideas. La técnica de lluvia de ideas se utiliza para responder las siguientes preguntas:
-Entrevista: Ésta es la técnica más común utilizada para la obtención de requisitos. Se deben utilizar técnicas de entrevista para construir relaciones sólidas entre los analistas comerciales y las partes interesadas. En esta técnica, el entrevistador dirige la pregunta a las partes interesadas para obtener información. La entrevista uno a uno es la técnica más utilizada.
Si el entrevistador tiene un conjunto predefinido de preguntas, se llama una entrevista estructurada.
Si el entrevistador no tiene ningún formato en particular o ninguna pregunta específica, entonces se llama entrevista no estructurada .
Para una entrevista eficaz, puede considerar la técnica de los 5 por qué. Cuando obtenga una respuesta a todos sus porqués, habrá terminado con su proceso de entrevista. Las preguntas abiertas se utilizan para proporcionar información detallada. En este entrevistado no puede decir solo Sí o No.
- Análisis / revisión de documentos: Esta técnica se utiliza para recopilar información empresarial mediante la revisión / examen de los materiales disponibles que describen el entorno empresarial. Este análisis es útil para validar la implementación de las soluciones actuales y también es útil para comprender las necesidades comerciales. El análisis de documentos incluye la revisión de planes de negocios, documentos técnicos, informes de problemas, documentos de requisitos existentes, etc. Esto es útil cuando el plan es actualizar un sistema existente. Esta técnica es útil para proyectos de migración. Esta técnica es importante para identificar las brechas en el sistema, es decir, para comparar el proceso AS-IS con el proceso TO-BE. Este análisis también ayuda cuando la persona que ha preparado la documentación existente ya no está presente en el sistema.
- Análisis de interfaz: El análisis de interfaz se utiliza para revisar el sistema, las personas y los procesos. Este análisis se utiliza para identificar cómo se intercambia la información entre los componentes. Una interfaz se puede describir como una conexión entre dos componentes. El análisis de la interfaz se centra en las siguientes preguntas:
Es importante tener en cuenta que la elección de la técnica depende del contexto del proyecto y de los objetivos específicos de la organización.
However, some of the commonly used techniques for gathering software requirements are:
Interviews: Conducting one-on-one interviews with stakeholders and end-users to understand their needs and requirements.
Surveys: Collecting feedback from a large group of stakeholders or end-users through surveys.
Workshops: Conducting group workshops to brainstorm and gather requirements collaboratively.
Focus groups: Bringing together a small group of end-users to discuss their needs and preferences.
Prototyping: Creating a prototype or mock-up of the software to gather feedback and refine requirements.
Observation: Observing end-users in their work environment to understand their needs and challenges.
Document analysis: Reviewing existing documents such as user manuals, business processes, and system requirements to gather information about the software requirements.
Use case analysis: Analyzing the different use cases of the software to identify the requirements that need to be met.
Requirement workshops: Conducting workshops with stakeholders and end-users to define and prioritize requirements.
User stories: Creating user stories to capture the needs and requirements of end-users in a concise and understandable format.
Job shadowing: Spending time with end-users to understand their workflows, pain points, and requirements.
Contextual inquiry: Conducting interviews with end-users in their work environment to gather insights into their needs and challenges.
Persona development: Creating personas that represent the different types of end-users to understand their needs and requirements.
Requirement traceability matrix: Creating a matrix that links requirements to their sources, stakeholders, and testing activities to ensure that all requirements are met.
Agile techniques: Using agile methodologies such as user stories, sprint planning, and retrospectives to continuously gather and refine software requirements.
Interviews: This is a very common technique that involves direct conversations with stakeholders, end users, customers, and other interested parties to identify software requirements. Interviews can be individual or group, and can be conducted in person or remotely.
Group interviews: They are similar to face-to-face interviews except that there is more than one person being interviewed. Group interviews require more preparation and more formality to get the information you want from all participants.
Co-development sessions: Joint Application Development (JAD) sessions are similar to facilitated sessions. However, the group typically stays in session until a set of requirements is agreed upon and documented.
Follow people: This is especially useful when gathering information about current processes. It is necessary to see people perform their work before you can understand the general idea. In some cases you can also participate in the actual work process to get a close experience of how the business works today.
Questionnaires: Questionnaires are a technique that uses predefined questions to obtain information from stakeholders. Questionnaires can be sent by email or on paper, and can be used to collect information from a large number of people efficiently. Observation: This technique involves observing end users in their natural environment, to understand how they interact with the software and how it integrates into their work processes. Workshops and group sessions: These techniques allow a group of stakeholders to be brought together to discuss and define the software requirements. They can be useful for generating ideas and fostering collaboration among participants. Prototyping: Prototyping involves creating a preliminary model of the software, which allows end users and other stakeholders to interact with the application and provide
There are several techniques for gathering software requirements that are commonly used in the industry today. Some of the most current techniques include:
Interviews: One-on-one interviews with stakeholders can help to gather detailed information about their needs and expectations.
Surveys and questionnaires: Surveys and questionnaires can be used to gather input from numerous stakeholders in a structured way.
Workshops and focus groups: Workshops and focus groups bring together stakeholders to discuss requirements and provide feedback in a collaborative environment.
Observation: Observing users in their natural environment can provide valuable insights into their needs and behaviors.
Prototyping: Creating a prototype of the software can help to gather feedback and refine requirements based on user testing.
User stories: User stories are brief, informal descriptions of a feature or requirement from the perspective of the end user.
Use cases: Use cases describe how a user interacts with the software in a particular scenario, and can help to identify requirements and potential issues.
Requirements workshops: Requirements workshops bring together stakeholders to discuss and prioritize requirements in a structured, facilitated environment.
Contextual inquiry: Contextual inquiry involves observing and interviewing users in their work environment to gain a deeper understanding of their needs and workflows.
Document analysis: Analyzing existing documents such as user manuals, support tickets, and feedback forms can provide insights into user needs and pain points.
Some of the most current techniques for gathering software requirements are:
1. Agile Methodologies: Agile methodologies such as Scrum and Kanban emphasize collaboration, frequent feedback, and continuous improvement. They involve close collaboration between the development team and the stakeholders to gather requirements and prioritize them.
2. User Stories: User stories are a technique used in Agile methodologies to capture user requirements from the perspective of the user. They are short, simple descriptions of a feature or functionality that the user wants to achieve.
3. Prototyping: Prototyping involves creating a working model of the software system to gather feedback from stakeholders.
4. Requirements Workshops: Requirements workshops involve bringing together stakeholders, developers, and other experts in a facilitated session to gather and prioritize requirements. These workshops can be highly effective in generating consensus and identifying key requirements.
There are various techniques for educating requirements, some of which are detailed below: interviews, observation, prototyping, modeling, use case analysis.
The choice of the appropriate technique will depend on the context and the specific needs of the project.
There are several techniques for gathering software requirements. Here are some of the most current: - Interviews: the requirements analysts meet with the interested parties, so that, through a set of questions, they obtain detailed information about their needs and expectations. - Surveys: involves the distribution of questionnaires to stakeholders to collect information about their needs and expectations of the software. This technique is useful for collecting information from a large number of users efficiently. - Brainstorming: it is carried out in a group between 5-10 questions where a moderator ensures the orderly conduct of the session and the documentation of the ideas. - Analogies: support thinking and generate ideas. - Observation of the field: allows gathering software requirements that involve the direct observation of the users while they interact with the software or perform tasks related to the software. - Workshops: Workshop formats range from small informal meetings to organized multi-stakeholder events. - Mind Maps: By putting a main theme in the center and spreading the ideas in branches, thoughts and ideas can be classified and structured. - Prototyping: Allows for the creation of various types of early samples or models created to gain live experiences with a concept or process. - Scenarios and storyboards: describes in the form of a realistic example how a user will interact with the proposed system.
According to the CPRE Advanced Level Requirements Elicitation - Handbook, some of the most current techniques for gathering software requirements include:
1. Interviews: This is where an analyst talks to stakeholders to gather information about their needs, preferences, and concerns.
2. Focus Groups: This technique involves bringing together a group of stakeholders to discuss their needs, opinions, and ideas.
3. Workshops: This is a collaborative approach that brings together stakeholders to identify and prioritize requirements.
4. Surveys: This is useful for gathering large amounts of data from stakeholders who are geographically dispersed.
5. Observation: This is where analysts observe stakeholders in their natural environment to gain insights into their needs and behaviors.
6. Prototyping: This technique involves creating a working model of the system or product to enable stakeholders to provide feedback and refine requirements.
7. Use Cases: This is a technique for describing how users interact with the system, which helps to identify functional requirements.
8. User stories: This is a technique for capturing user requirements in a simple, narrative format that can be easily understood by stakeholders.
9. Document Analysis: This involves reviewing existing documentation, such as business plans, user manuals, and process maps, to identify requirements and gaps.
It is important to note that the choice of technique depends on the project's context, goals, and stakeholders, and sometimes more than one technique may need to be used.
There are several modern techniques to obtain software requirements, here are some of them:
1. Prototypes and models: Prototypes and models are useful tools for obtaining user feedback early in the development process. These techniques allow users to interact with an early version of the system and provide feedback on its functionality.
2. Use case analysis: Use case analysis is a technique for identifying system requirements by identifying the various use cases that users will have with the system. This technique focuses on the behavior of the system rather than its structure.
3.User and task analysis: User and task analysis focuses on understanding the needs and behaviors of users, and how they relate to the tasks they perform. This technique is based on observing users and collecting data on their behavior.
4.Focus groups: Focus groups are meetings with a group of system users to discuss system needs and expectations. This technique can be useful for obtaining detailed information about how users interact with the system and what system features are most important to them.
5. Surveys and questionnaires: Surveys and questionnaires are techniques to obtain information from a large number of users or customers. These techniques are especially useful for projects that have a large and diverse user base.
Las tecnicas de educción pueden separarse en varias categorías como son las tecnicas:
Dentro de las tecnivas tradicionales se encuentran comunmente:
Entre las técnicas colaborativas destacan:
Dentro de las técnicas cognitivas se encuentran:
Por último, entre las ténicas observacionales más comunes están:
Tiwari, S., Rathore, S.S., Gupta, A. (2012) Selecting Requirement Elicitation Techniques for Software Projects
Esta información puede ampliarse en Conference Paper Selecting requirement elicitation techniques for software projects
There are many techniques for software requirements gathering, such as:
Interviews: Interviews are a common technique that involve one-on-one conversations with stakeholders to elicit their requirements and understand their needs.
Workshops: Workshops are group sessions that bring stakeholders together to exchange ideas and discuss requirements. They can be used to identify and prioritize requirements, and to resolve conflicts between stakeholders.
Surveys and questionnaires: Surveys and questionnaires can be used to collect requirements from a large number of stakeholders in a structured and standardized way. They can be used to collect quantitative and qualitative data.
Observations: Observations consist of observing stakeholders in their working environment to understand their needs and requirements. This technique can provide valuable information on how stakeholders work.
Prototyping: involves creating a preliminary version of the software to help stakeholders visualize and refine their requirements. This technique can be useful for eliciting requirements that are difficult to express in words.
Use cases: These are scenarios that describe how the software will be used in different situations. They can be used to identify and clarify requirements, and to ensure that the software meets the needs of the stakeholders.
Document analysis: Document analysis consists of reviewing existing documentation, such as user manuals or system specifications, to identify requirements. This technique can be useful to identify requirements that have already been documented.
Brainstorming: Brainstorming is a group technique that encourages stakeholders to generate free-form ideas and requirements. This technique can be useful in identifying innovative solutions and requirements.
In addition, with technological advancement, requirements elicitation through novel techniques such as artificial intelligence has become more widespread. Some related topics are:
Natural Language Processing (NLP): NLP techniques have been widely used in software requirements engineering to automatically extract requirements from natural language documents. Examples of PLN techniques used in requirements engineering include named entity recognition, dependency parsing, and topic modeling.
Chatbots: Chatbots have been used in software requirements engineering to collect requirements from stakeholders in a conversational manner. Chatbots can also be used to provide real-time support to stakeholders during the requirements gathering process.
Machine Learning: Machine learning algorithms have been used in software requirements engineering to analyze large volumes of data to identify patterns and trends. Some examples of machine learning techniques used for requirements engineering include clustering, classification, and regression.
Existen diversas técnicas para la recopilación de requisitos de software, las más actuales incluyen:
Historias de usuario: Creación de descripciones cortas y sencillas de las características o funcionalidades desde la perspectiva del usuario.
Pensamiento de diseño: Enfoque en la resolución de problemas de manera creativa y colaborativa mediante técnicas como entrevistas, observación y prototipado.
Metodología ágil: Enfoque iterativo e incremental para el desarrollo de software que se enfoca en la entrega temprana y continua de funcionalidad valiosa.
Prototipado: Creación de modelos de software tempranos y de baja fidelidad para recopilar comentarios de los usuarios y refinar los requisitos.
Talleres de requisitos: Colaboración de partes interesadas, desarrolladores y usuarios en reuniones de trabajo para discutir y definir los requisitos del software.
The choice of the best technique or combination of techniques for gathering software requirements depends on the project, the team and the stakeholders. Some of the most current techniques for this purpose are shown below:
1. User-centered design (UCD) - It involves users throughout the design and development process, starting with user research to identify needs and gather requirements.
2. Design thinking - Design thinking is a human-centered approach to design that emphasizes empathy, ideation, and prototyping to create innovative solutions to complex problems.
3. Lean UX - An approach to user experience design that focuses on delivering user value with maximum efficiency. Lean UX methodologies emphasize rapid experimentation, iteration, and continuous feedback from users.
4. Contextual Inquiry - This method involves observing and interviewing users in their natural environment to gain a deeper understanding of their needs and requirements.
5. Scrum methodology - Scrum is an agile development methodology that emphasizes teamwork, collaboration, and iterative development. It involves close collaboration with stakeholders throughout the development process to gather and refine requirements.
6. Jobs to be Done (JTBD) - Jobs to be Done is a framework that focuses on the underlying motivations and needs that drive users to use a product or service. The framework is used to uncover unmet needs and identify opportunities for innovation.
7. Agile User Stories - Agile user stories are brief, informal descriptions of a software feature or function from the user's perspective. They are frequently used in agile development and can be continuously refined and updated throughout the development process.
There are several techniques that are commonly used for gathering software requirements, including:
The best approach to gathering software requirements may vary depending on the project, the stakeholders involved, and the specific context.
While classic techniques for gathering software requirements such as interviews, surveys, and focus groups have been used for many years, recent developments in technology have led to the emergence of new and innovative techniques for gathering software requirements. In my opinion, the most relevant courses are those that take advantage of these new technologies, such as user analytics, data mining, and machine learning.
User analytics involves gathering and analyzing data about how users interact with software to gain insights into their needs and preferences. This technique can be used to identify patterns in user behavior and to make informed decisions about which features and functionalities to include in the software. Data mining is another technique that can be used to analyze large amounts of data to identify trends and patterns that can inform software requirements. Machine learning algorithms can also be used to analyze data and make predictions about user behavior and preferences.
In addition to these techniques, agile methodologies are becoming increasingly popular for software development, and they emphasize a collaborative and iterative approach to gathering and refining requirements. Techniques such as user stories, personas, and prototyping are often used in agile development to help ensure that software requirements are aligned with the needs of users and stakeholders.
In conclusion, while classic techniques for gathering software requirements have been effective for many years, the emergence of new technologies and methodologies has led to the development of innovative approaches that can provide valuable insights into user needs and preferences. The most relevant techniques are those that take advantage of these new developments, such as user analytics, data mining, machine learning, and agile methodologies.
The techniques for gathering software requirements are methods and tools used to understand user needs, stakeholder expectations, and project objectives, and to ensure that the software meets these requirements. These techniques can be grouped into four main categories: questioning, observation, collaboration and artifact-based techniques.
1: Questioning techniques: These include interviews and questionnaires. Questioning techniques aim to pose appropriate questions to stakeholders in order to receive answers from which requirements can be derived.
- Interviews: interviews are a flexible and widely used technique that can elicit both high-level and specific requirements. Interviews offer direct feedback, both verbally and non-verbally, and can be realized at short notice. However, conducting and evaluating interviews is time-consuming, and the interviewer's lack of qualifications may reduce the interview's usefulness.
- Questionnaires: a questionnaire is a written set of questions presented in a structured way to several people to answer. Using a questionnaire survey is an asynchronous elicitation technique, can involve many stakeholders at once, and can be used to collect new requirements or evaluate existing requirements. However, using a questionnaire survey can also be time-consuming, and there is limited or non-existent possibility of feedback in case of doubts. Selection bias, non-response bias, and satisficing are also challenges to consider.
2: Observation techniques: These include field observation, apprenticing, and contextual inquiry, which involve observing stakeholders in their natural environment to understand their needs and behaviors.
- Field observation is a valuable technique that helps to gather information that cannot be expressed verbally by stakeholders and understand their situation. It does not require additional stakeholder resources, and it helps to identify work or process flows, issues, and room for improvement. However, the observer's bias can influence what they see, and field observation should be followed by additional elicitation techniques.
- Apprenticingis a participatory observation technique where the Requirements Engineer (the apprentice) does a short internship in the environment where the system is planned to be developed/improved later, under the guidance of experienced subject matter experts (the masters). Apprenticing helps in understanding the system environment and application domain, and implicit knowledge can be elicited and turned into explicit knowledge. However, the quality of an apprenticing depends on the motivation and didactic skills of the stakeholders, and a considerable investment is required from the stakeholder.
- Contextual inquiry is an iterative, field data-gathering technique where the Requirements Engineer studies a few carefully selected users in depth to arrive at a fuller understanding of work practice across the entire user base. The technique's opportunities include finding out a lot of information about the users, their goals and tasks, the systems used, the relevant context, and real problems and issues in a short period of time
Requirement gathering is always a difficult task for the software project team. the most current techniques for gathering software requirements are described below.
Context Diagram
All the relevant entities, the surrounding environment of the used actors, and the system boundaries are cleared by the context diagram. This diagram acts as the first supporting tool for the requirement elicitation process. This diagram’s output highlights the internal and external system’s boundaries, the end-users of the system, and all the supporting team members either in-house or outsourced. It identifies which of the services the project team may have to get from a third-party service provider.
Functional Decomposition
This diagram is the hierarchical representation of the working modules. All the major functions and the major use cases are listed in a top-down manner. The previous tool listed the major entities, functions, and interactions among all the components. Now, the use of this tool gives us the functional decomposition and divides the major use cases into sub-tasks and activities in a hierarchy.
AS-IS Model
This is used to elaborate the present workflow of the end-user environment graphically. It is very important for the team to design this diagram first for a more comprehensive system description. It gives all the complex parts of the project. After using this requirement elicitation tool, the project development team is now more satisfied about the clearance of the requirements.
TO-BE Activity Model
The TO-BE activity model gives the organization state after the final process. It is the after-development business expectation, showing how the new project can benefit the client’s company and what difference the under-development project could create for the owner’s company. As we discuss the requirement elicitation or gathering tool, this is a very supportive tool for the initial requirement gathering phases. Now the project team member, the owner, and all the stakeholders clearly understand the project phases and activities involved.
User Stories
The use of user stories helps the software engineers in the identification of the requirements. The physical or virtual cards are more significant and assist in the initial requirement gathering phase with the user stories. The role of user stories is vital in case of a complex system or working on the major iterations of the system. User stories make the system more understandable and reduce its complexity level.
Collaboration: This involves outsourcing tasks to a large, undefined group of people, typically through an online platform. In the context of software requirements gathering, can be used to gather ideas, feedback, or requirements from a large group of people like online forums, such as Reddit or Stack Overflow, can be used to gather feedback and ideas from a large community of users. The forum can be moderated to ensure that the feedback and ideas are relevant and useful or social media platforms, such as Twitter or Facebook, can be used to gather feedback and ideas from a large audience. This can be useful for gathering requirements from a diverse group of people.
Workshop:Workshop techniques involve bringing together stakeholders in a structured setting to collaboratively define and prioritize software requirements,typically involves bringing together stakeholders to review and validate the requirements that have been gathered. The workshop can be used to ensure that the requirements are complete, accurate, and relevant.
System Archaeology:System archaeology is a technique for gathering software requirements by analyzing existing systems or processes one of the most popular technique is reverse engineering,witch involves analyzing an existing system to understand how it works and what its requirements are. This can involve analyzing the source code, the database schema, or other artifacts of the system.
Perspective analysis: Perspective-based reading is a technique for gathering software requirements by analyzing documentation from multiple perspectives,one of the most common used is the risk analysis,witch involves analyzing the requirements from a risk management perspective. This can involve identifying potential risks and mitigating strategies to ensure that the software system is reliable and secure.
La recopilación de requisitos es un momento crítico en el desarrollo de software, pues los requisitos establecen la base para el diseño, la implementación y la prueba del software. Las técnicas para recopilar requisitos de software pueden ayudar a los analistas a comprender las necesidades de los usuarios y las expectativas del software, lo que a su vez permite mejorar la calidad del software y la satisfacción del usuario.
Algunas de las técnicas más importantes para recopilar requisitos de software son:
1. Entrevistas con los interesados.
2. Análisis de casos de uso.
3. Prototipado.
4. Análisis de documentos.
5. Encuestas y cuestionarios.
6. Grupo focal.
7. Juegos de rol y simulaciones.
8. Análisis de redes sociales.
En resumen, el empleo de técnicas para la recopilación de requisitos de software permite una mejor comprensión de las necesidades de los usuarios, ayudan a garantizar que se desarrollen soluciones de software efectivas y satisfactorias para el cliente.
Techniques for gathering software requirements are;
There are several techniques for gathering software requirements, including: