Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Ãô½Ý²âÊÔÓë×î¼Ñʵ¼ù£¨Ò»£© Ãô½Ý¶¨Òå
 
×÷Õß jason_dongµÄ²©¿Í £¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-08-19
  6817  次浏览      27
 

1. Agile Software Development

1¡¢Ãô½ÝÈí¼þ¿ª·¢

This section is a brief introduction to agile software development. It is organized into the following sections:

Õâ¸öÕ½ÚÊǶÔÃô½ÝÈí¼þ¿ª·¢µÄ¸ÅÒª½éÉÜ£¬Ëü°´ÕÕÏÂÃæ¶ÎÂä½øÐÐ×éÖ¯

Defining agile Ãô½Ý¶¨Òå

The agile system development lifecycle Ãô½Ýϵͳ¿ª·¢ÉúÃüÖÜÆÚ

The traditional system development lifecycle ´«Í³ÏµÍ³¿ª·¢ÉúÃüÖÜÆÚ

How agile approaches are different Ãô½Ý·½·¨µÄ²»Í¬

Comparing agile and traditional approaches ±È½ÏÃô½ÝºÍ´«Í³µÄ·½·¨

1.1 Defining Agile

1.1 Ãô½Ý¶¨Òå

One frustration that many people new to agile have is that there is no official definition of agile software development, although many people will point tothevalues andprinciples of theAgile Manifesto. Having said that, mydefinition of disciplined agile software development is:

ºÜ¶à¸Õ½Ó´¥Ãô½ÝµÄÈËÓиö´ìÕÛ£¬ÄÇÊǾÍÊÇûÓйٷ½µÄÃô½ÝÈí¼þ¿ª·¢µÄ¶¨Òå £¬¾¡¹ÜºÜ¶àÈËÖ¸³öÁËÃô½ÝµÄ¼ÛÖµºÍ·½Õ룬»°ËäÈç´Ë£¬ÎÒ¸ø³öµÄÃô½ÝÈí¼þ¿ª·¢µÄ¶¨ÒåÊÇ£º

An iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams within an effective governance framework, with "just enough" ceremony that produces high quality software in a cost effective and timely manner which meets the changing needs of its stakeholders.

Ò»¸öµü´úºÍÔöÁ¿(½ø»¯)µÄÈí¼þ¿ª·¢·½·¨ÒԸ߶ÈЭ×÷µÄ·½Ê½½øÐеÄ×Ô×éÖ¯ÍŶÓÔÚÒ»¸öÓÐЧµÄÖÎÀí¿ò¼Ü,Óë¡°×ã¹»¡±ÒÇʽ,Éú²ú¸ßÖÊÁ¿Èí¼þµÄ³É±¾Ð§ÒæºÍ¼°Ê±Âú×ãÆäÀûÒæÏà¹ØÕߵIJ»¶Ï±ä»¯µÄÐèÇó

The criteria that I look for to determine whether a team is taking a disciplined approach to agile development. First, is the team is doing developer regression testing, or better yet taking a test-driven approach to development? Second, are stakeholders active participants in development? Third, is the team producing high-quality, working software on a regular basis? Fourth, is the team is working in a highly collaborative, self-organizing manner within aneffective governance framework? Fifth, are they improving their approach throughout the project?

ÎÒÕÒµ½µÄʶ±ðÒ»¸öÍŶÓÊÇ·ñ°´ÕÕÑϸñµÄ·½·¨È¥×öÃô½Ý¿ª·¢µÄ±ê×¼£¬Ê×ÏÈÍŶÓÊDz»ÊÇ×öµ½ÁË¿ª·¢Õ߻عé²âÊÔ»òÕßÖ´ÐÐÁ˸üºÃµÄ²âÊÔÇý¶¯¿ª·¢·½·¨£¿µÚ¶þ£¬ÀûÒæÏà¹ØÕßÊDz»ÊDzÎÓëµ½¿ª·¢»î¶¯ÖУ¨Ò²¾ÍÊÇÓû§ÊDz»ÊDzÎÓëÁËÐèÇ󣩣¬µÚÈý£¬ÍŶÓÉú²ú¸ßÖÊÁ¿ºÍ¿É¹¤×÷µÄÈí¼þÊDz»Êdz£Ì¬»¯£¨´ó¸ÅÒâ˼Êdz£Ì¬·¢²¼£©£¬µÚËÄ£¬ÍŶÓÊDz»ÊÇÔÚÓÐЧµÄ¹ÜÀí¿ò¼Üϸ߶ÈЭ×÷ºÍ×ÔÎÒ×éÖ¯µÄ¹¤×÷£¿ µÚÎ壬ËûÃÇÊDz»ÊÇÔÚÏîÄ¿ÖиĽøËûÃǵķ½·¨£¿

