Software Engineering Interview Questions

Here are the top 50 commonly asked questions in Software Engineering interviews. Whether you’re just starting your preparation or need a quick refresher, these questions and answers will boost your confidence for the interview. Ranging from basic to advanced, they cover a wide array of Software Engineering concepts. Practice these questions for campus and company interviews, positions from entry to mid-level experience, and competitive examinations. It’s also important to practice them to strengthen your understanding of Software Engineering.

Software Engineering Interview Questions with Answers

1. What is Software Engineering?

Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. It enables us to provide better quality to customer by means of

  • Defect free software
  • Predictable output
  • Adherence to budget and timelines

2. What is software quality?

Software quality is the degree to which a component, system or process meets specified requirements and/or user/customer needs and expectations. Software quality has many dimensions. Software quality is the ability to control the software engineering process and methods to ensure quality.

3. What are the elements of Software Engineering Approach?

Software Engineering uses processes, methods and tools. Software process is a division of software development work into distinct phases or activities with the intent of better planning and management. CASE tools are used by software project managers, analysts and engineers to develop software system.

4. What is SDLC model in software engineering?

The systems development life cycle (SDLC), also referred to as software process model, is a term used in systems engineering, information systems and software engineering to describe a process for planning, creating, testing, and deploying an information system. Different SDLC models are used for different project requirements. Waterfall model is one of the SDLC model.

5. What is waterfall model in SDLC?

The Waterfall Model was first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. The waterfall model is a sequential design process, used in software development processes, in which progress is seen as flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, production/implementation and maintenance.

6. What is requirement elicitation?

In requirements engineering, requirements elicitation is the practice of collecting the requirements of a system from users, customers and other stakeholders. The practice is also sometimes referred to as “requirement gathering”. Requirement Elicitation is very beneficial in developing any new application. Without the elicitation techniques it is impossible to find out requirements.


7. What are the main two types of software requirements?

Requirement types are as follows:

  • Functional requirements (FRs) express behaviors that a system is to deliver. A functional requirement is typically either satisfied or not satisfied, with nothing in between. Example: “Print a receipt for every transaction”
  • Non-functional requirement is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviors. Example: A system isn’t typically either usable, or not usable, but may be more usable or less usable than some other system.

8. Why is SRS document needed?

SRS stands for Software Requirement Specification. SRS is a formal document containing the requirements which the developers should design and implement. It includes level of detail needed for development process. A software requirement specification describes how a product will work entirely from the user’s perspective.

9. What is COCOMO model?

The Constructive Cost Model (COCOMO) is an algorithmic software cost estimation model developed by Barry W. Boehm. The model uses a basic regression formula with parameters that are derived from historical project data and current as well as future project characteristics.

10. What is Software configuration management?

In software engineering, software configuration management (SCM or S/W CM) is the task of tracking and controlling changes in the software, part of the larger cross-disciplinary field of configuration management. SCM practices include revision control and the establishment of baselines.

11. What is the difference between change and version control?

Change control is a formal process used to ensure that changes to a product or system are introduced in a controlled and coordinated manner. Version control, also known as revision control is the management of changes to documents, computer programs, large web sites, and other collections of information.

12. What is the difference between milestone and baseline?

Baseline is a process of managing change in configuration management. Baseline is a measurement that defines completeness of a phase. A milestone is a significant event in the course of a project that is used to give visibility of progress in terms of achievement of predefined milestone goals. A milestone is a point some way through a project plan that indicates how far the project has progressed.

13. What is feasibility study?

A feasibility study aims to objectively and rationally uncover the strengths and weaknesses of an existing business or proposed venture, opportunities and threats present in the environment, the resources required to carry through, and ultimately the prospects for success. In its simplest terms, the two criteria to judge feasibility are cost required and value to be attained. A feasibility study evaluates the project’s potential for success; therefore, perceived objectivity is an important factor in the credibility of the study for potential investors and lending institutions.

14. What is formal review in software testing?

Formal Review consist of following:

  • Meeting is planned in advance
  • Facilitated by a moderator
  • Follows a proper process
  • Participants come prepared for the meeting
  • Review team members go through all documents and come with errors, suggestions in meeting
  • Reviewers are selected based on skill and knowledge.

15. What are design patterns?

Design Patterns are simple and elegant solutions of commonly occuring problems in software design.
There are three types of Patterns –

  • Creational – Concerned with creation of objects
  • Structural – Concerned with composition of classes or objects
  • Behavioral – characterize the ways in which classes and objects interact and distribute responsibility

