当前位置:网站首页>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 .

原网站

版权声明
本文为[CODING]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202131507306247.html