Skip to main content

BRD Software Development: Engineering Comprehensive Business Requirements

NR Tech Studio Team
NR Tech Studio
42 min read

A Business Requirements Document (BRD) in software development is a formal document detailing the business goals, stakeholder needs, and functional and non-functional requirements for a new or modified software system. It serves as a foundational contract between business stakeholders and the development team, ensuring alignment on project scope, objectives, and expected outcomes before technical implementation begins.

Crafting an effective BRD is a critical, often underestimated, phase in the software development lifecycle. Its thoroughness directly impacts project success, influencing everything from architectural design to test case generation. A well-defined BRD mitigates risks associated with scope creep, miscommunication, and feature misunderstandings, which are common causes of project delays and budget overruns in complex software initiatives.

This article will delve into the technical nuances of BRD development, exploring its components, its strategic role in different development methodologies, and the engineering considerations involved in translating business needs into actionable technical specifications. We will also examine the cost implications of both robust BRD processes and their unfortunate absence, providing a pragmatic view for CTOs and technical founders.

What is a Business Requirements Document (BRD) in Software Development?

A Business Requirements Document (BRD) is a formal artifact that captures the business needs and objectives for a software project, translating them into a detailed set of requirements for the development team. It is the definitive source of truth regarding what the software must accomplish from a business perspective, outlining the ‘what’ and ‘why’ before the technical ‘how’ is determined. This document bridges the communication gap between business stakeholders, who understand market needs and user problems, and technical teams, who are responsible for designing and building the solution.

The primary purpose of a BRD is to establish a shared understanding and agreement among all project participants. Without a clear and agreed-upon BRD, software development projects are highly susceptible to several critical issues. These include requirements volatility, where expectations shift mid-project, leading to constant rework; scope creep, where features are continually added without proper evaluation or planning; and ultimately, the delivery of a system that fails to meet the core business objectives. For a backend engineer, the BRD forms the initial blueprint that guides system design, database schema definition, API endpoint specifications, and integration strategies. It dictates the fundamental constraints and expected behaviors that the underlying architecture must support.

From a technical standpoint, the BRD provides the context necessary to make informed architectural decisions. For instance, if the BRD specifies high transaction volumes or stringent latency requirements, the engineering team immediately understands that the system architecture must prioritize performance and scalability, potentially leading to choices like asynchronous processing queues, distributed databases, or specific caching strategies. Conversely, if the BRD emphasizes data integrity for financial transactions, the focus shifts to robust ACID compliance, strong validation layers, and comprehensive auditing mechanisms. The clarity of the BRD directly correlates with the efficiency of the technical design phase; ambiguities at this stage inevitably propagate as technical debt and costly refactoring later on.

Moreover, the BRD serves as a foundational input for quality assurance. Test engineers use the functional and non-functional requirements detailed in the BRD to develop comprehensive test plans, test cases, and acceptance criteria. This ensures that the developed software is not only technically sound but also functionally correct and aligned with the original business intent. Without a precise BRD, testing efforts can become arbitrary, leading to gaps in coverage and an increased risk of production defects. Therefore, the BRD is not merely a documentation exercise; it is a critical engineering tool that underpins the entire software construction process, ensuring that the final product delivers tangible business value and technical reliability.

The Strategic Role of a BRD in the Software Lifecycle

The Business Requirements Document plays a strategic role far beyond simple documentation; it acts as an anchor throughout the entire software development lifecycle (SDLC), guiding decisions from inception to deployment and maintenance. Its strategic importance stems from its ability to align diverse stakeholders, manage expectations, and provide a measurable baseline for project success. By clearly articulating the business problem and the desired solution, the BRD ensures that all efforts are directed towards achieving specific, agreed-upon outcomes, preventing costly diversions and misinterpretations.

Early in the SDLC, the BRD is instrumental in defining the project scope and obtaining crucial approvals. It helps stakeholders, including executives, product owners, and end-users, visualize the future system’s capabilities and limitations. This clarity is vital for securing funding, allocating resources, and establishing a realistic project timeline. From an engineering perspective, a well-structured BRD allows for preliminary architectural discussions, technology stack evaluations, and the identification of potential technical challenges or dependencies. For instance, if the BRD mandates integration with a legacy system, engineers can immediately begin researching API compatibility, data migration strategies, and potential performance bottlenecks associated with that specific integration.

During the development phase, the BRD serves as a constant reference point for developers, designers, and quality assurance teams. Developers consult it to understand the precise functionality required for each module, ensuring that their code implementations directly address the business needs. For instance, when developing a user authentication module, the BRD would specify requirements such as multi-factor authentication, password complexity rules, and session management policies. These details directly translate into specific code structures, database fields, and security protocols that must be implemented. Without this clear guidance, developers might make assumptions that lead to features that technically work but fail to meet the business’s security or usability standards.

Furthermore, the BRD is critical for effective change management. As projects evolve, business needs or market conditions may necessitate changes to the original requirements. A robust BRD provides a formal baseline against which proposed changes can be evaluated. Each change request can be assessed for its impact on scope, timeline, budget, and technical architecture. This structured approach prevents arbitrary additions or modifications, ensuring that all changes are justified, documented, and approved, thereby maintaining project control. For instance, a request to add a new reporting feature would be evaluated against the existing BRD to determine if it falls within the original scope or constitutes an expansion requiring additional resources and architectural adjustments. This disciplined approach is fundamental to building secure and resilient systems that remain aligned with evolving business objectives.

Key Components of a Comprehensive BRD

A comprehensive Business Requirements Document is typically structured to provide a holistic view of the software project, detailing everything from high-level business objectives to granular functional specifications. While the exact sections may vary slightly based on project complexity and organizational standards, several core components are universally critical for an effective BRD. Each component serves a distinct purpose, collectively ensuring that all aspects of the software solution are thoroughly defined and understood by all stakeholders.

1. Executive Summary

This section provides a high-level overview of the project, including its purpose, objectives, and the main problems it aims to solve. It should be concise and easily digestible, allowing executives and non-technical stakeholders to quickly grasp the project’s essence and strategic value. For engineers, it offers a quick understanding of the project’s strategic importance and context.

2. Business Goals and Objectives

This section articulates the overarching business goals that the software project is intended to achieve. These goals should be SMART (Specific, Measurable, Achievable, Relevant, Time-bound). For example, ‘Reduce customer support calls by 20% within six months of deployment’ or ‘Increase online sales conversion rate by 15%.’ These objectives directly influence the definition of success metrics and the overall design philosophy of the system.

