On the attention of agile development
Summary
This article is a summary of the experience of the project development experience. The company has selected agile development ideas based on their own development strength and the project size. In the development process, we feel the results of agile thinking to us, and they also saw agile ideas in the actual situation of our situation. We have studied these places to form some theories and efforts to make it portable into a similar development environment.
background
My company has tried to use agile idea to develop a special equipment to develop a special equipment, starting pilot from a city. I have participated in this project, do system analysis, code writing, system testing.
The production inspection and regular inspection of special equipment is to enforce the national regulations. In recent years, the National Technical Quality Supervision Bureau has encouraged local technical regulatory bureaus to use information-based methods to renovate business, improve work efficiency; on the other hand, informatization business facilitates data Collection and management provide an advantageous basis for the development and revision of the management inspection standards for special equipment.
The system we have to do, including the informationization of all the monitoring inspection business of a city boiler inspection unit and the development of the daily management software of the unit, some software is needed to distribute data in the next unit, then collect the unit collection I will give it to the superior unit. After the superior unit is approximately, it will be handled by the unit, and the other part needs to allow the software user to fill in the data through the Internet to simplify data collected with weaker importance. The unit should have a unified software interface for all employees, and the corresponding business is started from this interface, and we describe as the total platform. The total platform is the B / S structure, using ASP.NET development, and the software used by the business is developed by Delphi SQLServer due to a large number of data services.
For the sake of clamping, we define three levels of work, in turn: items, modules, function points. The module is seen as an application that can be executed independently, and a project is divided into a dry module, and each module contains several functional points, and our main work can be defined as iterative development function points. The reason for this is, on the one hand, the project we have made has been in a small number of cases, they can be used as a reference for our functional point; on the other hand, the system's industry characteristics are more obvious
Note 1: Pay attention to the selection of the release cycle
A large feature of agile software development is the periodic release of runoff software products. The original intention is to make it clearer, and the principle behind it is what we often say. "The customer only saw you gave him, can you know yourself what do you need". The selection periodic release is because on the one hand, it is necessary to respond to the needs of the customer in a time, and on the other hand, avoid development of detours, reducing the loss of errors. But when implementation, we have encountered practical problems. Our development results are in the form of module release, each time a certain state of a module. The initial plan is released three weeks. The result of the three weeks of the beginning of our module only rough start, exit function, the background database is initially formed, and the module framework has been built. When publishing, we need customers to evaluate the above architecture and feedback to us so that we can modify it. Results The customer's feedback is not late, because the actual situation is that the customer only looks out, because there is no function in it. When I tried to explain to the customers, they could talk about this software casually, their response was not as good as the purpose of demand analysis, and one of them also expressed their disappointment. We are now facing such a problem: this release is obviously failed, it not only does not reach the expected effect, and even has a counterproreating. So where is we fail? We re-examine the products released, and it can be evaluated. It is still much more, and it is possible to have a place that can be merged with future module data (in fact this problem), then we must In the initial definition of sufficiently compatible entity structure and relationship, this is very little, but the customer has a person who uses multiple modules simultaneously, he should be able to see, without waiting for the module to analyze enough to get enough To the project level to analyze design projects. But our customers refuse to evaluate, this is the most important question: Customers don't know what agile development, what ultimate programming, so don't I hope they know what is iteration, they are in their own or traditional views And for them, the software is a commodity. Customers' concept of goods affects their views of the modules we posted. In their view, the product is to spend money, it can be used. No business will give you semi-finished products in a factory, give you a semi-finished product after a while, the front of the one let you throw away, so repeated The time is only you bought this product. When we speculate this, we started to verify this idea. We will then send customers a case where we have implemented success. Please ask some of your own views on the software interface. Of course, when you choose a case, we have considered some factors. If you want to get reliable information, you have no more extra customers. The burden, but also to ensure the confidentiality of the company's business. Our idea is for the psychological psychology, because it is a representative of mature companies, customers will use and evaluate, while able to subtle the company's software style. Soon, feedback is back, the customer puts forward a lot of zero-scattered requirements, we have found it has been able to apply for our modules. I have already finished the fourth week. We noticed that if we released the module of the new board in the sixth week, we repeat our first release, so we changed the release plan, ready to release after the overall function of the module, the entire module developed We have five weeks. Then our module is released, according to the feedback and module of our receivable, we estimate that the next release can be set after 4 weeks. Subsequently, our modules have been stabilized for two weeks. Note 2: Your customers should pay attention to change requirements
The most calm in agile development should be the code development phase, and the results generated at this stage depends on the team's technical level. But the industry is recognized that customers always make changes regardless of the team level, this point everyone is often. Taking our team as an example, the changes received after each iteration release are more than five. In theory, the number of changes in feedback should be more started, and then slowly decrease. But this situation is now, let us feel that our development is not agile. So we spent some time in the user's change, the method was to organize user needs: with a two-dimensional table to divide the demand, the horizontal axis is the time proposed by the demand, the vertical axis is the classification belonging. Classification is our own, there is no specific definition in advance, which means that the perfection of classification is to synchronize with the user's change demand. We have found that users' changes can be divided into the following three categories: 1. Personal habit requirements; Second, software correctness requirements; third, software validity requirements. Personal habits, the user's operating habits, such as a change requirement "When entering data on the interface, you must be able to jump into the next input box via the Enter key", such changes are most frequent. We even discovered the requirements for change and change. The second type of change requires an error that is typically caused by the user's misoperation or intentional destructive input. Third type changes demand is where our software process does not match their business processes. Regardless of what we are in development, the first type of change is always high, which makes our software development very embarrassing: We expect customers to make more of the two, three types of changes, but customers apparently not understand us This requirement. We decide to manage the customer's changes. In the past, we would select a change request to collect staff, regularly to the customer's change needs, and the method collected is to listen to the user's complaint. The change demand is recorded by the specialist, and then we will study these disturbances such as the vocational changes. In order to improve this method, we have made a description of the demand. Each list corresponds to a change requirement. The reason for the change needs to fill in the changes, the target details, and this list must be made by our staff and customers. The person in charge will sign at the same time can be used. The implementation is as follows: The problem collector is distributed to the customer enough problem description order, and the last problem description order is reclaimed. After confirming the content of the list, please check the customer After the problem collector signs. We apply these changes in the next iteration. The benefits of doing this are that the user's change needs are raised to a status that makes users pay attention, and the user's changes in the case of change the demand. After they pick, it is a more important part of the entire system, and some unnecessary changes are filtered inside the customer. Another benefit is that the customer's changes are relaxed, and you can change the demand at any time. In the past, I used the software under the surveillance of our personnel. I had a psychological pressure. I have to try the problem. Even if I don't waste this opportunity to do this, the result is excessively pursued the third point of the last day: pay attention to keep the development rhythm
Among the "agile" meaning of agile development, there is a significance we have experienced the development process, that is, the development of the rhythm. For example, the timeout work is prohibited in agile development, even if someone is voluntarily or keen, this does not meet our ideas. This is not a single-oriented meaning, there is another layer of meaning: The rhythm of team action is far more difficult to grasp the rhythm of individual action, and the team is difficult to create value under the rhythm of change. If the difficulty of grasping team rhythm is very difficult, we would rather set the team's rhythm in a stable small range. This is the experience of our personal experience. In fact, the most suitable development rhythm of each team is different, depending on the team leadership consciously. Once you find this development rhythm, the team's software process is predicted, reaching the managed level, which is the condition of our measurement team development rhythm.
Quaternary: Section to programming
The entire development process, our team is a room, discussing development details, technical issues discussing in the usual development, demand issues consult customers to customers everyday fixed time, if the customer cannot clearly demand, our self-propelion has been developed. We encourage team members to discuss and see each other. This has been introduced with the intersection of agile development, and we feel that this programmer is universally open to domestic programmers (husband and wife can exceed the exception). The programming is a method of balanceting development efficiency and development quality, but not unique, we take a single programming team assist in the principle of side weight efficiency, theoretically, more efficient than the programming. One thing to do is a little bit of code quality, so that we have a struggle in the later iteration, but fortunately, the code reconstruction of the code has twisted the situation and guarantees the quality and speed of development. to sum up
The above is a summary of my project in an agile development idea to guide the software development process. These conclusions have been discovered, and these links are discovered, and these links are found. There is an impact on my future work.