Software Engineering Imp Questions
Interview Point of View
Question 1: How do validation and verification differ in software engineering?
Answer: Validation and verification are quality assurance processes that ensure a software
product meets its specifications and the needs of its users. Validation answers the question,
"Are we building the right product?" by confirming it fulfills user requirements. Verification, on
the other hand, asks, "Are we building the product right?" ensuring that development
processes are followed correctly. Together, they ensure the software is both correct and useful.
Question 2: What are the various types of software maintenance?
Answer: Software maintenance can be categorized into four types:
Corrective Maintenance: Fixes bugs reported by users.
Adaptive Maintenance: Adjusts software to accommodate changes in its environment.
Perfective Maintenance: Enhances the software based on user demands for new
features or improvements.
Preventive Maintenance: Implements measures to prevent future issues, ensuring long-
term efficiency and reliability.
Question 3: What distinguishes quality assurance from quality control in the software
development lifecycle?
Answer: Quality Assurance (QA) and Quality Control (QC) are two pillars of quality
management, each with a distinct focus:
Quality Assurance (QA): QA is a proactive process aimed at preventing defects by
ensuring that the development processes used to create the product are adequate and
followed correctly. It's more about providing confidence that quality requirements will
be fulfilled.
Quality Control (QC): QC, on the other hand, is a reactive process that involves
inspecting the software product to identify defects. It focuses on identifying and
correcting defects in the finished product.
Question 4: What are CASE tools, and how do they benefit software development?
Answer: CASE tools, or Computer Aided Software Engineering tools, are software applications
designed to support and enhance the software development lifecycle (SDLC). They automate
and streamline various SDLC activities, such as design, analysis, coding, testing, and
maintenance, leading to increased productivity, improved accuracy, and standardized
processes.
Question 5: What strategies can be employed to effectively gather software requirements?
Answer: Effective requirement gathering can be achieved through multiple techniques,
including interviews, surveys, task analysis, brainstorming, domain analysis, prototyping,
analyzing existing systems, and observation. The goal is to thoroughly understand user needs
and expectations to guide successful software development.
Question 6: Can you explain the concepts of cohesion and coupling in software engineering?
Answer: Cohesion and coupling are metrics used to evaluate the quality of software design:
Cohesion: Refers to the degree to which elements within a module belong together.
High cohesion within modules is desirable as it promotes single-task focus and
independence.
Coupling: Describes how dependent modules are on each other. Low coupling is
preferred as it signifies that modules can operate more independently, improving
modularity and ease of modification.
Question 7: What is a Data Flow Diagram (DFD), and how is it used?
Answer: A DFD is a graphical representation of the flow of data through an information system.
It maps out how data is processed and transferred within the system, identifying inputs,
outputs, storage points, and routes between destinations. DFDs are used for system analysis
and design, facilitating understanding among technical and non-technical stakeholders.
Question 8: Explain the difference between unit testing, integration testing, and system
testing.
Answer: Unit testing involves testing individual units or components of a software application
in isolation to ensure they function correctly. Integration testing involves testing how these
units or components work together as a group. System testing involves testing the entire
system as a whole to ensure it meets the specified requirements.
Question 9: Do we design software when we "write" a program? What makes software
design different from coding?
Answer: Yes, when we "write" a program, we engage in both software design and coding.
However, software design and coding are distinct stages in the software development process.
1 Software Design: This stage involves conceptualizing and planning the structure and behavior
of the software system before any code is written. It includes defining requirements, identifying
functionalities, creating architectural diagrams, and deciding on algorithms and data structures.
2 Coding: Once the software design is complete, the coding phase begins. Coding involves
translating the design into actual code using programming languages and tools. This is where
developers write the instructions that will make the software function according to the design
specifications.
Question 10: why dose software fail after it has passed from acceptance testing? Explain.
Answer: Software can fail after passing acceptance testing for a variety of reasons, despite the
rigorous testing it has undergone. Here are some common explanations:
1 Environment Differences: The software might work well in the controlled environment of the
testing phase but encounter issues when deployed in a different environment. Factors such as
hardware configurations, network settings, or dependencies might vary between the testing
environment and the actual deployment environment, leading to unexpected failures.
2 Integration Issues: Even though individual components of the software might function
correctly during testing, problems can arise when they are integrated with other systems or
modules.
3 Performance Problems: Acceptance testing typically focuses on functional requirements,
ensuring that the software behaves as expected under normal conditions.
4 Security Vulnerabilities: Acceptance testing may not always uncover all potential security
vulnerabilities within the software.
Question 11: What are Software Metrics?
A software metric is a quantitative measure of program properties. Software metrics can be
used for a range of things, such as analysing software performance, planning, estimating
productivity, and so on. Load testing, stress testing, average failure rate, code complexities,
lines of code, etc. are some software metrics. The benefits of software metrics are many,
some of them being:
● It reduces cost.
● It increases ROI (return on investment).
● Reduces workload.
● Highlights areas for improvement.
Question 12: What is Requirement Engineering?
Requirement engineering is the process of establishing services which the user required from
the system and constraint under which it operates and is developed.
Question 13 : What are the different levels of testing?
There are mainly four testing levels and they are:
● Unit Testing
● Integration Testing
● System Testing
● Acceptance Testing
Question 14: Define Smoke Testing?
Smoke testing is Integration Testing and frequently used when software products are being
developed.
Question 15: What is SRS? Write down Quality characteristics of a good Software
Requirements Specification (SRS)
SRS is a formal report that serves as a representation of software that allows customers to
assess whether it meets their needs. It is a list of requirements for a certain software product,
program, or set of apps that execute specific tasks in a specific environment. It also includes
user needs for a system, as well as precise system requirements specifications. Depending on
who is writing it, it fulfills a variety of purposes.
Question 16 : What are the phases involved in Software Testing Life Cycle?
Question 17: What is Test Plan
Test plan document is a document which contains the plan for all the testing activities to be
done to deliver a quality product. Test Plan document is derived from the Product
Description, SRS, or Use Case documents for all future activities of the project
Question 18: What are the various categories of software?
The various categories of software are:
o System software Application.
o Software Engineering / Scientific.
o Software Embedded software.
o Web Applications.
o Artificial Intelligence software.
Question 19: What is the COCOMO model?
Constructive Cost Model is a cost model, which gives the estimate of several staff-months it
will take to develop the software product.
Question 20: What is the difference between Alpha and Beta testing?
Alpha testing is done by the in-house developers (who developed the software) and testers.
Sometimes alpha testing is done by the client or outsourcing team with the presence of
developers or testers.
Beta testing is done by a limited number of end users before delivery. Usually, it is done
in the client's place.