3. Scope Definition

The scope clearly delineates what the project will and will not include. It establishes boundaries, preventing scope creep and ensuring that the development team focuses on delivering the agreed-upon features. The scope definition is crucial for managing expectations and allocating resources effectively. It identifies key deliverables and explicitly states any out-of-scope items, which is vital for engineering teams to understand the system’s external interfaces and integration points.

4. Stakeholder Analysis

This component identifies all individuals or groups who will be affected by or have an interest in the project. It typically includes their roles, responsibilities, and specific interests or concerns. Understanding stakeholders helps in gathering requirements, managing communication, and prioritizing features based on their impact on different user groups.

5. Functional Requirements

These specify what the system must do. They describe the system’s behavior, features, and functions from the user’s perspective. Functional requirements are often detailed as use cases, user stories, or explicit statements about system actions. For a backend engineer, these translate directly into API endpoints, business logic, data processing workflows, and database operations. For instance, ‘The system shall allow users to register with an email and password’ is a functional requirement that dictates specific backend routes, validation logic, and database storage for user credentials.

6. Non-Functional Requirements (NFRs)

NFRs define the quality attributes of the system, such as performance, security, scalability, usability, reliability, and maintainability. While functional requirements describe ‘what’ the system does, NFRs describe ‘how well’ it does it. These are paramount for backend architecture, influencing technology choices, infrastructure design, and coding standards. A requirement for ‘99.99% uptime’ or ‘response time under 200ms for critical operations’ directly shapes architectural patterns like redundancy, load balancing, and efficient database indexing.

7. Data Requirements

This section outlines the data entities, attributes, relationships, and data flows within the system. It often includes data dictionaries, entity-relationship diagrams (ERDs), and data migration strategies. For database engineers, this is a core input for designing the database schema, ensuring data integrity, and optimizing query performance. It also details data retention policies and compliance requirements.

8. User Interface (UI) and User Experience (UX) Requirements

While often detailed in separate UI/UX specifications, a BRD will typically include high-level requirements for the user interface, interaction flows, and overall user experience. This might involve wireframes, mockups, or descriptions of the desired user journey. These guide frontend development but also inform backend API design, ensuring that necessary data and services are exposed correctly to support the UI.

9. Reporting Requirements

Any required reports, dashboards, or analytics capabilities are specified here, including data sources, calculation logic, and presentation formats. This impacts backend data aggregation, warehousing, and potentially the design of specialized reporting APIs.

10. Integration Requirements

Details about how the new system will interact with existing systems, third-party services, or external APIs. This includes communication protocols, data formats, authentication mechanisms, and error handling strategies for each integration point. For backend engineers, this dictates the design of integration layers, message queues, and API clients.

11. Assumptions, Constraints, and Dependencies

This section lists any assumptions made during requirement gathering, constraints that limit the design or implementation (e.g., budget, technology stack, regulatory compliance), and dependencies on external factors or other projects. Acknowledging these early helps manage risks and informs technical decision-making.

12. Glossary

A list of key terms and acronyms used throughout the document, ensuring consistent understanding across all stakeholders.

Each of these components contributes to a robust and unambiguous BRD, forming the bedrock for successful software engineering. Neglecting any of these areas can lead to significant rework and project failure, emphasizing the importance of a meticulous approach to requirements definition.

Functional Requirements: Specification and Detail

Functional requirements (FRs) are the core of any BRD, explicitly defining the specific actions or behaviors that a software system must perform. They articulate the capabilities the system will provide to its users and other systems, directly addressing the business needs outlined in the initial stages. For a Senior Backend Engineer, functional requirements are the primary input for designing the application’s business logic, data models, API contracts, and integration points. The precision and testability of these requirements are paramount for building a robust and correct system.

Effective functional requirements are typically expressed in clear, unambiguous language, often using a structured format to ensure consistency and completeness. Common formats include:

  • User Stories: Often used in Agile contexts, user stories follow the format: ‘As a [type of user], I want to [perform an action] so that [I can achieve a goal].’ For example, ‘As a registered customer, I want to view my order history so that I can track past purchases.’ From this, a backend engineer would derive needs for a GET /api/users/{userId}/orders endpoint, data retrieval from an order database, and user authentication.
  • Use Cases: A more detailed approach, a use case describes a sequence of interactions between an actor (user or external system) and the system to achieve a specific goal. It includes pre-conditions, post-conditions, a main success scenario, and alternate flows (error handling, exceptions). For instance, a ‘Process Payment’ use case would detail steps like ‘User enters credit card details,’ ‘System validates card,’ ‘System communicates with payment gateway,’ ‘System updates order status,’ and ‘System handles payment failure.’ Each step directly maps to backend service calls, validation logic, and state transitions.
  • Explicit Statements: Direct, declarative statements about system behavior. For example: ‘The system shall encrypt all sensitive user data at rest.’ or ‘The system shall send an email notification to the user upon successful password reset.’ These statements provide clear directives for implementation.

When specifying functional requirements, it is crucial to consider the level of detail. Overly general requirements (‘The system should be user-friendly’) are difficult to implement and test. Conversely, micromanaging technical implementation details within a BRD can stifle innovation and bind the development team to potentially suboptimal solutions. The sweet spot lies in defining the ‘what’ with sufficient clarity for engineers to understand the intent, while leaving the ‘how’ to the technical design phase. For instance, a requirement for ‘The system shall allow users to upload profile pictures’ is a functional requirement. The backend team would then decide on storage mechanisms (e.g., S3 bucket), image processing (e.g., resizing, format conversion), and API design (e.g., POST /api/users/{userId}/profile-picture with multipart form data).

Each functional requirement should ideally be atomic, unambiguous, verifiable, and traceable. Atomic means it describes a single function. Unambiguous means it has only one interpretation. Verifiable means there is a way to test if the requirement has been met. Traceable means it can be linked back to a business objective and forward to design, code, and test cases. The traceability aspect is particularly important for ensuring that every piece of developed functionality directly contributes to a business goal. Establishing a clear link between business needs and implemented features is a cornerstone of effective secure software development lifecycle and risk mitigation.

