# Software development

> CIE A-Level Computer Science · CIE 9618
> Source: https://www.owlsprep.com/study/cie-9618-u12-overview/
> Weight: n/a

This unit covers the full end-to-end process of building and maintaining software, from initial planning through to post-release updates. You will learn core methodologies and best practices for professional software projects.

**Prerequisites:** Basic understanding of programming fundamentals and computer systems

## Learning objectives

- Explain the purpose of each stage of the end-to-end software development process
- Select appropriate lifecycle models and design methods for different software project types
- Apply core testing, debugging, and maintenance practices to software development work
- Describe key principles of managing software projects successfully

## Unit at a glance

This unit follows the natural flow of a real-world software project, starting from planning and requirement gathering, moving through design and implementation, then covering testing, release, and ongoing post-release maintenance. Each sub-topic builds on the previous one to give you a complete end-to-end understanding of how software is developed.

A core unifying theme across this unit is learning how to match the right methodology and approach to the size, scope, and requirements of different projects, from small personal tools to large enterprise applications.

This unit is split into 7 ordered sub-topics, following the flow of a typical development project:
- [Software lifecycle](https://www.owlsprep.com/study/cie-9618-u12-software-lifecycle/) — Covers common lifecycle models (waterfall, agile, spiral) and their appropriate use cases.
- [Requirement analysis](https://www.owlsprep.com/study/cie-9618-u12-requirement-analysis/) — Explains how to elicit, document, and validate functional and non-functional user requirements.
- [Software design methods](https://www.owlsprep.com/study/cie-9618-u12-software-design-methods/) — Introduces structured and object-oriented design approaches and core modelling tools.
- [Testing](https://www.owlsprep.com/study/cie-9618-u12-testing/) — Covers different testing levels, types, and strategies for verifying software functionality.
- [Debugging](https://www.owlsprep.com/study/cie-9618-u12-debugging/) — Explains systematic approaches to identifying, isolating, and fixing software defects.
- [Software maintenance](https://www.owlsprep.com/study/cie-9618-u12-software-maintenance/) — Describes the different categories of post-release software maintenance.
- [Software project management](https://www.owlsprep.com/study/cie-9618-u12-software-project-management/) — Covers project planning, risk management, team roles, and quality assurance.

## Common pitfalls

- **Wrong:** Confusing when to use agile vs waterfall lifecycle models
  - Why it fails: Choosing the wrong model often leads to scope creep, missed deadlines, or unmet stakeholder requirements
  - Correct: Match your lifecycle model to the stability of requirements and size of the project
- **Wrong:** Treating testing as a final step only after all code is written
  - Why it fails: Testing should start early to catch costly issues in requirements and design before implementation
  - Correct: Incorporate testing activities at every stage of the development lifecycle

## Cheatsheet

| Concept | Key Summary |
| --- | --- |
| Functional requirements | Define what a software system must do (features, actions, outputs) |
| Non-functional requirements | Define how a system performs (speed, security, usability, reliability) |
| Waterfall model | Linear sequential model, best for fixed, stable requirements |
| Agile model | Iterative incremental model, best for projects with evolving requirements |
| Unit testing | Tests individual small code components in isolation |
| Integration testing | Tests how multiple combined components work together |
| System testing | Tests the complete, fully integrated software system |
| Corrective maintenance | Post-release work to fix discovered defects |

## What's next

Begin this unit by exploring core software lifecycle models, the foundation for all other topics in this unit. Once you complete all sub-topics in this unit, you can move on to the first topic of the next unit covering database fundamentals for CIE A-Level Computer Science.

- [Software lifecycle](https://www.owlsprep.com/study/cie-9618-u12-software-lifecycle/)
- [Requirement Analysis](https://www.owlsprep.com/study/cie-9618-u12-requirement-analysis/)
- [Software Design Methods](https://www.owlsprep.com/study/cie-9618-u12-software-design-methods/)

---

From [OwlsPrep](https://www.owlsprep.com) — free study guides for A-Level, IB, AP and IGCSE, written against the official syllabus. Canonical page: https://www.owlsprep.com/study/cie-9618-u12-overview/
