agile--Agile Development, as a new set of software development models introduced after the collapse of the CMM myth, has attracted much attention over the years and has been placed in great expectations. The application of agile development in other industries is unclear, but the following summarizes my company's agile development experiment, hoping to achieve the glimpse goal.
Agile Development Manifesto--
Individuals and interactions outweigh processes and tools
Working software is better than exhaustive documentation
Customer cooperation is better than contract negotiation
Responding to change is better than following plan
Although the right is valuable, we feel that the left is of greater value.
The above manifesto is more abstract, based on this idea, the following is the Thoughtswork consulting company's respected N Agile Development Practices:
Iteration
Iterative development. Working software is better than exhaustive documentation. Therefore, agile development advocates dividing a complete software version number into multiple iterations, each of which implements different characteristics. Significant, high-priority features are prioritized, and high-risk features are implemented first. The prototype of the software was developed early in the project and based on this prototype in a possibly iterative evening. The advantages of iterative development are: Early coding, exposing the technical risks of the project as early as possible. Enable customers to see executable software as early as possible, and propose optimization advice. The ability to deliver the available version numbers to different customers in a phased and early stage.
iterationplanningmeeting
Iteration planning meeting. At the start of each iteration, the entire development team is convened, an iterative planning session is held, and all the team members speak out, understand the iterative development tasks, and answer doubts.
Story card/story wall/feature List
In each iteration, the architect is responsible for breaking down all the features into multiple story Card. Each story can be viewed as an independent feature. Each story should be able to be developed within a maximum of 1 weeks, delivering an advance test (pre-test). When all the stories in an iteration have been developed, the test group then carries out a complete test. Throughout the test process (pre-test,test), based on the daily build, the test group is always taking the latest compiled version number from the configuration library on a daily basis, and the developer is also ready to change the questionnaire submitted by the Test personnel and fit into the configuration library.
One of the characteristics of Agile development is open office, full communication, including test personnel and developers working together. Based on the development of the story card, the team will place a whiteboard in the Open office area with all the story card affixed to the current development status in 4 regions, respectively: untapped, developing, pre-testing, testing. The story card developer and test staff moved the story card to update the status of the story card based on development progress on story wall. Such a way can be a very intuitive understanding of project development progress.
When developers start to develop a story, TA needs to find the corresponding test staff to explain the story function, so that the test staff have a consistent understanding, at the same time start their own proactive system test script development.
Standup Meeting
Standing meeting. Every morning, all the team members around the story wall, open an efficient meeting, usually not more than 15 minutes, reporting development progress, ask questions, but do not waste all the time to solve the problem immediately, but after the individual communication solution.
Pair Programming
Pair programming refers to two developer pair encodings. The advantage of pairing programming is that the code written after two people has been discussed more intact than a single person, some large directions are not biased, and some details can be fully taken into account. An experienced developer and a novice pair programming, can promote the growth of novice, to ensure the quality of software development.
ci/daily Build
Whether continuous integration and daily build capability is strong enough is an important foundation for the success of iterative development. Based on daily builds. Developers will write/change the code in a timely manner to update the configuration library, their own initiative to the compiler at least once a day to take the initiative to remove the code from the configuration library, perform their own active code static check (such as pclint), unit test, compile version number, installation, system test, dynamic check (such as purify). After these self-initiated tasks have been completed, the report will be output, and you can send the message to the team members voluntarily. Assuming that there is no matter what the problem, the relevant responsible person should be timely changes.
Can see that the entire development group frequently update the code, some problems inevitably occur. The testing department is constantly testing based on the latest code. Whether the new problem can be found and eliminated in time depends on the ability of the active unit test and the system testing capability, especially the ability of self-motivated system testing. Assuming that self-motivated testing can only verify the simplest operation, the hidden dangers of new code will be very difficult to discover and leave behind the project to form a large risk. In fact, it is most difficult to improve your own active test coverage.
Retrospect
Summary and Reflection. After each iteration, the project team members convene a summary meeting to summarize good practices and lessons, and to implement the development.
ShowCase
Demonstrate. After each story was developed, the developer called the test staff and demonstrated the software function so that the test staff fully understand the software functions.
refactoring
Refactoring. Since the iterative development model developed an executable software prototype early in the project, the Code and architecture developed at the outset could not be optimal and exhaustive, so there was a need for continuous refactoring of code and architecture in a possible story development. Iterative development is a very high requirement for architects. Since the architect wants to split a full version number into multiple iterations, each fall is split into very many stories, from an architectural standpoint, these stories must be very strong in succession and can be superimposed, so that the stories that might be developed will not completely overturn the code and architecture that was developed earlier. At the same time, it is inevitable that the code should be kept intact and constantly reconstructed.
TDD
Test-driven development. As mentioned above, iterative development is characterized by frequent code entry and frequent publication of version numbers. Test driven development is an important means of ensuring that the code is properly executed and not destroyed at a later stage. The test here mainly refers to the unit test.
An Agile approach to reflection:
The agile development projects that you participate in are not always very successful, and this may be a common problem for the industry:
1, for the new software, testing personnel in the early stages of the project to participate in and realize their own initiative test script, but in fact, the interface of the software is very unstable, resulting in the work of the test personnel rework is very large.
2, for the new software, data personnel early participation, late rework workload, the reason with the 1th.
3, self-active system test workload, test personnel put a lot of effort in making test oneself initiative, and not enough energy to put in the real test software function is normal. Even so, self-motivated system test scripts are more than a formality, can not detect deep-seated problems.
4, Code dynamic Check tool execution is not ideal, a mere formality. No one has a deep understanding of purify and application experience, the report detected a lot of alarm, but do not know how to eliminate.
5, because of the high-speed prototype, not in the architecture of rigorous design, resulting in the post-stack code.
6, the remote development mode can not achieve high-speed construction, high-speed delivery, the team generally feel very tired.
7, Agile Development does not promote overtime, but in fact, whether it is the CMM or Agile development mode and whether or not overtime are not necessarily linked.
Agile Development Process Summary