Revisionโ€บOCR A Levelโ€บSoftware & Software Development
OCR A Level H446 ยท Topic 1.2

Software & Software Development

60 practice questions

Practice Questions

60 questions

Explain the difference between assemblers, compilers, and interpreters.

medium

What does a linker do?

medium

What is a loader?

medium

Explain what an API is.

medium

What does "portability" mean for high-level languages?

easy

Explain the difference between open source and proprietary software.

easy

What is the purpose of utility software?

easy

What is the role of a linker in the software development process?

hard

Explain why utility software such as a backup tool is considered system software rather than application software.

easy

Which of the following is an example of system software?

easy

What are the four main functions of an operating system?

easy

What is the role of the OS in handling interrupts?

medium

Explain the difference between a process and a thread.

hard

Describe the role of memory management as a function of an operating system.

medium

What is 'virtual memory'?

medium

Describe two functions of the file management (file system) component of an operating system.

medium

What is the purpose of a device driver?

easy

Explain what is meant by 'paging' as used in memory management, and what happens when a 'page fault' occurs.

hard

Which function of an operating system is responsible for deciding which areas of RAM are allocated to which running processes?

medium

Describe the role of input/output (I/O) management as a function of an operating system.

medium

In round-robin CPU scheduling, each process is:

easy

Explain how round-robin scheduling works, including the term 'time quantum'.

medium

An advantage of the shortest job first (SJF) scheduling algorithm is that it:

medium

Explain how shortest job first (SJF) scheduling works, and describe one drawback of this approach.

medium

In priority scheduling, the CPU is allocated next to:

easy

Explain the risk of 'starvation' in priority scheduling, and describe how 'aging' can be used to address it.

hard

Which scheduling algorithm is most likely to cause 'starvation' for long-running processes, as shorter processes keep being given priority?

medium

Compare round-robin scheduling with first come, first served (FCFS) scheduling in terms of how quickly processes receive a response from the CPU.

medium

If the time quantum in round-robin scheduling is set too small, what is the likely effect?

hard

Explain the difference between pre-emptive and non-pre-emptive scheduling algorithms, giving an example of each.

medium

What is a virtual machine?

medium

Which type of software translator converts source code into an intermediate form that is then run by a virtual machine, rather than directly into native machine code?

hard

What is a 'hypervisor'?

easy

Explain the difference between a Type 1 and a Type 2 hypervisor.

medium

Why are virtual machines often used when testing new software?

medium

Explain why a company might use virtual machines for 'server consolidation'.

medium

A security benefit of running an application inside a virtual machine is that:

medium

Explain how a hypervisor allocates physical hardware resources (such as CPU time and RAM) between multiple virtual machines running on the same physical computer.

hard

A disadvantage of using virtual machines is that:

medium

Explain why a business might use a virtual machine to run an older piece of software that requires an outdated operating system.

medium

What is the difference between procedural and object-oriented programming?

medium

Which of the following is a key feature of the agile development methodology?

easy

Explain one advantage and one disadvantage of the waterfall methodology.

medium

Explain why version control software (e.g. Git) is useful when developing software as part of a team.

medium

In the Extreme Programming (XP) methodology, what is "pair programming"?

medium

The spiral model of software development combines elements of:

medium

Explain the role of 'risk analysis' in the spiral model of software development.

hard

Which of the following lists the typical phases of the waterfall model in the correct order?

easy

Explain why the spiral model might be more suitable than the waterfall model for a large, high-risk software project.

medium

In agile development, a 'sprint' typically refers to:

easy

Describe three features of an IDE that support development.

easy

What does a debugger allow a developer to do?

easy

Describe the difference between white-box and black-box testing.

medium

Which IDE feature highlights syntax errors as the programmer types, before the program is run?

easy

Explain what a "breakpoint" is and how it helps when debugging a program.

medium

Describe what is meant by "iterative testing" and why it is preferable to testing only once at the end of a project.

medium

What is the main purpose of unit testing?

easy

Explain the purpose of integration testing, and how it differs from unit testing.

medium

System testing is carried out to check that:

medium

Explain what 'equivalence partitioning' is and how it is used in black-box testing.

hard

Revision Notes

Operating Systems

โญ Exam tip: Memory management (paging/segmentation/virtual memory) and scheduling algorithms are heavily examined โ€” be able to compare scheduling algorithms and explain a downside of each.

Functions of an OS

The OS sits between hardware and software, managing resources and providing a consistent platform. Core jobs: memory management, processor scheduling, interrupt handling, file management, device management (via drivers), security/access control and providing a user interface.