From a backend perspective, functional requirements often translate into:

  • API Endpoints: Each distinct action a user or external system can perform often corresponds to a specific RESTful API endpoint (e.g., POST /users for user creation, GET /products/{id} for product details).
  • Business Logic: The rules and calculations that govern how data is processed and transformed (e.g., calculating discounts, validating input, updating inventory).
  • Data Persistence: How data is stored, retrieved, and managed in the database (e.g., defining table schemas, relationships, indexing strategies based on query patterns).
  • Integrations: How the system interacts with external services (e.g., payment gateways, email services, third-party APIs).
  • Error Handling: How the system responds to invalid inputs, system failures, or external service unavailability.

Thorough specification of functional requirements not only streamlines the development process but also forms the basis for effective system testing and user acceptance testing, ensuring the delivered software meets the precise needs of its intended users.

Non-Functional Requirements: Defining System Qualities

While functional requirements describe what a system does, non-functional requirements (NFRs) define how well it does it. NFRs are crucial quality attributes that dictate the operational characteristics, constraints, and overall user experience of the software. For a Senior Backend Engineer, NFRs are often more challenging to address than functional requirements because they directly impact the underlying architecture, technology choices, infrastructure, and development practices. Failing to adequately define and implement NFRs can lead to systems that are functionally correct but unusable, insecure, or impossible to maintain at scale.

NFRs are typically categorized into several key areas:

  • Performance: This includes response time (e.g., ‘All critical API endpoints shall respond within 200ms under peak load’), throughput (e.g., ‘The system shall process 1,000 transactions per second’), and resource utilization (e.g., ‘CPU utilization shall not exceed 70% during peak hours’). Performance requirements heavily influence database indexing, caching strategies, asynchronous processing, and horizontal/vertical scaling decisions.
  • Scalability: Defines the system’s ability to handle an increasing amount of work or users. Examples include ‘The system shall support 10,000 concurrent users without degradation in performance’ or ‘The system shall be able to scale horizontally by adding additional instances.’ This drives architectural patterns like microservices, load balancing, containerization (Docker, Kubernetes), and cloud-native design.
  • Security: Encompasses confidentiality, integrity, and availability. Requirements might include ‘All user data shall be encrypted at rest and in transit,’ ‘The system shall implement role-based access control (RBAC),’ ‘The system shall be protected against common OWASP Top 10 vulnerabilities,’ or ‘All API endpoints shall require OAuth2 token validation.’ These requirements dictate authentication/authorization mechanisms, data encryption, input validation, logging, and security auditing.
  • Reliability: The ability of the system to perform its required functions under stated conditions for a specified period. This includes uptime (e.g., ‘The system shall have 99.99% availability’), mean time between failures (MTBF), and disaster recovery objectives (RTO/RPO). High reliability often necessitates redundant components, failover mechanisms, robust error handling, and comprehensive monitoring.
  • Maintainability: The ease with which the system can be modified, updated, or repaired. Requirements might include ‘The codebase shall adhere to PSR-12 coding standards,’ ‘All critical business logic shall be covered by unit tests with 80% code coverage,’ or ‘The system shall have clear, up-to-date documentation for all APIs.’ This influences code quality, architectural modularity, and testing strategies.
  • Usability: How easy it is for users to learn and operate the system. While primarily a frontend concern, backend design can impact usability through API consistency, clear error messages, and efficient data retrieval.
  • Portability: The ease with which the system can be transferred from one environment to another. For example, ‘The application shall be deployable on any cloud provider supporting Docker containers.’
  • Recoverability: The ability of the system to recover quickly and effectively from failures. This ties into backup strategies, automated recovery processes, and data restoration procedures.
  • Compliance: Adherence to regulatory standards (e.g., GDPR, HIPAA, PCI-DSS). These requirements can significantly impact data storage, privacy controls, and audit logging.

The challenge with NFRs lies in their quantification and measurement. Vague NFRs like ‘The system should be fast’ are useless. They must be measurable and testable. For example, ‘The API endpoint /products shall return data within 150ms for 95% of requests, under a load of 500 concurrent users’ is a clear, testable NFR. Engineers use performance testing tools, security scanners, and monitoring dashboards to verify compliance with NFRs.

Implementing NFRs often involves significant architectural trade-offs. For instance, achieving extremely high availability might necessitate complex distributed systems, increasing development cost and operational complexity. Similarly, stringent security requirements can add overhead to every transaction. The BRD must clearly prioritize NFRs, allowing the engineering team to make informed decisions that balance competing qualities. For example, a system handling sensitive financial data will prioritize security and data integrity over extreme performance, whereas a public-facing content delivery network might prioritize performance and scalability. Understanding these trade-offs early in the BRD phase ensures that the chosen technical solutions are appropriate for the defined quality attributes, avoiding costly re-architecting later in the project.

Technical Architecture Considerations within the BRD Context

While a BRD primarily focuses on business needs, it profoundly influences and informs the technical architecture. For a Senior Backend Engineer, the BRD serves as the foundational document from which architectural decisions are derived and justified. The detailed functional and non-functional requirements, as outlined in the BRD, directly dictate the choice of technology stack, system design patterns, database strategy, and infrastructure topology. Misinterpretations or ambiguities in the BRD at this stage can lead to architectural misalignments that are expensive and time-consuming to correct.

Consider how various BRD components translate into architectural imperatives:

  • High-level Business Goals: If the BRD states a goal of rapid market entry and iterative feature delivery, an Agile-friendly, modular architecture like microservices might be favored over a monolithic design. If the goal is maximum data consistency for financial transactions, a robust relational database with strong ACID properties would be chosen.
  • Functional Requirements: Each functional requirement, especially those involving complex business logic or data transformations, necessitates specific API endpoints, service boundaries, and data processing pipelines. For instance, a requirement for ‘real-time inventory updates across multiple sales channels’ points towards an event-driven architecture with message queues (e.g., Kafka, RabbitMQ) and potentially a distributed ledger or eventual consistency models for data synchronization.
  • Non-Functional Requirements (NFRs): These are perhaps the most direct drivers of architectural decisions:
    • Performance & Scalability: Requirements for high throughput and low latency often lead to choices like horizontally scalable stateless services, caching layers (Redis, Memcached), efficient database indexing, connection pooling, and potentially specialized data stores (e.g., NoSQL for specific workloads). The need for high concurrency might push towards asynchronous programming models or reactive architectures.
    • Security: Demands for data encryption, access control, and threat mitigation directly impact network topology (VPCs, firewalls), authentication/authorization services (OAuth2, JWT), secret management, and secure coding practices. Backend APIs must be designed with input validation, rate limiting, and secure communication protocols (TLS).
    • Reliability & Availability: High uptime requirements necessitate redundant services, load balancing, automated failover, robust logging, and monitoring systems. This often means deploying services across multiple availability zones or regions, designing for fault tolerance, and implementing circuit breakers to prevent cascading failures.
    • Data Requirements: The volume, velocity, variety, and veracity of data specified in the BRD dictate the database technology (relational, NoSQL, graph), schema design, partitioning strategies, and data warehousing solutions. Complex analytical reporting requirements might lead to a separate data lake or data warehouse architecture.
    • Integration Requirements: The need to integrate with external systems defines the integration patterns (e.g., API gateways, message brokers, ETL processes), communication protocols (REST, SOAP, gRPC), and data transformation logic.

