Extreme Programming and Agile development
Extreme Programming and Agile development XU Jing Zhou
According to my understanding in the approach to the review of the software development life cycle, I have come to one conclusion: in fact meet the design standards of the only software documentation, source code list.
— Jack Reeves
Introduction
2001, in order to solve many of the company's software team into the process of growing quagmire, a group of industry experts summarized some software development team will enable rapid, the ability to respond to changing values and principles, they call themselves Agility Alliance. Agile development process many ways, there are: SCRUM, Crystal, feature-driven software development (Feature Driven Development, or FDD), Adaptive Software Development (Adaptive Software Development, or ASD), and most important of Extreme Programming (eXtreme Programming, or XP). Extreme Programming (XP) is in 1998 by the Smalltalk community in the masters who first advocated by Kent Beck.
Extreme Programming
Design and programming are all human activities. Forget that, will lose everything.
— Bjarne Stroustrup
Extreme Programming (XP) is the most agile methods chopsticks were one. It is a series of simple but from the practice of co-dependent components. Practice these together to form an integrated entity is better than some.
Below is the effective practice of Extreme Programming:
A complete team
XP all participants in the project (developers, customers, testing, etc.) to work together in an open place, they are the same team members. On the walls of this place at the hoisting of a large, a significant number of charts and other things that they progress.
2, the game plan is ongoing, gradual. Every two weeks, developers for the next two weeks on the estimates of the cost of the candidate, and customers based on cost and business value of the options to achieve.
3, as a test, choose the desired characteristics of each part, the customer can define a scripting language automatic acceptance testing to show that the properties can work.
4, simple design team designed just to maintain the current system and the match. It passed all the tests, do not contain any duplication, the expression of the writers would like to express all the things, and the code contains as little as possible.
5, Pair Programming all products from the two software programmers are, sitting side by side together in the same machine constructed.
6, Test-driven development is the preparation of a verification unit testing, it is a design behavior. Similarly, it is a document prepared by the act. The preparation of unit testing to avoid a considerable number of feedback loop, in particular the work function can verify the feedback loop. Programmers in a very short cycle, their first increase in a failed test, and then make it through.
7, improved design at any time has been improved by reconstruction corruption code, the code as much as possible to maintain a clean, with express power.
8, integrated team continued integrity of the system is always to be integrated. A person Chiru (Check in), the responsibility for all other code integration.
9, the collective ownership of any twinning code programmers can improve at any time any code. Not a programmer to any specific technology or separate modules for each person can be involved in any other aspects of development.
10, coding standard
All of the code system looks like a single person is prepared.
11, Metaphor
The entire system will be linked to the overall situation of view; it is the future of imaging system is that it makes all the separate module location and appearance became apparent intuitive. If the module and the appearance of the whole metaphor not, then you know that the module is wrong.
12, sustainable pace
Teams have won only lasting hope. They can be long-term efforts to maintain the pace of work, they kept on, they put the item as a marathon, not sprint at full speed.
Extreme Programming is a simple, concrete practice, practice, the formation of an agile development process. Extreme Programming is a very good, common software development methodology, the project team can be used directly used, can also increase the number of practice, or to some of these changes after a practice.
Agile development
The interactions between people are complex, and its effect is always difficult to forecast, but it is the work of the most important aspects.
— Tom DeMacro and Timothy Lister
Agile Software Development Declaration:
N individual and interactive processes and tools than
N the software can work better than the exhaustive documentation
N customers than contract negotiations
N response to changes than to follow the plan while also valuable right, but we believe that the left has greater value.
Agile follow the principle of the Declaration:
N our highest priority is to be done through early and continuous delivery of valuable software to enable customer satisfaction.
N Even in the later stage of development, also welcomed the change in demand. Agile process-use change to create a competitive advantage for customers.
N regular delivery of the software can work, the delivery interval can be from a few weeks to several months, the delivery time intervals as short as possible.
N in the entire project development, business and developers must all work together every day.
N on the incentive to build up the individual projects. To provide them with necessary environment and support, and trust them to complete the work.
N in the team, the most effective and efficient way to transmit information, is the face-to-face conversation.
N the work of the software is the primary measure the progress of standards.
N agile process to promote sustainable development speed. Responsible for the development and users should be able to maintain a long-term and steady development speed.
N constant attention to the excellent skills and good design capacity will be enhanced and agile.
N simple is the most fundamental.
N the best framework, the demand for self-organization and design team.
N at a certain period of time, the team will be how to work more effectively to show remorse, and then a corresponding right to adjust their behaviour.
When the software development and the changing needs change, the software will be designed in bad taste, when software Below there any smell, that software is corrupt.
N rigid: it is difficult to change the system, because everyone will be forced many changes to other parts of the system other changes.
N vulnerability: the system will lead to changes in the system and changes in the concept of place in many parts of unrelated problems.
N firmly: difficult to untie the tangled system, so that it will become available in other systems of reusable components.
N viscosity: compare doing the right things the wrong things difficult.
N 3B unnecessary complexity: design contains do not have any direct benefit to the infrastructure.
N unnecessary repetition: the design of the structure includes duplication, and the repetitive structure of the abstract can use a single unified.
N obscure: it is difficult to read and understand. Not very good illustration of intent.
Agile teams rely on access to dynamic change. Teams almost no pre-designed, therefore, does not require a mature initial design. They are more willing to maintain as much as possible the design of clean, simple, and use many unit testing and acceptance testing as a support. This has maintained a design flexibility, easy-to-understand nature. Teams use of this flexibility, continuing to improve the design, to the end of each iteration of the system has generated the most suited to the needs of that iterative design.
In order to change the design of the above software corrupts flavor, Agile development has taken the following object-oriented design principles to be avoided, these principles are as follows:
N duties of a single principle (SRP)
On the one category, it should be only a matter of the reasons for the changes.
N open - closed principles (OCP)
Software entities should be able to expand, but can not be amended.
N Liskov replacement principles (LSP)
Subtype must be able to replace their base type.
N rely on the principle of inversion (DIP)
Abstract should not rely on in the details. Details should rely on the abstract.
N interface segregation principles (ISP)
Should not be forced to depend on their customers not approach. Interface of customers, it does not belong in the class hierarchy.
N reuse issued equivalence principle (REP)
Reusable size of the particle size is released.
N common closed principles (CCP)
Included in the category for all changes in the nature of the same category should be a common closed. If a change to have an impact on a package, the package will be the impact of all types, and other packages do not have any impact.
N reuse of common principles (CRP)
A package of all the common types should be reusable. If included in the reuse of a class, then we should all reusable bag category.
N acyclic rely on the principle of (ADP)
The dependence of the package does not allow the existence Central map.
N rely on the principle of stability (SDP)
In the direction toward stability depend on.
N stability abstract principles (SAP)
Packet level of abstraction and its stability should be the same.
In the above packages is the concept: inclusive package can be used as a kind of containers, through organizations such as the packet, we can at a higher level of understanding of the abstract design, we can also package management software through the development and dissemination. According to some principle aim is the application of procedures in the class divide, and then those of the category assigned to the package.
Below give a simple design principles of the model and application examples:
Question:
Simple choices in the design and operation of the software lamps, table lamps from a switch and a light component. You can ask open or shut, switches, lights can be turned on or off to.
Solution 1:
Figure 1 is the most simple solution, Switch objects can be true Polling switch state, and can send relevant information to turnOff turnOn and Light.
Solution 2:
The design violated the above two design principles: reliance on the principle of inversion (DIP) closed and open principles (OCP), DIP principle tell us to give priority to rely on abstract categories, and Switch Light dependent on the specific type of OCP is a violation of any Switch places need to bring Light, and this can not be easy to manage expansion Switch Light, in addition to the other objects. In order to solve this programme, ABSTRACT SERVER model can be used in the Light Switch and the introduction of an interface between, and this makes Switch can control any of this interface to achieve things, it will meet the DIP and OCP principles. As shown in Figure 2 below:
Solution 3:
Figure 2 shows the above solution, a single breach of duties principles (SRP), the Switch and Light bundled together, and they may be different reasons for the sake of change. This model can be used to solve ADAPTER, Switchable derived from the adapter and entrusted to the Light, the problem was solved beautiful now, Switch can control any can be open or closed target. But this will also need the time and space in exchange for the price. As shown in Figure 3 below:
Agile design is a process, not an event. It is a continuous application of the principles, practice patterns and software to improve the structure and readability of the process. Its commitment to keep the system design at any time as far as possible in a simple, clean and expressive.
Reference Design Mode - Reusable Object-Oriented Software basis - such as Li British translation Reconstruction - to improve the design of existing code - such as Hou Jie translation Agile Software Development - Principles, Patterns and realize - Deng translation
Contact Address: Xi'an in Shaanxi Province, hospital labor Road 90 (Taiwan MILL Jiashuyuan) six modules Zip Code: 710082
Email: jingzhou_xu@163.net
Future studio (Future Studio)
Tags: agile, programming








0 Comments to “Extreme Programming and Agile development”
No Comments. Send your comment.
Leave a Reply
You must be logged in to post a comment.