How Software Is Built
Software development is all the work that turns an idea into software people can use, and keeps it working. Writing code is only one part: someone decides what to build, someone designs how it behaves, developers write the code, testers check it, and someone releases it and keeps it running.
Take a grocery app that wants customers to repeat a previous order with one tap. Before any code exists, a product owner decides it is worth building, a business analyst writes the rules (what about items now out of stock?) and a designer sketches the screen. As the previous lesson showed, people build software, so every step is a place where a mistake can enter or be caught.
Why it matters
A tester who sees only the finished screen sees only the end of a long chain. Many defects start before or outside the code: a vague requirement, a design with no error state, a setting that differs between environments. Knowing which step produced which work product lets you trace a failure to its source and ask questions while changes are still cheap.
It also tells you whom to ask and what to record: a test result means something only when it names the build and environment it came from.
The people: roles on a software team
A role is a set of responsibilities, not a job title: one person may hold several roles, and one role may be a whole team.
- Product owner: decides what the product does next and in what order; in Scrum, accountable for maximising the value of the product and for managing the product backlog, the ordered list of what is needed to improve it.
- Business analyst: works out the detail (business rules, data, exceptions) and writes it down as requirements; some teams leave this to the product owner.
- Designer: decides how people will use the feature: flows, layouts, wording, and states such as empty, loading and error.
- Developer: turns requirements and designs into code, writes unit tests and reviews colleagues’ code, often in one layer such as the front end or back end.
- Tester or QA engineer: reviews requirements and designs, runs tests, reports defects and gives the team information about quality for the release decision.
- DevOps or operations engineer: looks after the build-and-deploy pipeline, the environments and production monitoring. Strictly, DevOps is a way of working for the whole team, but it is also a common job title.
Work products: what each step hands on
Every step produces something the next one uses. ISTQB calls these work products; many teams say artifacts. For a tester they matter twice: you test against them, and you can test them too, by reviewing them before any code runs. They also change: when one is edited, compare the old and new versions to see which tests are affected.
- Requirements: user stories with acceptance criteria, business rules, and targets such as response time. The story below is typical.
- Designs: wireframes and prototypes from the designer; architecture and API contracts from the developers.
- Code: source files in a version control system such as Git; on many teams each change is reviewed in a pull request before it is merged.
- Build: a runnable package made, usually automatically, from one exact version of the code, with its own identifier; a team may produce many a day.
- Release: a build the team has decided to give to users, with a version number and release notes.
STORY-142 Apply a promo code at checkout
As a shopper
I want to apply a promo code at checkout
so that I pay the discounted price.
AC1 A valid code reduces the order total before payment.
AC2 An expired code shows the message "This code has expired".
AC3 Only one code can be applied to an order.From idea to operation
Put roles and work products together and you get the path every change travels. The next module calls it the software development lifecycle (SDLC) and compares the models teams use to organise it; here is the simple version.
- 1IdeaProduct ownerA backlog item from feedback, a business goal or a regulation
- 2RequirementsProduct owner, business analystUser stories, acceptance criteria, business rules
- 3DesignDesigner, developersScreens and flows, API contracts, data changes
- 4BuildDevelopersReviewed code; the pipeline produces a build
- 5TestTestersTest results, defect reports, confirmation tests
- 6ReleaseProduct owner decides; DevOps engineer deploysA version number and release notes
- 7OperateDevOps engineer, support, whole teamMonitoring, user reports, the next idea
Throughout steps 2–7 Testers take part throughout: reviewing requirements and designs, testing builds, checking releases and reading production feedback.
Back to step 1 What the team learns in operation becomes the next idea
Simplified: the steps overlap and repeat for every change, and one person may hold several roles.
Two cautions. The steps overlap and loop: a defect sends work back to build, an unclear requirement back to requirements. And testers are not limited to the test step: the ISTQB Foundation syllabus recommends a test activity for every development activity, with testers reviewing work products as soon as drafts exist.
- Idea: feedback, a business goal or a regulation; the product owner decides whether it is worth doing.
- Requirements: stories, rules and acceptance criteria, reviewed by testers.
- Design: screens and flows from the designer, the technical design from developers.
- Build: code is written and reviewed; the pipeline produces a build.
- Test: tests run on the build in a test environment; fixes are retested (confirmation testing).
- Release: the team decides the build is ready, and it is deployed to production with release notes.
- Operate: the team monitors and supports the live system; what it learns becomes the next idea.
Worked example: one promo code from idea to operation
An online store keeps receiving support messages from customers who cannot find where to enter a discount code. The product owner moves a promo code field to the top of the backlog, and the business analyst writes STORY-142. Follow it through the remaining steps:
- Requirements: the tester asks what happens to the discount if an item is removed, and whether codes are case-sensitive. The answers become AC4 and AC5 before any code exists.
- Design: the tester asks for a loading state, because checking a code calls the server.
- Build and test: after pull request 318 is merged, the pipeline produces build 1047 and deploys it to the test environment. The tester reports two defects, each naming build 1047 and the failed criterion, and confirms the fixes in build 1049 (confirmation testing).
- Release: build 1049 goes to production as version 4.6.0, and the tester makes a short check right after the deployment.
- Operate: a user reports a valid code rejected because of a trailing space. The fix goes into the next release with a new regression test, and the loop closes.
Try it: Acceptance Criteria Generator Try it: User Story → Test Scenarios
Common mistakes
- Thinking testing starts when the code is finished. Requirements and designs can be reviewed, and their defects found, before any code exists.
- Treating the steps as a one-way line; work loops back whenever a defect or an unclear requirement appears.
- Testing "the app" instead of a specific build: a defect report that does not name the build and environment is often impossible to reproduce.
- Testing against what the screen shows instead of the requirement, so you cannot tell a defect from intended behaviour.
- Assuming quality is the tester’s job alone. ISTQB describes a whole-team approach in which everyone is responsible for quality.
The QA perspective
On a real team, know for each piece of work which step it is at, which work product is the source of truth and who owns it; that tells you whom to ask. Business rules go to the product owner or analyst, screen states to the designer, "which build has the fix?" to a developer. Join backlog refinement sessions, where questions are cheapest.
Record identifiers everywhere: every test result and defect report names the requirement, the build or version, and the environment. After a release, read production signals and user reports; they show what your tests missed.
Practice exercise
Map a feature from idea to operation
A clinic booking app wants to text patients a reminder 24 hours before their appointment. For each of the seven steps, write the main role, the work product and one thing a tester can do or ask. Then list what a defect report must contain so that a developer knows exactly which version failed.
Show the model answer
Idea — product owner; a backlog item. Ask how success will be measured, such as fewer missed appointments.
Requirements — product owner or business analyst; a story with acceptance criteria. Ask: what if the booking is less than 24 hours ahead? Which time zone counts? What if the patient cancels after the reminder?
Design — designer and developers; the message wording in each language and the technical design of the scheduled job. Ask how sending failures are logged.
Build — developers; code and a build. Prepare appointments 23, 24 and 25 hours ahead, and ask how to trigger the job without waiting a day.
Test — tester; test results and defect reports. Run the prepared cases, including a booking cancelled after the reminder, with test phone numbers, never real patients’ numbers.
Release — the product owner decides, the DevOps engineer deploys; a version and release notes. Check that reminders are scheduled in production.
Operate — DevOps engineer and support; monitoring of failed messages. Turn complaints into new test cases.
Defect report: the build or version, the environment, the requirement or criterion it breaks, and the date, time and time zone of the test, since reminders depend on time.
Frequently asked questions
Do I need to know how to code to work in this process?
Not to begin. A tester needs to understand the steps, read the work products and talk to every role. Reading code becomes useful later, for example when you review unit tests or automate checks, and the automation modules of this roadmap teach it.
Is this the software development lifecycle (SDLC)?
It is a simplified preview of it. ISTQB describes the SDLC as the activities performed at each stage of software development and how they relate to one another, logically and in time. Models such as Waterfall, the V-model and Agile arrange the same activities differently; the next module compares them.
What is the difference between a build and a release?
A build is a runnable package made from one version of the code; a team may produce many a day, and most are only tested. A release is a build the team has decided to give to users, with a version number and release notes. Every release is a build, but most builds are never released.
What is a test environment, and why not test in production?
A test environment is a separate copy of the system where builds are installed for testing, with test data instead of real customers’ data. Testing there means a failure harms no real user and the data can be reset. Some checks are also made in production after a release, but carefully and with the team’s agreement.
References
- ISTQB Certified Tester Foundation Level (CTFL) v4.0The foundation syllabus of software testing: test levels and types, test design techniques, test management and tools.
- ISTQB GlossaryThe standard definitions of testing terms — test case, regression testing, severity, priority, boundary value analysis and the rest.
- The 2020 Scrum GuideThe definition of Scrum: its accountabilities, events and artifacts, including the Definition of Done that testing helps meet.
- About pull requestsWhat a pull request is: a proposal to merge changes from one branch into another, with a place to discuss, review and run checks before the merge.
Practise with Mutqan tools
Generate Given/When/Then acceptance criteria and a definition-of-done checklist from a user story.
Derive end-to-end test scenarios from a user story, including alternate and exception flows.
Convert a list of numbered requirements into traceable test cases with a requirement-to-test matrix.
Compare two texts line by line or word by word and highlight differences.
Go deeper
Your progress on this topic
Not started
Mark the topic complete when you have studied it and done the exercise.
Sign in to track your progress
Mark topics complete, continue where you left off and unlock specialisation exams.