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