05 - Ingeniería de Requerimientos: Especificación
Understanding Requirements Specification in Software Development
Importance of Clear Communication
- Effective communication is crucial as team members may have different understandings of project requirements, leading to delays and dissatisfaction among stakeholders.
- Documenting decisions and changes is essential for existing systems to clarify how decisions were made and the implications of introducing changes.
Defining Business Requirements
- Business requirements guide the project's direction, outlining user objectives and how the product will help achieve them.
- An executive summary should include the current state, desired outcomes expressed in SMART objectives, a vision statement for the software, main functions, and project risks.
Stakeholder Identification
- Identifying stakeholders is critical; this includes direct users, sponsors who can approve or reject projects, and rule definers like government entities.
- It's important to document stakeholder roles without naming individuals but rather using titles (e.g., director, manager).
User-Centric Requirement Specification
- Focus on user activities rather than individual software functions; understanding what users want to achieve with the software is key.
- For example, a publicist's goal might be to design promotional emails. The specification should focus on enabling that activity rather than detailing technical functionalities.
Functional Specifications
- The software must provide various functions that allow users to complete their tasks effectively without specifying how these functions are implemented.
Specifications for Software Development
Key Features and Functionalities
- The software should allow users to write text, choose font types, change font sizes, add images and videos, align text, change background colors, save drafts, select recipients, search registered recipients, create new recipients, and send emails.
- Error handling is crucial; the software must display messages or restart in case of communication errors. Documentation can be based on screen mockups with notes or prototypes.
Environment and Context
- Understanding the operating environment is essential; specifications should include device characteristics where the software will run.
- Consideration of communication networks between devices is necessary: user locations, estimated user numbers, peak usage times, and existing software ecosystems.
Technological Decisions
- Teams must make informed technological choices based on limitations encountered during development. This includes understanding how interfaces with other software/hardware will function.
- Specify applications that will interact with your system along with their interface characteristics (e.g., APIs), known issues with these interfaces should also be documented.
Resource Constraints
- Document dependencies on third-party components/libraries including their versions and locations.
- Address resource restrictions such as memory limits, processing capacity, bandwidth availability, and screen resolutions across devices.
Compliance and Standards
- Include references to operational manuals and support resources to help understand technology limitations.
- Non-functional requirements like quality attributes need clear definitions; measurable parameters are vital (e.g., system response time).
Continuous Documentation Process
- Collaboration with testing experts is recommended for defining test scenarios aligned with standards for graphical interfaces and user documentation.
- Acknowledge that incomplete information may exist at various project stages; maintain a section in specifications for assumptions made about unresolved issues.
Importance of Documentation
- Regularly review assumptions to update resolved items while adding new ones as they arise.
- While some view documentation as unnecessary due to changing requirements or reliance solely on code decisions made by individuals in small teams may overlook collaborative needs.
Effective Tools for Documentation
- Use concise documentation that answers common project questions without excessive length.
Understanding Requirements Specification
Importance of Requirement Specification
- The speaker emphasizes the significance of understanding agreements within a system, suggesting that skepticism about following recommendations can be addressed by answering a specific question.
- This question serves as a foundational element for specifying requirements, indicating its critical role in ensuring clarity and consensus among team members.