1.2 The Agile System Development Lifecycle

Ãô½Ýϵͳ¿ª·¢ÉúÃüÖÜÆÚ

To truly understand agile testing and quality strategies you must understand how they fit into the overall agile system development lifecycle (SDLC). Figure 1 depicts a high-level view of theagile development lifecycle, showing that agile projects are organized into a series of time-boxes called iterations (in the Scrum methodology they call them "Sprints" and some people refer to them as cycles). Although many people with tell you that the agile lifecycle is iterative this isn't completely true, as you can see it is really serial in the large and iterative in the small. The serial aspect comes from the fact that there are at least three different iteration flavors -- initiation iterations (light green), construction iterations (light blue), and release iterations (blue) -- where the nature of the work that you do varies. The implication is that your approach to testing/validation also varies depending on where you are in the lifecycle. As a result it is important to understand each of the high-level activities depicted by this lifecycle:

È¥ÕæÕýµÄÀí½âÃô½Ý²âÊÔºÍÖÊÁ¿²ßÂÔ£¬Äã±ØÐëÀí½âËûÃÇÈçºÎÈںϵ½Õû¸öÃô½ÝÈí¼þ¿ª·¢ÉúÃüÖÜÆÚ£¬ Figure 1 Ãè»æÁËÒ»¸öÃô½Ý¿ª·¢ÉúÃüÖÜÆÚµÄ¸ß¼¶ÊÓͼ£¬Õ¹Ê¾ÁËÃô½ÝÏîÄ¿±»»®·Öµ½Ò»ÏµÁеĵü´úʱ¼äºÐ£¨ÔÚSCRUM·½·¨ÖÐËûÃDZȽÏ×÷¡°Sprints¡± £¬ÓÐЩÈ˰ÑËûÃǽÐ×öÑ­»·£©¡£ ¾¡¹ÜºÜ¶àÈ˸æËßÄãÃô½ÝÉúÃüÖÜÆÚ¾ÍÊǵü´ú£¬ÕâÊDz»ÍêÈ«ÕýÈ·µÄ¡£ÕýÈçÄã¿´µ½µÄËûÃÇÕë¶ÔÊÇÁ¬ÐøµÄСµÄµü´ú¡£ ÕâÁ¬ÐøµÄµü´úÀ´×ÔÖÁÉÙÈý¸ö²»Í¬µÄµü´úÀàÐÍ£¨·ç棩£¬³õʼµü´ú£¨ÁÁÂÌ£©£¬¹¹Ôìµü´ú£¨ÁÁÀ¶£©£¬ºÍ·¢°æµü´ú£¨À¶£©-ÕâÊǵü´ú¹¤×÷µÄ²»Í¬¡£ ºÜÏÔÈ»ÄãµÄ²âÊÔºÍÑéÖ¤·½·¨¸ù¾ÝËùÔÚµÄÉúÃüÖÜÆÚλÖõIJ»Í¬¶ø²»Í¬£¬×÷Ϊһ¸ö½á¹û£¬È¥Àí½âÉúÃüÖÜÆÚÖеÄÿһ¸ö¸ß¼¶»î¶¯ÊǷdz£ºÜ×ÜÒªµÄ¡£

1¡¢Iteration 0. The goal of this iteration, or iterations on complex projects, is to initiate the project. You will performinitial requirements envisioning, initial architecture envisioning, begin identifying and organizing the development team, come to some sort of stakeholder concurrence as to the goal(s) of the project, and gain funding and support for the project. Testing/validation activities include beginning to set up your testing environment and tools as well as potentially reviewing the initial models, plans, and vision or stakeholders goals document.

µü´ú0. Õâ¸öµü´ú»ò¸´ÖÆÏîÄ¿Éϵĵü´úµÄÄ¿µÄÊÇ×ö³õʼ»¯ÏîÄ¿¡£Ä㽫ִÐÐÖ´ÐгõʼÐèÇ󣬳õʼ¼Ü¹¹£¬ £¬¿ªÊ¼¶¨ÒåºÍ×éÖ¯¿ª·¢ÍŶÓ, ¡£¡£¡£¡£ ²¢ÇÒ»ñµÃ×ʽðºÍÖ§³ÖÏîÄ¿¡£²âÊÔ/ÑéÖ¤»î¶¯»î¶¯°üÀ¨ ´î½¨ÄãµÄ²âÊÔ»·¾³ºÍ×¼±¸²âÊÔ¹¤¾ß£¬ÒÔ¼°¿ÉÒÔÉó²é³õʼģÐÍ£¬¼Æ»®£¬ºÍ¿ÉÊÓµÄÉæÖÚÄ¿±êÎĵµ¡£