The technical architecture must be a direct response to these requirements, balancing competing NFRs and ensuring a maintainable, extensible system. For instance, achieving extreme performance might compromise certain security measures if not carefully designed. The BRD helps the architect articulate these trade-offs to business stakeholders, explaining why certain technical decisions are being made and their implications. Without a clear BRD, architects might over-engineer solutions for perceived future needs or under-engineer for critical requirements, leading to significant technical debt or system failures. The initial architectural spikes and proofs-of-concept are often conducted to validate assumptions derived from the BRD, ensuring that the proposed technical approach is feasible and capable of meeting the specified qualities. This early validation is crucial for managing risks and ensuring that the meaning of software development aligns with both business and technical realities.

BRD and the Software Development Process: Agile vs. Waterfall

The role and format of a Business Requirements Document can vary significantly depending on the chosen software development methodology, particularly when comparing traditional Waterfall approaches with modern Agile frameworks. Understanding these differences is crucial for effective project management and successful software delivery, as it dictates how requirements are captured, evolved, and communicated throughout the project lifecycle.

BRD in Waterfall Methodology

In a Waterfall model, the BRD is typically a comprehensive, detailed, and static document created upfront before any design or coding begins. This approach assumes that all requirements can be fully gathered, analyzed, and documented at the project’s inception. The BRD acts as a formal contract, and subsequent phases (design, development, testing) proceed sequentially, with minimal revisiting of requirements. Changes to the BRD after it has been signed off are highly discouraged due to the significant impact they would have on downstream phases, often requiring formal change control processes and considerable rework.

  • Characteristics: Highly detailed, extensive, formal sign-off, single source of truth, rigid change control.
  • Advantages: Provides a clear, stable baseline for fixed-price projects; reduces ambiguity for large, complex systems where requirements are well-understood and unlikely to change; simplifies compliance in highly regulated industries.
  • Disadvantages: Inflexible to changing market needs; high risk of delivering software that no longer meets business needs if requirements evolve; delays feedback until late in the cycle; significant upfront effort.
  • Backend Impact: Backend engineers receive a complete specification, allowing for extensive upfront architectural design and database schema definition. However, any late-stage requirement changes can necessitate extensive refactoring, impacting database migrations and API contracts.

BRD in Agile Methodology

In Agile methodologies (Scrum, Kanban, XP), the concept of a single, monolithic BRD is often replaced by a more dynamic and iterative approach to requirements management. While an initial high-level vision or product roadmap might exist, detailed requirements are captured incrementally, typically as user stories or epics, and refined just-in-time (JIT) for each sprint or iteration. The focus shifts from extensive documentation to continuous collaboration, working software, and responsiveness to change.

  • Characteristics: Leaner, evolving, iterative refinement, collaborative, emphasis on user stories/epics, frequent feedback loops.
  • Advantages: Flexible and adaptable to change; delivers value incrementally; promotes continuous feedback from stakeholders; reduces risk by identifying issues early.
  • Disadvantages: Can lead to scope creep if not managed effectively; requires high levels of stakeholder engagement; less suitable for fixed-price contracts without careful scope definition per iteration.
  • Backend Impact: Backend engineers work with smaller, more focused requirements (user stories), enabling iterative design and development. This allows for continuous integration and continuous delivery (CI/CD) practices. However, it requires a flexible and adaptable architecture, often favoring modular designs like microservices, to accommodate evolving requirements without major overhauls. Database schema changes must be managed carefully across iterations, often using migration tools.

Regardless of the methodology, the underlying principles of clear communication and shared understanding remain paramount. In Agile, while a formal BRD might not exist, the spirit of requirements definition is maintained through artifacts like Product Backlogs, User Story Maps, and detailed Acceptance Criteria. These serve the same purpose: to ensure that the development team builds the right features. The key difference is the timing and granularity of documentation. A ‘BRD-like’ artifact in Agile might be a living document, constantly updated and refined, rather than a fixed, signed-off deliverable. For any software carpentry effort, adapting requirements processes to the methodology is essential for project efficiency and success.

Challenges in BRD Creation and Management

Creating and managing a Business Requirements Document is a complex undertaking fraught with challenges that can significantly impact project success. These difficulties often stem from the inherent complexities of translating nuanced business needs into precise, unambiguous technical specifications, coupled with the dynamic nature of business environments and stakeholder expectations. Recognizing and proactively addressing these challenges is critical for any project lead or technical architect.

1. Ambiguity and Vagueness

One of the most persistent challenges is the presence of ambiguous or vague requirements. Business stakeholders, while experts in their domain, may use imprecise language or assume common understanding that does not translate directly into technical terms. Phrases like ‘the system should be fast,’ ‘easy to use,’ or ‘handle large amounts of data’ are subjective and lead to different interpretations among developers, designers, and testers. For a backend engineer, a vague performance requirement like ‘fast’ provides no actionable metric; it needs to be quantified, e.g., ‘API endpoint X must respond within 150ms for 95% of requests under Y concurrent users.’

2. Incomplete or Missing Requirements

Requirements gathering is rarely exhaustive. Critical functional or non-functional requirements can be overlooked, either due to assumptions, lack of stakeholder input, or an incomplete understanding of system interactions. Missing requirements often surface late in the development or testing phases, leading to costly rework, delays, and scope creep. For instance, neglecting to specify disaster recovery requirements in the BRD means the backend architecture might not include necessary backups, replication, or failover mechanisms, creating significant vulnerabilities.

3. Requirements Volatility and Scope Creep

