0% found this document useful (0 votes)
63 views22 pages

Software Questions and Answers

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
63 views22 pages

Software Questions and Answers

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

YEAR ONE

Question One

a) Define the term software engineering and explain the two techniques that will help you as
a software engineer in reducing the complexity of your programming as you design your final
year project.

Answer:

Software Engineering is the application of engineering principles to the development of


software in a systematic, disciplined, and quantifiable manner. It aims to produce high-quality,
reliable, and maintainable software efficiently.

Two techniques to reduce complexity:

1. Modularization – Breaking down a complex system into smaller, manageable, and


independent modules. Each module handles a specific part of the program, making it
easier to develop, test, and maintain.

2. Abstraction – Focusing on the essential details while hiding the unnecessary internal
workings. This helps simplify design and implementation by dealing with higher-level
concepts.

b) Explain any four reasons as to why any organization may want to engineer their software.

Answer:

1. Improved Quality – Engineered software is systematically tested and refined, leading to


fewer bugs and higher quality.

2. Ease of Maintenance – Proper documentation and design practices make software


easier to update and maintain over time.

3. Enhanced Scalability – Software engineering practices enable the design of systems that
can grow with increasing business demands.

4. Cost Savings – Investing in proper engineering early reduces the long-term cost of
debugging, updates, and technical debt.

c) Explain the prototype model of software development and discuss the three reasons that
may lead software engineers to adopt such a model in engineering their software.
Answer:

The Prototype Model involves building a working prototype or mock-up of the system before
actual development. This prototype is presented to users for feedback, which is used to refine
requirements and improve the system design.

Three reasons to use the Prototype Model:

1. Better Requirement Clarity – Helps users and developers clarify unclear requirements.

2. Early User Feedback – Allows stakeholders to interact with the system early and suggest
improvements.

3. Risk Reduction – Identifies potential design and functionality issues early in


development.

Question Two

a) Explain what you understand by System Requirements Specification (SRS) and briefly
explain any four of its properties.

Answer:

System Requirements Specification (SRS) is a document that describes in detail what the
software system should do, including functional and non-functional requirements. It acts as a
blueprint for developers and a reference for stakeholders.

Four Properties of SRS:

1. Correctness – Every requirement is accurate and reflects what the user wants.

2. Completeness – All necessary requirements and details are included.

3. Consistency – No conflicting or ambiguous requirements exist.

4. Verifiability – Every requirement can be tested and verified.

b) Explain any four important problems that an organization would face if it does not develop
an SRS document.

Answer:

1. Unclear Requirements – Developers may misinterpret what users want, leading to


incorrect software.
2. Scope Creep – Lack of clear documentation may lead to continuous changes and added
features.

3. Testing Issues – Without clear requirements, it's difficult to test the software effectively.

4. Project Delays and Cost Overruns – Misunderstandings lead to rework, increasing both
time and cost.

c) Briefly explain any six advantages of modularization in software development.

Answer:

1. Simplifies Development – Smaller modules are easier to develop and understand.

2. Enhances Debugging – Errors can be traced within specific modules.

3. Encourages Reusability – Modules can be reused in other projects.

4. Facilitates Parallel Development – Teams can work on different modules simultaneously.

5. Improves Maintainability – Individual modules can be updated without affecting the


entire system.

6. Increases Scalability – New features can be added by creating or modifying modules.

Question Three

a) Differentiate between a data flow diagram and a structure chart as tools for software
development.

Answer:

 Data Flow Diagram (DFD) – Focuses on how data moves through a system, showing
inputs, outputs, processes, and data storage.

 Structure Chart – Focuses on the software's modular structure and how different
modules interact hierarchically.

Key Difference: DFD deals with data and functionality, while structure charts deal with system
design and module relationships.

b) Explain any four advantages of using data flow diagrams in software engineering.
Answer:

1. Clarity in System Functions – Clearly represents how data moves within the system.

2. User Friendly – Easy to understand by both technical and non-technical users.

3. Highlights Redundancies – Helps identify and eliminate unnecessary processes.

