What is extreme programming? What is programming as an excuse? What is agile development?

Source: Internet
Author: User

Extremeprogramming (XP) was proposed by kentbeck in 1996. Kentbeck worked with wardcunnheim in the early 1990s s to explore new software development methods, hoping to make software development easier and more effective. Kent carefully observed and analyzed the various prerequisites, possible actions, and difficulties for simplifying software development. In March 1996, Kent finally introduced a new idea of software development-XP in a project for DaimlerChrysler.
XP is a lightweight and smart software development method. It is also a very rigorous and thorough method. Its foundation and values are communication, simplicity, feedback, and courage. That is, any software project can be improved from four aspects: strengthen communication, start from simplicity, and seek feedback; be brave in seeking truth from facts. XP is a near-spiral development method, which breaks down complicated development processes into relatively simple small cycles. Through positive communication, feedback, and a series of other methods, developers and customers can clearly understand the development progress, changes, issues to be resolved, and potential difficulties, and adjust the development process in a timely manner according to the actual situation.

Why is it called "extreme" (Limit)

"Extreme" (Limit) means that, compared with the traditional project development method, XP emphasizes that every method and idea listed in it is the ultimate and the best. What other XP does not advocate, ignore all (such as the overall design at the early stage of development ). For a project that strictly implements XP, its development process should be stable, efficient, and fast. It can work 40 hours a week without delaying the project progress.

What is XP software development?

1. Extreme work environment

To maximize and fulfill the basic rights and obligations of customers and developers during software development, XP requires that the working environment be the best. Each person who participates in project development will assume a role (Project Manager, project supervisor, etc.) and fulfill corresponding rights and obligations. All people work in the same open development environment. It is best for everyone to work in the same big house with refreshments. They do not advocate overtime for 40 hours a week. Every morning, everyone stood up and held a short meeting. There were some large whiteboards on the wall, and all story cards and CRC cards were pasted on them. During the discussion, they could write and draw on them; after work, you can play computer games .......

2. Extreme demand

The customer should be a member of the Project Development Team, rather than separated from the developer, because the customer plays an important role from the Project Plan to the final acceptance. Developers and customers turn various requirements into small demand modules (userstory). For example, "calculating the total number of grades means accumulating the number of students in all classes of the grade ."; These modules are combined or decomposed into smaller modules based on actual conditions. They are recorded on small cards (storycard, it is then implemented by programmers in every small cycle (iteration, usually no more than three weeks); customers specify their priorities based on the commercial value of each module; what developers need to do is to determine the development risks of each requirement module. The high risk (usually due to lack of similar experience) requirement modules will be prioritized for research, exploration and development; after developers and customers evaluate each module from different perspectives, they are arranged in different development cycles, and the customer will get a development plan as accurate as possible; the customer specifies an acceptance test (function test) for each requirement module ).

Each time the software is released (after a development cycle), you can get a ready-to-use system that fully meets all the requirements in the corresponding plan. In some traditional development modes, No matter what function, the user must wait until all development is completed.

3. Extreme Design

From the perspective of specific development, the internal process of XP is one by one based on the test-driven development cycle, such as the planning and design of the outer process is centered on this. Each development cycle has many unittest instances ). At the beginning, all unit tests failed because nothing was implemented. As small demand modules were completed, more and more unit tests were passed. In this way, both the customer and the developer can easily check whether the customer has fulfilled its commitment to the customer. XP advocates simple design, which is the simplest way to allow programs written for each simple requirement to pass all relevant unit tests. XP emphasizes abandoning the detailed design package (bigdesignupfront), because there is a lot of content that you don't need now or recently. XP also strongly advocates review, code review, and refecement and optimization. All these processes are actually optimization design processes; continuous unit tests and functional tests during these processes can ensure that the restructured and optimized system still meets all requirements.

4 eXtreme Programming