16. What are the different software testing levels?

There are four levels of software testing: Unit >> Integration >> System >> Acceptance. Unit Testing is a level of the software testing process where individual units/components of a software/system are tested. Integration Testing is a level of the software testing process where individual units are combined and tested as a group. System Testing is a level of the software testing process where a complete, integrated system/software is tested. Acceptance Testing is a level of the software testing where a system is tested for acceptability.

17. What is the difference between stub and drivers?

Stubs are dummy modules that are always distinguish as “called programs .On the other hand, Drivers are the ones, which are the “calling” programs. Drivers are used in bottom up testing approach. Drivers are dummy code, which is used when the sub modules are ready but the main module is still not ready.

18. What is performance testing in software engineering?

In software engineering, performance testing is in general, a testing practice performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage. Load testing is the simplest form of performance testing.

19. What is regression testing?

Regression testing is a type of software testing that verifies that software that was previously developed and tested still performs correctly after it was changed or interfaced with other software. Changes may include software enhancements, patches, configuration changes, etc.

20. What is scrum methodology?

Scrum is an agile way to manage a project, usually software development. Agile software development with Scrum is often perceived as a methodology; but rather than viewing Scrum as methodology, think of it as a framework for managing a process. It is an agile framework for completing complex projects. It is an iterative and incremental agile software development framework for managing product development.


21. What is cost of quality?

Cost of quality is a means to quantify the total cost of quality-related efforts and deficiencies. It is typically measured as percentage of effort compared to total project effort. It includes:

  • Prevention cost
  • Appraisal Cost
  • Correction cost

22. What is a requirements traceability matrix?

Requirements traceability is a sub-discipline of requirements management within software .Requirements traceability matrix is a table that shows the many to many relationship between requirements and test cases. Each requirement is mapped to one or more test cases. Each test tests one or more requirements.

23. What is software metric?

Software Metrics provide measures for various aspects of software process and software product. They are divided into –

  • Requirement metrics: Length requirements, completeness
  • Product metrics: Lines of Code, Object oriented metrics, design and test metrics
  • Process metrics: Evaluate and track budget, schedule, and human resource.

24. What is the difference between top model and bottom model design?

Top-down model starts with generalized view of system and decomposes it to more specific ones, whereas bottom-up model starts with most specific and basic components first and keeps composing the components to get higher level of abstraction.

25. What is reverse engineering?

Reverse engineering, also called back engineering, is the processes of extracting knowledge or design information from anything man-made and re-producing it or reproducing anything based on the extracted information. The process often involves disassembling something and analyzing its components and workings in detail.

Advanced Software Engineering Interview Questions with Answers

26. What are the advantages and disadvantages of linear-sequential life cycle model?

Waterfall model is termed as linear-sequential life cycle model.

Advantages are as follows:

  • This model is simple and easy to understand and use.
  • It is easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
  • In this model phases are processed and completed one at a time. Phases do not overlap.
  • Waterfall model works well for smaller projects where requirements are very well understood.

Disadvantages are as follows:

  • No working software is produced until late during the life cycle.
  • High amounts of risk and uncertainty.
  • Not a good model for complex and object-oriented projects.
  • Poor model for long and ongoing projects.
  • Not suitable for the projects where requirements are at a moderate to high risk of changing.

27. What is the difference between quality assurance and quality control?

Quality assurance (QA) is a way of preventing mistakes or defects in manufactured products and avoiding problems when delivering solutions or services to customers. Quality assurance comprises administrative and procedural activities implemented in a quality system so that requirements and goals for a product, service or activity will be fulfilled.
Quality control is a process by which entities review the quality of all factors involved in production. Quality control emphasizes testing of products to uncover defects.

28. What are different types of performance testing?

Types are as follows:

  • Load testing: Load testing is the simplest form of performance testing. A load test is usually conducted to understand the behaviour of the system under a specific expected load.
  • Stress testing: Stress testing is normally used to understand the upper limits of capacity within the system. This kind of test is done to determine the system’s robustness in terms of extreme load
  • Soak testing: Soak testing, also known as endurance testing, is usually done to determine if the system can sustain the continuous expected load.
  • Spike testing: Spike testing is done by suddenly increasing the load generated by a very large number of users, and observing the behaviour of the system. The goal is to determine whether performance will suffer, the system will fail, or it will be able to handle dramatic changes in load.