4. Improves Communication – Provides a visual way to discuss system functionality.

c) Describe the use cases that an automated teller machine (ATM) provides to the bank
customers.

Answer:

Use Cases for Bank Customers:

1. Check Balance – View the current balance in their bank account.

2. Withdraw Cash – Take out money from the account.

3. Deposit Funds – Add cash or checks to the account.

4. Transfer Funds – Move money between accounts.

Use Case for ATM Technician:

 Maintenance and Repair – Perform diagnostics, maintenance, and repairs on the ATM.

Question Four

a) Explain any five representative coding guidelines recommended by many software


development organizations.

Answer:

1. Use Descriptive Names – Variables and functions should have meaningful names.

2. Consistent Indentation – Improves readability and structure.

3. Avoid Magic Numbers – Use constants or variables instead of unexplained values.

4. Comment Complex Logic – Explain difficult parts of the code for future understanding.

5. Write Modular Code – Break code into functions or classes for clarity and reusability.
b) Differentiate between functional and structural testing with well-illustrated diagrams.

Answer:

 Functional Testing (Black-box Testing): Tests the software’s behavior based on


requirements without knowing internal code.
Diagram: Input → [Black Box] → Output

 Structural Testing (White-box Testing): Tests internal logic, structure, and flow of the
code.
Diagram: [Code Blocks / Flowchart] with paths and branches tested.

c) As a software engineer, which of the above test strategies would you consider in testing
your final year project code? Justify your answer.

Answer:

I would use functional testing because it focuses on whether the software meets user
requirements. This is crucial for validating the usability and correctness of the final year project
from the end-user’s perspective.

Question Five

a) Explain software reverse engineering with a well-labelled diagram and give two problems
associated with software maintenance.

Answer:

Software Reverse Engineering is the process of analysing a system to identify its components
and their interrelationships, often to recover lost documentation or understand legacy systems.

Diagram:
[Binary Code] → [Reverse Engineering Tool] → [Flowcharts / UML Diagrams / Specifications]

Two Problems in Maintenance:

1. Poor Documentation – Makes it difficult to understand and modify the code.

2. Complex Legacy Code – Hard to maintain due to outdated or inefficient programming


practices.
b) Explain Mean Time To Failure (MTTF) and Probability of Failure on Demand (POFOD) as
reliability metrics.

Answer:

 MTTF – The average time between system failures. Higher MTTF indicates greater
reliability.

 POFOD – The chance that the system will fail when a specific service is requested. Lower
POFOD indicates better reliability.

c) Explain why "fitness of purpose" is not satisfactory in defining software quality and briefly
describe five modern software quality factors.

Answer:

"Fitness of Purpose" is too vague and subjective; it doesn’t provide measurable criteria for
quality.

Five Modern Software Quality Factors:

1. Functionality – The software meets specified requirements.

2. Reliability – Performs consistently without failure.

3. Usability – Easy to learn and use.

4. Maintainability – Easy to fix and improve.

5. Efficiency – Uses system resources optimally.

Question Six

a) Write short notes on the following debugging approaches.

Answer:

1. Brute Force Method – Involves using print statements or logs to trace and find bugs
manually.

2. Backtracking – Start from the point of failure and trace backward to find the root cause.

3. Cause Elimination – Hypothesize potential causes and test to eliminate them.


4. Program Slicing – Analyse only relevant parts of the code that affect a specific variable
or output.

b) Explain any four types of performance tests you may need to carry out once you have
finished your final year software project.

Answer:

1. Load Testing – Checks performance under expected user traffic.

2. Stress Testing – Tests limits of the system under extreme load.

3. Volume Testing – Assesses performance

YEAR TWO

QUESTION ONE

a) Define the term software engineering and explain the two techniques that will help you as
a software engineer in reducing the complexity of your programming as you design your final
year project. (6 marks)

Answer:

Software Engineering is the systematic application of engineering principles to the


development, operation, and maintenance of software.

Two techniques to reduce complexity:

