The concept of software: computer programs, files, documents and data related to the operation of computer systems
Evolution of software development process: traditional waterfall model→agile development model→DevOps model
waterfall model
Waterfall model process: requirements analysis → design → coding → implementation → software testing → completion → maintenance
Waterfall model features: linear
Advantages of the waterfall model: clear stages, emphasis on early planning and demand investigation, suitable for products with stable demand
Disadvantages of the waterfall model: increased development risks, late error detection
Agile development model
Agile development model: including XP, SCRUM
Extreme Programming-XP
Spiral programming, divided into multiple cycles
Programming methods: simple design, pair programming, test-driven development, refactoring
Group practices: collective ownership of code, coding standards, stable and fast pace, continuous integration, metaphors
Delivery and management: small releases, planned games, full teams, live customers
SCRUM
Product backlog, sprint planning meeting, sprint backlog → 2-4 weeks sprint, potential delivery of product increments
Agile model characteristics: incremental iteration, small steps and fast running
DevOps
DevOps: development, testing, operation and maintenance
DevOps life cycle: continuous development, continuous testing, continuous integration, continuous deployment, continuous monitoring
DevOps features: reduce change scope, strengthen release coordination, automation
Continuous integration, continuous delivery and DevOps
Continuous Integration (CI)
It is a software development practice. Integration may occur multiple times per day, and each integration is verified through automated builds. Based on the test results, it can be determined whether the new code and the original code can be correctly integrated together.
Continuous Delivery (CD)
It is a software engineering technique. The output of software products is completed in a short cycle to ensure that the software can be stably and continuously maintained in a state that can be released at any time. The goal is to make software construction, testing and release faster and more frequent. It can reduce the cost and time of software development and reduce risks.
The relationship between continuous delivery (CD) and DevOps
The scope of DevOps is wider, it is the cooperation between multiple teams involved in the software delivery process, and it automates the process of software delivery. Continuous delivery is a means of automating delivery that focuses on centralizing different processes and executing them faster and more frequently. DevOps can be a product of continuous delivery, and the results of continuous delivery are directly integrated into the DevOps model.