2¡¢Construction iterations. During each construction iteration (iterations 1 to N inFigure 1) the goal is to produce more potentially shippable software. Agile teams follow theprioritized requirements practice -- each iteration they take the most important requirements remaining from the work item stack (what Scrum teams call a product backlog) and implement them. Agile teams will take a whole team approach where testers are embedded in the development team, working side by side with them to build the system. The focus of their testing efforts are often on confirmatory testing via developer regression testing or better yetTest-Driven Development (TDD).

¹¹Ôìµü´ú£º ͨ¹ý¹¹Ôìµü´ú£¬Ä¿±êÊÇÈ¥Éú³É¸üDZÔڿɽ»¸¶µÄÈí¼þ¡£Ãô½ÝÍŶӸù¾ÝÐèÇó¶ÈÓÅÏȼ¶ --ÿ¸öµü´úËûÃǰÑ×îÖØÒªµÄÐèÇó·ÅÈ빤×÷¶ÑÕ»ÖУ¨SCRUM ÍŶÓÖн»Ò»¸ö²úÆ·backlog) ²¢ÇÒʵÏÖËûÃÇ¡£ Ãô½ÝÍŶÓÒªÖ´ÐвâÊÔÈËԱǶÈëµ½¿ª·¢ÍŶÓÖеÄÕûÌåÍŶӷ½·¨£¬²¢¼ç¹¤×÷¹¹½¨ÏµÍ³¡£ ²âÊÔŬÁ¦µÄ½¹µãÊǾ­³£Í¨¹ý¿ª·¢»Ø¹é²âÊÔÀ´È·ÈϲâÊÔ»òÕß×îºÃÖ´ÐвâÊÔÇý¶¯¿ª·¢£¨TDD£©

3¡¢Parallel independent testing. Disciplined agile teams perform continuous independent testing in parallel to construction iterations throughout the lifecycle. The goal of this effort is to find defects that got past the development team, often performing higher forms of testing such as exploratory testing, system integration testing, security testing, usability testing, and so on which require significant testing skills, complex testing tools, and often complex pre-production testing environments. There is often a 10:1 to 15:1 ratio between people on the development team and independent testers supporting them. In larger organizations this independent test team typically supports several development teams (thus enabling more sophisticated system integration testing because they can more easily work with versions of multiple systems under development).

²¢ÐжÀÁ¢²âÊÔ¡£ÑµÁ·ÓÐËØµÄÃô½ÝÍŶӹᴩ¹¹Ôìµü´úÉúÃüÖÜÆÚ¶¼ÔÚÖв¢ÐÐÖ´ÐгÖÐø¶ÀÁ¢µÄ²âÊÔ¡£¶ÀÁ¢²âÊÔµÄÄ¿µÄÊÇÕÒ³ö¿ª·¢ÍŶÓÌá½»µÄȱÏÝ¡£ ¾­³£Ö´ÐиßÐÎʽµÄ²âÊÔÀýÈ磬̽Ë÷²âÊÔ¡¢ÏµÍ³¼¯³É²âÊÔ¡¢°²È«²âÊÔ¡¢¿ÉÓÃÐÔ²âÊԵȵÈÐèÒªºÜÇ¿µÄ²âÊÔ¼¼ÊõºÍ¸´ÔӵIJâÊÔ¹¤¾ß£¬ ²¢ÇÒ¾­³£Ô¤Éú³É²âÊÔ»·¾³¡£ ¿ª·¢ÍŶӺÍÖ§³ÖËûÃǵIJâÊÔ¶ÀÁ¢²âÊÔÈËÔ±±ÈÀý´ó¸ÅÔÚ10:1 µ½ 15:1. ÔÚ´óÐ͵Ä×éÖ¯Àï¶ÀÁ¢µÄ²âÊÔÍŶÓÖ§³Ö¼¸¸ö¿ª·¢ÍŶӣ¨ÒòΪËûÃÇÄܹ»¸üÈÝÒ×¹¤×÷ÔÚ¶à¸öϵͳ°æ±¾£¬Òò´ËʹµÃ¸ü¸»ÔÚµÄϵͳ¼¯³É²âÊÔ±äµÃ¿ÉÄÜ£©

