Software Engineering – Mid semester exam 10*5 =50 marks
Question 1:
1. What is Software Engineering? What are the main activities in the Software Development Life
Cycle (SDLC)? Explain the concept of "Software Process Models."? What is the importance of
Requirement Engineering? 5 Marks
2) Differentiate between Functional and Non-Functional Requirements? What is the Waterfall
Model in Software Engineering? Explain the concept of Prototyping in software development.
What is Agile methodology? Give some principles? What is Software Testing, and why is it
important? 5 Marks
3. Explain the concept of "Software Design." ? What are Software Metrics? What is Risk
Management in Software Engineering? What is Configuration Management in Software
Engineering? 5 Marks
4. What is the purpose of the Use Case Model? 5. Describe the key components of Object-Oriented
Design (OOD). 5 Marks
5. What is a Data Flow Diagram (DFD), and what is it used for? 5 Marks
6. What is component based design? What is cohesion and coupling? 5 Marks
7. What is the Model-View-Controller (MVC) architecture? Explain the purpose of a Software
Design Specification (SDS). What is the purpose of Regression Testing in software development?
What is Software Quality Assurance (SQA), and why is it important? 5 Marks
8. What is the Spiral Model in software development? 2. Explain the concept of Design Patterns in
software engineering. 5 Marks
9. Explain the purpose of Requirement Validation. What is the difference between Functional and
Non-Functional Requirements? 5 Marks
`10. What are the characteristics of a good Software Requirement Specification (SRS)? 5 marks
What is the role of a Software Process Assessment?
Answers:
1) What is Software Engineering? What are the main activities in the Software Development
Life Cycle (SDLC)? Explain the concept of "Software Process Models."? What is the
importance of Requirement Engineering?
Answer: Software Engineering is the application of a systematic, disciplined, and quantifiable
approach to the development, operation, and maintenance of software. It encompasses
both technical and managerial aspects of software development.
Answer: The main activities in the SDLC include Requirement Analysis, Design,
Implementation (Coding), Testing, Deployment, and Maintenance.
Answer: Software Process Models provide a structured approach to software development.
Common models include the Waterfall model, Agile model, Incremental model, and Spiral
model. These models guide the sequence and execution of activities in software
development.
Answer: Requirement Engineering is crucial as it involves gathering, analyzing, documenting,
and managing the software requirements. It ensures that the software meets the needs of
the stakeholders and helps prevent costly changes later in the development process.
2) Differentiate between Functional and Non-Functional Requirements? What is the Waterfall
Model in Software Engineering? Explain the concept of Prototyping in software development.
5 Marks
Answer: Functional requirements describe what the system should do (e.g., features and
functionalities), while Non-Functional requirements describe how the system should perform
(e.g., performance, security, usability).
Answer: The Waterfall Model is a linear and sequential approach to software development
where each phase must be completed before the next begins. It is simple and easy to
manage but inflexible to changes.
Answer: Prototyping involves creating an early version of a system to understand the
requirements more clearly. It helps stakeholders visualize the product and provides a basis
for refining requirements.
Answer: Agile methodology is an iterative and incremental approach to software
development. It emphasizes flexibility, customer collaboration, and responding to change
over following a fixed plan.
Answer: Software Testing is the process of evaluating a software system to detect differences
between given input and expected output. It ensures the software's quality, reliability, and
performance.
3. Explain the concept of "Software Design." ? What are Software Metrics? What is Risk
Management in Software Engineering? What is Configuration Management in Software
Engineering?
Answer: Software Design is the process of defining the architecture, components, interfaces,
and other characteristics of a system or component. It translates requirements into a blueprint
for constructing software.
Answer: Software Metrics are measures used to assess the efficiency, effectiveness, and
quality of software processes, products, and projects. Common metrics include lines of code,
cyclomatic complexity, and defect density.
Answer: Risk Management involves identifying, assessing, and mitigating risks that could
impact the success of a software project. It ensures that potential issues are addressed
proactively.
Answer: Configuration Management involves systematically controlling changes to the
software's code, documents, and other artifacts. It ensures that changes are made in a
controlled and organized manner.
4 ) 2. Explain the Waterfall Model and its advantages and disadvantages? Describe the Agile
methodology and its key principles.?
Answer: The Waterfall Model is a linear and sequential approach to software development,
where each phase (Requirement Analysis, Design, Implementation, Testing, Deployment, and
Maintenance) must be completed before the next begins. Advantages include simplicity,
ease of management, and clear milestones. Disadvantages include inflexibility to changes,
difficulty in accommodating late requirements, and potential delays if issues are discovered
late in the process.
Answer: Agile methodology is an iterative and incremental approach to software
development that emphasizes flexibility, customer collaboration, and rapid delivery of
functional software. Key principles include:
Customer collaboration over contract negotiation.
Responding to change over following a fixed plan.
Delivering working software frequently, with a preference for shorter timescales.
Building projects around motivated individuals and trusting them to get the job done.
5) 3. What is a Data Flow Diagram (DFD), and what is it used for?
Answer: A Data Flow Diagram (DFD) is a graphical representation of the flow of data through
a system. It shows how data is processed, stored, and transmitted between different
components of the system. DFDs are used to analyze and model the flow of information,
helping developers understand and communicate the system's data processing structure.
Answer: The Use Case Model is used to capture and describe the functional requirements of
a system. It defines the interactions between users (actors) and the system through various
use cases, which represent specific scenarios in which the system is used. The purpose is to
ensure that all user interactions are considered and properly implemented.
Answer: The key components of Object-Oriented Design (OOD) include:
Classes and Objects: The basic building blocks that represent entities in the system.
Inheritance: A mechanism to create new classes based on existing ones, promoting code
reuse.
Polymorphism: The ability to treat different objects in a uniform way.
Encapsulation: The bundling of data and methods that operate on that data, restricting
access to some components.
6) What is component based design? What is cohesion and coupling?
Answer: Component-Based Design (CBD) is an approach in software engineering where a system is
developed by assembling pre-existing, reusable software components. Each component encapsulates
a set of related functionalities or a piece of the application’s logic. The key idea behind CBD is to
promote reusability, reduce development time, and enhance maintainability by integrating well-
defined, modular components rather than building everything from scratch.
Advantages of Component-Based Design:
Reusability: Components can be reused across different applications, reducing development
time and costs.
Modularity: The system is composed of independent components, making it easier to
manage and update.
Maintainability: Isolated components can be updated or replaced without affecting the
entire system.
Scalability: New components can be added to the system to extend functionality with
minimal disruption.
Cohesion:
Cohesion refers to the degree to which the elements within a single module or component are
related and work together to achieve a single, well-defined task. In highly cohesive components, all
parts of the component are focused on a single purpose or responsibility, leading to clearer, more
understandable, and maintainable code.
Types of Cohesion:
Functional Cohesion: When all parts of a component contribute to a single, well-defined
task.
Sequential Cohesion: When the output from one part of a component serves as input to
another part.
Communicational Cohesion: When parts of a component operate on the same data set.
High cohesion is desirable as it implies that a component or module is focused, easy to understand,
and easier to maintain.
Coupling:
Coupling refers to the degree of interdependence between different modules or components in a
system. Tightly coupled components are highly dependent on each other, meaning changes in one
component may affect others. Loosely coupled components have minimal dependencies, which
makes them more independent and easier to modify, replace, or reuse without impacting other parts
of the system.
Types of Coupling:
Content Coupling: When one module directly modifies or relies on the internal workings of
another.
Control Coupling: When one module controls the flow of another by passing information on
what to do.
Data Coupling: When modules share data through parameters but do not control each
other’s logic.
Message Coupling: The loosest form of coupling, where modules communicate only through
well-defined interfaces, often using messaging or APIs.
Low coupling is preferable as it reduces the risk that changes in one module will require changes in
another, making the system easier to maintain and evolve.
Relationship Between Cohesion and Coupling:
In software design, the goal is to achieve high cohesion and low coupling. High cohesion ensures that
each component has a clear, focused responsibility, while low coupling ensures that components are
as independent as possible, allowing the system to be more modular, maintainable, and flexible.
1. What is the Model-View-Controller (MVC) architecture? Explain the purpose of a Software
Design Specification (SDS). 3. What is the purpose of Regression Testing in software development?
What is Software Quality Assurance (SQA), and why is it important?
Answer: The Model-View-Controller (MVC) is a software architectural pattern that separates
an application into three interconnected components: Model (handles the data and business
logic), View (presents the data to the user), and Controller (manages user input and updates
the Model and View). This separation facilitates modularity, testability, and parallel
development.
2. Answer: A Software Design Specification (SDS) is a document that provides a detailed description
of the software design. It includes architectural designs, data structures, algorithms, interface
designs, and component details. The purpose is to guide developers in the implementation phase,
ensuring consistency and adherence to the design goals.
Answer: Regression Testing is performed to ensure that recent code changes have not
adversely affected the existing functionality of the software. It involves re-running previously
executed test cases to verify that the software still works as intended after modifications,
bug fixes, or enhancements.
Answer: Software Quality Assurance (SQA) is a process that ensures that the software meets
the specified requirements and is of high quality. It involves monitoring and improving the
software development process, conducting audits, and implementing testing strategies. SQA
is important because it helps prevent defects, ensures compliance with standards, and
enhances customer satisfaction.
1. What is the Spiral Model in software development? 2. Explain the concept of Design Patterns in
software engineering.
Answer: The Spiral Model is a risk-driven software development process model that
combines iterative development with the systematic aspects of the waterfall model. It
involves repeated cycles (or spirals) of planning, risk analysis, engineering, and evaluation,
allowing for continuous refinement of the system. The Spiral Model is particularly useful for
large, complex, and high-risk projects where requirements are not fully understood at the
outset.
Answer: Design Patterns are reusable solutions to common software design problems. They
provide a template for solving problems in a particular context, promoting best practices and
improving code readability and maintainability. Examples of design patterns include
Singleton, Factory, Observer, and Strategy. Design patterns help developers build robust and
flexible software systems.
9. Explain the purpose of Requirement Validation. What is the difference between Functional and
Non-Functional Requirements?
Answer: Requirement Validation ensures that the documented requirements accurately
reflect the user's needs and that the system will perform as intended. It involves checking for
completeness, consistency, feasibility, and correctness. The purpose is to identify and correct
issues before design and implementation, reducing the risk of costly errors later in the
development process.
Answer: Functional Requirements describe what the system should do, outlining specific
behaviors or functions (e.g., user login, data processing). Non-Functional Requirements
describe how the system should perform these functions, including performance, usability,
reliability, security, and scalability. Both are crucial for defining the system's overall
capabilities and user experience.
What are the characteristics of a good Software Requirement Specification (SRS)?
What is the role of a Software Process Assessment?
Answer: A good Software Requirement Specification (SRS) should be:
Complete: Covers all aspects of the system's functionality and constraints.
Consistent: Free of contradictions and conflicts.
Unambiguous: Clearly defined and easy to understand.
Verifiable: Requirements can be tested and validated.
Modifiable: Flexible enough to accommodate changes.
Answer: A Software Process Assessment evaluates the effectiveness and efficiency of an
organization's software development processes. It involves analyzing the processes against
best practices and industry standards to identify strengths, weaknesses, and areas for
improvement. The goal is to enhance process quality, productivity, and consistency.