29. What is the difference between reverse and re-engineering?

Software re-engineering is process to upgrade the technology on which the software is built without changing the functionality of the software. This is done in order to keep the software tuned with the latest technology. Reverse engineering is finding out how a product works from the finished product. Re-engineering is to examine the finished product and build it again, but better.

30. What is the difference between function oriented and object oriented design?

Function-oriented design is comprised of many smaller sub-systems known as functions. Each function is capable of performing significant task in the system. Object oriented design works around the real world objects (entities), their classes (categories) and methods operating on objects (functions).

31. What is software project management?

Software project management is the art and science of planning and leading software projects. It is a sub-discipline of project management in which software projects are planned, implemented, monitored and controlled.

32. What is the difference between spiral and incremental model?

Incremental and spiral model are kind of same, it’s just that in spiral model more emphasize is given on risk analysis. Spiral model is an evolutionary version of incremental prototyping. Spiral Life Cycle Model is a very flexible model. Development phases can be determined by the project manager, according to the complexity of the project.

33. What are the advantages of V model?

The main idea in the V-Model is that development tasks and testing tasks are corresponding activities of equal importance, which is symbolized by the two sides of the “V”.

Advantages are as follows:

  • Due to the fact that in the V-Model defects are being repair short time after they have been detected, it is cheaper to fix them
  • The model has a reputation of a very good base for the partitioning of testing; all the participants in development of a system have a responsibility for quality assurance and testing.
  • Testing activities like requirements, test designing happens well before coding. This fact saves a lot of time and also helps in developing a very good understanding of the project at the initial stage.
  • The objectives of testing are changing, and specific for each test level

34. Explain KISS principle of software development?

KISS stands for ‘Keep It Simple, Stupid!’. Software design is not a haphazard process. There are many factors to consider in any design effort. All design should be as simple as possible, but no simpler. This facilitates having a more easily understood, and easily maintained system. This is not to say that features, even internal features, should be discarded in the name of simplicity. Indeed, the more elegant designs are usually the more simple ones.

35. What are the drawbacks of spiral model?

Disadvantages of spiral model are as follows:

  • Doesn’t work well for smaller projects.
  • Evaluating the risks involved in the project can shoot up the cost and it may be higher than the cost for building the system.
  • Spiral model is much customized for every project.

36. Explain the scenarios in which RAD model should be used?

  • RAD should be used when there is a need to create a system that can be modularized in 2-3 months of time.
  • It should be used if there’s high availability of designers for modeling and the budget is high enough to afford their cost along with the cost of automated code generating tools.
  • RAD SDLC model should be chosen only if resources with high business knowledge are available and there is a need to produce the system in a short span of time (2-3 months).

37. What are the different phases of RAD model?

The phases in the rapid application development (RAD) model are:

  • Business modeling: The information flow is identified between various business functions
  • Data modeling: Information gathered from business modeling is used to define data objects that are needed for the business
  • Process modeling: Data objects defined in data modeling are converted to achieve the business information flow to achieve some specific business objective. Description are identified and created for CRUD of data objects
  • Application generation: Automated tools are used to convert process models into code and the actual system
  • Testing and turnover: Test new components and all the interfaces

38. Why do we need WBS in software engineering?

Dividing complex projects to simpler and manageable tasks is the process identified as Work Breakdown Structure (WBS).
There are many design goals for WBS. Some important goals are as follows:

  • Giving visibility to important work efforts
  • Giving visibility to risky work efforts
  • Illustrate the correlation between the activities and deliverables

39. Explain various steps in prototyping process model?

There are several steps in the Prototyping Model:

  • The new system requirements are defined in as much detail as possible. This usually involves interviewing a number of users representing all the departments or aspects of the existing system.
  • A preliminary design is created for the new system.
  • A first prototype of the new system is constructed from the preliminary design. This is usually a scaled-down system, and represents an approximation of the characteristics of the final product.
  • The users thoroughly evaluate the first prototype, noting its strengths and weaknesses, what needs to be added, and what should to be removed. The developer collects and analyzes the remarks from the users.
  • The first prototype is modified, based on the comments supplied by the users, and a second prototype of the new system is constructed.
  • The second prototype is evaluated in the same manner as was the first prototype.
  • The preceding steps are iterated as many times as necessary, until the users are satisfied that the prototype represents the final product desired.
  • The final system is constructed, based on the final prototype.
  • The final system is thoroughly evaluated and tested. Routine maintenance is carried out on a continuing basis to prevent large-scale failures and to minimize downtime

