First 50 of 200 questions. Each one lists the choices, the correct answer, and an explanation. The checker at the top of this page saves progress in this browser when it is available.
Continue in the practice tool above to load more questions, 50 at a time.
Question 1Software engineering fundamentals and the software development life cycle
Which phase of the software development life cycle is primarily concerned with establishing what the system must do, independent of how it will be built?
- Implementation
- Maintenance
- Deployment
- Requirements analysis Correct answer.
Explanation
Requirements analysis captures and validates stakeholder needs, producing a specification of functional and non-functional requirements. It deliberately describes the problem space rather than committing to a technical solution, which is the job of design and implementation.
Question 2Software engineering fundamentals and the software development life cycle
A team builds a prototype, shows it to users, refines it, and repeats until the users are satisfied, then hardens the result. Which SDLC model does this describe?
- Iterative prototyping Correct answer.
- V-model
- Waterfall
- Big bang integration
Explanation
Iterative prototyping develops successive working versions, each informed by user feedback, so requirements emerge progressively. This contrasts with sequential models that freeze requirements before construction begins.
Question 3Software engineering fundamentals and the software development life cycle
In a Scrum team, which artefact is a prioritised, evolving list of everything the product may need?
- Product backlog Correct answer.
- Burndown chart
- Definition of done
- Sprint backlog
Explanation
The product backlog is the single ordered source of desired work for the product, owned by the product owner and refined continuously. The sprint backlog is the subset selected for one sprint, and the burndown chart visualises remaining effort.
Question 4Software engineering fundamentals and the software development life cycle
What is the main purpose of a feasibility study early in a project?
- To write detailed test cases for each module
- To estimate the exact number of defects remaining
- To determine whether the project is worth pursuing given technical, economic and organisational constraints Correct answer.
- To produce the final user manual
Explanation
A feasibility study assesses whether a proposed system can and should be built, weighing technical practicality, cost-benefit and organisational fit. It informs the go/no-go decision before major resources are committed.
Question 5Software engineering fundamentals and the software development life cycle
Which document typically records the agreed scope, deliverables, milestones and acceptance criteria for a project?
- Version control history
- Code review log
- Incident report
- Project plan Correct answer.
Explanation
The project plan sets out scope, schedule, deliverables and the criteria by which completion will be judged. It provides the baseline against which progress and change requests are assessed.
Question 6Software engineering fundamentals and the software development life cycle
Which practice best supports traceability between requirements and the rest of the life cycle?
- Recording requirements only in verbal conversations
- Deleting requirements once coding begins
- Giving each requirement a unique identifier and linking it to design, code and test artefacts Correct answer.
- Storing all requirements in a single shared word-processing file with no identifiers
Explanation
Unique identifiers let each requirement be linked forward to design, code and tests, and backward to its source. This bidirectional trace makes impact analysis and coverage checks possible.
Question 7Software engineering fundamentals and the software development life cycle
What distinguishes a functional requirement from a non-functional requirement?
- Functional requirements are optional, while non-functional requirements are mandatory
- Functional requirements are written by developers, while non-functional requirements are written by users
- Functional requirements describe system behaviour, while non-functional requirements describe qualities or constraints such as performance Correct answer.
- Functional requirements apply only to hardware, while non-functional requirements apply only to software
Explanation
Functional requirements state what the system must do, such as calculations or workflows. Non-functional requirements constrain how well it does so, covering performance, security, usability and similar quality attributes.
Question 8Software engineering fundamentals and the software development life cycle
Which activity is characteristic of the maintenance phase rather than initial development?
- Eliciting requirements for a system that does not yet exist
- Correcting a defect discovered by users after the system has gone live Correct answer.
- Choosing a programming language for a greenfield project
- Designing the database schema for the first release
Explanation
Maintenance covers corrective, adaptive, perfective and preventive changes made after release. Fixing a live defect is the classic corrective maintenance activity.
Question 9Software engineering fundamentals and the software development life cycle
A client keeps changing requirements during a fixed-price project with a signed contract. Which action best reflects sound change management?
- Ask developers to decide informally which changes to accept
- Reject all changes for the duration of the contract
- Implement every change immediately and absorb the extra cost
- Log each change request, assess its impact on scope, cost and schedule, and have it formally approved before implementation Correct answer.
Explanation
Change control records each request, evaluates its effect on scope, cost and schedule, and requires authorised approval before work proceeds. This preserves the integrity of the agreed baseline and keeps stakeholders informed.
Question 10Software engineering fundamentals and the software development life cycle
A safety-critical medical device must be exhaustively verified against documented requirements. Which SDLC approach is most appropriate?
- Pure Scrum with no requirement documentation
- Ad-hoc coding with no documentation
- Prototyping that is never hardened
- Waterfall with formal verification at each stage Correct answer.
Explanation
Safety-critical systems need rigorous, documented verification and traceability, which a staged model with formal reviews provides. The emphasis is on evidence that each requirement has been verified before release.
Question 11Software engineering fundamentals and the software development life cycle
In Scrum, what is the primary purpose of the daily stand-up?
- To approve changes to the product backlog
- To produce the final release notes
- To let the team inspect progress toward the sprint goal and adapt its plan Correct answer.
- To conduct formal performance appraisals of team members
Explanation
The daily stand-up is a short, time-boxed inspection in which the team synchronises work and replans toward the sprint goal. It is a coordination event, not a reporting or appraisal session.
Question 12Software engineering fundamentals and the software development life cycle
A team estimates that a module has 4,000 lines of code. Historical data shows a defect density of 2 defects per 1,000 lines. What is the expected number of defects?
- 4
- 2
- 8 Correct answer.
- 80
Explanation
Defect density expresses defects per unit of code, so the expected count is (4000 / 1000) x 2 = 8. Multiplying the number of thousands of lines by the density gives the estimate.
Question 13Software engineering fundamentals and the software development life cycle
Which statement best describes the role of the product owner in Scrum?
- Removing technical obstacles for the team
- Maximising product value by ordering and clarifying the product backlog Correct answer.
- Facilitating ceremonies and coaching the team on Scrum
- Writing all of the production code
Explanation
The product owner is accountable for maximising value, chiefly by ordering the backlog and ensuring items are clear enough to work on. This single point of accountability keeps priorities coherent.
Question 14Software engineering fundamentals and the software development life cycle
During design, a team decides to hide a database access class behind a stable interface so the storage engine can later be swapped. Which design principle does this illustrate?
- Encapsulation of implementation detail Correct answer.
- Duplicated business logic
- Global mutable state
- Hard-coded configuration
Explanation
Encapsulation hides implementation behind a stable interface, so internal changes do not ripple to callers. This reduces coupling and makes future substitution of the storage engine feasible.
Question 15Software engineering fundamentals and the software development life cycle
A project is three weeks behind schedule with a fixed deadline. Which response is most consistent with iterative delivery?
- Silently extend working hours indefinitely
- Negotiate scope with the product owner, prioritising the highest-value items for the deadline Correct answer.
- Deliver untested code and fix defects after release
- Drop testing to recover the schedule
Explanation
Iterative methods protect quality and time by flexing scope, guided by value-based prioritisation. The product owner reorders the backlog so the most valuable increments are completed first.
Question 16Software engineering fundamentals and the software development life cycle
What is the main benefit of conducting a structured walkthrough of a design document before coding begins?
- It guarantees the software will contain no defects
- It surfaces misunderstandings and design flaws while changes are still inexpensive Correct answer.
- It removes the need for version control
- It replaces the need for any testing later in the project
Explanation
Early review catches ambiguity and design errors when correction costs are low, because nothing has yet been built on the flawed decision. It complements, rather than replaces, later testing.
Question 17Software engineering fundamentals and the software development life cycle
A team adopts continuous integration. Which outcome most directly results from this practice?
- Deployment to production becomes impossible
- The need for automated tests is eliminated
- Integration problems are detected shortly after each change is committed Correct answer.
- Requirements are frozen at project start
Explanation
Continuous integration merges each change into a shared mainline frequently and runs automated builds and tests, so integration faults surface quickly. Small, frequent merges are far cheaper to diagnose than large, infrequent ones.
Question 18Software engineering fundamentals and the software development life cycle
Which risk response is being applied when a team buys insurance against the failure of a critical third-party service?
- Avoidance
- Transference Correct answer.
- Acceptance
- Mitigation
Explanation
Transference shifts the financial consequence of a risk to a third party, such as an insurer. The risk event may still occur, but its impact is borne elsewhere.
Question 19Software engineering fundamentals and the software development life cycle
A stakeholder asks for a report that shows how each requirement is verified by at least one test. Which artefact provides this evidence?
- A purchase order
- A staff roster
- A requirements traceability matrix Correct answer.
- A network diagram
Explanation
A requirements traceability matrix maps each requirement to the design elements and test cases that cover it. Reviewers can then confirm that no requirement lacks verification.
Question 20Software engineering fundamentals and the software development life cycle
Which situation most strongly justifies choosing an adaptive, iterative approach over a plan-driven one?
- The system is small and the technology is familiar
- Regulatory rules demand a complete specification before any work starts
- Requirements are uncertain and expected to evolve as users see working software Correct answer.
- Requirements are stable, well understood and unlikely to change
Explanation
When requirements are uncertain, short iterations with working software generate feedback that clarifies what is actually needed. Plan-driven approaches suit stable, well-understood problems better.
Question 21Software engineering fundamentals and the software development life cycle
A team plans eight two-week sprints. After four sprints they have completed 96 story points, and the remaining backlog is 120 points. At the current average velocity, how many additional sprints are needed?
- 5 Correct answer.
- 3
- 10
- 6
Explanation
Velocity is 96 / 4 = 24 points per sprint, so 120 remaining points require 120 / 24 = 5 sprints. This assumes the backlog and team capacity stay reasonably stable.
Question 22Software engineering fundamentals and the software development life cycle
A team claims to be agile but delivers nothing usable until the final month and holds no retrospectives. Which diagnosis is most defensible?
- The team is following Scrum exactly as specified
- The team has adopted agile vocabulary without the underlying feedback practices Correct answer.
- The team has eliminated all project risk
- The team is using the V-model correctly
Explanation
Agility depends on short feedback loops, working increments and regular reflection, not on labels. Delivering only at the end and skipping retrospectives removes the very mechanisms that make iterative work effective.
Question 23Software engineering fundamentals and the software development life cycle
A defect found during the design phase costs far less to fix than an equivalent defect found in production. Which explanation best accounts for this difference?
- Production defects are always trivial
- Later defects require rework across artefacts already built on the flawed decision, plus deployment and recovery costs Correct answer.
- Designers are paid less than support staff
- Design documents are never used after approval
Explanation
As work progresses, more artefacts depend on earlier decisions, so a late fix triggers rework, retesting, redeployment and often user disruption. Early correction avoids this compounding cost.
Question 24Software engineering fundamentals and the software development life cycle
A team uses a Kanban board with a work-in-progress limit of three per column. A fourth item arrives at a column that already holds three. What should happen?
- The team stops starting new work upstream until capacity frees up Correct answer.
- The item is pushed into the column and the limit is ignored
- The item is deleted from the backlog
- The limit is raised automatically to four
Explanation
Work-in-progress limits constrain flow, so when a column is full, upstream work pauses until an item leaves. This exposes bottlenecks and reduces multitasking and queue growth.
Question 25Software engineering fundamentals and the software development life cycle
Two proposals exist for a module. Proposal A is cheaper to build but tightly couples to a vendor API; Proposal B costs more initially but isolates the vendor behind an adapter. Which reasoning is strongest?
- Choose A because initial cost is the only relevant factor
- Choose B because total cost of ownership should include future change and lock-in risk Correct answer.
- Choose A because coupling always improves performance
- Choose B because adapters eliminate the need for testing
Explanation
Life-cycle costing weighs initial build cost against future maintenance, substitution and lock-in risk. Isolating the vendor through an adapter makes later replacement cheaper, which often outweighs the higher initial outlay.
Question 26Software engineering fundamentals and the software development life cycle
Which document typically records the agreed scope, deliverables, milestones and acceptance criteria for a software project?
- The statement of work Correct answer.
- The incident log
- The test coverage report
- The source code repository
Explanation
A statement of work is the contractual document that defines what will be delivered, by when, and how completion will be judged, so it anchors scope and acceptance criteria. Other artefacts record implementation details or operational history rather than agreed project commitments.
Question 27Software engineering fundamentals and the software development life cycle
A team writes user stories on cards, estimates them, and orders them by business value before each iteration. Which life cycle phase does this activity primarily belong to?
- Requirements analysis Correct answer.
- Deployment
- Maintenance
- Implementation
Explanation
Eliciting user needs, estimating effort and prioritising by value are all activities of requirements analysis, which establishes what the system must do and how important each item is. Implementation, deployment and maintenance all assume the requirements have already been established.
Question 28Software engineering fundamentals and the software development life cycle
A development team must choose a process model for a project where the requirements are well understood and stable, and the client requires formal sign-off at each stage. Which choice fits best?
- Extreme programming with continuous refactoring
- Prototyping with throwaway models
- The waterfall model with stage-gate reviews Correct answer.
- Exploratory ad hoc coding without defined stages
Explanation
When requirements are stable and formal approval is required at each stage, a sequential model with explicit stage gates matches the governance needs and avoids rework from late discovery. Exploratory and iterative approaches suit uncertain requirements but do not naturally provide the required formal sign-off points.
Question 29Software engineering fundamentals and the software development life cycle
A team must deliver a system in which a failure could injure users, and every requirement must be traced to design, code and test evidence. Which combination of practices best supports this obligation?
- Automated deployment with monitoring dashboards
- Pair programming with informal verbal design discussions
- Frequent releases with user acceptance testing only
- Formal reviews, a requirements traceability matrix and independent verification Correct answer.
Explanation
Safety-critical delivery depends on documented evidence that each requirement has been designed, implemented and verified, which formal reviews, a traceability matrix and independent verification together provide. Informal discussions, monitoring and user acceptance alone do not produce auditable links between requirements and verification evidence.
Question 30Software engineering fundamentals and the software development life cycle
A team using a plan-driven approach discovers midway through a project that a key third-party service will be withdrawn. Which response best reflects sound engineering judgement?
- Continue building against the withdrawn service and address the problem during maintenance
- Deliver the remaining modules without informing the client of the change
- Abandon all documentation and switch the whole project to ad hoc coding
- Reassess the affected requirements and design, update the plan and risk register, and renegotiate scope or schedule with stakeholders Correct answer.
Explanation
A significant change to an external dependency invalidates earlier assumptions, so the team should revisit requirements and design, record the risk, and renegotiate commitments transparently. Deferring the issue or hiding it from stakeholders increases cost and erodes trust, and discarding all documentation removes the basis for control.
Question 31Structured and object-oriented programming concepts
In object-oriented programming, what is the main purpose of a class?
- To convert source code into machine instructions
- To link external libraries into a program
- To define the structure and behaviour that its objects will have Correct answer.
- To store the single runtime value of a global variable
Explanation
A class is a blueprint that groups the attributes (fields) and behaviours (methods) shared by a kind of object. Objects are then created from that blueprint, each holding its own attribute values. Compilation and linking are handled by separate tools, not by the class itself.
Question 32Structured and object-oriented programming concepts
A program creates three objects from a single class. Which statement about their instance variables is correct?
- All three objects share one copy of the instance variables
- Instance variables exist only while a method is executing
- Each object has its own separate copy of the instance variables Correct answer.
- Instance variables cannot be changed after an object is created
Explanation
Instance variables belong to each individual object, so every object created from the class gets its own set of values. Changing a field in one object therefore does not affect the others. Sharing a single copy is the behaviour of static (class) variables, not instance variables.
Question 33Structured and object-oriented programming concepts
What is encapsulation primarily concerned with?
- Creating several methods with the same name but different parameters
- Arranging classes into a hierarchy of increasingly specific types
- Bundling data with the methods that operate on it and restricting direct access Correct answer.
- Allowing a subclass to reuse the methods of its parent class
Explanation
Encapsulation keeps an object's data and the methods that act on that data together, and hides internal state behind a controlled interface. This protects the data from invalid outside changes. The other options describe inheritance and overloading rather than encapsulation.
Question 34Structured and object-oriented programming concepts
Which relationship is an example of inheritance?
- A method takes a String parameter and returns an int
- A SavingsAccount class is defined as a specialised kind of Account class Correct answer.
- A Customer class contains a field of type Address
- A class calls a static utility method from another class
Explanation
Inheritance models an is-a relationship, where one class extends another and adopts its attributes and methods. A savings account genuinely is a kind of account, so this fits. The other options describe composition, method signatures, or simple method calls.
Question 35Structured and object-oriented programming concepts
A method is declared as public void deposit(double amount). What does the void keyword indicate?
- The method can be called only once
- The method cannot accept parameters
- The method is accessible only inside its own class
- The method does not return a value Correct answer.
Explanation
The return type void means the method performs an action and hands back no value to the caller. Access is controlled by the access modifier such as public, not by void. Parameters are still permitted, as the double amount parameter shows.
Question 36Structured and object-oriented programming concepts
In a class diagram, what does the arrow with a hollow triangle pointing from class B to class A typically represent?
- B contains an instance of A
- B inherits from A Correct answer.
- B calls a method of A
- B is an interface implemented by A
Explanation
A hollow closed triangle pointing to the parent denotes generalisation, meaning the source class inherits from the target class. So B extends or inherits from A. Filled diamonds, plain arrows, and dashed lines represent different relationships.
Question 37Structured and object-oriented programming concepts
Which of the following best describes a constructor?
- A special method used to initialise a newly created object Correct answer.
- A method that destroys an object and frees its memory
- A method that returns a copy of an existing object
- A static method that counts how many objects exist
Explanation
A constructor runs when an object is instantiated and is responsible for setting up its initial state. It typically shares the class name and has no return type. Destroying objects, copying objects, and counting instances are separate concerns.
Question 38Structured and object-oriented programming concepts
What does polymorphism allow in an object-oriented program?
- Objects of different classes to be treated through a shared interface Correct answer.
- Variables to change their declared type at runtime
- Methods to be defined without any parameters
- Classes to be defined inside other classes only
Explanation
Polymorphism lets a single reference type or method call work with objects of several related classes, with the actual behaviour chosen at runtime. This is often achieved through overriding. It does not let a variable change its declared type or remove the need for parameters.
Question 39Structured and object-oriented programming concepts
A class declares private int balance; and provides public int getBalance() and public void setBalance(int b). What is the main benefit of this design?
- Access to balance is controlled so invalid values can be rejected Correct answer.
- The field can be accessed directly by any other class
- The balance field becomes shared by every object of the class
- The class no longer needs a constructor
Explanation
Making the field private and exposing controlled accessors means the class can validate or transform values before they are stored. This preserves the object's internal consistency. It does not make the field shared, remove the need for constructors, or allow direct access.
Question 40Structured and object-oriented programming concepts
A superclass declares public void speak() and a subclass declares public void speak() with the same signature. What is this called?
- Method overloading
- Method overriding Correct answer.
- Method composition
- Method hiding through a static method
Explanation
When a subclass supplies its own version of an inherited method with an identical signature, this is overriding. At runtime the subclass version is chosen for subclass objects. Overloading instead involves different parameter lists within the same class.
Question 41Structured and object-oriented programming concepts
A class has two methods: int area(int side) and int area(int length, int width). Which concept does this demonstrate?
- Encapsulation
- Inheritance
- Method overriding
- Method overloading Correct answer.
Explanation
Method overloading occurs when several methods share a name but differ in their parameter lists, allowing the compiler to choose by arguments supplied. Here the two area methods differ in number of parameters. Overriding instead requires an inherited method with an identical signature.
Question 42Structured and object-oriented programming concepts
Consider the code: Animal a = new Dog(); a.makeSound(); where Dog overrides makeSound(). Which method is executed?
- Both methods, one after the other
- Animal's makeSound(), because the variable type is Animal
- Dog's makeSound(), chosen at runtime Correct answer.
- Neither method, because the call is ambiguous
Explanation
With dynamic dispatch, the runtime type of the object determines which overridden method runs, not the declared type of the reference. Since the object is a Dog, Dog's version executes. The declared type only limits which methods are visible to the compiler.
Question 43Structured and object-oriented programming concepts
An abstract class Shape declares abstract double area(). What must a concrete subclass Rectangle do?
- Ignore area() because abstract methods are optional
- Declare area() as static to satisfy the requirement
- Call the abstract method directly from its constructor
- Provide an implementation of area() or itself be declared abstract Correct answer.
Explanation
A concrete subclass must implement every inherited abstract method, otherwise it must also be declared abstract. This guarantees that objects of the subclass have complete behaviour. Abstract methods have no body in the parent, so they cannot simply be ignored.
Question 44Structured and object-oriented programming concepts
What is the key difference between an interface and a class in most object-oriented languages?
- A class cannot contain methods while an interface must
- An interface can be instantiated directly while a class cannot
- An interface specifies required method signatures without providing object state Correct answer.
- An interface allows inheritance while a class does not
Explanation
An interface declares a contract of method signatures that implementing classes must fulfil, and it generally holds no instance state. A class can define fields, constructors, and method bodies and can be instantiated. Both classes and interfaces can participate in inheritance relationships.
Question 45Structured and object-oriented programming concepts
A Student class has a field private Address homeAddress. What kind of relationship does this represent?
- Polymorphism, because Address can take many forms
- Abstraction, because Address hides its fields
- Composition, because a student has an address Correct answer.
- Inheritance, because Student extends Address
Explanation
A field whose type is another class expresses a has-a relationship, often called composition or aggregation. A student has an address rather than being a kind of address. Inheritance would require an is-a relationship between the classes.
Question 46Structured and object-oriented programming concepts
A static counter field is incremented inside a constructor. Three objects are created. What is the value of the counter afterwards, assuming it starts at zero?
- 3 Correct answer.
- 0
- It depends on which object is accessed
- 1
Explanation
A static field belongs to the class rather than to individual objects, so all constructors increment the same shared value. Three constructor calls therefore add three to the single counter. Accessing the counter through any object or the class yields the same result.
Question 47Structured and object-oriented programming concepts
Why is it generally better to declare fields private and expose public methods instead of making fields public?
- It makes the program run faster by avoiding method calls
- It removes the need to test the class
- It lets the class enforce rules about how its data may change Correct answer.
- It allows other classes to modify the data more freely
Explanation
Private fields with public methods give the class a single controlled point where validation and side effects can be applied. This protects invariants even as the implementation changes. Performance, unrestricted modification, and testing needs are not improved by this choice.
Question 48Structured and object-oriented programming concepts
A program defines class Vehicle with method describe(), and class Car extends Vehicle and overrides describe(). A call to super.describe() inside Car's version does what?
- Executes the parent class version of describe() Correct answer.
- Creates a new Vehicle object
- Prevents Car's describe() from running
- Calls describe() on every existing Vehicle object
Explanation
The super keyword refers to the immediate parent class, so super.describe() invokes the inherited implementation rather than the overriding one. This is often used to reuse parent behaviour and then extend it. It does not create objects or affect other instances.
Question 49Structured and object-oriented programming concepts
Which statement best explains why polymorphism reduces the impact of adding a new subclass?
- Existing code that uses the parent type can handle the new subclass without modification Correct answer.
- The new subclass automatically inherits every method from unrelated classes
- All subclasses are merged into one class at runtime
- The compiler rewrites existing code to include the new subclass
Explanation
Code written against a parent type or interface already works with any subclass that honours the same contract. Adding a subclass therefore requires no edits to that existing code. Unrelated classes are unaffected, and no automatic merging or rewriting occurs.
Question 50Structured and object-oriented programming concepts
A class is described as having high cohesion. What does this mean?
- It exposes all of its fields publicly
- Its methods and fields all work toward a single, well-defined responsibility Correct answer.
- It contains as many methods as possible
- It depends on many other classes to perform its work
Explanation
Cohesion measures how strongly the parts of a class belong together around one purpose. High cohesion means the class has a focused responsibility and is easier to understand and maintain. Many dependencies describe coupling, and public fields are unrelated to cohesion.