1. Modularization – Breaking the software into smaller, manageable modules or


components, making it easier to develop, test, and maintain.

2. Abstraction – Hiding the complex implementation details and showing only essential
features to reduce cognitive load during development.

b) Explain any three reasons as to why any organization may want to engineer their software.
(6 marks)

Answer:

1. Improved Software Quality – Engineering ensures that the software meets standards
and requirements, increasing reliability and performance.
2. Better Maintainability – Well-engineered software is easier to update and adapt to new
requirements.

3. Reduced Development Cost and Time – Systematic processes prevent rework and
errors, saving time and resources.

c) With a well-labelled diagram, explain the stages of the classical waterfall model of software
development and list the advantages and disadvantages of using this model. (13 marks)

Answer:

Waterfall Model Stages:

Requirement Analysis → System Design → Implementation → Testing → Deployment →


Maintenance

Diagram:
(You can draw a top-down flowchart with arrows from one phase to the next.)

Advantages:

1. Simple and easy to understand.

2. Clearly defined stages and deliverables.

3. Easy to manage due to rigidity of the model.

Disadvantages:

1. Inflexible – Difficult to go back to earlier phases.

2. Poor for changing requirements.

3. Late working software delivery (after implementation phase).

QUESTION TWO

a) What do you understand by System Requirements Specification (SRS)? Briefly explain any
four challenges associated with software requirements gathering for your final year project.
(11 marks)

Answer:
System Requirements Specification (SRS) is a document that outlines all functional and non-
functional requirements of a system, serving as a foundation for software design and
development.

Four Challenges in Requirements Gathering:

1. Ambiguous Requirements – Stakeholders may express needs unclearly.

2. Changing Requirements – Requirements may evolve as understanding grows.

3. Incomplete Information – Users may not be aware of all their needs.

4. Communication Gaps – Misunderstandings between users and developers.

b) Explain any four crucial problems an organization would face if it does not develop an SRS
document. (8 marks)

Answer:

1. Lack of Direction – No clear blueprint leads to poor planning.

2. Misaligned Expectations – Differences between delivered software and user needs.

3. Testing Challenges – No concrete requirements to test against.

4. Increased Cost and Time – Errors discovered late increase project cost and delays.

c) Briefly explain any six advantages of modularization in software development. (6 marks)

Answer:

1. Easier maintenance and debugging.

2. Reusability of code in other projects.

3. Parallel development by multiple teams.

4. Improved code readability and clarity.

5. Scalability for future features.

6. Simplified testing at the module level.

QUESTION THREE
a) Using proper notations, create a context-level DFD for this system, showing all external
entities and the system as a single process. (5 marks)

Answer:

Context-Level DFD Notations:

 External Entities: Customers, Banking Officers, Bank Manager, etc.

 Process: "Online Banking System"

 Data Flows: Login Info, Account Data, Transaction Requests

 All entities connect to the central system with appropriate data flows.

(You can draw this using circles for the process, rectangles for entities, and arrows for data flow.)

b) Expand the context-level DFD you created in (a) to a Level 2 DFD and identify and name the
processes, data stores, data flows, and external entities. (5 marks)

Answer:

Level 2 DFD Elements:

Processes:

1. Authenticate User

2. Manage Accounts

3. Process Transactions

4. Generate Reports

Data Stores:

1. User Database

2. Transaction Records

External Entities: Customers, Bank Staff, IT Technician

Data Flows: Credentials, Account Info, Transaction Requests, Reports

c) Explain any two purposes of this DFD and how it represents the flow of data in the online
banking system. (4 marks)
Answer:

1. Clarifies System Boundaries – Shows what lies inside and outside the system.

2. Improves Understanding – Provides a visual of how data moves through the system,
helping both developers and stakeholders understand the system behaviour.

d) With proper notations, create a use case diagram for the above banking system,
highlighting the different actors and their associations. (5 marks)

Answer:

Actors:

 Customers

 Banking Officers

 Bank Manager

 Security Personnel

 IT Technician