40. What are the different steps involved in object oriented analysis?

The objectives or the steps that are involved in object-oriented analysis and design are:

  • Identify the actors and objects that are involved
  • Establish the relationships between objects
  • Establish an interface of each object

41. What are the test case designing techniques in software engineering?

Basically test design is the act of creating and writing test suites for testing a software.
The Techniques include:

  • Boundary Value Analysis (BVA)
  • Equivalence Partitioning (EP)
  • Decision Table Testing
  • State Transition Diagrams
  • Use Case Testing

42. What is the difference between user acceptance testing and usability testing?

The purpose of usability testing is to find errors in the system and user acceptance testing is to prove that the system is ready. User Acceptance Testing generally verifies that the deliverable meets the agreed upon requirements whereas UT seeks to verify an implementation’s approach works for the user base.
For example, a Usability Test might test a screen where a user needs to organize data and go through a simple work flow. The Usability Test will verify whether using a particular interface in preference of another results in faster completion rate or decrease error rate.
The acceptance test would go through the same screen and make sure that the output of that process is correct.

43. What are the different requirement elicitation techniques?

Requirement elicitation is process of seeking, discovering, acquiring and elaborating requirements. Techniques are as follows:

  • Interview
  • Prototyping
  • Brainstorming
  • Workshop
  • Task Analysis
  • Observation

44. What are the types of integration testing?

Various Types of Integration Testing are:

  • Big bang approach – Integrate Everything at once
  • Top-down approach – Keep on breaking the system in parts one by one and then test each part.
  • Bottom-up approach – Test the small parts first and then keep on integrating the system and keep on testing the bigger module of it.
  • Mixed approach – Done by help of stubs.

45. Enlist some QOS requirements of the software system?

Non-functional requirements are often called “quality attributes” of a system. Other examples include:

  • Accessibility
  • Audit and control
  • Interoperability
  • Maintainability
  • Modifiability

46. What are the design principles for usability?

Any system designed for people should be easy to use, easy to learn, easy to remember, and helpful to users. Principles are as follows:

  • Early focus on users and tasks
  • Empirical measurement
  • Iterative design

47. What is the difference between task analysis and activity analysis?

Activity analysis is a usability method used in preliminary stages of development to get a sense of situation. It involves an investigator observing users as they work in the field. Also referred to as user observation, it is useful for specifying user requirements and studying currently used tasks and subtasks.
Task analysis means learning about users’ goals and users’ ways of working. Task analysis can also mean figuring out what more specific tasks users must do to meet those goals and what steps they must take to accomplish those tasks.

48. Why do we need rapid prototyping method?

Rapid prototyping is a method used in early stages of development to validate and refine the usability of a system. It can be used to quickly and cheaply evaluate user-interface designs without the need for an expensive working model. This can help remove hesitation to change the design, since it is implemented before any real programming begins.

49. What are mostly used models used in the software industry to estimate size?

  • Line of Code(LOC) – Source lines of code (SLOC), also known as lines of code (LOC), is a software metric used to measure the size of a computer program by counting the number of lines in the text of the program’s source code.
  • Function Points – A function point is a “unit of measurement” to express the amount of business functionality an information system (as a product) provides to a user.

50. What are the characteristic of good software design?

The characteristics are listed below:

  • Correctness: A good design should correctly implement all the functionalities identified in the SRS document.
  • Understandability: A good design is easily understandable.
  • Efficiency: It should be efficient.
  • Maintainability: It should be easily amenable to change.

Useful Resources:

If you find any mistake above, kindly email to [email protected]

Subscribe to our Newsletters (Subject-wise). Participate in the Sanfoundry Certification contest to get free Certificate of Merit. Join our social networks below and stay updated with latest contests, videos, internships and jobs!

Youtube | Telegram | LinkedIn | Instagram | Facebook | Twitter | Pinterest
Manish Bhojasia - Founder & CTO at Sanfoundry
Manish Bhojasia, a technology veteran with 20+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He lives in Bangalore, and focuses on development of Linux Kernel, SAN Technologies, Advanced C, Data Structures & Alogrithms. Stay connected with him at LinkedIn.

Subscribe to his free Masterclasses at Youtube & discussions at Telegram SanfoundryClasses.