Software Development Life Cycle Interview Questions and Answers

The systems development life cycle (SDLC), also referred to as the application development life-cycle, 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, The systems development lifecycle concept applies to a range of hardware and software configurations, as a system can be composed of hardware only, software only, or a combination of both.

In building an information system, there should be a plan to manage and control the overall project, from the beginning to the end, to achieve the estimated goals and objectives. In order to ease the management of the project, including the analysis, design, and other development activities, we need a guidance or framework that can help in coordinating the work flow of the project. The framework that is needed is the one that identifies all activities required to build, launch, and maintain an information system. The framework also should include the part of analysis, design, and programming, testing, and maintaining the system until we can launch and implement the system. The framework is called System Development Life Cycle (SDLC).

Although SDLC requires many various activities or processes, there are several core processes that are required in order to build and develop the project’s output, which is the system. The core processes in developing a new system are as the following:

Identify the problems or needs and obtain approval to proceed

Plan and monitor the project about what to do, how, and who does it

Discover and understand the details of the problems or the needs

Design the system components to solve the problems

Build, test, and integrate system components

Complete system tests and deploy the solution

There are many ways in implementing those core processes in SDLC, in which SDLC helps to build an information system in a progressive process or phases.

The Software Development Life Cycle (SDLC) is a framework that defines activities performed throughout the software development process. It consists of a detailed plan describing how to develop, maintain, replace and alter or enhance specific software. The life cycle defines a methodology for improving the quality of software and the overall development process. SDLC is said to be equal to layer two of open systems interconnection or OSI model of network communication. This level of protocol assures proper flow of data from one level to another.

SDLC is important because it breaks down the entire life cycle of software development thus make is easier to evaluate each part of software development and also makes it easier for programmers to work concurrently on each phase. The software development lifecycle is not only a great way to ensure your app meets the needs of your business and customers, but it is also essential in supporting the app once its published.SDLC serves as a guide to the project and provides a flexible and consistent medium to accommodate changes, and perform the project to meet client’s objectives. SDLC phases define key schedule and delivery points which ensure timely and correct delivery to the client within budget and other constraints and project requirements. SDLC co-operates project control and management activities as they must be introduced within each phase of SDLC.

Planning or Requirement gathering and analysis: It is the systems development process. It identifies whether or not there is the need for a new system to achieve a business’s strategic objectives. This is a preliminary plan (or a feasibility study) for a company’s business initiative to acquire the resources to build on an infrastructure to modify or improve a service

Systems Analysis and Requirements: where businesses will work on the source of their problem or the need for a change. In the event of a problem, possible solutions are submitted and analyzed to identify the best fit for the ultimate goal(s) of the project.

Systems Design: In detail, the necessary specifications, features and operations that will satisfy the functional requirements of the proposed system which will be in place. This is the step for end users to discuss and determine their specific business information needs for the proposed system. It’s during this phase that they will consider the essential components (hardware and/or software) structure (networking capabilities), processing and procedures for the system to accomplish its objectives.

Development: when a programmer, network engineer and/or database developer are brought on to do the major work on the project. This work includes using a flow chart to ensure that the process of the system is properly organized. The development phase marks the end of the initial section of the process. Additionally, this phase signifies the start of production. The development stage is also characterized by instillation and change. Focusing on training can be a huge benefit during this phase.

Integration and Testing: It involves systems integration and system testing (of programs and procedures)normally carried out by a Quality Assurance (QA) professional to determine if the proposed design meets the initial set of business goals.

Implementation or Coding: when the majority of the code for the program is written. Additionally, this phase involves the actual installation of the newly-developed system. This step puts the project into production by moving the data and components from the old system and placing them in the new system via a direct cutover.

Maintenance: It involves maintenance and regular required updates. This step is when end users can fine-tune the system, if they wish, to boost performance, add new capabilities or meet additional user requirements.

CRS:Customer Requirement Specification (CRS) is a brief document prepared by the business analyst and might contains many contradicting data, duplicates, missing information. It is also called Business Requirement Specification. It is a high level document.

SRS: System Requirement Specification (SRS) is a base lined and final document that is well organized and clear in terms of understanding which is used as reference by the test engineers. It is also called Functional Specification.

The DevOps methodology is the newcomer to the SDLC scene. In a DevOps model, Developers and Operations teams work together closely — and sometimes as one team — to accelerate innovation and the deployment of higher-quality and more reliable software products and functionalities. Updates to products are small but frequent. Discipline, continuous feedback and process improvement, and automation of manual development processes are all hallmarks of the DevOps model.