Business environments are dynamic, and requirements can change due to market shifts, new regulations, or evolving stakeholder priorities. While Agile methodologies embrace change, uncontrolled ‘requirements churn’ or ‘scope creep’ (the continuous addition of new features without proper impact analysis) can derail any project. Managing this requires robust change control processes, clear communication, and a mechanism to evaluate the impact of each proposed change on the BRD, project timeline, and budget. For backend systems, adding new features often implies database schema changes, new API endpoints, and modifications to business logic, all of which require careful planning and execution to avoid introducing regressions.

4. Conflicting Requirements

Different stakeholders often have conflicting needs or priorities. For example, a marketing team might prioritize rapid feature deployment, while a security team demands extensive testing and robust authentication. Reconciling these conflicts requires careful negotiation, prioritization, and trade-off analysis. The BRD should clearly document these trade-offs and the rationale behind the chosen path, ensuring transparency. From an engineering perspective, conflicting NFRs (e.g., maximum security vs. minimum latency) force complex architectural compromises.

5. Lack of Stakeholder Engagement

Effective BRD creation relies heavily on active and consistent engagement from business stakeholders. If stakeholders are unavailable, disengaged, or unable to articulate their needs clearly, the BRD will suffer from inaccuracies and gaps. This often leads to a system that, while technically sound, fails to meet the actual business needs, undermining the entire project’s value proposition.

6. Poor Documentation and Communication

Even well-defined requirements can be ineffective if they are poorly documented, difficult to access, or not communicated effectively to the development team. A BRD should be a living document, not a static artifact stored away. Using version control, collaborative tools, and regular review sessions helps ensure that the BRD remains relevant and accessible to all team members. Clear communication channels between business analysts and engineering teams are essential for clarifying details and addressing ambiguities as they arise during implementation.

7. Difficulty in Quantifying Non-Functional Requirements

As discussed, NFRs are critical but often hard to quantify. Establishing measurable metrics for performance, scalability, security, and usability requires expertise and careful analysis. Without specific, measurable NFRs, it is impossible for backend engineers to design for these qualities effectively, and for QA teams to test them adequately, leading to systems that are functionally correct but fail to meet critical quality standards. Addressing these challenges requires a disciplined approach, strong communication skills, and a commitment to iterative refinement, ensuring that the BRD remains a valuable guide throughout the software lifecycle.

Tools and Methodologies for Effective BRD Development

Effective Business Requirements Document development is significantly enhanced by leveraging appropriate tools and methodologies. These resources help streamline the requirements gathering process, improve documentation quality, facilitate collaboration, and ensure traceability from business needs to implemented code. For backend engineers, understanding these tools means better access to precise requirements and more efficient translation into technical specifications.

1. Requirements Management Tools (RMTs)

Specialized RMTs are designed to manage the entire lifecycle of requirements. They provide features for capturing, analyzing, tracing, and reporting on requirements. Popular examples include Jira (with plugins), Azure DevOps, Jama Connect, and Helix ALM. These tools are invaluable for:

  • Centralized Repository: Storing all requirements in a single, accessible location.
  • Traceability: Linking requirements to business objectives, design elements, test cases, and even source code. This allows engineers to see exactly which features they are implementing and how they relate to the overall business goal.
  • Version Control: Tracking changes to requirements over time, ensuring an audit trail and preventing ambiguity caused by outdated documentation.
  • Collaboration: Enabling multiple stakeholders to contribute, review, and comment on requirements, fostering a shared understanding.
  • Reporting: Generating reports on requirement status, coverage, and impact analysis.

For a backend team, an RMT that integrates with development tools (e.g., GitHub, GitLab) can automatically link user stories or requirements to specific commits or pull requests, significantly improving the visibility of work in progress and ensuring that every code change addresses a defined requirement.

2. Collaboration Platforms

Beyond dedicated RMTs, general collaboration tools like Confluence, Notion, or even shared Google Docs/Microsoft 365 can be used for less formal or initial requirements gathering. These platforms facilitate brainstorming, document sharing, and real-time feedback, making the initial stages of BRD creation more interactive. While they may lack the robust traceability of RMTs, they are excellent for early-stage ideation and ensuring all voices are heard.

3. Modeling and Diagramming Tools

Visual aids are powerful for clarifying complex requirements. Tools like Lucidchart, draw.io, or Miro allow for the creation of:

  • UML Diagrams: Use Case Diagrams, Activity Diagrams, Sequence Diagrams, and Class Diagrams can visually represent system behavior and structure. For backend engineers, Sequence Diagrams are particularly useful for understanding API call flows and inter-service communication.
  • Data Flow Diagrams (DFDs): Illustrate how data moves through a system.
  • Entity-Relationship Diagrams (ERDs): Essential for database design, depicting data entities and their relationships.
  • Wireframes and Mockups: While primarily for UI/UX, these can help clarify functional requirements related to user interaction and data presentation.

These diagrams serve as a common language, reducing misinterpretation and providing a clearer picture of the system’s intended operation for both business and technical teams.

4. Standardized Methodologies and Templates

Adopting a standardized approach to BRD creation ensures consistency and completeness. This might involve:

  • Templates: Using pre-defined BRD templates (e.g., from BABOK Guide) ensures all necessary sections are covered and prompts business analysts to ask the right questions.
  • Structured Requirements Language: Using specific syntax for writing requirements (e.g., ‘The system SHALL…’ for mandatory requirements, ‘The system SHOULD…’ for desirable ones, following RFC 2119 terminology) reduces ambiguity.
  • Requirements Workshops: Facilitated sessions with stakeholders to elicit, discuss, and refine requirements in a collaborative setting.
  • Prototyping and Proofs-of-Concept: Building small, throwaway prototypes or technical spikes to validate complex or ambiguous requirements before full-scale development. This is especially useful for complex backend integrations or performance-critical features, allowing engineers to test assumptions early.

By combining these tools and methodologies, organizations can significantly improve the quality and effectiveness of their BRDs, leading to more predictable project outcomes and higher-quality software. The investment in robust requirements engineering directly translates into reduced rework, faster development cycles, and systems that truly meet business needs.

Integrating BRD with Testing and Quality Assurance

The Business Requirements Document is not merely a precursor to development; it is a fundamental input for the entire Quality Assurance (QA) process. A well-defined BRD forms the bedrock upon which effective testing strategies are built, ensuring that the developed software not only functions correctly but also aligns perfectly with the original business intent and quality expectations. For a Senior Backend Engineer, understanding this integration is crucial, as it emphasizes the importance of writing clear, testable requirements that directly translate into verifiable system behaviors.

