0% found this document useful (0 votes)
1 views

software engg PYQ Solution

The document provides a comprehensive overview of key concepts in software engineering, including Control Flow Graphs, program modules, methodologies, regression testing, software reengineering, and the spiral model. It discusses various testing types, software design principles, and the importance of software configuration management and feasibility studies. Additionally, it highlights the differences between Agile and Waterfall models, as well as the challenges in software integration testing.

Uploaded by

optuhinpal
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views

software engg PYQ Solution

The document provides a comprehensive overview of key concepts in software engineering, including Control Flow Graphs, program modules, methodologies, regression testing, software reengineering, and the spiral model. It discusses various testing types, software design principles, and the importance of software configuration management and feasibility studies. Additionally, it highlights the differences between Agile and Waterfall models, as well as the challenges in software integration testing.

Uploaded by

optuhinpal
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

1. A .

Define Control Flow Graph (CFG):


A Control Flow Graph is a representation of the paths that might be traversed through a program during its
execution, using nodes (representing statements or blocks) and edges (representing control flow between
nodes).

General Control Flow Graphs


Control Flow Graph is represented differently for all statements and loops. The following
images describe it:
1. If-else

2. While

3. do-while

4. for
b. Define "program module" with its important characteristics:

In software engineering, a module is a distinct, reusable, and interchangeable unit of code designed to
perform a specific function.
Key characteristics are modularity, reusability, independence, and well-defined interfaces.
c. Write the difference between methodology and a process:
A methodology is a comprehensive, high-level framework or approach that guides the overall
strategy for solving problems or developing software, such as Agile or Waterfall. A process, on the
other hand, is a detailed, step-by-step set of activities or tasks, like coding, testing, or debugging,
that are executed within that methodology to achieve specific goals.
d. What is Regression Testing?
Regression Testing is a type of testing in the software development cycle that runs after every change to
ensure that the change introduces no unintended breaks. Regression testing addresses a common issue that
developers face — the emergence of old bugs with the introduction of new changes.

Various regression testing techniques may be employed.

1. Unit Regression Testing approach uses a bird’s-eye view philosophy to test code. This is a
simple method in which the tester has a list of items to test every time a change occurs. This
is the best way to start regression testing in an existing project.

2. Partial Regression Testing approach divides the project into logical, coherent units that
work together to form the whole application. Select the units that are most critical to the
application and define specific test cases for them while performing unit regression testing
for the rest of the modules.

3. Complete Regression Testing, which is the most detailed form of regression testing. In this
case, one takes a comprehensive view of the codebase to identify all functionalities that
would affect usability on breaking and write detailed tests for each of them. This technique is
time-consuming but highly beneficial if applied from the early stages of project development.
e. What do you mean by the term software reengineering?
Software reengineering refers to the systematic process of updating or modifying an existing software
system to improve its maintainability, performance, or adaptability to new requirements. This involves
analyzing the current system, restructuring its code, and enhancing it without changing its fundamental
functionality, often to extend its lifecycle.
a. Explain how a software development effort is initiated and finally terminated in the spiral model:
In the spiral model, a software development effort begins with the identification of project objectives,
constraints, and potential risks, followed by a planning phase. The development then proceeds through
iterative cycles, each consisting of risk analysis, prototyping, design, implementation, and evaluation. The
process continues with multiple spirals until all objectives are met, risks are adequately mitigated, and the
product reaches a stable, deliverable state, at which point it is formally terminated and released.

b. What is computer system engineering? How is it different from software engineering?


