Software Development
Software Development tests the life cycle, development methods, testing, and the tools that turn requirements into working software. Expect scenario questions that ask which phase, test level, or model fits.
Core rules
- The SDLC typically includes planning, requirements analysis, design, implementation, testing, deployment, and maintenance. Maintenance often consumes the largest share of lifetime effort.
- Waterfall is sequential and document-driven; it suits stable, well-understood requirements. Agile is iterative and incremental, with frequent delivery and customer collaboration. Scrum uses a Product Owner, Scrum Master, and Developers; artifacts include the product backlog, sprint backlog, and increment.
- Functional requirements describe what the system does; nonfunctional requirements describe qualities such as performance, security, and usability.
- Testing levels: unit tests one component; integration tests interfaces between components; system tests the whole system; acceptance tests whether the business need is met. Regression testing checks that changes did not break existing behavior.
- Verification asks whether the product was built correctly against the specification; validation asks whether the right product was built for the user.
- Black-box testing uses inputs and outputs without seeing code; white-box testing uses code structure and paths.
- Version control records commits, branches, and merges, enabling rollback and collaboration. CI/CD automates build, test, and deployment steps.
- A compiler translates a whole program before execution; an interpreter translates and executes statements sequentially. APIs define how software components communicate.
Worked example
A team builds a login feature. A unit test checks the password-hashing function against known inputs. An integration test checks the login service against the user database. A system test runs the full web flow from browser to database. An acceptance test asks real users whether they can sign in as required. Reasoning: choose the test level by the scope of what is under test, not by who runs it.
Traps
- Reversing verification and validation.
- Confusing alpha testing (internal) with beta testing (external users).
- Treating a compiler as an interpreter or vice versa.
- Assuming testing proves the absence of all defects.
- Skipping regression tests after a small change.