1. Requirements Traceability Matrix (RTM)

A key artifact connecting BRD to QA is the Requirements Traceability Matrix (RTM). An RTM is a document that maps each requirement to its corresponding design element, code module, and test cases. This matrix ensures that every requirement is addressed in the design, implemented in the code, and thoroughly tested. For backend engineers, the RTM provides a clear line of sight from a specific business need in the BRD (e.g., ‘User registration requires email verification’) to the API endpoint, database schema changes, and unit/integration tests that validate this functionality. This traceability is vital for:

  • Impact Analysis: Quickly identifying all affected components if a requirement changes.
  • Test Coverage: Ensuring that no requirement is missed during testing.
  • Validation: Confirming that all implemented features are directly linked to a business requirement.

2. Test Case Generation

Functional requirements detailed in the BRD serve as the primary source for generating test cases. Each functional requirement should ideally be atomic, unambiguous, and verifiable, making it straightforward to design specific test scenarios. For instance, if the BRD states, ‘The system shall allow users to retrieve their forgotten password via email,’ QA engineers can derive multiple test cases:

  • Valid email provided: System sends password reset link.
  • Invalid email provided: System returns ’email not found’ error.
  • Email sent, but user doesn’t click link within expiry: Link expires.
  • User clicks expired link: System indicates link expired.

For backend testing, this translates into designing API tests that validate endpoint behavior, data transformations, error responses, and interactions with external services (e.g., email service). Non-functional requirements also drive specific types of testing:

  • Performance NFRs: Lead to performance testing, load testing, and stress testing.
  • Security NFRs: Drive penetration testing, vulnerability scanning, and security audits.
  • Reliability NFRs: Inform failover testing, disaster recovery testing, and resilience testing.

Backend engineers often write unit tests and integration tests based on these requirements, ensuring that individual components and their interactions meet the specifications before handing off to QA. The clearer the BRD, the more effective and comprehensive these automated tests can be, providing early feedback on compliance.

3. User Acceptance Testing (UAT)

The BRD also serves as the ultimate reference for User Acceptance Testing (UAT). During UAT, business stakeholders validate that the developed software meets their original needs and expectations. The acceptance criteria, often derived directly from the BRD’s requirements, guide the UAT process. Any discrepancies between the BRD and the delivered system become critical issues to address. This feedback loop is essential for confirming that the software delivers tangible business value and that the meaning of software development aligns with the business’s goals. Without a clear BRD, UAT can become subjective and difficult to manage, leading to endless cycles of feedback and rework.

In essence, the BRD provides a common language and a shared understanding that unites business objectives with technical implementation and quality assurance. By ensuring that requirements are clear, testable, and traceable, the BRD significantly reduces the risk of delivering a system that fails to meet expectations, thereby contributing to the overall success and quality of the software product.

Maintenance and Evolution of the BRD

A Business Requirements Document is not a static artifact to be created, signed off, and then filed away. In any dynamic software development environment, the BRD must be treated as a living document that evolves alongside the project. Effective maintenance and evolution of the BRD are critical for ensuring its continued relevance, accuracy, and utility throughout the entire software lifecycle, especially as business needs and technical landscapes change. Neglecting BRD maintenance can lead to outdated information, misaligned development, and ultimately, a software product that no longer serves its intended purpose.

1. Version Control and Change Management

Just like source code, the BRD requires robust version control. Every modification, no matter how minor, should be tracked, along with the date of change, the author, and the reason for the change. This provides an audit trail and allows stakeholders to understand the evolution of requirements. A formal change management process is essential: any proposed change to the BRD should undergo an impact analysis (assessing its effect on scope, timeline, budget, and technical architecture), review, and approval by relevant stakeholders. For backend engineers, understanding the version history of requirements helps in debugging issues related to past implementations or understanding the rationale behind certain architectural decisions made at different points in time.

2. Regular Reviews and Updates

The BRD should be reviewed periodically by all key stakeholders, including business owners, product managers, business analysts, and technical leads. These reviews ensure that the documented requirements still accurately reflect current business needs and that any ambiguities or inconsistencies are identified and resolved. In Agile contexts, this often happens at the beginning of each sprint or iteration during backlog refinement sessions, where user stories are groomed and acceptance criteria are updated. For long-running projects, annual or bi-annual comprehensive reviews might be necessary to ensure the BRD remains aligned with strategic business objectives and that the software carpentry remains sound.

3. Linking to Other Artifacts

To maintain its value, the BRD must be tightly integrated and linked with other project artifacts. This includes:

  • Design Documents: Linking requirements to architectural diagrams, API specifications, and database schemas.
  • Test Cases: Ensuring traceability from requirements to specific test scenarios.
  • User Stories/Tasks: In Agile, linking high-level BRD concepts to granular user stories in a product backlog.
  • Codebase: Potentially linking requirements to specific code modules or features, especially with modern requirements management tools that integrate with version control systems.

This interlinking ensures that changes in one artifact can be easily traced to their impact on others, simplifying impact analysis and reducing the risk of inconsistencies. For a backend developer, being able to quickly navigate from a business requirement to the relevant API code and its associated tests is invaluable for both development and maintenance.

4. Managing Evolving Non-Functional Requirements

Non-functional requirements, such as performance, security, and scalability, are particularly prone to evolution. As user loads increase, new security threats emerge, or business operations expand, the NFRs initially defined in the BRD may need to be updated. For instance, a system initially designed for 1,000 concurrent users might need to scale to 10,000 within a year. These changes necessitate architectural adjustments, which must be clearly documented in the BRD’s updated NFR section. The BRD should reflect these evolving constraints and quality attributes, guiding subsequent engineering efforts and preventing technical debt from accumulating due to outdated assumptions.

5. Archiving and Retirement

Eventually, as a system reaches end-of-life or is replaced, the BRD itself needs to be formally archived or retired. This ensures that historical records are preserved for compliance, auditing, or future reference, while also clearly signaling that the document is no longer active. The disciplined maintenance and evolution of the BRD transform it from a mere deliverable into a dynamic, indispensable tool that consistently guides development towards achieving business value throughout the entire lifespan of the software product.

Cost Implications of BRD Development and Its Absence