Use Cases:

 Login

 Check Balance

 Process Transactions

 View Reports

 Perform System Maintenance

(Use ovals for use cases, stick figures for actors, and lines to connect them.)

e) How do encapsulation, inheritance, and polymorphism contribute to good software


design? (6 marks)

Answer:

 Encapsulation – Hides internal object details, promoting data security and modularity.

 Inheritance – Allows code reuse by enabling a class to inherit properties from another.
 Polymorphism – Enables objects to be treated as instances of their parent class,
improving flexibility and code maintainability.

QUESTION FOUR

a) Explain the difference between black and white-box testing with well-labelled diagrams.
Give two scenarios where each type of testing might be appropriate. (10 marks)

Answer:

 Black-box Testing: Tests functionality without knowing internal code.


Diagram: Input → [System] → Output

 White-box Testing: Tests internal logic and code structure.


Diagram: Shows flowcharts or code blocks with test paths.

Scenarios:

 Black-box: User interface testing, system validation.

 White-box: Unit testing, security vulnerability analysis.

b) Given your final year graduation project, what would be your focus in carrying out the
following testing? (8 marks)

Answer:

i. Regression Testing – Ensure new code doesn’t break existing features.


ii. Stress Testing – Test system behaviour under peak load.
iii. Performance Testing – Measure system response time and resource usage.
iv. Acceptance Testing – Validate the system against user requirements for final approval.

c) Explain why "fitness of purpose" is not satisfactory when defining software quality and
briefly describe any two modern software factors used to determine the quality of a software
product. (7 marks)

Answer:

"Fitness of Purpose" is subjective and lacks clear, measurable criteria for evaluating quality.

Two Modern Software Quality Factors:


1. Reliability – Ability to function under defined conditions without failure.

2. Usability – Ease with which users can learn and operate the system.

QUESTION FIVE

a) Describe the three types of software maintenance. Which of those maintenance types is
considered a reactive approach and which is a proactive one? (10 marks)

Answer:

1. Corrective Maintenance – Fixes bugs; Reactive

2. Adaptive Maintenance – Updates software due to environmental changes; Proactive

3. Perfective Maintenance – Enhances performance or maintainability; Proactive

b) Explain any five software quality factors associated with modern software products. (15
marks)

Answer:

1. Functionality – The software performs its intended tasks accurately.

2. Efficiency – Optimal use of system resources.

3. Maintainability – Easy to update or fix.

4. Portability – Can operate across different environments.

5. Security – Protects against unauthorized access and data breaches.

QUESTION SIX

a) Explain the critical path method (CPM) in project management. How does it help in
scheduling and managing software projects? (8 marks)

Answer:

Critical Path Method (CPM) is a project management technique used to identify the longest
sequence of dependent tasks (critical path). It determines the shortest possible duration to
complete a project.

Benefits:
 Highlights key tasks that impact project duration.

 Helps allocate resources efficiently.

 Aids in identifying potential delays early.

b) What are the key roles and responsibilities of a software project manager? How does the
role of a project manager differ from that of a technical lead? (8 marks)

Answer:

Project Manager Responsibilities:

 Planning, scheduling, and budgeting

 Risk management

 Communication with stakeholders

 Team coordination

Difference from Technical Lead:

 The Project Manager focuses on managing the project timeline and deliverables.

 The Technical Lead focuses on technical implementation and guidance to developers.

c) Discuss the advantages of conducting code reviews in the quality assurance process. What
best practices should be followed during a code review? (9 marks)

Answer:

Advantages:

1. Early detection of bugs

2. Knowledge sharing among team members

3. Consistent code style and quality

4. Improved maintainability

Best Practices:

 Review small code sections.

 Use checklists.
 Be constructive and respectful.

 Follow coding standards.

YEAR THREE

QUESTION ONE

a) Define the term software engineering and explain the two techniques that will help you as
a software engineer in reducing the complexity of your programming as you design your final
year project. (8 marks)

Answer:

Software Engineering is the application of systematic, disciplined, and quantifiable


approaches to the development, operation, and maintenance of software systems.