Since programming is very important, XP advocates that two people write the same program together (pairprogramming), and the ownership of the Code is attributed to the entire development team (collectivecodeownership ). Programmers must strictly abide by programming specifications when writing and reorganizing optimization programs. Anyone can modify the program written by others. After modification, make sure that the new program can pass the unit test.

5 limit test

Since testing is important, XP advocates writing unit tests before writing programs. Developers should integrate developed modules frequently (continuousintegration) and run unit tests each time after integration. unit tests should be run for any code review and modification; if a bug is found, you need to add the corresponding test (so the XP method does not need a bug database ). In addition to unit testing, integration testing, function testing, load testing, and system testing are available. All these tests are one of the most important documents in the XP development process and one of the content that is finally delivered to users.

Introduction to some basic concepts in XP

Userstory: developers require customers to write all their requirements into independent stories, each of which can be completed in just a few days. During the development process, the customer can propose a new userstory at any time or change the previous userstory.

Storyestimates and development speed: The Development Team estimates each userstory and calculates the development speed repeatedly based on the actual situation in each development cycle (iteration. In this way, developers and customers can know how much userstory can be developed each week.

Releaseplan and releas.pdf: throughout the development process, developers will continuously release new versions. Together with the customer, developers determine the userstory contained in each release.

Iteration (development cycle) and iterationplan: In a release process, developers require customers to select the most valuable userstory as the development content for the next week or two.

Theseed: after the first development cycle (iteration) is completed, it is submitted to the customer's system. Although this is not the final product, it has implemented several story that customers think is the most important, and developers will gradually add new modules based on it.

Continuousintegration: assemble the developed userstory modules one by one to approach and ultimately complete the final product step by step.

Acceptance Test (function test): For each userstory, the customer will define some test cases and developers will automate the process of running these test cases.

Unittest: before writing a program, a programmer writes a test program for most classes.

Refactoring: removes the redundant part of the code and increases code reusability and scalability.

Summary

One of XP's success factors is to focus on customer feedback-the purpose of development is to meet the customer's needs. The XP method enables developers to confidently face changes to customer needs. XP emphasizes teamwork. Managers, customers, and developers are all members of the development team. By fully communicating and cooperating with each other, the team strives to develop high-quality software in a simple but effective way like XP. The Design of XP is simple and efficient. Programmers get customer feedback through testing and modify the code and Design Based on changes. They always strive to deliver the software to the customer as early as possible. XP programmers are brave enough to face the needs and technical changes.

XP is like an intelligent puzzle made up of many small pieces. It makes no sense to look at each piece separately, but after it is assembled, a beautiful picture will appear in front of you.

When to avoid eXtreme Programming

Extreme Programming, also known as XP, has proved to be a successful development method for many project managers and project programmers to develop projects. It has a good development style. However, it does not apply to all situations or all project groups. If you try to choose eXtreme Programming as your core development method without considering your development team, Development Department, or development company, this is the case that comes to the fore. Make sure that your Development Unit is applicable to the special needs of this extreme programming development method.

In a simple team, eXtreme Programming regards developers rather than project managers as the core staff of project development. It chooses developers to make project decisions. This technology can improve development efficiency and minimize the trouble of management interfaces, but extreme programming will bring you problems you never have. It is nosy and lacks effective management. In addition, management should be added when appropriate. If development management is not performed, it will be harmful to your project development.

-============================================

Excuse programming (Excuse programming ). Yes, this is what many project teams, especially project managers, have been doing. They always give one excuse after another. There are no good excuses for demand development and demand management, and no excuses for Tracking Project risks and problems and systematically and timely solutions to them.

The most common excuse is time, that is, no time. Why is there no time? Because time is wasted on wrong things, they need to work overtime. They are doing one-sided eXtreme Programming, Or, they should say, extra programming. This is a vicious circle, and they need to get out of this strange circle to get things on the right track. But it is not uncommon that project managers are too conceited and it is difficult to get out of this strange circle. They always give one excuse after another. There is no exception in management, but an excuse for management.

Note: We support eXtreme Programming XP, but eXtreme Programming applies to people who know exactly what they are doing. Extreme Programming is not applicable to people who disguise what they do. Extreme Programming is suitable for experts rather than fake goods. Extreme Programming is not an excuse for programming. It is not an excuse for not doing the right thing.

From excuse programming to eXtreme Programming
We think that every developer, manager, and professional in every software development community should think about what they know and what they don't know, be honest with yourself and others. We should also improve our skills very seriously and enthusiastically. In addition, there are no other shortcuts. Please do not make any excuses.

So let's face the problem very honestly. But people (such as project managers) often have problems that they do not know themselves. They are not aware of this yet. If you try to convince them that they have problems, you will find more problems. Don't forget that they are all good programmers. You did not see all the problems. So sometimes, when people learn from their own mistakes, some will be lucky if they never learn, and some will never learn and make the same mistake again.

But some people may always ask themselves: How can I do better than yesterday? Fortunately, there are some people around us. When you give them suggestions, they may disagree, but when they return home, calm down, start to think, and then they will come back to you. There is still hope for these people. Hopefully, there are more and more such people.

Once the excuses for programming are tame, We can forgive them for their past. Everything can be forgiven. We can begin to educate them the right way, and often we can even learn a lot from them. There are many ways to arm them, they can read books and so on, they can also seek help from their mentors, or even virtual mentors.

As a manager or customer, you always need to pick out who to do your project. The choice of a team (especially her leadership) is a key element. If they are experts, they would be the best. Otherwise, look for those with potential and design a strategy to make them move forward as quickly as possible-how to do it as quickly as possible, this is another topic.

--------------------------------------

Agile development is a human-centered, iterative, and progressive development method. In Agile development, the construction of software projects is divided into multiple sub-projects. The results of each sub-project are tested and have the characteristics of integration and operation. Simply put, a large project is divided into multiple small projects that are connected to each other, but can also be run independently and completed separately. In this process, the software remains available.

Is agile development a new theory? The answer is different. Careful people can find that agile development actually draws on a large number of methods in software engineering. Iteration and incremental development, the two methods mentioned in any software engineering textbook, play a very important role in the agile development model. Looking back, we can also see the shadows of waterfall and quick prototyping, and there may be more.

Improvement, not innovation. Agile development can be understood as the integration based on the original software development method-taking its essence and removing its dregs. Therefore, agile development inherits the advantages of many original methods. "In the process of agile software development, we get a working software every two weeks," Fowler said. "This is a very short cycle, this allows end users to quickly and timely view the results of the software they build with money."

Agility is definitely a part of the software itself.

Aside from the software process, there is no technical accumulation to talk about agile style project management.

What processes, design, integration, and testing are all dominated by the software itself.

Moderate unit test cases, automated building/automated testing, that is the external manifestation of agility.

A concept of moderate design and continuous improvement is the essence of agility. Finally, all these are reflected in the Code, which is an agile implementation.

If we can build a good technical discussion atmosphere and a spirit of mutual assistance, we will realize agile victory and value.

For those who do not understand the code and have not done programming, we have nothing to talk about agile.

What are the disadvantages of agile development?

1. Agile development is people-oriented and requires a high level of PM. It requires some art to manage people. If the PM is not well controlled, the risk of the entire project will be relatively high!

2. In the balance process of agile development, some aspects will inevitably be ignored, and problems may occur in these aspects.

3. Agile development requires a high level of team members and cannot be too different. Otherwise, the pace is hard to control.

 

Reference Source:

Http://tech.acnow.net/Html/Program/soft_project/SoftMethod/2005-8/7/230147673.shtml

Http://hi.baidu.com/mayig/blog/item/dbf2f81f0c093ef5e0fe0b58.html

Http://zhidao.baidu.com/question/5153690.html

 

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.