The investment in developing a thorough Business Requirements Document often appears as an upfront cost, but its absence or inadequate execution incurs far greater financial and operational penalties throughout the software development lifecycle. For CTOs and technical founders, understanding these cost implications is crucial for making informed decisions about resource allocation and project planning. The upfront effort in BRD creation is a strategic investment that significantly mitigates downstream risks and expenses.

Cost of BRD Development

Developing a comprehensive BRD involves dedicated resources, primarily business analysts, product managers, and sometimes technical architects, engaged in requirements gathering, analysis, documentation, and stakeholder negotiation. The costs typically include:

  • Personnel Salaries: Salaries of business analysts, product owners, and subject matter experts. This can range from $70/hour to $250/hour depending on experience and location.
  • Tooling: Subscriptions for requirements management software, collaboration platforms, and diagramming tools (e.g., Jira, Confluence, Lucidchart), which can be $10/user/month to $100/user/month.
  • Training: Investment in training staff on requirements engineering best practices.
  • Time Investment: The time spent in workshops, interviews, and documentation, which diverts resources from other tasks.

For a typical project, BRD development can consume 5-15% of the total project budget, depending on complexity and organizational maturity. A small to medium-sized project might see BRD costs in the range of $10,000 to $50,000, while large enterprise systems could incur BRD costs upwards of $100,000 to $500,000 over several months.

However, this initial investment is critical. A well-defined BRD leads to clearer specifications, reducing design and development rework. It enables more accurate project estimations, helping to prevent budget overruns later. It also serves as a robust foundation for testing, leading to fewer defects and faster time-to-market.

Cost of an Absent or Inadequate BRD

The costs associated with not having a BRD, or having a poorly constructed one, are often hidden but far more substantial:

  • Rework and Rerun Costs: This is the most significant consequence. Ambiguous or changing requirements lead to constant refactoring, redesign, and re-coding. The cost of fixing a defect or changing a requirement increases exponentially as the project progresses. A change during requirements gathering might cost $100, but the same change during development could be $1,000, and post-deployment, it could be $10,000 to $100,000 due to impact on users, data migration, and emergency patches.
  • Project Delays: Constant clarification, rework, and missed requirements inevitably extend project timelines, delaying market entry and revenue generation. Each week of delay can cost a business thousands to millions in lost opportunity.
  • Scope Creep: Without a clear scope defined in the BRD, features are added haphazardly, bloating the project and exceeding budget and timeline. Each unplanned feature adds development, testing, and maintenance costs.
  • Misaligned Software: The ultimate cost is delivering a software product that does not meet the actual business needs or solve the intended problem. This can lead to low user adoption, negative ROI, and potentially the need to scrap the entire system and start over.
  • Increased Testing Costs: Vague requirements make it difficult to write comprehensive test cases, leading to extended QA cycles, more manual testing, and a higher probability of defects escaping into production.
  • Technical Debt: Rushed development to compensate for unclear requirements often leads to shortcuts, poor architectural choices, and unmaintainable code, accumulating technical debt that will cost significantly more to address in the future.
  • Legal and Compliance Risks: In regulated industries, missing or incorrect requirements can lead to non-compliance, resulting in hefty fines and legal repercussions.

The following table illustrates the typical cost difference between a project with a well-defined BRD and one without:

Cost Category With Robust BRD (Estimated % of Total Project Cost) Without Adequate BRD (Estimated % of Total Project Cost) Financial Impact (Typical Range, USD)
Requirements Gathering & Analysis 5-10% 2-5% (often incomplete) $10,000 – $100,000 (upfront)
Design & Architecture 10-15% 15-25% (due to rework) $20,000 – $250,000 (potential rework)
Development & Implementation 40-50% 50-70% (due to rework, scope creep) $50,000 – $1,000,000+ (rework, delays)
Testing & QA 15-20% 20-30% (more defects, longer cycles) $30,000 – $300,000 (extended cycles, missed bugs)
Deployment & Maintenance 10-15% 15-25% (higher defect rates, complex changes) $20,000 – $200,000 (post-launch fixes)
Opportunity Cost (Delays, Misalignment) Minimal Significant $50,000 – $1,000,000+ (lost revenue, market share)
Total Project Cost Multiplier 1.0x – 1.2x 1.5x – 3.0x (or more) Significant risk of project failure

A typical range for software development projects can vary wildly from tens of thousands for small applications to several millions for complex enterprise systems. The above percentages and ranges are illustrative and depend heavily on project size, complexity, and team rates. The critical takeaway is that the initial investment in a BRD is a cost-saving measure, preventing exponential cost increases later in the project and ensuring a higher probability of delivering a successful product that meets its intended business value.

Measuring Success: Metrics for BRD Effectiveness

Defining and developing a BRD is only one part of the equation; measuring its effectiveness is equally important to ensure it genuinely contributes to project success and delivers anticipated business value. For a Senior Backend Engineer, understanding these metrics helps in appreciating the impact of well-defined requirements on the entire development pipeline and ultimately, the quality of the delivered system. Effective metrics move beyond simply completing the document to evaluating its tangible outcomes.

1. Requirements Stability

A highly effective BRD leads to stable requirements throughout the development lifecycle. Metrics for stability include:

  • Number of Change Requests (CRs): Track the total number of formal change requests submitted against the BRD after its initial sign-off. A lower number indicates greater stability and upfront clarity.
  • Impact of CRs: Categorize CRs by their severity and impact on scope, timeline, and budget. Fewer high-impact CRs suggest a more robust initial BRD.
  • Requirements Churn Rate: The percentage of requirements that are added, modified, or deleted within a specific period (e.g., per sprint or per quarter). A low churn rate signifies a stable BRD.

High requirements stability directly benefits backend teams by minimizing rework, allowing for more consistent architectural decisions, and reducing the overhead of adapting database schemas or API contracts to constantly shifting demands.

2. Requirements Quality

The intrinsic quality of the requirements within the BRD can be measured through:

  • Requirements Ambiguity Index: A subjective but valuable metric, often derived from developer feedback during design and implementation. If engineers consistently seek clarification on specific requirements, it points to ambiguity.
  • Testability of Requirements: The percentage of requirements that can be directly mapped to one or more test cases. High testability indicates clear, verifiable requirements.
  • Completeness: Qualitative assessment of whether all necessary functional and non-functional aspects are covered, without significant gaps discovered late in the cycle.
  • Consistency: Ensuring there are no contradictions between different requirements.

High-quality requirements reduce the time backend engineers spend on assumptions and rework, leading to more efficient coding and fewer defects.

3. Development Efficiency