Two techniques to reduce complexity:

1. Modularization – This involves dividing the software into separate, independent


modules. Each module performs a specific function, making the system easier to
understand, develop, and maintain.

2. Abstraction – This technique focuses on hiding internal details and exposing only the
necessary aspects of a component or function. It allows developers to work at higher
levels of design, reducing cognitive overload.

b) Explain any four reasons as to why any organization may want to engineer their software.
(8 marks)

Answer:

1. Improved Product Quality – Software engineering practices ensure better


performance, fewer bugs, and higher customer satisfaction.

2. Maintainability – Well-engineered software is easier to modify, update, and debug


over its lifecycle.

3. Efficiency and Cost Reduction – Standardized processes lead to fewer mistakes and
more efficient development, saving time and money.

4. Better Risk Management – Engineering methods help identify and mitigate risks early
in the development process.
c) Explain the prototype model of software development and discuss any three reasons
systems developed as prototypes should not normally be used as production systems. (9
marks)

Answer:

The Prototype Model involves creating an early working version of a software system to
understand user requirements better. It is refined based on user feedback until a final version
is developed.

Why prototypes shouldn't be used in production:

1. Lack of Robustness – Prototypes are often built quickly and may lack strong
architecture and error handling.

2. Poor Documentation – Prototype code may not be well-documented or follow best


practices, making it hard to maintain.

3. Security and Performance Issues – The focus of prototypes is functionality, not


efficiency or security, which are critical in production.

QUESTION TWO

a) What do you understand by System Requirements Specification (SRS) and briefly explain
any four of its properties.

Answer:

System Requirements Specification (SRS) is a detailed document that defines the functional
and non-functional requirements of a software system, serving as a contract between
stakeholders and developers.

Four properties of SRS:

1. Correctness – Every requirement reflects actual user needs.

2. Completeness – All necessary functions and constraints are covered.

3. Consistency – No conflicting or contradictory requirements.

4. Verifiability – All requirements can be tested and verified.


b) Explain any four important problems that an organization would face if it does not develop
an SRS document.

Answer:

1. Misunderstood Requirements – Without clear documentation, developers may


misinterpret client needs.

2. Scope Creep – Absence of fixed requirements can lead to uncontrolled feature


additions.

3. Ineffective Testing – It becomes difficult to test without documented criteria.

4. Project Delays and Cost Overruns – Revisions due to misunderstood needs increase
both time and cost.

c) Briefly explain any six advantages of modularization in software development.

Answer:

1. Improved Maintainability – Modules can be updated independently.

2. Simplified Testing – Each module can be tested separately.

3. Parallel Development – Teams can work on different modules at the same time.

4. Code Reusability – Modules can be reused in other projects.

5. Better Debugging – Easier to isolate and fix issues.

6. Scalability – Easier to extend functionality by adding new modules.

QUESTION THREE

a) Differentiate between a data flow diagram and a structure chart as tools for software
development.

Answer:

 Data Flow Diagram (DFD) – A graphical representation of data movement within a


system, focusing on processes, data stores, and data flow.

 Structure Chart – A diagram that shows the hierarchy of program modules and the
relationships between them, focusing on software structure and control flow.
Key difference: DFD emphasizes data flow and functionality, while structure charts focus on
the software's organizational design.

b) Explain any four advantages of using data flow diagrams in software engineering.

Answer:

1. Visual Clarity – Offers a clear and simple view of how data flows within a system.

2. Improves Communication – Helps both developers and stakeholders understand the


system easily.

3. Identifies Redundancies – Helps in spotting unnecessary or duplicated processes.

4. Aids in Requirement Analysis – Provides a foundation for gathering and refining


system requirements.

c) Identify a simple project of your choice and draw its well-illustrated data flow diagram.

Answer:

Project Example: Online Bookstore

Level 0 DFD:

Entities:

 Customer

 Admin

Processes:

 Place Order

 Manage Inventory

Data Stores:

 Book Database

 Order Records