Computer system engineering is a multidisciplinary field that focuses on the design, integration, and
optimization of both hardware and software components to create a cohesive system, such as embedded
systems or networks. Software engineering, by contrast, is a specialized discipline that concentrates solely on
the development, testing, maintenance, and documentation of software applications, without direct
involvement in hardware design, making it more narrowly focused.
c. Explain why it is not prudent to use the iterative waterfall model for developing very large software
products:
The iterative waterfall model, with its rigid, sequential phases (requirements, design, implementation,
testing, maintenance), is not suitable for very large software products because it lacks flexibility to
accommodate changes once a phase is complete. This rigidity increases the risk of late error detection,
makes it difficult to manage evolving requirements, and can lead to significant rework, especially in complex
projects where adaptability and iterative feedback are crucial.
3. (6+6=12)
a. Define Risk in Software Engineering. Discuss different types of Risks.
In software engineering, risk is defined as any potential event or condition that could negatively impact the
project’s timeline, cost, quality, or success. Different types of risks include technical risks (e.g., unforeseen
technical complexities or unproven technology), management risks (e.g., poor project planning, resource
allocation issues), and external risks (e.g., changes in market demands, regulatory requirements, or third-
party dependencies), each requiring specific mitigation strategies.
b. Why SRS document also known as the black-box specification of a system? Write the characteristics of
Good SRS document.
The Software Requirements Specification (SRS) is termed a black-box specification because it describes the
external behavior and functionality of the system from the user’s perspective, focusing on what the system
should do rather than how it achieves it internally. A good SRS document is characterized by completeness
(covering all requirements), consistency (no conflicting statements), clarity (easily understandable),
traceability (linking to design and test cases), and modifiability (allowing updates without ambiguity).
4. (5+3+4=12)
a. What are the differences between error and failure in software design? Which of the two is detected by
testing? Justify the answer.
An error in software design is a human mistake or flaw in the code or specification, such as a logical error or
incorrect algorithm. A failure, however, is the observable deviation of the software’s behavior from its
expected output, resulting from an error. Testing detects failures because it involves executing the software
with specific inputs to identify symptoms of incorrect behavior, though it may not always pinpoint the exact
error causing the failure.
b. Discuss the objective of testing. Discuss different types of testing in detail.
The primary objective of testing is to uncover defects, ensure the software meets specified requirements,
and verify its reliability and performance before deployment. Different types include unit testing (testing
individual components or modules), integration testing (verifying the interaction between integrated
modules), system testing (evaluating the complete system against requirements), and acceptance testing
(validating the software against user needs and business goals), each serving a distinct purpose in the quality
assurance process.
c. Write down the differences between Black-box testing and white-box testing:
Black-box testing focuses on testing the software based on its inputs and expected outputs, without any
knowledge of its internal code or structure, making it suitable for user-level validation. White-box testing,
conversely, involves examining the internal logic, code structure, and paths, requiring knowledge of the
implementation, and is used to ensure code coverage and detect internal defects.
5. (4+4+4=12)
a. List the important shortcomings of LOC for use as a software size metric:
Lines of Code (LOC) as a software size metric has significant shortcomings, including its dependence on
coding styles (e.g., varying levels of comments or formatting), its language-specific nature (different
languages yield different LOC for the same functionality), and its inability to account for code complexity,
quality, or reusability, making it an incomplete measure of software effort.
b. List out the important items that a Software Project Management Plan (SPMP) document should
discuss:
A Software Project Management Plan (SPMP) should comprehensively address project scope (goals and
boundaries), schedule (timeline and milestones), resources (team, tools, budget), risk management
(identification and mitigation), quality assurance (standards and testing), and deliverables (expected outputs
and documentation), ensuring a structured approach to project execution.
c. Explain PERT chart and Gantt chart on the basis of use:
A PERT (Program Evaluation Review Technique) chart is a network diagram used to plan and schedule tasks
by illustrating their dependencies and critical paths, aiding in time estimation and resource allocation. A
Gantt chart, on the other hand, is a bar chart that visualizes the start and end dates of tasks over a timeline,
facilitating progress tracking and resource management in a more straightforward, visual manner.
6. (3+4+5=12)
a. What do you understand by a layered software design? What are the advantages of this?
Layered software design organizes a system into hierarchical layers, where each layer provides specific
services to the layer above it and relies on the layer below, such as presentation, business logic, and data
access layers. Advantages include enhanced modularity (easy to modify one layer), reusability (layers can be
reused in other systems), and easier maintenance (isolating changes to specific layers).
b. A bad software design will have high coupling and low cohesion as well as a good design will have a low
coupling. Explain.
A bad software design exhibits high coupling, where modules are tightly interdependent, making changes in
one module affect others, and low cohesion, where a module contains unrelated tasks, reducing its focus. A
good design, however, features low coupling, allowing independent module operation, and high cohesion,
where a module performs a single, well-defined task, improving clarity and maintainability.
c. Define the terms cohesion and coupling in the context of software design? Enumerate different types of
coupling that might exist between 2 modules.
Cohesion refers to the degree to which the elements within a module are related and focused on a single,
well-defined purpose, such as functional or sequential cohesion. Coupling measures the interdependence
between modules, with lower coupling being ideal. Types of coupling include data coupling (sharing data),
stamp coupling (sharing data structures), control coupling (one module controls another), external coupling
(dependence on external systems), and content coupling (direct access to another module’s internals).