4¡¢Release iteration(s). The goal of the release iteration(s), the dark blue "R" iteration in Figure 1, is to successfully deploy your system into production. This can be quite complex in practice, including training of end users, support people, and operations people; communication/marketing of the product release; backup and potential restoration (if things go bad); pilot/staged deployment of the system; final translation of the UI anddocumentation; finalization of system and user documentation; and so on. During the release iteration there is still sometesting at the end of the lifecycle to ensure that the system is ready for production.

·¢²¼µü´ú£º·¢²¼µü´ú£¬ÔÚFigure1ÖÐ À¶É«Rµü´ú£¬ µÄÄ¿±êÊdzɹûµÄ²¿ÊðÄãµÄϵͳµ½Éú²ú»·¾³£¬ÔÚʵ¼ùÖÐÏ൱¸´ÔÓ£¬Ëû°üÀ¨ÖÕ¶ËÓû§£¬Ö§³ÖÈËÔ±ºÍ²Ù×÷ÈËÔ±µÄÅàѵ£¬¹µÍ¨ºÍÊг¡µÄ²úÆ··¢²¼£»±¸·ÝºÍ»Ø¸´£¨Èç¹û·¢²¼Ê§°Ü£©£»ÊÔµã/·ÖÆÚµÄϵͳ²¿Êð£¬×îºóµÄUIºÍÎĵµµÄ·­Ò룬×îºó½»¸¶µÄϵͳºÍÓû§µÄÎĵµ £¬µÈµÈ ¡£ ÔÚ·¢°æµü´úÈÔÈ»ÓÐЩ×îºóµÄ²âÊÔÒª×ö£¬ÕâЩ²âÊÔÈ·ÈÏϵͳÒѾ­×¼±¸ºÃÉÏÏß¡£

Figure 1. High-level agile development lifecycle. Ãô½Ý¿ª·¢ÉúÃüÖÜÆÚ¸ÅÀÀ

Figure 2 shows a detailed version of the SDLC, fleshing out the details of Figure 1. Figure 2 also adds new phases so as to depict the full end-to-end lifecycle, including "iteration -1" where you identify potential projects, the production phase where you operate and support the system once it has been released, and the retirement phase where you fully remove an unneeded system from production.

Figure2 չʾÁËÒ»¸öÈí¼þ¿ª·¢ÉúÃüÖÜÆÚµÄÏêϸ°æ£¬³äʵÁËfigure 1£¬ Figure 2 Ò²¼ÓÁËеĽ׶Î"iteration-1" È¥ÃèÊöÍêÕûµÄ¶Ëµ½¶ËµÄÉúÃüÖÜÆÚ£¬ ¡°iteration-1" ÖÐÄãʶ±ðDZÔÚµÄÏîÄ¿£¬

¡±production phase¡° Ò»µ©²úÆ·±»·¢²¼ÐèµÄÒª²Ù×÷ºÍÖ§³Ö¡£

¡±retirement phase" ´ÓÉú²ú»·¾³ÖÐɾ³ý²»ÐèÒªµÄϵͳ

Figure 2. A detailed agile SDLC.

1.3 The Traditional System Development Lifecycle

1.3 ´«Í³ÏµÍ³¿ª·¢ÉúÃüÖÜÆÚ

Figure 3 depicts the V Model for software development, basically a sophisticated form of the traditional waterfall model. With the V model the work on the left-hand side of the diagram is validated later in the lifecycle through corresponding activities later in the lifecycle (for example requirements are validated through acceptance testing, the architecture via integration testing, and so on). Although this approach is better than not testing at all, it proves to be very expensive in practice because of several systemic problems:

Figure 3, ÃèÊöÁËÈí¼þ¿ª·¢µÄVÄ£ÐÍ£¬»ùÓÚ´«Í³ÆÙ²¼Ä£Ê½µÄ¸´ÔÓÐÎÊÆ¡£ VÄ£Ð͵Ä×ó±ßÊǺóÆÚÑéÖ¤»î¶¯£¬ÔڻµÄÍíЩʱºòÖ´ÐÐÑéÖ¤»î¶¯£¨ÀýÈ磬ÐèÇóÔÚÑéÊÕ²âÊÔʱ±»ÑéÖ¤£¬¼Ü¹¹±»¼¯³É²âÊÔÑéÖ¤£¬µÈµÈ£©£¬¾¡¹ÜÕâ¸ö·½·¨±È¸ù±¾²»²âÊÔÒªºÃ£¬ËûÌṩÁ˱Ƚϰº¹óµÄʵ¼ù¡£ÏÂÃæÊǼ¸¸öϵͳµÄÎÊÌâÃèÊö£º

