? 1
? 1
Answer:
The purpose of software testing is to verify that the software functions as
intended and to identify any defects before the software is released. It
helps ensure the system behaves correctly and meets both developer and
customer expectations
Answer:
The goals of program testing are to demonstrate that the software meets
its specified requirements and to identify any incorrect, unexpected, or
undesirable behavior in the system that could lead to defects or failures.
Answer:
Validation testing ensures that the software performs correctly according
to the specified requirements, using normal expected inputs. In contrast,
defect testing aims to uncover system errors using unusual or edge-case
inputs to provoke incorrect behavior.
Answer:
Aim of V & V is to establish confidence that the system is ‘fit for purpose’ .
Depends on system’s purpose, user expectations and marketing
environment
Software purpose
User expectations
Marketing environment
2 | Page
Answer:
Software inspections involve examining system representations (e.g.,
code or documents) to find defects without execution. Software testing
involves executing the program with test data to observe runtime
behavior and detect errors, making it a dynamic verification process.
Answer:
Inspections can detect defects without execution, avoiding the issue of
error masking. They can be applied early, even on incomplete systems,
and help assess quality attributes like maintainability, standards
compliance, and portability beyond just functional correctness.
5. Why should both inspections and testing be used in the V&V
process?
Answer:
Inspections and testing are complementary. Inspections ensure design and
code conform to specifications, while testing validates behavior against
actual use. Together, they provide a broader assurance of software quality
than either method alone.
Answer:
The main stages are:
Answer:
Development testing is carried out by the development team and includes unit testing,
component testing, and system testing. It ensures that individual units work correctly,
components interact properly, and the complete system functions as expected when
integrated.
3 | Page
Answer:
Unit testing focuses on testing individual functions, methods, or classes in isolation to
detect defects. It ensures that each program unit behaves correctly before integrating it
into larger components or systems for further testing.
Answer:
Object class testing involves testing all class operations, accessing and modifying all
attributes, and exercising the object in every valid state. It aims for comprehensive test
coverage to ensure class functionality and reliability.
Answer:
Unit testing focuses on testing individual functions, methods, or classes in isolation to
detect defects. It ensures that each program unit behaves correctly before integrating it
into larger components or systems for further testing.
Answer:
Automated unit testing uses testing frameworks like JUnit to run tests without manual
input. It speeds up the testing process, ensures consistency, and provides quick feedback
via GUI reports, helping developers detect issues early in the development cycle.
Answer:
Automated tests consist of three parts: setup (initializing test inputs and expected
outputs), call (executing the method or object under test), and assertion (comparing the
actual output with the expected result to determine success or failure).
Testing strategies
Answer:
Partition testing divides inputs into groups with similar characteristics. A representative input
from each group is tested to ensure the component processes all variations correctly,
increasing test coverage while minimizing the number of test cases needed.
Answer:
Guideline-based testing uses established testing rules derived from common developer errors.
These guidelines help in selecting test cases that are more likely to uncover defects based on
past experiences and known programming pitfalls.
4 | Page
4. What are some general guidelines for designing effective test cases?
Choose inputs that force the system to generate all error messages
Answer:
Component testing focuses on verifying that the interface of a composite component behaves
according to its specification. It assumes that unit testing for individual objects is complete
and ensures that object interactions work correctly through the defined interface.
3. What are the different types of software interfaces tested during interface testing?
The different interface types include parameter interfaces, shared memory interfaces,
procedural interfaces, and message-passing interfaces.
Parameter interfaces Data passed from one method to another. Shared memory interfaces
Block of memory is shared between functions. Procedural interfaces Sub-system encapsulates
a set of procedures to be called by other sub-systems. Message passing interfaces Sub-
systems request services from other sub-systems
Answer:
Common interface errors include interface misuse (e.g., incorrect parameter order), interface
misunderstanding (wrong assumptions about component behavior), and timing errors
(components operating at different speeds, causing outdated data to be accessed).
Answer:
System testing focuses on verifying the interactions between integrated components. It
checks whether components are compatible, exchange data correctly, and work together to
exhibit the expected system behavior, also known as emergent behavior
Answer:
System testing is a collective process because it integrates components developed by different
teams or sub-teams. It often involves a dedicated testing team, independent from the
developers, to ensure objective evaluation of the system as a whole.
5 | Page
Answer:
Use-case testing involves testing the system based on predefined use cases that represent real-
world interactions. It ensures that multiple components involved in each use case interact
correctly, and the system functions properly under typical user scenarios.
What are the key activities in the test-driven development (TDD) process?
Answer:
TDD starts with identifying a small functionality increment. A test is written before
implementation. Initially, it fails. Then the required code is implemented and re-tested. Once
the test passes, development moves to the next increment. This cycle ensures continuous
validation and better alignment with requirements.
Answer:
The main objective of release testing is to validate that the system is ready for external use. It
6 | Page
ensures the system meets its specified functionality, performance, and dependability, and
demonstrates that it operates correctly under normal usage conditions. Release testing is
usually a black-box testing process where tests are only derived from the system
specification.
Answer:
System testing is usually performed by the development team to detect defects, while release
testing is done by a separate team to validate the system against requirements. Release testing
confirms readiness for deployment, focusing on user validation rather than just identifying
bugs.
Q1: What is the purpose of user testing in the software development process?
✅ Answer:
User testing ensures that the software works effectively in the real-world environment of the
end user. It identifies usability, performance, and reliability issues that may not appear during
internal system or release testing.
✅ Answer:
The three types of user testing are:
Q3: Why is user testing still necessary after system and release testing?
✅ Answer:
System and release testing can't fully simulate the user's environment. User testing captures
real-world usage conditions, helping identify issues related to robustness, usability, and actual
system behavior under everyday use.
Answer:
The main goal of acceptance testing is to let the customer decide whether the software is
ready for deployment. It verifies that the system meets all business and functional
requirements.
✅ Answer:
In agile methods, acceptance testing is not a separate phase. Instead, the customer or user is
part of the development team and defines acceptance tests, which are then integrated and run
automatically with other tests during development.
✅ Answer:
The user/customer is responsible for defining what makes the system acceptable. They
actively participate in writing and reviewing acceptance tests to ensure the software meets
their needs.
Answer:
Software change is inevitable because:
Answer:
Because software represents a critical business asset. Organizations must evolve systems to:
Stay competitive
Ensure system relevance
Maximize the return on their initial investment
8 | Page
Evolution
The stage in a software system’s life cycle where it is in operational use and is evolving as
new requirements are proposed and implemented in the system.
servicing
In servicing, the software is only modified to keep it operational—through bug fixes or
environmental updates. No new features or functionality are added, unlike in evolution
where the system is enhanced with new capabilities.
phaseout
During phase-out, the software may still be used, but no further changes or updates are
made. It marks the beginning of the end of the software’s active life cycle.
Answer:
Software evolution processes depend on:
Answer:
Proposals for change act as the main driver for system evolution. These may include
bug fixes, performance enhancements, or adapting to new requirements.
9 | Page
10 | P a g e
Answer:
A legacy system is an older software system that depends on outdated technologies,
languages, or hardware. It is typically still in use due to its importance in business
operations, despite being difficult to maintain or upgrade.
Answer:
The components of a legacy system include:
System hardware: May be obsolete or unavailable.
Support software: Older tools or platforms the system depends on.
Application software: Core programs providing business services.
Application data: Business data, possibly inconsistent or duplicated.
Business processes: Business workflows designed around the legacy system.
Business policies and rules: Operational constraints that depend on the legacy
system.
Answer:
Legacy systems are deeply integrated into business operations, often involving custom
business rules, processes, and large datasets. Replacing them risks disrupting essential
services and can be costly and complex.
🔹 Q3: What are the main strategies for managing legacy systems?
Answer: Organizations can manage legacy systems through four key strategies:
Q1: How are legacy systems categorized based on quality and business value?
Answer:
🔹 Q2: What is the purpose of business value assessment in legacy system evaluation?
Answer:
14 | P a g e
Answer:
Business value assessment should take into account the views of:
System end-users
Business customers
Line managers
IT managers
Senior managers
Interviewing and collating feedback from these stakeholders provides a comprehensive view
of the system's importance.
Q1: What factors affect the business value assessment of a legacy system?
Usage frequency: Systems used occasionally or by few people may have low
business value.
Supported business processes: If the system enforces inefficient processes, it lowers
business value.
System dependability: Undependable systems that impact customers negatively have
low business value.
System outputs: Systems that produce critical outputs for the business have high
business value.
🔹 Q2: What are the three key areas involved in system quality assessment?
1. Business process assessment: How well business processes supported by the system
align with current business goals.
2. Environment assessment: Effectiveness and maintenance costs of the system’s
environment.
3. Application assessment: Overall quality of the application software itself.
Q1: What factors are considered in environment assessment for a legacy system?
1. Fault repairs
o Fixing bugs, vulnerabilities, and correcting deficiencies to meet
requirements.
2. Environmental adaptation
o Modifying the system so it can run in a different environment
(e.g., new hardware or operating system).
3. Functionality addition and modification
o Adding or changing system functionality to satisfy new business
or user requirements.
Answer:
Software maintenance refers to modifying a program after it has been put into use,
usually to correct faults, improve performance, or adapt it to a changed environment.
It mainly applies to custom software, while generic software products are said to
evolve into new versions.
Maintenance does not normally involve major architectural changes; instead, it
focuses on modifying existing components and adding new components to improve
or adapt the system.
Answer:
Answer:
The complexity depends on:
Answer:
Change prediction is concerned with predicting the number of changes by
understanding the relationship between a system and its environment.
A:
Maintenance prediction involves assessing which parts of a software system may cause
problems and result in high maintenance costs.
It highlights that:
A:
Software reengineering is the process of restructuring or rewriting part or all of a legacy
system without changing its functionality.
It is used when only some subsystems need frequent maintenance, making the overall system
easier to maintain by restructuring and re-documenting.
A:
Q: What is refactoring?
A:
Refactoring is the process of improving a program’s structure, reducing complexity, and
making it easier to understand without adding new functionality. It acts as preventative
maintenance to slow down software degradation over time.
A:
A:
Easy to understand.
Supports transformation reuse.
Matches the structure of many business processes.
Evolution by adding transformations is straightforward.
Can be implemented sequentially or concurrently.
Disadvantages:
Answer:
Compiler components
A lexical analyzer, which takes input language tokens and converts them
to an internal form.
A symbol table, which holds information about the names of entities
(variables, class names, object names, etc.) used in the text that is being
translated.
A syntax analyzer, which checks the syntax of the language being
translated.
A syntax tree, which is an internal structure representing the program
being compiled.
A semantic analyzer that uses information from the syntax tree and the
symbol table to check the semantic correctness of the input language
text.
A code generator that ‘walks’ the syntax tree and generates abstract
machine code.
Security Engineering Overview
32 | P a g e
⚖️Security Dimensions
🧱 Security Levels
👥 Operational Security
📚 Security Terminology
Term Definition
Asset Valuable item to protect (e.g., data, system).
Attack Exploiting a vulnerability to cause damage.
Measures to reduce vulnerabilities (e.g.,
Control
encryption).
Exposure Harm/loss due to security breach.
Potential cause of harm (e.g., guessed
Threat
passwords).
Vulnerabil
Weakness that could be exploited.
ity
⚔️Types of Threats
Type Purpose
Risk Design to eliminate risks
Avoidance altogether
Risk Detect risks and prevent
Detection damage
Risk Minimize damage and enable
Mitigation recovery
Asset Analysis
Probabili
Threat Control Feasibility
ty
Restrict
Unauthorized
Low management Low cost
admin access
access
Unauthorized user Biometric + Feasible but high cost,
High
access Logging may face resistance
❗ Misuse Cases
Type Description
Intercepti Attacker gains access to
on data
Interrupti
Attacker disables system
on
Modificati Data is altered
on maliciously
Fabricatio
Fake data is injected
n
⚠️Misuse Cases
📌 Key Takeaways