Additional Practice Questions and Answers:


7. (4+4+4=12)
a. What is the purpose of a feasibility study in software development?
The purpose of a feasibility study in software development is to assess the practicality of a proposed project
by evaluating its technical feasibility (can it be built?), economic feasibility (is it cost-effective?), and
operational feasibility (will it work in the intended environment?), providing a foundation for decision-
making.
b. Differentiate between verification and validation in software testing.
Verification is the process of checking that the software is being built correctly according to specifications,
involving activities like code reviews and inspections. Validation ensures the software meets the user’s needs
and requirements, typically through testing like user acceptance testing, confirming the right product is
developed.
c. Explain the concept of software maintenance and its types.
Software maintenance is the ongoing process of updating and improving software after its initial release to
ensure it remains functional and relevant. Types include corrective maintenance (fixing bugs), adaptive
maintenance (adjusting to new environments), perfective maintenance (enhancing features), and preventive
maintenance (reducing future issues).
8. (5+7=12)
a. Define the term "software configuration management" and its importance.
Software configuration management (SCM) is the discipline of identifying, controlling, and tracking changes
to software artifacts throughout the development lifecycle. Its importance lies in maintaining consistency,
ensuring traceability of changes, and managing versions effectively to prevent conflicts and support
collaboration.
b. Discuss the various phases of the software development life cycle (SDLC).
The software development life cycle (SDLC) includes several phases: requirement analysis (gathering and
documenting needs), design (creating the system architecture), implementation (coding the software),
testing (verifying functionality), deployment (releasing the software), and maintenance (ongoing support and
updates), providing a structured approach to development.
9. (4+4+4=12)
a. What is the role of a prototype in software development?
The role of a prototype in software development is to create an early, working model of the system to
demonstrate its functionality, gather user feedback, validate requirements, and identify potential issues,
allowing for refinements before full-scale development.
b. Compare the Agile model with the Waterfall model.
The Agile model is an iterative, flexible approach that welcomes changes throughout development,
emphasizing collaboration and adaptive planning. The Waterfall model, however, is a linear, sequential
process with distinct phases (requirements, design, etc.), where each phase must be completed before the
next begins, offering less adaptability.
c. What are the key principles of software design?
Key principles of software design include modularity (breaking into manageable units), abstraction (hiding
complexity), encapsulation (bundling data and methods), information hiding (restricting access to internals),
and separation of concerns (dividing into distinct features), ensuring a robust and maintainable system.
10. (3+4+5=12)
a. What is meant by software metrics? Give examples.
Software metrics are quantitative measures used to assess the quality, performance, or progress of a
software project, such as Lines of Code (LOC) for size, defect density for quality, and cyclomatic complexity
for code complexity, aiding in management and improvement.
b. Explain the concept of refactoring in software engineering.
Refactoring in software engineering is the process of restructuring existing code without altering its external
behavior to improve its readability, maintainability, and performance, often by eliminating redundancies or
simplifying logic.
c. Discuss the challenges faced during software integration testing.
Challenges during software integration testing include interface mismatches between modules, data
inconsistencies across components, and difficulty isolating defects due to the complexity of interactions,
requiring careful planning and robust testing strategies.

You might also like