(You can draw the DFD with circles for processes, rectangles for entities, open-ended
rectangles for data stores, and arrows for data flows.)
QUESTION FOUR

a) Write brief notes on the debugging process and the steps involved.

Answer:

Debugging is the process of identifying, analysing, and removing errors or bugs in software.

Steps involved:

1. Error Detection – Identifying that an error exists through testing.

2. Error Localization – Finding the exact location of the bug in the code.

3. Error Analysis – Understanding why the bug is occurring.

4. Error Correction – Fixing the bug.

5. Testing the Fix – Re-testing to ensure the issue is resolved without introducing new
errors.

b) Given your final year graduation project, what would be your focus in carrying out the
following:

i. Security Testing: Ensure that user data is protected and the system is safe from
unauthorized access.

ii. Stress Testing: Check system performance under peak usage (e.g., high traffic or user load).

iii. Performance Testing: Measure how fast and responsive the system is under normal
conditions.

iv. Acceptance Testing: Validate the system against user requirements to confirm readiness for
delivery.

c) Reliability of software can be defined as the probability of failure-free operation of the


software for a given duration of time. Explain the various review guidelines.

Answer:

Software Review Guidelines:


1. Define Clear Objectives – Know what you're reviewing (e.g., code, requirements,
design).

2. Use Checklists – Ensure consistency and completeness.

3. Involve Multiple Stakeholders – Gather perspectives from developers, testers, and


users.

4. Document Issues – Record bugs or improvements identified during the review.

5. Follow-up Actions – Assign tasks to fix or improve issues found during the review.

QUESTION FIVE

Make a summary of this text:

Scenario Summary:

 At the end of semester 1, a student team uploads their project to GForge and gives the
client rights to use but not distribute the software.

 A year later, they form a business and hire new programmers.

a) Can you claim legal protection of the specification as a trade secret? (2 marks)

Answer:
Yes, but only if the information is not publicly available (e.g., removed from GForge) and
reasonable steps are taken to maintain its secrecy.

b) Can you protect the specification of the new component as a trade secret? What procedure
would you follow? (6 marks)

Answer:
Yes. To protect it:

 Keep it confidential.

 Restrict access to authorized personnel.

 Use NDAs and internal policies to maintain secrecy.

c) Who owns the copyright in the original system? Who owns the copyright of your new
component?
Answer:

 Original system: Owned jointly by the student team or the university (depending on
the agreement).

 New component: Owned by the company or the authors, assuming it was developed
independently.

d) Can you charge the CS 5150 client money to use your new component?

Answer:

Yes, if the new component is separate from the original system and not covered by the
original license agreement.

e) Two programmers leave to form their own company—can they use the programs they
wrote? Can they create new software based on the new component?

Answer:

 They cannot use the original code unless they had ownership rights or permission.

 They should not use the specification or ideas from the new component unless it's
publicly available or they were legally permitted.

QUESTION SIX

a) When is cost estimation done? Discuss the COCOMO model along with the parameters
defined in it.

Answer:

Cost estimation is done during the planning phase of software development to forecast
resources, time, and budget.

COCOMO Model (Constructive Cost Model):

 Predicts the effort (in person-months) based on project size (lines of code).

 Three types: Basic, Intermediate, Detailed.

 Parameters:
o Project Size (KLOC)

o Development Mode (organic, semi-detached, embedded)

o Effort Multipliers (based on product, personnel, and platform attributes)

b) Write notes on:

i. Capability Maturity Model (CMM):


A framework to assess and improve software processes. Levels range from Initial (chaotic) to
Optimizing (continuous improvement).

ii. Postmortem Review:


A retrospective review at the end of a project to evaluate what went well, what didn’t, and
how future projects can be improved.

c) Distinguish between error and failure. Which of the two is detected by testing? Justify your
answer.

Answer:

 Error – A mistake made by a developer during coding or design.

 Failure – The software’s inability to perform its required function due to an error.

Testing detects failures, as they are observable manifestations of underlying errors.


Identifying failures helps trace back to the root cause (error).

You might also like