An effective BRD should directly contribute to more efficient development processes:

  • Estimation Accuracy: Compare initial effort estimates (derived from the BRD) against actual development time. A smaller variance indicates that the BRD provided a solid foundation for planning.
  • Development Cycle Time: The time taken from a requirement being picked up by development to its completion. Clear requirements can shorten this cycle by reducing confusion and rework.
  • Defect Density (Requirements-Related): Track the number of defects found in testing or production that can be traced back to an unclear, incorrect, or missing requirement in the BRD. A low density in this category signifies BRD effectiveness.

For backend development, this means fewer architectural changes mid-project, more predictable feature delivery, and a reduced likelihood of security vulnerabilities or performance bottlenecks stemming from poorly defined initial requirements.

4. Stakeholder Satisfaction

Ultimately, the success of a BRD is reflected in stakeholder satisfaction:

  • User Acceptance Test (UAT) Success Rate: The percentage of features that pass UAT on the first attempt, or the speed at which UAT is completed. A high success rate indicates the BRD accurately captured user needs.
  • Business Value Realization: After deployment, assess if the software is achieving the business goals and objectives outlined in the BRD. This might involve tracking KPIs like increased revenue, reduced operational costs, or improved customer satisfaction.
  • Feedback from Development Team: Regular surveys or feedback sessions with developers and QA engineers about the clarity, completeness, and usefulness of the BRD. Positive feedback indicates the document is serving its purpose as a reliable guide.

By regularly monitoring these metrics, organizations can continuously improve their BRD development processes, ensuring that requirements engineering becomes a strategic asset rather than a mere formality, driving the creation of software that truly meets its intended purpose and delivers tangible business value.

The Future of BRDs: AI and Automation in Requirements Engineering

The landscape of requirements engineering, traditionally a human-intensive and often painstaking process, is on the cusp of significant transformation driven by advancements in Artificial Intelligence (AI) and automation. While the core principles of understanding business needs and translating them into specifications will remain, the tools and techniques used to achieve this are evolving rapidly. For Senior Backend Engineers, this future promises more precise, consistent, and efficiently delivered requirements, leading to more streamlined development cycles and higher-quality software.

1. Natural Language Processing (NLP) for Requirements Analysis

One of the most promising applications of AI in BRD development is Natural Language Processing (NLP). NLP can be used to:

  • Identify Ambiguity and Inconsistency: AI algorithms can analyze textual requirements to detect vague terms, subjective statements, and contradictions that human reviewers might miss. For instance, an NLP tool could flag terms like ‘fast’ or ‘user-friendly’ and prompt the business analyst for measurable definitions.
  • Extract Key Entities and Relationships: NLP can automatically identify core entities (e.g., ‘Customer,’ ‘Product,’ ‘Order’) and their relationships, helping to generate preliminary data models or domain object definitions, which are invaluable for backend schema design.
  • Generate Test Cases: From well-structured functional requirements, NLP can assist in automatically generating initial test cases or acceptance criteria, accelerating the QA process and ensuring comprehensive coverage.

This capability could significantly reduce the effort required for manual review and refinement of BRDs, leading to higher quality requirements upfront.

2. Automated Requirements Elicitation and Prioritization

AI can assist in more efficient requirements elicitation. For example, machine learning models could analyze historical project data, user feedback, and market trends to suggest potential features or areas for improvement, helping product managers prioritize requirements more effectively. Chatbots or virtual assistants could even interact with stakeholders to gather initial requirements, guiding them through structured questions to ensure completeness and clarity. While these tools won’t replace human interaction entirely, they can augment the process, especially for large-scale projects with diverse stakeholder groups.

3. Requirements Traceability and Impact Analysis Automation

Maintaining requirements traceability is often a manual and laborious task. AI-powered tools can automate the creation and maintenance of traceability matrices by linking requirements to design documents, code modules, and test cases with greater accuracy and less effort. When a requirement changes, AI can quickly perform an impact analysis, identifying all affected downstream artifacts and alerting relevant teams. For backend engineers, this means instant visibility into how a requirement change might affect specific APIs, database tables, or integration points, allowing for proactive adjustments rather than reactive fixes.

4. Predictive Analytics for Project Risks

By analyzing patterns in past BRDs and project outcomes, AI can predict potential risks associated with current requirements. For example, it might flag a set of requirements as ‘high risk’ due to their complexity, interdependencies, or historical tendency to cause rework. This predictive capability allows project managers and technical leads to allocate resources more effectively, focus on problematic areas, and implement mitigation strategies early in the project lifecycle, reducing the likelihood of project delays or failures.

5. Living BRDs and Continuous Integration

The future BRD is likely to be a ‘living document’ deeply integrated into the development pipeline. Instead of a standalone document, requirements might be embedded directly into development tools as executable specifications or Gherkin features (Given-When-Then), allowing for continuous validation against the codebase. This ensures that the documentation is always up-to-date with the implemented system, and any divergence is immediately flagged. For backend development, this means requirements become an active part of the CI/CD pipeline, with automated tests directly verifying compliance with the BRD, ensuring that the deployed software consistently meets its intended specifications.

While human judgment, collaboration, and domain expertise will always be indispensable in requirements engineering, AI and automation are set to transform the process, making BRD development more efficient, accurate, and tightly coupled with the technical implementation, ultimately leading to higher quality and more successful software projects.

The Business Requirements Document stands as a cornerstone of successful software development, serving as the essential bridge between business vision and technical execution. Its meticulous creation and ongoing management are not merely administrative tasks but critical engineering functions that underpin the entire software lifecycle. A comprehensive BRD mitigates risks, clarifies scope, guides architectural decisions, and ensures that the final product delivers tangible business value.

From defining precise functional and non-functional requirements to adapting to various development methodologies and integrating with quality assurance, the BRD’s influence is pervasive. The investment in robust requirements engineering, though an upfront cost, demonstrably yields significant returns by reducing rework, preventing project delays, and ensuring the delivery of high-quality, fit-for-purpose software. As technology evolves, with AI and automation poised to further refine requirements processes, the fundamental importance of clearly articulating what a system needs to do will only grow.

Explore our complete Laravel, Basics directory for more guides.

NR Studio builds custom web apps, mobile apps, SaaS platforms, and internal tools for growing businesses. If you’re working through a technical decision, feel free to reach out — no commitment required.

Leave a Comment

Your email address will not be published. Required fields are marked *