DevOps Mod 1 Flashcards
Generally termed as SDLC. is the conceptual framework which clearly defines what tasks must be performed at each stage and by whom, within scheduled timeframe and at operational cost.
SOFTWARE DEVELOPMENT LIFE CYCLE
WHY IS SOFTWARE DEVELOPMENT LIFE CYCLE NECESSARY?
- Enhance the quality of the software
- Define the goals to the team so that developers know what to build and testers know what and how to test
- Reduce the rate of vulnerabilities (fewer or none)
- Management control
- Effective documentation and reduced dependencies
- Effective resource utilization
- Effective cost and time definition
- Ensure the architecture and design are secure
- Define and adhere to the set processes and objectives
- Meet and exceed Customer’s expectations
Software Development Life Cycle Stages
- Project Kickoff / Project Initiation
- Requirements Gathering
- Analysis
- Design
- Development
- Testing
- Deployment
- Operation and Maintenance
- The first stage in Software Development Life Cycle where the project is initiated.
- High-level scope, problems, and solutions are determined and planning is carried out accordingly for other stages.
Project Kickoff / Project Initiation
Here two things are mainly focused:
* What is needed?
* What is not needed?
In “What is needed?” part, the requirements are further analyzed to understand what are:
* Functional Requirements
* Non-functional Requirements
Requirements Gathering
Requirements can be gathered using the following tools/techniques:
- Interviews
- Workshops
- Surveys and questionnaires
- Focus Groups
- Observations/time study
- Brainstorming Sessions
- Document Analysis (Ex: Regulatory requirements)
- Mind Mapping
- Benchmarks
- In this stage we analyze each and every achievable requirement.
- These are documented as Software Requirements Specifications (SRS) or Functional Requirements Specifications (FRS).
- Risks are predicted and the action items to mitigate those risks are well-planned at this stage.
- Also, each and every user requirement are analyzed to ensure that they can be met.
Analysis or System Analysis
- This is the stage which states “How to achieve what is needed?”
- Software Requirements Specifications (SRS) are now converted to the system design plan, which is commonly known as “Design Specification”.
*All the technical details like technologies to use, project constraints, team’s capability, etc goes into the design specification document.
- The technical architects and developers develop the logical plan of the system which is then reviewed by all the stakeholders.
- The feedback and suggestions collected from the stakeholders are again incorporated into the already developed logical plan.
System Design
This stage in simpler terms is where the “real work begins” and we “build what is needed”.
- The developers start to code as per the requirements and the developed design.
- Along with the coding, all the other required set-up will begin. i.e., the database set up by database admin, interface, and GUI creation by front-end developers, etc.
- Along with coding, it is also important for developers to develop unit tests for their module, peer review other module’s unit tests, deploy builds to the intended environment and execute unit tests.
Development
- This stage is the one where the quality check takes place. The developed software is assessed to ensure that all the specified requirements are met.
- This is performed by testing team and the focus is to find the defects.
- During test case execution, all the defects found are reported in the test management tool and the decision of considering the defect as Valid or Invalid depends on developers.
- If the defect is Invalid, it is just rejected and closed.
- If the defect is Valid, then it is fixed in the code by the developer and the code fix is provided in the next build for the tester to test whether the defect is fixed or not.
- Each defect that is found will have to go through the Defect Life Cycle in the defect management tool.
- Again, the testing approach that the project choose depends on various factors: complexity of the project, team’s capability, time, etc.
Testing
- Once the testing is completed and there are no open high priority issues, then comes the time to deploy the build to the Production environment.
- This is the environment which is accessible by real users. Real users
can then use the software as per their needs.
Deployment
- This stage is when the “fine tuning” of the software takes place.
- Once the build is deployed to Production environment, any issues that the real users face are considered as post-Production issues.
- These Post-Production issues are addressed and resolved by the internal team usually termed as Maintenance team.
- This stage also addresses minor change requests, code fixes, etc. and deploys them in short intervals.
Operation and Maintenance
are the conditions that are required to begin the processing of the current stage.
Entry criteria
are the conditions which sets the stage as completed so that the next stage comes into action.
Exit criteria
- Known as Linear sequential Model.
- It’s called this model because all the stages in the Software Development Life Cycle are followed step by-step and there is no going back between the stages.
- This is the very rigid structure where until completion of the current stage the next stage cannot be started.
- The outcome of the current stage acts as input to the next stage and there is no overlapping of the stages.
- If at all there is any changes in requirements to be handled, then there is no process that defines how to go back to the previous stages(s) to handle it.
- The current cycle must be completed and then the changes must start from the first stage of the cycle.
Waterfall Model
Waterfall Model is best suitable when:
- Requirements are stable and clearly documented.
- Requirements are clear and complete, so there is no ambiguity.
- Static technology
- Short duration project
Pros of Waterfall Model
- Easily understandable and simple to use.
- Managing each stage is simple as they have well-defined activities to follow, deliverables and reviews.
- Sequential stages and no overlapping keep the stage easy and manageable
- Milestones are clear.
- Documentation is strictly maintained so that the chances of dependencies are less.
- Small or mid-sized projects can easily adapt this model.
Cons of Waterfall Model
- Dependency on the previous stage to complete may cause delays.
- High maintenance cost
- Uncertainties and risks are very high.
- By the completion of the cycle, the software may be not competitive enough in the market to maintain the standards.
- Complex, long-term projects cannot rely on this model.
- Cannot handle change requests between the cycle is in progress.
- This model is the one where the complete software is developed in multiple iterations, where the iteration follows Waterfall model.
- In each iteration, the subset of requirements is considered for development and they are integrated with the previous iteration.
- Tailoring the iterations leads to the software development in incremental way.
- Therefore, the Iterative model is sometimes referred to as “Iterative or Incremental Model”.
- It is basically developing the basic modules in the first iteration and then adding the other modules to it in the next iterations.
The main thing to focus here is to prioritize the modules that goes into different iterations. This usually is taken care in the design stage. This model ensures that each iteration undergoes rigorous validation of the developed requirements. Every cycle / iteration here will have the tests to repeat for the previous cycle / iteration and the tests for new modules added.
Iterative Model
Iterative Model is applicable when:
- Final software’s requirements are well-defined.
- Large-sized projects
- Basic and main tasks are clear, and they may get enhanced later.
- Market constraints are well-known and by the time the software gets released it still be applicable.
- Scope for new technology to incorporate.
Pros of Iterative Model
- Basic modules/functions can be developed first and then the remaining ones can be added in chunks.
- Supports parallel development.
- Measurable progress
- Easy to test and debug.
- Risks are easy to control and mitigate within the iteration.
- Each iteration is a lesson to improvise the process and eliminate the repetition of mistakes.
- Every iteration result in partial operational software
- Can incorporate the change requests in the next iterations.
- Customer evaluation and feedback is facilitated which enhances the quality of the software being developed.
- As the iterations have defined timelines, the project ending can be pre-determined and defined.
- Documentation effort is reduced, and design is focused.
Cons of Iterative Model
- Small-sized projects cannot adapt Iterative model.
- Management is the continuous activity to be handled.
- No scope for change in design
- Need of more resources and planning
- Risks cannot be determined for the later stages.
- Risk Management requires highly skilled resources.
- Large effort needed for rigorous validations when the code fixes are done at later iterations
- Usually, Documentation and Configuration Management are not followed strictly which leads to difficulties in tracing developed software back to the requirements
- Project management is not intensive which leads in deviating from formal processes to be followed
- The combination of Waterfall and Iterative models leads to this model. This model is mainly to analyze the risks and to know when to move to the next stage. This Model works quite differently. There are four different phases in this model which are basically the predetermined time frames.
Spiral Model
- The baseline here captures the business requirements. At the subsequent spirals, it enhances the identification of system, subsystem and unit requirements from the business requirements.
- It helps the software to mature in terms of clear, complete and concise requirements through continuous review process.
Determine Objectives, Alternatives, Constraints
- This is the phase where the risks are identified and the measures to control and prevent them are defined.
- The risk analysis and planning to resolve them must be taken care by highly skilled professionals as this entire model mainly focuses on risk management.
- With subsequent spirals, the risk analysis grows stronger and can foresee the risks that may arise at the later stages.
Identify and Resolve Risks
- At the baseline of the spiral, the Proof of Concept (POC) is developed, where the prototype and the likely design of the software is developed.
- The customer feedback is collected on the POC and then the actual work is started. The subsequent spirals encourage building the actual software with high clarity on requirements and design.
- Each of the software build is version numbered and tested against the requirements.
Develop and Test