Agile Model is based on iterative and incremental development, where requirements and solutions evolve through collaboration between cross-functional teams. It can be used with any type of the project, but it needs more engagement from the customer and to be interactive. Also, it can be used when the customer needs to have some functional requirement ready in less than three weeks and the requirements are not clear enough.

V-model is also used by many of the companies in their product. V-model is nothing but Verification and Validation model. In ‘V-model’ the developer’s life cycle and tester’s life cycle are mapped to each other. In this model testing is done side by side of the development.

The Waterfall model is a sequential design process, used in software development processes and it is the first process model introduced. It is also known as Classic Life Cycle Model (or) Linear Sequential Model. In a waterfall model, each phase must be completed fully before the next phase can begin. This type of model is basically used for the project which is small and there are no uncertain

An iterative life cycle model does not attempt to start with a full specification of requirements. Instead, development begins by specifying and implementing just part of the software, which can then be reviewed in order to identify further requirements. This process is then repeated, producing a new version of the software for each cycle of the model requirements. It is very simple to understand and use.

Spiral is combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. This model of development combines the features of the prototyping model and the waterfall model.

The Big Bang model follows no specific process, and very little time is spent on planning. Even the customer is not sure about what exactly they want and the requirements are implemented on the fly without much analysis. This is typically used for small projects and not recommended for large or complex projects, as it’s a high-risk model; if the requirements are misunderstood in the beginning, you could get to the end and realize the project may have to be started all over again.

Prototype Model refers to the activity of creating prototypes of software applications. It used to visualize some component of the software to limit the gap of misunderstanding the customer requirements by the development team. This also will reduce the iterations may occur in waterfall approach and hard to be implemented due to the inflexibility of the waterfall approach. So, when the final prototype is developed, the requirement is considered to be frozen.

Capability Maturity Model is a bench-mark for measuring the maturity of an organization’s software process. It is a methodology used to develop and refine an organization’s software development process. CMM can be used to assess an organization against a scale of five process maturity levels based on certain Key Process Areas (KPA). It describes the maturity of the company based upon the project the company is dealing with and the clients. Each level ranks the organization according to its standardization of processes in the subject area being assessed.

The Lean model for software development is inspired by lean manufacturing practices and principles. The seven Lean principles (in this order) are: eliminate waste, amplify learning, decide as late possible, deliver as fast as possible, empower the team, build integrity in, and see the whole.

Low Level Design the view of the application developed during the high level design is broken down into modules and programs. Logic design is done for every program and then documented as program specifications. For every program, a unit test plan is created.

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.

Capability Maturity Model is a bench-mark for measuring the maturity of an organization’s software process. It is a methodology used to develop and refine an organization’s software development process.

CMM’s Five Maturity Levels of Software Processes:

Initial level: In this level processes are disorganized, even chaotic. Success is likely to depend on individual efforts, and is not considered to be repeatable, because processes would not be sufficiently defined and documented to allow them to be replicated.

Repeatable level: It is basic project management techniques are established, and successes could be repeated, because the requisite processes would have been made established, defined, and documented.

Defined level: In this level, an organization has developed its own standard software process through greater attention to documentation, standardization, and integration.

Managed level: In this level, an organization monitors and controls its own processes through data collection and analysis.

Optimizing level: In this level processes are constantly being improved through monitoring feedback from current processes and introducing innovative processes to better serve the organization’s particular needs.

Software maintenance is a part of Software Development Life Cycle. Its main purpose is to modify and update software application after delivery to correct faults and to improve performance. Software is a model of the real world. When the real world changes, the software requires alteration wherever possible.

Formal review is created at the end of each stage allowing maximum management control.

This approach creates considerable system documentation.

This documentation ensures that system requirements can be traced back to stated business requirements.

It produces many intermediate products that can be reviewed to see whether they meet the user’s needs and conform to standards. These can be further worked on if they require tweaks to be made, ensuring that the business gets exactly what it needs.

Cons:

What may be seen as a major problem for some, end-user does not see the solution until the system is almost complete.

Users get a system that meets the need as understood by the developers; this may not be what was really needed for them. There may be a loss in translation.

Documentation is expensive and time-consuming to create. It is also difficult to keep current. What may be current this month may not be the same this time next year!

Another disadvantage of a program or software that follows the SDLC program is it encourages stiff implementation instead of creativity. There are requirements that must be met and that is all that developers complete.