当前位置:网站首页>Knowledge system of digital IT practitioners | software development methods -- agile
Knowledge system of digital IT practitioners | software development methods -- agile
2022-07-06 12:46:00 【CODING】
The author of this article : He Wenqiang — CODING Senior solution architect With a line of Internet 、 Unicorn of Internet of things 、 National joint stock banks 、 Cross industry experience in new intelligent transportation, etc , Successive generations Java Senior Development Engineer 、DevOps technician 、 Senior R & D Manager, etc , On the service 、 agile 、DevOps、 Deep understanding and rich practice of container technology .
Agile software development background
New and old productive forces and production relations
Mainstream software development methods : Waterfall software development ( Old production relations )
Another major problem with waterfall development is that each phase is serial , When software activities are in progress at the current stage , The downward stage is all in a waiting and blocking state , A serious waste of team resources , Reduce team efficiency .
Market business : Internet age Web1.0( Productivity direction )
1990s,WWW Start the wave of commercialization , The Internet has really entered the public view , Browser centric web Applications began to grow on a large scale , Technology and business 、 Social and political interaction in a wider range , The boundaries of Internet applications are constantly expanding , In the face of rapid growth web application , At present, software engineering and software development mode have been greatly impacted , New software development methods are needed ( Production relations ) To meet the new productivity requirements .
VLSI is maturing ( Productivity )
1985s after , VLSI has developed rapidly , Computing power has been greatly developed , It provides strong technical support for the large-scale development of applications .
New software development methods : Agile software development ( New production relations )
Productivity has developed rapidly , The direction of productivity has changed , The contradiction between the old production relations and the productivity and the direction of productivity has become increasingly prominent , And irreconcilable . New production relations are needed to match productivity and productivity direction . Agile software development is a new production relationship .
UCA (VUCA) Time
- Variability : Today's world is changing more and more , Faster and faster , More and more unpredictable .
- uncertainty : The experience brought by any era in history can no longer provide a reference for all changes in today's world .
- complexity : Things blend more and more closely , Causes of various problems , The influence and reaction brought by it will be restrained by more different factors .
- Fuzziness : It becomes difficult to define or demarcate boundaries clearly . The criterion of whether black or white also seems to be increasingly inapplicable .
Waterfall software development problems
- The software development cycle is long , Slow delivery , Unable to respond to external changes in a timely manner ;
- Stage serialization , There are a lot of dependencies waiting , Low resource utilization ;
- It's difficult to change requirements , The process is seriously solidified ;
- The cost of communication and cooperation is high , The Department wall caused by division of labor is seriously hindered, which greatly increases the cost of communication and cooperation .
The development history of agile software development
Germination stage (20 century 90 years )
20 century 90 years , With the rise of the Internet , Other models of waterfalls and their extensions ( iteration 、 The incremental 、 screw 、V Model, etc ) Cannot meet the needs of software development and delivery , Some excellent development concepts and management practices are advocated and respected .
stay 1990~1994 period , Time box 、 restructure 、 Stand-up Meeting 、 Continuous integration 、Scrum(1993 Year definition ,1996 Form a framework )、 Daily stations will be proposed, adopted and applied one after another ; With web1.0 Rapid development of , More excellent methods and practices have been proposed and improved , For example, in 1995~1999 period ,Sprint、 Pair programming 、Scrum、FDD( Function driven development )、 Smoke testing 、Junit、 The incremental 、XP( Extreme programming (xp) ) And other methods ; With 2001 year 《 Agile Manifesto 》 The birth of , Yes 90 Many excellent theories and practices in the s have unified theory and principle , It makes agile a new software development method completely different from waterfall . Agile software development began to develop rapidly , More and more excellent software practices and frameworks have been proposed and incorporated into the scope of agile software development .
Introduction period (2000~2004)
stay 2000~2004 period , Burnout figure 、 lean programming ( This is borrowed from lean manufacturing , The main purpose is to eliminate waste , At present, it has evolved into lean product development , There will be a detailed introduction later )、SAFe( Large scale agile development framework )、Done The definition of 、 Cumulative flow chart 、TDD( Test-driven development )、 Kanban ( From lean manufacturing )、DDD( Domain-driven design )、 User stories have been proposed and promoted one after another .
Growing period (2005~2009)
stay 2005~2009 period ,LeSS( large Scrum)、 Story map 、BDD( Behavior driven development )、 Continuous deployment 、 Exploratory testing 、backlog、WIP( Limit work in process ) Also proposed and developed . These excellent ideas and practices are mainly managed and developed in the form of agile framework , for example Scrum frame 、XP frame ;LeSS frame 、SAFe Frame, etc .
mature period (2010~)
With the emergence of mobile Internet 、 Development and popularization , The adjustment and development of a new round of information industry cycle ,IT The delivery mode has changed from internal resource delivery to external user value delivery ; The software delivery cycle has an annual / Quarterly delivery changes to monthly / Delivered weekly or even daily ; The software development team has changed from a few people to dozens or even hundreds . In the face of value delivery, the way from inside to outside 、 Reduced lead time 、 Difficulties and challenges such as the expansion of the R & D team , The characteristics and advantages of agile software development methods have been highlighted and amplified , It has quickly become the preferred software development method for Internet enterprises .
Agile Manifesto
The origin of Agile Manifesto :2001 year 2 month 11 solstice 13 Japan , In a cabin at the Snowbird ski resort in Mount vasaki, Utah ,17 People get together to chat 、 skiing 、 Relax , And try to find something in common —— Of course, there are meals . What appears is agility “ software development ” declaration . From extreme programming 、Scrum、DSDM( Dynamic system development method )、 Adaptive software development 、Crystal( Crystal method )、 Function driven development 、 Representatives of practical programming expressed sympathy for the need for alternatives to document driven heavyweight software development processes .
The agile software development manifesto defines 4 Two values and 12 Principles .
sense of worth
Agile practitioners have been exploring better software development methods in practice , Help others while doing it . Thus, the following values are established :
Agile values emphasize : Although the right has its value , But we pay more attention to the left value .
#1 Individuals and interactions are higher than processes and tools
Although processes and tools are important in projects , But we should focus more on individuals and interactions . This is because the project is implemented by people , Not tools . People are the key to success , Agile team features emphasize the ability of team members , Encourage and actively mobilize people's subjective initiative .
In Agile Software Development , If there are no good members in the team , Then no matter how good the process and tools are, the project cannot succeed , But poor processes and tools can make excellent talents drain and projects fail ; Excellent team members without good communication and cooperation , No matter how excellent the members are, they can't stop the project from failing . therefore , We still need appropriate processes and tools , But we put more emphasis on human ability and human communication and cooperation .
#2 Working software is better than detailed documentation
Although in the project , Documentation is an important software development process asset , But documentation is not the key to the success of the project , The final deliverable working software is . Overemphasizing the importance and detail of documents will not only cost the team a lot of time and experience , And it can't guarantee and promote the success of the project .
Agile software development puts more emphasis on value delivery and result orientation , Working software is compared to detailed documentation , It can better represent the real value of the project and the quantification of the final results , It can also better reflect the work value of the software team .
#3 Customer cooperation is higher than contract negotiation
Although contract negotiation plays an important role in large-scale software subcontracting and collaboration , However, this kind of contract negotiation between Party A and Party B and employment cannot help developers understand customer needs , Only through more communication and cooperation with customers can developers or product managers understand customers' needs , Develop software that meets the real needs of customers .
#4 Responding to changes is higher than following the plan
Although it is important to follow the established plan in the project , But in actual software development , Uncertainty exists objectively , Cause the plan to change frequently , The project is difficult to implement according to the established plan . therefore , Embracing and responding to changes can make the team more flexible to complete software delivery , Reduce the software risk caused by uncertainty , Reduce project failure rate .
Twelve principles
#1 Our most important goal , It is through continuous and early delivery of valuable software to satisfy customers
Customer satisfaction and valuable software are the main manifestations of project success . To ensure that the software products we develop can bring real value to customers , Need to be customer-centric , Value oriented , And early continuous small batch delivery allows customers to timely perceive and feedback , Let customers feel at home .
#2 Be happy to face the changes in demand , Even in the late stages of development . For the competitive advantage of customers , Agile processes control change
Change is real and objective , No matter at which stage of development , We all need to see and accept change correctly . For changes , We not only need to embrace and face , You also need to be able to control change , Let customers gain continuous competitiveness in the changing market or business .
#3 Deliver working software often , A few weeks or a month or two apart , Tend to take shorter periods
For software delivery , We put more emphasis on the workability of software , Only working software is valuable , And more emphasis on the delivery cycle as short as possible , The shorter the delivery cycle, the more conducive to making timely and accurate responses to the rapidly changing market business needs , The shorter the delivery cycle, the better the adaptability and toughness of the enterprise in an uncertain environment .
#4 Business people and developers have to work together , Every day in the project is no exception
Want to deliver customer satisfied software efficiently , Business and development must cooperate frequently and intimately . Sincere cooperation between business and development is not only conducive to the development of correct products and services , And then improve customer satisfaction ; Moreover, continuous, frequent and sincere communication and cooperation are conducive to improving the efficiency of team cooperation , Reduce inadequate communication 、 Understand the waste of inconsistency .
#5 Inspire the individual's fighting spirit , Build projects around them . Provide the environment and support needed , Supplemented by trust , To achieve the goal
Software development belongs to knowledge work , Knowledge workers are needed to complete . Knowledge workers have great personal potential and creativity , Fully mobilize the subjective initiative and creativity of knowledge workers . Create projects around knowledge workers , And give them the greatest help 、 Trust and freedom , Contribute to the rapid achievement of goals and the greatest success of the project .
#6 No matter inside or outside the team , The best and most efficient way to deliver information is to talk face to face
In software development collaboration , Face to face communication can effectively reduce the distortion rate of information transmission , Improve the effectiveness of communication , Ensure the consistency of information . Relative to mail 、 Telephone and other communication methods , Face to face communication is the most efficient and effective way of communication , If conditions permit , We should adopt face-to-face communication and cooperation as much as possible to maximize efficiency and effect .
#7 Working software is the primary measure of progress
In Agile Software Development , We put more emphasis on value delivery and result orientation , Working software is the most important value of software delivery . therefore , Need to put the most valuable things ( Working software ) As the primary standard of progress measurement .
#8 Agile process advocates sustainable development . Those responsible 、 Developers and users should be able to maintain a stable pace together
Sustainable development can eliminate high workload and maintain sustainable speed , Develop and deliver products at a steady pace and in a fixed cycle , All team members keep in step .
#9 Persistent pursuit of technical excellence and good design , Agility is enhanced by this
As software development continues , Technical debt also accumulates , Technical debt will slow down software development , Reduced system reliability . In agile development, we have a persistent pursuit and design of architecture design and Technology , And continue to carry out technological restructuring and debt settlement , Enhance the technical agility of the team .
#10 Based on simplicity , It's the art of trying to reduce unnecessary work
In software development , On the basis of meeting the basic process , Reduce the process as much as possible 、 The complexity of the tool ; In software function development , We also need to minimize the development of some unnecessary features . Try to eliminate some unnecessary waste in the development process and software requirements .
#11 Best architecture 、 Requirements and design come from self-organizing teams
framework 、 Requirements and designs will slowly emerge as the team works together , The team experienced it , On Architecture 、 demand 、 The best understanding of design 、 real 、 profound ( The soldiers who heard the gunfire knew more about the real situation of the front line ). Give the team ability and authority , Let the team organize and manage by itself , And they design their own architecture 、 Requirements and Design , These architectures 、 Requirements and design are usually the best .
#12 The team periodically reflects on how it can improve its effectiveness , And adjust your behavior accordingly
Taking time to reflect and learn from experience can reduce the probability of repeated mistakes , Better accumulate and precipitate experience and ability , It helps to continuously improve the team's ability and build an excellent engineer culture .
The mainstream framework of agile software development
Agile software development method is a kind of method and thought , Not a specific framework , Any framework that conforms to the values and principles of the Agile Manifesto can become an agile software framework . The current mainstream agile frameworks include Scrum、XP( Extreme programming (xp) )、SAFe( Scale agile framework )、LeSS( On a large scale Scrum)、DSDM( Dynamic system development method )、Crystal( Crystal method ) etc. .“ Agile software development methods ” And “ Agile development framework ” The relationship between can be simply understood as JAVA in “ Interface ” and “ class ” The relationship between . The author will discuss Scrum、XP、SAFe Introduce the framework one by one .
边栏推荐
- The master of double non planning left the real estate company and became a programmer with an annual salary of 25W. There are too many life choices at the age of 25
- 地球围绕太阳转
- NRF24L01故障排查
- MySQL replacement field part content
- ORA-02030: can only select from fixed tables/views
- Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports
- [leetcode622] design circular queue
- Teach you to release a DeNO module hand in hand
- Meanings and differences of PV, UV, IP, VV, CV
- It has been solved by personal practice: MySQL row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT
猜你喜欢
编译原理:源程序的预处理及词法分析程序的设计与实现(含代码)
Learning notes of JS variable scope and function
Stm32f1+bc20+mqtt+freertos system is connected to Alibaba cloud to transmit temperature and humidity and control LED lights
程序设计大作业:教务管理系统(C语言)
Derivation of logistic regression theory
Lock wait timeout exceeded try restarting transaction
Combination of fairygui check box and progress bar
(五)R语言入门生物信息学——ORF和序列分析
Latex learning
MySQL time, time zone, auto fill 0
随机推荐
Meanings and differences of PV, UV, IP, VV, CV
Single chip Bluetooth wireless burning
By v$rman_ backup_ job_ Oracle "bug" caused by details
[golang] leetcode intermediate - fill in the next right node pointer of each node & the k-smallest element in the binary search tree
Flink late data processing (3)
FGUI工程打包发布&导入Unity&将UI显示出来的方式
First use of dosbox
HCIP Day 12
1041 be unique (20 points (s)) (hash: find the first number that occurs once)
FairyGUI循環列錶
Who says that PT online schema change does not lock the table, or deadlock
[Offer18]删除链表的节点
Latex learning
Fairygui joystick
PT OSC deadlock analysis
(五)R语言入门生物信息学——ORF和序列分析
Redis cache update strategy, cache penetration, avalanche, breakdown problems
[Clickhouse kernel principle graphic explanation] about the collaborative work of partitioning, indexing, marking and compressed data
Prove the time complexity of heap sorting
程序设计大作业:教务管理系统(C语言)