1¡¢Deliver the wrong functionality. The V model promotes an approach where the requirements are defined in detail early in the project. Although this may be good theory (note the use of the word "may") in practice it proves to be a very poor way to work. These "big requirements up front" BRUF approaches result in significant wastage because at best the project team will build something to specification instead of something that the stakeholders actually need.

Ìṩ´íÎóµÄ¹¦ÄÜ¡£VÄ£ÐÍÌᳫµÄÊÇÐèÇóÔÚÏîÄ¿ÔçÆð½øÐÐÏêϸµÄ¶¨Òå·½·¨£¬¾¡¹ÜÕâ¿ÉÄÜÊǺõÄÀíÂÛ£¬ÔÚʱ¼äÖб»Ö¤Ã÷ÊǷdz£Æ¶ÇîµÄ·½·¨¡£¡£ÕâЩ´óÐèÇóÔ¤Ïȶ¨ÒåµÄ·½·¨½á¹ûµ¼Ö´óÁ¿µÄÀË·Ñ£¬ÒòΪ×îºÃµÄÏîÄ¿ÍŶӽ«¹¹½¨Ò»Ð©¹æ·¶£¬¶ø²»ÊÇÉæÖÚµÄʵ¼ÊÐèÇó¡£

2¡¢uild to a fragile design. Similarly, although in theory it may be a good idea to think through the details of the architecture/design up front the reality is that you end up making, and then committing to, technical decisions are too early when you have the least amount of information available to you (during architecture/design phases you're making decisions based on what you hope will work, as opposed to what you know will work based on actual working software).

¹¹½¨Ò»¸ö´àÈõµÄÉè¼Æ¡£Í¬Ñù£¬ËäÈ»ÔÚÀíÂÛÉÏÔÚʵÏÖǰÌáǰ×öÏêϸµÄ¼Ü¹¹ºÍÉè¼Æ×÷Ϊһ¸öºÃµÄÏë·¨£¬Êµ¼ÊÇé¿öÊǹýÔçµÄÉè¼ÆÊÇ»ùÓڷdz£ÉÙµÄÓÐÓÐЧµÄÐÅÏ¢£¨Ôڼܹ¹ºÍÉè¼Æ½×¶Î×ö³öÀ´µÄ¾ö¶¨ÊÇ»ùÓÚÄãÆÚÍûµÄ¹¤×÷£¬¶ø²»ÊÇ»ùÓÚÄãÖªµÀʲôÊÇʵ¼Ê¹¤×÷Èí¼þ£©¡£

3¡¢Hand-offs inject defects. Every time you have a hand off between two groups of people defects due to misunderstandings will be injected into the product. Although this problem can be partly mitigated via reviews, this proves to be expensive compared to more agile approaches such asnon-solo development.

½»½Ó×¢ÈëȱÏÝ¡£Ã¿´ÎÔÚÁ½¸ö×éÈ˽øÐн»½ÓʱÒòΪ´íÎóµÄÀí½âµ¼ÖÂеÄȱÏÝ×¢Èëµ½²úÆ·ÖУ¬¾¡¹ÜÕâÀàÎÊÌâͨ¹ýÉó²é¿ÉÒÔ¼õÇᣬµ«ÊÇÒ²±»Ö¤Ã÷ÕâÑù×ö±ÈÃô½Ý·½Ê½Êǰº¹óµÄ¡£

4¡¢Fixing defects is expensive. The greater the feedback cycle the greater the average cost of fixing a found defect. The V model approach promotes very long feedback cycles.

ÐÞ¸ÄȱÏݳɱ¾°º¹ó¡£ ·´À¡ÖÜÆÚÔ½³¤£¬Æ½¾ùÐÞ¸´È±Ïݵijɱ¾¾ÍÔ½¸ß¡£ VÄ£ÐÍ·½·¨ÌṩÁËÒ»¸ö·Ç³£³¤µÄ·´À¡ÖÜÆÚ¡£

5¡¢Increased time to value. The V model lengthens the amount of time, through increased bureaucracy and waiting time, it takes to deliver functionality into production. This in turn lowers the opportunity benefits and net present value (NPV) provided by the release.

Ôö³¤µÄʱ¼ä¼ÛÖµ¡£ VÄ£ÐÍͨ¹ýÔö¼Ó¹ÙÁź͵ȴýʱ¼ä£¬Ôö¼ÓÁ˽»¸¶×Üʱ¼ä£¬ÕâÒ²½µµÍÁË»ú»áÀûÒæºÍ·¢²¼ÌṩµÄ¾»ÏÖÖµ£¨NPV)

Figure 3. Serial SDLC/V Model.

1.4 How Agile is Different

1.4 Ãô½Ý·½·¨µÄ²»Í¬

