By the end of this chapter, you will be able to:
These skills will help you organize and communicate important project details, making your work run smoothly and successfully in the software development trade.
Planning application deliverables is a critical phase in software system development that ensures all client and stakeholder expectations are clearly defined, agreed upon, and achievable. In Kenya’s diverse professional sectors such as healthcare, education, finance, and public administration, effective planning mitigates risks and streamlines project execution. This chapter focuses on the processes involved in reviewing system requirements, addressing legal considerations, resolving disputes, and managing contract termination to safeguard project success and stakeholder satisfaction.
The system requirement review process involves systematically examining the documented requirements for a software application to confirm that they are accurate, complete and feasible before design and coding begin. Defects found at this stage are far cheaper to correct than those found after release. For instance, a team building a hotel reservation system must confirm that the requirements for room availability, deposits and guest data handling are correct, consistent and lawful before development starts.
Steps in a requirements review:
The review criteria define the standards and benchmarks used to evaluate system requirements, ensuring they meet stakeholder expectations and technical feasibility. Clear criteria help a development team avoid costly rework by confirming that requirements are realistic, controlled and aligned with business goals. In this unit the main criteria are traceability, change management, version control, and testing and validation.
Traceability is the ability to follow a requirement from its origin, through design and code, to the test that proves it works, and back again. It shows reviewers that every requirement has a purpose and that nothing has been forgotten or added without approval. For example, the requirement that a guest pays a deposit by mobile money can be traced to the hotel manager who requested it, to the payment module that implements it and to the test case that checks it.
Traceability is recorded in a requirements traceability matrix:
| Requirement ID | Requirement | Source | Design element | Test case | Status |
|---|---|---|---|---|---|
| REQ-012 | Guest pays deposit by mobile money | Hotel manager interview | Payment module | TC-045 | Approved |
| REQ-013 | System emails booking confirmation | Reservations clerk workshop | Notification service | TC-046 | Approved |
| REQ-014 | Manager views daily occupancy report | Hotel manager interview | Reporting module | TC-051 | In review |
Types and uses of traceability:
Change management is the controlled process of requesting, assessing, approving and recording changes to approved requirements. Without it, small unplanned additions accumulate until the schedule and budget are exceeded, a problem known as scope creep. For example, if a restaurant owner asks for a loyalty-points feature halfway through building an ordering app, the team must assess its effect on cost and time before agreeing to it.
Steps in a change control procedure:
Version control is the practice of recording every change to a document or file so that earlier versions can be recovered, compared and identified. It prevents two reviewers from working on different copies of the SRS without knowing it. For example, if a developer builds a booking screen from version 1.2 of the SRS while the client approved version 1.4, the result will not match what was agreed.
Tools and mechanisms used for version control:
| Name | Specification | Use |
|---|---|---|
| Git repository | Distributed version control system that stores the full history of files | Stores the SRS, models and source code, and lets reviewers compare any two versions |
| Commit message | Short text attached to each saved change | Explains what changed and why, for example "Add deposit rule to REQ-012" |
| Tag | Named label fixed to a specific saved state | Marks an approved baseline such as v1.0 |
| Branch | Separate line of development | Allows draft revisions to be prepared without disturbing the approved baseline |
| Revision history table | Table at the start of the SRS listing version, date, author and summary | Gives readers a quick record of how the document has changed |
Good version control practices:
Verification asks whether the requirements are written correctly, while validation asks whether they describe what the users really need. A requirement that cannot be tested cannot be proved delivered, so reviewers check that each one is measurable. For example, "the system shall be fast" is not verifiable, whereas "the system shall display room availability within 3 seconds for 50 simultaneous users" can be checked.
Methods used to verify a requirement:
Techniques used to validate requirements with users:
Requirements must cover all necessary functions and constraints without omissions. For example, a retail shop's point-of-sale system should include inventory tracking, sales processing and reporting before it is considered complete.
Requirements should not conflict with one another or with organisational policies. A hotel's booking system cannot require both online-only reservations and in-person check-ins for the same booking if these contradict the hotel's operating rules.
Each requirement must be written in clear, unambiguous language so that every stakeholder, including non-technical users such as a front-desk clerk, can understand it. Vague words such as "user-friendly" or "quickly" should be replaced by measurable statements.
Technical and resource constraints must be considered to ensure requirements can be achieved within the available budget and time. A small retail business's software should not demand hardware or connectivity that its staff do not have.
Legal considerations in software requirements protect the client and the developer from liability and ensure compliance with national laws and international standards. A requirement that ignores the law may have to be removed or redesigned after delivery. For example, an online ordering platform that stores customers' phone numbers and addresses must be specified so that it handles this personal data lawfully.
The governing law of a software contract is the legal system whose rules decide how the contract is interpreted and enforced. Contracts often name the governing law and the courts or arbitration seat that will handle disagreements. Where a system is built or used across borders, reviewers must also check which international agreements and foreign laws affect the requirements.
Kenyan laws that commonly affect software requirements:
International treaties and cross-border rules:
An End-User License Agreement (EULA) is a legal contract between the software owner and the person or organisation using the software. It does not transfer ownership of the software but grants a right to use it under stated conditions. For example, when a restaurant installs a purchased ordering application, the EULA states how many tills may use it and forbids copying or reselling it.
Typical clauses in a EULA:
Ownership of software components:
Clarifying ownership prevents disputes. For example, a business commissioning custom software must specify whether the source code rights belong to the business or to the developer, or whether the business receives only a licence to use the finished product.
Licensing compliance for third-party components:
Third-party libraries and tools must be used within their licence terms to avoid infringement. A development team that uses open-source components in a commercial point-of-sale system must check that each licence permits commercial use and understand any conditions, such as acknowledging the author or releasing modified code.
Legal terms in a development contract influence the scope of the requirements and the deliverables. A client must make sure the contract clearly defines what is to be delivered, by when, to what standard, and what penalties apply for non-compliance. Requirements that are missing from the contract are difficult to demand later.
Disputes during requirements review and development can arise from misunderstandings, changing needs or contractual disagreements. Effective resolution mechanisms maintain project momentum and protect working relationships. For example, a hotel and its software vendor may disagree about whether a channel-manager feature was part of the agreed requirements.
Direct dialogue between the parties helps clarify issues and reach a mutually acceptable solution. For instance, a hotel and a software vendor may negotiate feature adjustments to fit the hotel's budget.
A neutral third party facilitates communication and proposes compromises without imposing a decision. A client and a vendor who cannot agree on the acceptance criteria for a module may use a mediator to find a middle position and keep the project going.
A binding decision by an appointed arbitrator resolves the dispute outside the courts and is usually faster and more private. Parties often include an arbitration clause in the contract naming how the arbitrator will be chosen and which rules apply, so a small software firm and its client avoid lengthy litigation.
As a last resort, disputes are resolved through the courts, which can be costly and time-consuming. A client might litigate if a serious breach of contract causes significant financial loss that cannot be settled by other means.
Maintaining thorough records of discussions, approved requirements, change requests and decisions reduces misunderstandings and supplies evidence if a dispute arises. Minutes of review meetings and signed baselines are especially useful.
Contract termination is the formal ending of a software contract before or at completion, usually when objectives are no longer achievable or a party fails to meet its obligations. Clear termination provisions written into the agreement protect all stakeholders by stating when and how the contract may end.
Either party may end the contract without proving fault, usually after giving written notice. A retail business might terminate a software development contract because of a change in business strategy and pay only for the work done up to that date.
Termination occurs because of a breach of contract. For example, a client may end the agreement if the developer repeatedly fails to deliver agreed functions, such as the payment module, after being given notice and a reasonable time to correct the failure.
Contracts typically specify obligations regarding payment for completed work, return of materials, deletion or return of data and continuing confidentiality, safeguarding the interests of both parties.
Provisions for handover support ensure continuity. For example, when a business changes software provider, the outgoing developer may be required to transfer data, source code where agreed, and technical documentation to the new provider.
Termination may trigger penalties, compensation or legal claims, so the contract must be carefully drafted and managed. Clauses on notice periods, payment for work in progress, and limits on liability should be reviewed before the agreement is signed.
Create a free account to open more of this chapter.
Free: practical guides, quick cards, workplace scenarios and more.
Create a free accountThis chapter focused on planning application deliverables by first detailing the system requirement review process, which involves assessing criteria such as traceability, change management, version control, and testing and validation. It also examined legal issues relevant to software projects, including governing laws, international treaties, end-user license agreements, dispute resolution mechanisms, and contract termination procedures. The creation of a comprehensive project work plan was emphasized, covering aspects like defining the project scope, identifying both internal and external key deliverables, setting milestones and timelines, and assigning duties and responsibilities. Additionally, the chapter addressed the need to establish quality criteria, recognize constraints and dependencies, manage resource sharing, and plan effective communication strategies. Finally, the importance of a project development agreement was highlighted, including its essential contents, the role it plays in project success, and the formal sign-off process that confirms mutual understanding and commitment. Together, these components provide a structured approach to managing software system requirements and ensuring successful application delivery.
At the start of this chapter we promised you would be able to:
Tick each one you can genuinely do.
So, are you there yet?
You're competent when you can confidently do 50% or more of what this chapter promised.
Sign in to record how you're doing.