What is SDLC?
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.
Why SDLC is important?
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.
What are the Phases of the SDLC?
Following are the phases of the 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.
What are the SDLC methodologies or Models?
Software development lifecycle methodologies or Models
- Agile Model
- Lean Model
- Waterfall Model
- Iterative Model
- Spiral Model ((SDM)
- DevOps Model
- V model
- Incremental model
- RAD model
- Prototype model
- Big-bang Model
- Prototype Model
- Capability Maturity Model
What are some key Secure SDLC advantages?
The primary advantages of pursuing an SSDLC approach include:
- More secure software due to the fact that security is a continuous concern.
- Stakeholder awareness of security considerations.
- Early flaw detection in the system.
- Cost reduction as a result of early detection and resolution of issues.
- Overall reduction of intrinsic business risks for the organization.
What is the difference between CRS and SRS?
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.
What is DevOps Model?
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.
What is Agile 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.
What is V -Model?
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.
What is Waterfall model?
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
What are the advantages and disadvantages of Waterfall model?
Pros:
- 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.
- It allows for departmentalization and managerial control.
- As its linear model, it’s easy to implement.
Cons:
- Software is delivered late in project, delays discovery of serious errors.
- Difficult to integrate risk management.
- Difficult and expensive to make changes to documents “swimming upstream”.
- Significant administrative overhead, costly for small teams and projects.
- If client want the requirement to be changed, it will not implemented in the current development process.
- Poor model for long and ongoing projects.
What is Iterative model?
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.
What is Spiral Model?
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.
What is RAD model?
RAD (rapid application development) is a concept that products can be developed faster and of higher quality through:
- Requirements using workshops or focus groups
- Prototyping and early, reiterative user testing of designs
- The re-use of software components
- A rigidly paced schedule that defers design improvements to the next product version
- Less formality in reviews and other team communication.
What is Big Bang 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.
What is Prototype Model?
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.
What is Capability Maturity model?
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.
What is Lean Model?
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.
What Is HLD Or Global Design?
High Level Design gives the overall System Design in terms of Functional Architecture and Database design. It designs the overall architecture of the entire system from main module to all sub module
What Is LLd Or Detailed Design?
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.
What is feasibility study?
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.
What is Capability Maturity Model (CMM)? What are the CMM Levels?
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.
What Is STLC?
The process of testing software in a well-planned and systematic way is known as software testing life cycle (STLC).Different organizations have different phases in STLC however generic.
Software Test Life Cycle (STLC) consists of the following phases:
- Planning
- Design
- Execution
- Evaluating the Exit criteria
- Closure
Explain Software maintenance Process?
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.
These phases of Software Maintenance process are:
- Identification Phase
- Analysis Phase
- Design Phase
- Implementation Phase
- System Testing Phase
- Acceptance Testing Phase
- Delivery Phase
What are the Pros and Cons of SDLC?
Pros:
- 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!
- Users cannot easily review intermediate products and evaluate whether a particular product (e.g., data flow diagram) meets their business requirements.
- 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.