Traditional testing professionals who are making the move to agile development may find the following aspects of agile development to be very different than what they are used to:

´«Í³²âÊÔÈËÔ±×ªÒÆµ½Ãô½Ý¿ª·¢Ä£Ê½¿ÉÄÜ·¢ÏÖ´«Í³¿ª·¢ÓëÃô½Ý¿ª·¢ÓÐÈçÏ·½ÃæµÄ²»Í¬£º

Greater collaboration. Agile developers work closely together, favoring direct communication over passing documentations back and forth to each other. They recognize that documentation is the least effective manner of communication between people.

¸ß¶ÈµÄЭ×÷£ºÃô½Ý¿ª·¢½ôÃܺÏ×÷£¬ÓÐÀûÓÚÖ±½Ó½»Á÷¹ýµÄÎļþ±Ë´ËÀ´»Ø¡£ËûÃÇÈÏʶµ½£¬ÎļþÊÇÈËÓëÈ˽»Á÷×îÓÐЧµÄ·½Ê½

Shorter work cycle. The time between specifying a requirement in detail and validating that requirement is now on the order of minutes, not months or years, due to the adoption of test-driven development (TDD) approaches, greater collaboration, and less of a reliance on temporary documentation.

½Ï¶ÌµÄ¹¤×÷ÖÜÆÚ¡£ È·¶¨ÐèÇóºÍÑéÖ¤ÐèÇóµÄʱ¼äÏÖÔÚÊǰ´ÕÕ·ÖÖÓ£¬¶ø²»ÊÇÔ»òÄ꣬ÓÉÓÚ²âÊÔÇý¶¯¿ª·¢·½·¨µÄ²ÉÓ㬸ü¼ÓЭ×÷ºÍ½éÉܶÔÁÙʱÎļþµÄÒÀÀµ¡£

Agilists embrace change. Agile developers choose to treat requirements like a prioritized stack which is allowed to change throughout the lifecycle. A changed requirement is a competitive advantage if you're able to implement it.

Ãô½ÝÕßÓµ±§±ä»¯¡£Ãô½Ý¿ª·¢ÈËԱѡÔñÈ¥¶Ô´ýÓÅÏÈÐèÇó¶ÓÁУ¬ËûÔÊÐíÔÚÕû¸öÉúÃüÖÜÆÚÖеıä¸ü£¬Èç¹ûÄãÄܹ»ÊµÏÖÒ»¸ö±ä¸üÐèÇóÄǽ«¶àÒ»¸ö¾ºÕùÓÅÊÆ

Greater flexibility is required of testers. Gone are the days of the development team handing off a "complete specification" which the testers can test again. The requirements evolve throughout the project. Ideally, acceptance-level "story tests" are written before the production code which fulfills them, implying that the tests become detailed requirement specifications.

²âÊÔÈËÔ±ÐèÒª¸ü´óµÄÁé»îÐÔ¡£ ¿ª·¢ÍŶӽ»¸¶Ò»¸öÍêÕûµÄÐèÇ󣬲âÊÔÈËÔ±ÔÚ½øÐвâÊÔµÄÈÕ×ÓÒѾ­¹ýÈ¥¡£ÐèÇó¹á´©Õû¸öÏîÄ¿ÖÜÆÚ£¬ÀíÏëÇé¿öÏ£¬ÑéÊÕ¼¶µÄ¡°³¡¾°²âÊÔÊÇÔÚ²úÆ·¿ª·¢´úÂëǰ±»±àд£¬Òâζ×ŲâÊÔÒѾ­±ä³ÉÏêϸµÄÐèÇó˵Ã÷Êé

Greater discipline is required of IT. It's very easy to say that you're going to work closely with your stakeholders, respect their decisions, produce potentially shippable software on a regular basis, and write a single test before writing just enough production code to fulfill that test (and so on) but a lot harder to actually do them. Agile development requires far greater discipline than does traditional development.

ÐèÒª¸ü¶àµÄ¼ÍÂÉ¡£ ˵ÆðÀ´ºÜÈÝÒ×£¬ÈÃÄãºÍÉæÖÚ½ôÃܵĺÏ×÷£¬ÌýÈ¡ËûÃǵĽ¨Ò飬Éú²ú³öDZÔڿɽ»¸¶µÄÈí¼þ£¬ÔÚ¿ª·¢²úÆ·´úÂëǰдһ¸öµ¥¸ö²âÊÔ¡£µ«ÊÇÕâЩʵ¼Ê×öÆðÀ´ºÜÄÑ¡£Ãô½Ý¿ª·¢±È´«Í³¿ª·¢ÐèÒª¸üÑϸñµÄ¼ÍÂÉ¡£

