Top 44 Software Engineering Interview Questions You Must Prepare 24.May.2024

Software requirements are functional description of proposed software system. Requirements are assumed to be the description of target system, its functionalities and features. Requirements convey the expectations of users from the system.

Structured English is native English language used to write the structure of a program module by using programming language keywords, whereas, Pseudo Code is more close to programming language and uses native English language words or sentences to write parts of code.

A computer program is piece of programming code which performs a well defined task where as software includes programming code, its documentation and user guide.

Functional requirements are functional features and specifications expected by users from the proposed software product.

There are several SDLC models available such as Waterfall Model, Iterative Model, Spiral model, V-model and Big-bang Model etc.

The generic phases of SDLC are: Requirement Gathering, System Analysis and Design, Coding, Testing and implementation. The phases depend upon the model we choose to develop software.

Non-functional requirements are implicit and are related to security, performance, look and feel of user interface, interoperability, cost etc.

Concurrency is the tendency of events or actions to happen simultaneously. In software, when two or more processes execute simultaneously, they are called concurrent processes.

Example: While you initiate print command and printing starts, you can open a new application.

Concurrency, is implemented by splitting the software into multiple independent units of execution namely processes and threads, and executing them in parallel.

Computer software is a complete package, which includes software program, its documentation and user guide on how to use the software.

Change control is function of configuration management, which ensures that all changes made to software system are consistent and made as per organizational rules and regulations.

We can measure project execution by means of Activity Monitoring, Status Reports and Milestone Checklists.

Software Development Life Cycle, or software process is the systematic development of software by following every stage in the development process namely, Requirement Gathering, System Analysis, Design, Coding, Testing, Maintenance and Documentation in that order.

There are various project management tools used as per the requirements of software project and organization policies. They include Gantt Chart, PERT Chart, Resource Histogram, Critical Path Analysis, Status Reports, Milestone Checklists etc.

Cyclomatic complexity uses graph theory’s formula: V(G) = e – n + 2.

There are many estimation techniques available.The most widely used are:

  • Decomposition technique (Counting Lines of Code and Function Points)
  • Empirical technique (Putnam and COCOMO).

Software project manager is engaged with software management activities. He is responsible for project planning, monitoring the progress, communication among stakeholders, managing risks and resources, smooth execution of development and delivering the project within time, cost and quality contraints.

Quality Assurance monitors to check if proper process is followed while software developing the software.

Quality Control deals with maintaining the quality of software product.

Size of software product can be calculated using either of two methods:

  • Counting the lines of delivered code
  • Counting delivered function points

Cohesion is a measure that defines the degree of intra-dependability among the elements of the module.

Software scope is a well-defined boundary, which encompasses all the activities that are done to develop and deliver the software product.

The software scope clearly defines all functionalities and artifacts to be delivered as a part of the software. The scope identifies what the product will do and what it will not do, what the end product will contain and what it will not contain.

A person who knows how to build a wall may not be good at building an entire house. Likewise, a person who can write programs may not have knowledge of other concepts of Software Engineering. The software engineering concepts guide programmers on how to assess requirements of end user, design the algorithms before actual coding starts, create programs by coding, testing the code and its documentation.

Function points are the various features provided by the software product. It is considered as a unit of measurement for software size.

Validation checks if the product is made as per user requirements whereas verification checks if proper steps are followed to develop the product.

Validation confirms the right product and verification confirms if the product is built in a right way.

Functional programming is style of programming language, which uses the concepts of mathematical function. It provides means of computation as mathematical functions, which produces results irrespective of program state.

It is a process to estimate various aspects of software product in order to calculate the cost of development in terms of efforts, time and resources. This estimation can be derived from past experience, by consulting experts or by using pre-defined formulas.

A software project manager is a person who undertakes the responsibility of carrying out the software project.

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).

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.

Structured design is a conceptualization of problem into several well-organized elements of solution. It is concern with the solution design and based on ‘divide and conquer’ strategy.

Software Measures can be understood as a process of quantifying and symbolizing various attributes and aspects of software.

SDLC Models are adopted as per requirements of development process. It may very software-to-software to ensuring which model is suitable.

We can select the best SDLC model if following answers are satisfied -

  • Is SDLC suitable for selected technology to implement the software ?
  • Is SDLC appropriate for client’s requirements and priorities ?
  • Is SDLC model suitable for size and complexity of the software ?
  • Is the SDLC model suitable for type of projects and engineering we do ?
  • Is the SDLC appropriate for the geographically co-located or dispersed developers ?

Requirements can be gathered from users via interviews, surveys, task analysis, brainstorming, domain analysis, prototyping, studying existing usable version of software, and by observation.

Highest abstraction level DFD is known as Level 0 DFD also called a context level DFD, which depicts the entire information system as one diagram concealing all the underlying details.

Modularization is a technique to divide a software system into multiple discreet modules, which are expected to carry out task(s) independently.

Baseline is a measurement that defines completeness of a phase. After all activities associated with a particular phase are accomplished, the phase is complete and acts as a baseline for next phase.

Coupling is a measure that defines the level of inter-dependability among modules of a program.

SRS or Software Requirement Specification is a document produced at the time of requirement gathering process. It can be also seen as a process of refining requirements and documenting them.

Software engineering is an engineering branch associated with software system development.

These can be: DFDs (Data Flow Diagrams), Structured Charts, Structured English, Data Dictionary, HIPO (Hierarchical Input Process Output) diagrams, ER (Entity Relationship) Diagrams and Decision tables.

Software Configuration management is a process of tracking and controlling the changes in software in terms of the requirements, design, functions and development of the product.

It is a measure to assess how practical and beneficial the software project development will be for an organization. The software analyzer conducts a thorough study to understand economic, technical and operational feasibility of the project.

  • Economic - Resource transportation, cost for training, cost of additional utilities and tools and overall estimation of costs and benefits of the project.
  • Technical - Is it possible to develop this system ? Assessing suitability of machine(s) and operating system(s) on which software will execute, existing developers’ knowledge and skills, training, utilities or tools for project.
  • Operational - Can the organization adjust smoothly to the changes done as per the demand of project ? Is the problem worth solving ?

Software project management is process of managing all activities like time, cost and quality management involved in software development.

Data dictionary is referred to as meta-data. Meaning, it is a repository of data about data. Data dictionary is used to organize the names and their references used in system such as objects and files along with their naming conventions.

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, human resource.