Memory techniqueHow it worksStrength / weakness
PagingMemory divided into fixed-size pages loaded into any free framesNo external fragmentation; pages need not be contiguous
SegmentationMemory divided into variable-size logical segments (a whole module/array)Matches program structure; can cause external fragmentation
Virtual memoryDisk used as extra "RAM"; inactive pages swapped outRuns large programs; too much swapping = thrashing
Scheduling algorithmIdeaDrawback
Round robinEach process gets a fixed time slice (quantum) in turnIgnores priority; quantum size is a trade-off
First come first served (FCFS)Run in arrival order until each finishesA long job delays all behind it (convoy effect)
Shortest job first (SJF)Run the shortest job nextNeeds run-time estimate; long jobs may starve
Shortest remaining time (SRT)Pre-emptive SJF โ€” switch if a shorter job arrivesContext-switch overhead; starvation
Multi-level feedback queuesSeveral priority queues; jobs move between themComplex to design and tune
The goal of scheduling:Maximise CPU use and throughput, minimise response and wait time, and ensure fairness (no process starves). Scheduling matters because the CPU is far faster than I/O, so the OS interleaves processes to keep the CPU busy while others wait for I/O.
Interrupts & the ISR:An interrupt is a signal requesting CPU attention (I/O complete, hardware error, timer, software exception). At the end of each FDE cycle the CPU checks the interrupt register; if a pending interrupt has higher priority than the current task, the CPU pushes its registers/state onto the stack, loads the address of the matching Interrupt Service Routine, runs it, then pops the saved state and resumes.
Types of OS:Distributed (one OS spread over many networked machines sharing load), embedded (fixed, minimal, low-resource โ€” e.g. a washing machine), multi-tasking (time-slices to appear simultaneous), multi-user (schedules resources between users), real-time (guarantees a response within a strict deadline โ€” e.g. engine management, pacemaker).
BIOS, drivers & virtual machines:The <strong>BIOS</strong> runs first at power-on, performs the POST (power-on self test) and loads the bootloader/OS. <strong>Device drivers</strong> translate generic OS commands into the specific signals a hardware device understands. A <strong>virtual machine</strong> runs intermediate code on a software-emulated CPU, giving platform independence (e.g. Java bytecode) and sandboxed isolation, at the cost of speed.
๐Ÿ’ก Comparing scheduling algorithms: always pair a benefit with a specific drawback, e.g. "SJF minimises average waiting time but can starve long processes and requires the burst time to be known or estimated in advance."

Applications Generation & Translators

โญ Exam tip: The stages of compilation and "compiler vs interpreter" are perennial questions โ€” learn all four stages and give the executable/error-reporting differences.
Applications vs utility software:Application software performs a user task (word processor, browser, game). Utility software maintains/optimises the system (disk defragmenter, backup, file compression, anti-malware, disk clean-up).
Open vs closed source:Open source: source code is freely available to view, modify and redistribute (Linux, Firefox) โ€” benefits include community auditing and no licence fee, but support may be informal. Closed/proprietary: source is secret and used under licence (Windows, macOS) โ€” benefits include dedicated support and accountability, but cost and no right to modify.
TranslatorTranslatesOutput & speedErrorsSource protection
CompilerWhole program โ†’ machine code onceStandalone executable; slow to compile, fast to runReported all together after compilingSource not distributed
InterpreterOne statement at a time, every runNo executable; slower executionStops at the first error (good for debugging)Source usually distributed
AssemblerAssembly mnemonics โ†’ machine code (1:1)Fast, very low-levelPer instructionN/A
The four stages of compilation
1. LEXICAL ANALYSIS
   - source code split into tokens
   - whitespace and comments removed
   - identifiers/keywords added to the symbol table
2. SYNTAX ANALYSIS (parsing)
   - tokens checked against the language grammar
   - an abstract syntax tree (AST) is built
   - syntax errors reported here
3. CODE GENERATION
   - object (machine) code produced from the AST
4. OPTIMISATION
   - code rearranged/reduced to run faster or use
     less memory (e.g. removing redundant operations)