Greater accountability is required of stakeholders. One of the implications of adopting the practices active stakeholder participation, prioritized requirements, and producing working software on a regular basis is that stakeholders are now accountable for the decisions that they make.

ÉæÖÚÐèÒª¸ü´óµÄÔðÈΣº

Greater range of skills are required. It isn't enough to be just a tester, or just a programmer, or just an analyst, or just a ... anymore. Agilists are moving away from the Tayloristic approaches of traditional development which motivate people to become overly specialized and instead are moving towards a highly iterative and collaborative approach which requires generalizing specialists (NOT generalists!).

ÐèÒª¸ü¹ãµÄ¼¼ÊõÃæ¡£ ½ö½ö×öÒ»¸ö²âÊÔÈËÔ±£¬Ò»¸ö·ÖÎöÈËÔ± µÈÊDz»¹»µÄ£¬Ãô½ÝÕß²»ÔÙÊÇ´«Í³¿ª·¢·½·¨Öм¤ÀøÈËÃdzÉΪµÄר²Å£¬¶øÊÇÊÊÓ¦¸ß¶Èµü´úºÍЭ×÷·½·¨µÄͨ²Å£¨²»ÊǶàÃæÊÖ£©-´ó¸ÅÒâ˼ÊÇÑùÑù¾«Í¨µÄÈ˲š£

1.5 Comparing Agile and Traditional Approaches

1.5 Ãô½ÝÓ봫ͳ·½·¨¶Ô±È

The agile approach offers many benefits over the traditional V model:

Ãô½Ý·½·¨±È´«Í³µÄVÄ£ÐÍÌṩÁ˺ܶàÓÐÒæµÄµØ·½£º

Greater ability to deliver required functionality. Agile teams work closely with their stakeholders, ideally following the practiceactive stakeholder participation. This practice, in combination with an evolutionary approach, results in greater ability of agile teams to understand and then implement the actual needs of their stakeholders. Figure 4 summarizes results from Dr. Dobb's Journal (DDJ)'s 2008 Project Success Survey, showing that agile teams are more effective at delivering required functionality than traditional teams.

½»¸¶ÐèÇó¹¦ÄܵÄÄÜÁ¦:Ãô½ÝÍŶÓÓëÉæÖÚ½ôÃܺÏ×÷£¬ÀíÏëÇé¿öÏÂÂú×ãÉæÖÚµÄʵ¼ù»î¶¯¡£Õâ¸öʵ¼ù£¬½áºÏ½ø»¯·½·¨£¬Ãô½ÝÍŶӸüºÃµÄÀí½âÐèÇóµÄÄÜÁ¦²¢ÇÒʵÏÖÁËÉæÖÚÃǵÄʵ¼ÊÐèÇó¡£Figure 4 ×ܽáÁËÕâ¸ö½á¹û¡£Õ¹Ê¾Ãô½ÝÍŶÓÔÚ½»¸¶±»ÐèÒªµÄ¹¦ÄܵÄÄÜÁ¦Éϱȴ«Í³ÍŶӸüÓÐЧ¹û¡£

Greater quality. Figure 4 also shows that agile approaches result in greater quality than traditional approaches, most likely due to increased collaboration within the team and earlier and very often more testing throughout the lifecycle.

ºÜºÃµÄÖÊÁ¿¡£Figure 4 ҲչʾÁËÃô½Ý·½·¨µÄ½á¹û±È´«Í³·½·¨ÓиüºÃµÄÖÊÁ¿¡£Õâ×î¿ÉÄÜÒòΪÔö¼ÓÍŶÓÄÚ²¿µÄЭ×÷ºÍ½ÏÔçµÄ¾­³£µÄ²âÊÔÔÚÕû¸öÉúÃüÖÜÆÚÖС£

Improved designs. Agile architecture and agile design strategies are evolutionary in nature, and this, in combination with the greater levels of collaboration exhibited by agile teams, results in better designs when compared to more traditional approaches. Architecture and design are so important to agile teams that they do these activities throughout the lifecycle, not just during early lifecycle phases.

¸Ä½øÉè¼Æ¡£Ãô½Ý¼Ü¹¹ºÍÃô½ÝÉè¼Æ²ßÂÔÊDZ¾Öʽø»¯µÄ£¬¶øÕâÀë²»¿ªÃô½ÝÍÅÕ¹Ïֵĸ߶ȺÏ×÷£¬Õâ¸ö²ßÂԱȴ«Í³µÄ·½·¨¸üÄÜ»ñµÃºÃµÄÉè¼Æ½á¹û¡£¼Ü¹¹ºÍÉè¼ÆÊÇÔÚÃô½ÝÍŶÓÖзdz£ÖØÒªµÄ£¬Ãô½ÝÈËÔ±ÔÚÕû¸öÉúÃüÖÜÆÚÖж¼ÔÚ²»¶ÏµÄ¸Ä½øÉè¼ÆºÍ¼Ü¹¹£¬²»½ö½öÖ»ÊÇÔÚÉúÃüÖÜÆÚµÄÔçÆÚ½×¶Î¡£

Improved economics. Figure 4 shows that agile teams are providing greater return on investment (ROI) than traditional teams. This is due in part to the shorter feedback cycle of agile approaches which lowers the average cost of addressing defects. Furthermore, because agile teams are working smarter, not harder, they often get the functionality delivered quicker (whichFigure 4 also depicts) thereby providing quicker time to value and thus greater benefit.

¸ÄÉÆ¾­¼Ã. Figure 4 չʾÁËÃô½ÝÍŶÓÌṩÁ˱ȴ«Í³ÍŶӸü¸ßµÄͶ×ʻر¨ÂÊ£¬ÕâÊÇÓÉÓÚ²¿·ÖÔ­ÒòÃô½Ý·½·¨µÄ±È½Ï¶ÌµÄ·´À¡ÖÜÆÚ£¬Õâ½µµÍÁ˶¨Î»bugµÄƽ¾Ö³É±¾¡£ÁíÍ⣬ÒòΪÃô½ÝÍŶӹ¤×÷Áé»î£¬¶ø²»¾´Ñö£¬ËûÃǾ­³£³É¹¦¿ìËٵŦÄܽ»¸¶£¬Òò´ËÌṩÁ˸ü¿ìµÄ»ñµÃ¼ÛÖµºÍÊÕÒæ¡£

Figure 4. Success factors by paradigm (Scale is from -10 to +10).

Finally, I just wanted to point out that the results depicted inFigure 4 aren't an anomaly. DDJ's 2008 Agile Adoption Survey also found that people believed that agile teams were producing greater quality than traditional teams, providing better stakeholder satisfaction, and providing greater levels of productivity.

×îºó£¬ÎÒÖ»ÏëÖ¸³öFigure 4 ÃèÊöµÄ½á¹ûÊÇÕý³£µÄ£¬ DDJ¡®s 2008ÄêÃô½Ýµ÷²é£¬Ò²·¢ÏÖÁËÈËÃÇÆÕ±éÏêϸÃô½Ý±È´«Í³ÍŶÓÉú²ú³ö¸ü¸ßÖÊÁ¿µÄ²úÆ·£¬ÌṩµÄ²úÆ·ÉæÖÚ£¨ÐèÇó·Å£©¸üÂúÒ⣬Ìṩ¸ü¸ßµÄÉú²úÂÊ¡£

   
6817 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

LoadRunnerÐÔÄܲâÊÔ»ù´¡
Èí¼þ²âÊÔ½á¹û·ÖÎöºÍÖÊÁ¿±¨¸æ
ÃæÏò¶ÔÏóÈí¼þ²âÊÔ¼¼ÊõÑо¿
Éè¼Æ²âÊÔÓÃÀýµÄËÄÌõÔ­Ôò
¹¦ÄܲâÊÔÖйÊÕÏÄ£Ð͵Ľ¨Á¢
ÐÔÄܲâÊÔ×ÛÊö


ÐÔÄܲâÊÔ·½·¨Óë¼¼Êõ
²âÊÔ¹ý³ÌÓëÍŶӹÜÀí
LoadRunner½øÐÐÐÔÄܲâÊÔ
WEBÓ¦ÓõÄÈí¼þ²âÊÔ
ÊÖ»úÈí¼þ²âÊÔ
°×ºÐ²âÊÔ·½·¨Óë¼¼Êõ


ij²©²ÊÐÐÒµ Êý¾Ý¿â×Ô¶¯»¯²âÊÔ
IT·þÎñÉÌ Web°²È«²âÊÔ
IT·þÎñÉÌ ×Ô¶¯»¯²âÊÔ¿ò¼Ü
º£º½¹É·Ý µ¥Ôª²âÊÔ¡¢Öع¹
²âÊÔÐèÇó·ÖÎöÓë²âÊÔÓÃÀý·ÖÎö
»¥ÁªÍøweb²âÊÔ·½·¨Óëʵ¼ù
»ùÓÚSeleniumµÄWeb×Ô¶¯»¯²âÊÔ