Linkers, loaders & libraries:A <strong>library</strong> is pre-written, pre-tested reusable code. A <strong>linker</strong> combines the compiled program with the library modules it uses โ€” <em>static</em> linking copies them into the executable (larger but self-contained); <em>dynamic</em> linking loads shared libraries (DLLs) at run time (smaller, shareable, but the library must be present). A <strong>loader</strong> copies the executable into memory and prepares it to run.
๐Ÿ’ก "Why might a developer choose an interpreter during development but compile for release?" Model answer: "An interpreter stops at the first error and runs code immediately, making it faster to test and debug. For release, a compiler produces a fast standalone executable that runs without the source and does not need a translator installed on the user's machine."
โš ๏ธ Common mistake: Java is not "compiled OR interpreted" โ€” it is both: the compiler produces platform-independent bytecode, which the JVM (a virtual machine) then interprets/JIT-compiles. Mention bytecode when discussing portability.

Software Development Methodologies & Testing

โญ Exam tip: Be able to recommend a methodology for a given scenario and justify it โ€” the marks are in matching the methodology to the project's requirements stability.
MethodologyApproachStrengthsWeaknesses
WaterfallStrict sequential phases, sign-off each stageClear documentation; predictable; easy to manageInflexible; errors found late; user sees product only at end
Agile (Scrum)Iterative sprints; working software every 2โ€“4 weeksFlexible; constant user feedback; welcomes changeLess documentation; scope creep; harder to cost/timetable
Extreme Programming (XP)Agile + pair programming + test-firstVery high code quality; fast feedbackLabour-intensive; needs disciplined team
SpiralIterative with risk analysis each loopRisk-managed; suits large, high-risk projectsExpensive; complex; needs risk expertise
RADRapid prototyping + user evaluationFast; user-centred; good for unclear requirementsNot for large/complex systems; needs skilled team
Agile values:Individuals and interactions over processes and tools; working software over comprehensive documentation; customer collaboration over contract negotiation; responding to change over following a plan.
Test typeWhat it checksRun by
UnitA single function/module in isolationDeveloper
IntegrationModules working correctly togetherDeveloper / QA
SystemThe whole system against requirementsQA team
AlphaIn-house testing before any releaseInternal testers
BetaLimited release to real usersSelected end users
AcceptanceSystem meets the client's requirementsClient / end user
RegressionA change has not broken existing featuresAutomated suite
Black-box vs white-box testing:Black-box: tests are designed from the specification (inputs โ†’ expected outputs) with no knowledge of the code. White-box: tests are designed from the code to exercise every path/branch. Choose test data that is normal/valid, boundary (just inside/outside limits) and erroneous/invalid.
Choosing test data
A field accepts an exam mark 0โ€“100.
  Normal   : 47        (clearly valid)
  Boundary : 0, 100    (lowest/highest valid)
             -1, 101   (just-invalid boundaries)
  Erroneous: "abc", 9999, blank  (wrong type/way out)
Good test plans always include all three categories.
๐Ÿ’ก Recommending a methodology: "Agile suits this app because the client is unsure of the exact features and wants to refine them as they see prototypes; the iterative sprints allow requirements to change without restarting. Waterfall would risk building the wrong product because requirements are fixed only once at the start."
โš ๏ธ Common mistake: Beta testing is NOT the same as acceptance testing. Beta = real users trial a near-finished product to find remaining bugs; acceptance = the client formally checks the system meets the agreed requirements before sign-off.

Types of Programming Language & Addressing

Programming paradigms:Procedural: a sequence of instructions grouped into procedures/functions, executed in order. Object-oriented: data and the operations on it are bundled into objects. Assembly/low-level: human-readable mnemonics mapping 1:1 to machine code, giving fine hardware control. Declarative (e.g. functional/logic): describe WHAT result is wanted, not the step-by-step HOW.
Little Man Computer (assembly)
INP        ; input a number into ACC
STA num    ; store ACC in memory location "num"
INP        ; input a second number into ACC
ADD num    ; ACC = ACC + contents of num
OUT        ; output the value in ACC
HLT        ; stop
num DAT     ; reserve/label a data location

Key idea: each mnemonic = one machine instruction
(opcode + operand). This is procedural + low-level.
Addressing modeThe operand isโ€ฆUse / note
Immediatethe actual value to useFastest โ€” value is in the instruction
Directthe memory address of the valueOne memory access to get the value
Indirectthe address OF the address of the valueA pointer; enables flexible access
Indexeda base address, plus an index registerPerfect for arrays: base + i
Indexed addressing for an array
Array starts at address 200, index register IR.
To access array[3]:
  effective address = 200 + 3 = 203
Incrementing IR walks through the array โ€” this is
exactly how a FOR loop over an array is implemented
in machine code.
๐Ÿ’ก Link addressing modes to high-level constructs in your answer: "indexed addressing computes base + index, which is how array[i] is located; indirect addressing uses a stored address (a pointer), which is how reference/pointer variables work."