Iterative development requires a different point of view

xiaoxiao2021-03-06  21

Iterative development requires a different point of view

English original

content:

The new ideological project manager of the new ideological project manager's new ideological quality assurance and method of the new ideological quality guarantee and method of experts, the new ideological conclusion of the new ideological customer, the new ideology

The Rational Zone is also:

All articles online courses

Per Kroll (Pkroll@us.ibm.com) Director, Rational Unified Process, IBM2004 April

This article comes from Rational EDGE: RUP experts to explain the duties and views of the members needed by the software development project, and introduced successful customer cases that transform from the traditional waterfall type method.

Successful use of iterative development methods is not only required to deploy a series of new technologies, but also need to change the way teamwork and the responsibility of team members. In this article, we will learn about the duties and views of the members needed by the software development project, and introduce the successful customer case that is transformed from the traditional waterfall type method to iteration. Extensive references these changes as a "new idea", we will pay attention to different individual roles in the software development project:

Analysts are primarily responsible for interacting with customer. Developers are mainly responsible for design, implementation, and unit testing. Test staff is primarily responsible for functionality, performance and system testing. The project manager is mainly responsible for the continued project team tracking and paying attention to key delivery products. Quality assurance and method experts are responsible for quality standards and best practices. Customers are responsible for clarifying what kind of ability to care about their business needs. The new ideas of analysts are dealing in traditional waterfall types, analysts dealing with people outside the users and project teams. The goal is to understand and develop a program that represents a series of needs, documentation, and then handed these demand documents to the development team. Some development organizations use a long list of "future" states to explain the needs; other organizations have expressed their demand at high levels, which retains a lot of space for explanation requirements. In both cases, there must be such a hypothesis that analysts must understand the business and understand the user, and this analyst should be a person who should have any functionality that the system should have. Once the analyst documentation needs, he or she will ask the user to check these demand documents (even if they cannot fully understand the technical language used to express the needs, and / or they cannot represent the system by visualization. How many needs are how to meet the needs of users). Then, the requirements for demand specifications are the work of developers. Typically, whether developers or testers are not involved in the job of elaboration. And once the demand is specified, there are very few positive interactions between analysts and designers. Analysts are just simple to clarify the content contained in the demand manual. This conventional model will be explained below in certain aspects of defects.

New idea of ​​analyst

Establish a continuous interaction with the end customers to ensure that developers can create a correct system. Encourage the key competency of the system as early as possible to deepen what needs to meet the needs of business needs. From the beginning, you will optimize the order demand with developers and testers. To choose the appropriate level of detail for the demand, you can set according to your project and the current life cycle. Analysts should not specify demand for the designated demand first, and the waterfall type failed to realize the value of customers, developers and testers to participate in the needs of demand. No excellent understanding of business and technology will not be possible to create software systems that improve your business. Unfortunately, few people have a deep knowledge background in the business and technical fields. This means that analyzers, developers, testers, and customers should work together to provide all the information you need to ensure that developers can create "correct" software systems - that is, a fully satisfied customer service needs and provide from Software that is fundamentally effective to improve customer business. Let us look at a simple example to explain the benefits of such teamwork. Example: Web-based flight appointment system We assume that one analyst is responsible for the demand for this Web-based self-service flight appointment system. This analyst specifies that the user will provide a flight code and indicate the beginning of the trip and destination. If the user does not know the flight code, they can query the city name. The analyst then specifies that after the user is scheduled to be a specified flight, they will get on how to contact different agents to make an appointment to reach the destination ground transport. When the designer checks the system requirements, he recalls a solution that has seen a Web service that can provide some functions and proof. This low-cost service allows the user to navigate the map of the airport and quickly find the airport that meets the airports they need, even if users are not familiar with their destination cities or airports that are not familiar with the destination. After verifying the strategy with the customer, analysts and designers have changed demand to include this Web service. Then, after a few days of development, the designer found another feature of this service: When the user selected an airport, they will automatically receive a list of airport information, including the available ground transportation The mode and the capacity predetermined to each mode. Designers and analysts discuss this discussion with customers and project managers. Everyone agrees to merged this extra web service to replace the features that have originally specified to create a terrestrial traffic reference. As you can see from this simple example, you can bring huge benefits to the demand in the early stages of the project. Everyone in them can recommend analysts or the ability and programs that are not considered by end users. Of course, the value of the expected project range change is still responsible for project managers and customers, and analysts still must understand where business needs and drive the system. But he or she can find a better solution by collaborating with designers / developers. The exchange of analysts and end users should run through another drawback of traditional development models in the life cycle of the entire project is the lack of communication between analysts and end users. End users are expected to pre-pointed out demand and check demand, but they have limited participation in the development of the program. In many cases, the agreement of the agreement is based on the needs of the pre-described demand, and later changes need to have a negotiation. It is especially effective in maintaining communication between users and analysts in the entire development life cycle. Both parties should understand how they have the same goal: establish a solution that meets the problem of quality requirements, while cost is acceptable. If their relationship is around the debate about what is the consensus and who should pay for this, rather than establishing a correct solution, then the project is in trouble. This does not mean that analysts should accept all the needs or end users should not make changes. Instead, this means that all items related personnel should make a balance to form better schemes in the demand and ultimate demand in the order. They need to be approved when they are too strict, should be discussed to achieve a folded program, and to make a positive change to keep the project according to the plan.

Of course, this is more difficult than saying. But the first step towards the effective team is to build a constructive dialogue between the analyst and the end user. Excessive demand is an unwise traditional development method to advocate detailed pre-demand, and many people feel that the failure of the project in the past years is because their needs are not enough for startup projects. However, the extent of the demand description will reduce the return. In some cases, the project team requires a constant build solution and assumes that the demand continues to improve throughout the project cycle. Remember: The main goal of the software project is to generate executable code that can solve the operational form of business issues under the low possible conditions. Once your demand reaches a certain degree of refinement, the cheapest way to make the case is part of the system to perform some of the system to demonstrate the end user. At the same time, you can determine what other capabilities you need to offer. The demand for finalization usually has several iterations. During the iteration, you can adjust the demand, design and code, and then boot the test. In the later stage of the project cycle, you don't have to formally document much more detailed needs; code itself can provide enough documentation and rarely misunderstand what is needed in terms of implementation. This depends on the system that is developed by the system has changed the number of participated, the system expecting life span, and the obligation of the compulsory and additional quality standards. Finally, it may be the most important thing, you should drive the business of business in the project as soon as possible. Excessive time spent on refining the expected demand will make your attention deviate from lowering key risks. New ideas of developers

The expanded responsibilities include detailed design, implementation, and unit testing. Become a part of the demand work: help clarify the demand and create a solution that meets the needs. Become a part of the test work: develop code according to the design principle of the test. Reuse the existing schemes as much as possible rather than rebuild. Developers' new idea development, the developers use the best practices and modern tool technologies associated with iterative development, the same need to be transformed. First, as we discussed in the previous part, developers need to play more positive roles in the designated demand. In the past, the developers were proud of proposing a smart solution to the problem of spicy hands. They create a unique solution to maximize system performance, memory use minimize or provide a good graphical user interface. Of course, developers still need to make smart methods, but their energy needs to turn from building methods to discovering smart methods to try to reused assets, developing source software, general commercial spot (COTS) components and web services. Integrated into a usable solution. In order to be an excellent developer, you need to know how to best utilize interactive development environment (IDE) and modeling environments. The attitude of "there is no inventions here" does not reach the expected goal; as a developer, your energy should be placed in a usable scheme by using various reusable assets. Today's fast and cheap production of high quality products should be awarded. Quality is the responsibility of the test team. In traditional development, in the last few weeks of the project, the entire system delivers the poor quantity test personnel, they are asked to find the defects of the software system as much as possible. They are responsible for quality, and developers are responsible for modifying the defects they find. Iterative development is just in contrast, iterative development is considered to be the responsibility of each person in the project. Now we have tools and processes that support this social responsibility concept, allow us to deliver high quality code. New tool technology allows us to synchronize code and design. They also enable us to have a memory leak problem and performance problem that is generated by the system before the test code is completed. This is not achievable in the past. Modern configuration management and change management environment supports daily build, not only allows us to test our separation code, but also allow us to test how our code is integrated with other part of the system. Modern best practices include testing the design: First, you have to point out what test you should do, and then build software that can pass through these tests. This creation of high quality code is what we have to consider. Modern tool technology also supports design quality issues, which makes quality a major part of the design process. It allows you to perform quality measurements in the early days of the design process and can automatically produce tests from the design model. By ensuring the quality of the design, the quality of the entire system is enhanced and the test code is completed. All in all, using iterative development methods, developer roles need to be expanded; in addition to simple implementation of demand specifications, developers must assume more tasks to the entire system. This includes helping to ensure that demand is correct and create a high quality system under acceptable cost. In order to make the best decisions, developers need better understanding of the project's vision and drive project business issues. This developers may create a solution that meets demand and ability to solve business issues. New idea of ​​tester

Become the instructor in the team in quality issues. Work with analysts and developers to ensure demand and design are testable. Test should be introduced in the early days of the project. Continuous automation test of stabilization. The new idea of ​​tester, we noticed the traditional way, when the project is coming, the software developed is handed over to the test person, allowing testers to "injected quality" for software by finding software. Each tester may shrink because they know how efficient and disappointing this approach. Using iterative development methods, testers still should be responsible for determining whether the quality of the system is sufficient, but they ensure that the high quality system has changed fundamentally. First, the tester participates in the project very early, because each iteration (prior to the first iteration) produces executable results that can be immediately tested. In the early stage of the project, testing is more concerned about finding the "influence" problem, not the verification code is already available. This means that you can't give the code to the test personnel; instead, testers need to work closely with analysts and developers so that they can understand what is needed in each iteration. In addition, testers must provide feedback from other members of the team that can properly modify, design, code, and other supported products. Testers can help other project members through these tasks: usually they can help create better demand, because they have been training in a planning method to measure whether it is satisfied. At the same time, modern integration tests and development environments allow them to continue testing by using baseline code configurations. Just like analysts and developers, the testers also assume more tasks. In the later stage of the project cycle, the tester as a quality expert, providing expert advice throughout the development team. For example, in addition to performing a large amount of integration and acceptance testing, they can guide the project manager on the relevant decision of quality. Because the demand throughout the project is an iterative identification, refinement, development, and testing, the project team should not be prematurely generate a detailed description of all tests performed. Instead, the early focus should be to understand the target of a certain stage or iterative test - what should they complete. This moves focus to identifying potential problems in each iteration, and develops testing to expose those areas. Iterative development means that you will develop key capabilities of test systems in the early days of the project. At the same time, you need to test and retest these capabilities in subsequent iterations to make sure you think should be resolved will not appear again. The complete regression test does not take actually through effective automation test - and is usually impossible, so you must continue to develop automated tests throughout the project. Effective implementation This is to understand what element can remain stable when iteration continues; through this method, you can avoid rewriting the automation test for each iterative. This requires you to have a certain understanding of the system architecture; in the later iteration, the test should pay more attention to the system detailed functionality. New idea of ​​project manager

The risk of open projects, continuous reassessing risks, and uses risks to prioritize project work. The project status is evaluated by measuring the demonstrated results rather than a series of completed activities. In the early stage of the project, the high-level plan for the entire project is developed, but only the current and next iteration generates a detailed plan. Depending on how you effectively handle risks, you evaluate your demand, architecture, design, implementation, and test in any given time. Trust your team. Give them enough knowledge and responsibilities to let them be responsible for the quality of the product. Help them unite together. One of the most important differences of the new ideological development method of the project manager is that he is designed to be the main risk to remove the main risks in the early stage of the project. This difference requires disclosure of the risks faced by the project and honest. At the same time, the natural tendency of you escaping the risk will make people postpone these risks. The risk does not know what is ignored - just like they have never happened. Risk is like infectious disease: You have ignored it, the greater it. Risks must be continuously identified and divided into priority throughout the project; each iteration must be driven by the principled goal of risk. Use this method will need some cultural changes. Typical management forms stipulate that you should avoid the acknowledgment risk, because people may determine that you have a problematic project. This is a dangerous way: pretending that there is no risk that the risk will leave. Under the tradition, the project manager has been completed to determine the status of the project by inquiring the team members. They assume that all activities are completed when all activities are completed. But this method often leads to failures of the project. Checking the completed activity is a way to measure project progress because it does not quantify the quality of the results. If the project manager can accurately plan the project team needs to do everything, this method may meet the needs of the project. However, just like many project managers know, things are rarely carried out in accordance with the plan. Even if you have created a more detailed plan, the result is also surprising. No matter how we work hard, we cannot expect everything. Based on the results, because we cannot predict future, the manager of the software project needs to manage the risk of some key strategies. This requires changing your measurement method: instead of the measurement method based on the completion of the activity, you should use the method based on the demonstrated results. This is based on the basis of results management. Applying results-based management strategy means that it will focus on risk and positive. Through the activities of the special structured projects to handle risks, you can reveal hidden issues, solve problems and reduce uncertainties in project processes. In addition, because the main result of a software development project is the software itself, the product you delivered should be the main measure of success. You can use the matrices that are like a series of software tests, the number of defects in the code, and the matrix of their accuracy, etc. to assess your software. In other words, moving to iterative development means that the status of the item is to be evaluated by calculating how many activities, products, or work products are completed by calculating how many activities, products, or work products are completed by calculating how many activities, products or work products are completed. In order to assess the stability of the project (another measure of effective management), you should also track the redundancy in demand, design, and code. Less may be more early, we note that the addition of detailed information to demand may not always be beneficial to the project. The same is true for other types of documents. Your quality assurance plan, software development plan or demand management plan is not a good measure of project health. Too detailed not always better: you should adjust the detailed level of the document you need for your specific project. The way to determine the appropriate level is to pay attention to risk and results: If you add more information to a product to reduce risk or improve the quality of a specific result, then this input is worth it; otherwise, spending time in more productive activities is better one. Using a waterfall type method project manager needs a lot of attention to the detailed plan and designated requirements. The method of using iterative development methods can take time to refine demand, architecture, design, and implementation based on the risk of risk in the work.

They will ask: "What type of activity can be most effective to reduce the risk immediately?" Maybe prototyping a program can handle risks related to project customers, or maybe they need actual design, implementation, and test architecture to complete The risk of processing architecture. Make each member of the project involved in the quality assurance for the project manager to move to iterative development methods, which is required to ensure quality assumption as a collective responsibilities. I usually surprised the project manager saying "I need to test the group to stay loyal to my developer," or "if the analyst does not write a single need, they will not be realized." Of course, you need to test Groups to establish high quality applications, and failure documentation and tracking requirements will result in problems. But if the developer does not regard quality as its own responsibility, you will fall into quality problems. To achieve this, you need to start with your expectations through trust your team and clear exchange. If you can't trust these people, maybe these people should not belong to your team. Ideally, the project manager should be able to claim "my developer is responsible for delivering high quality code; in order to help developers, we have a test team, test team has professional ability and verify that the delivery code is high quality , "And" our developers are responsible for achieving the applications that meet the needs of the end users. In order to help developers, we have a team of analytics in the appropriate level of documentation, and analysts are between developers and end customers. Bridge. "Creating a team to work together - that is to say that analyzers, developers and testers can work together to achieve high quality results - is one of the key to successful iterative development. New ideas of quality assurance and method experts

Select the appropriate form level for the project (more more not always better). Pay attention to maintenance quality in the entire project cycle, but can be flexible. The best way to reach high quality is not only achieved by crazy focus inspections and tests, but through a good balance between demand, architecture, design, implementation, inspection and testing at a given time. The process of risk-driven is used. Your process should allow project managers to adopt tactical activities on current risk conditions of the project. New ideas of quality assurance and method experts have quality experts - responsible for reaching a certain standard, such as the standards in SEI CMM / CMMI, or the quality standards within the organization. Many organizations also have methods of expert, they or from a software engineering process group (SEPG), or independent method responsible for software development. Typically, these quality and method experts have the biggest problem in adopting iterative development ideas. Many of them spent most of their careers to drive organizational, more than the "Document," more and better "," For process work, need to be complete documentation ", and" process A description of a particular task based on the time that you need to perform based on time is available to specify the process. They believe that the failure of the project can be avoided by following these highly formified principles. However, when doing so much, the opposite effect will be produced because the highly formal formation will increase the cost of iteration, and encourage the use of a waterfall type cycle. Instead, you need to pass risk-driven, the best practice of balanced documents for each iterative result. This approach allows the project team to enhance the quality of the product, and can also reduce the degree of formulation and the entire cost. We should pay attention to the use of an iterative method does not exclude the use of highly formulated methods, and highly formified methods may be useful for applications of safety first or other stringent requirements. 2 Flexibility is a key change in key changes in software processes and quality methods to provide project managers to regulate sufficient flexibility of the project risk; project managers should constantly monitor the activities and status of the project, and the implementation of the process to reduce the key risks of. A process can indicate how to deal with various risks and results that are needed, but risk typical is pre-unknown, so you can't indicate what tasks should be performed early in the early days. You don't know which requirement should be specified to design and implement them. This means that the process you use needs to provide a clear management guide for milestones, how to achieve a clear management guide for how to reduce risks - the flexibility of retention process by paying attention to the details of the project. You can't create a valid project plan by simply using specific guidance during the project. The project plan itself needs to be an iterative process, including the evaluation of current risks, progress, test results, etc. to collect input for a detailed plan for the next stage. This also means that the project's inspection or audit should not focus on verify that the project team has created a series of products or has implemented a series of activities. Instead, auditing should aim at identifying and verifying risks and confirming that appropriate products and activities are completed to reduce risk. The audit should also check the previous problems to identify public failure modes, and the proposed process is modified to protect the possibility of future minimum failures. Customer new idea

Active participation in description needs and becomes an indispensable part of the software development team. Provide feedback on software that has been developed, such as working prototypes and user interface design. Using a progressive pattern using an iterative method; this mode guarantees the interests of buyers and sellers. Customers' new ideas use traditional software development methods, customers expect to have minimal investment in development. They want to pre-point all the needs and determine a fixed price and wait for the final system delivery. Often, a very large gap between the expectation value and the actual delivery system - the solution does not meet the customer's real business needs. By steering iteration development, changing the interactive model between customers and development teams, customers and development teams can avoid a lot of pain. In an iterative development project, the customer should be an indispensable part of the application team. Customer and other members of the development team work together to ensure that the final delivery of the application system meets the required business value. Customers' organizations should maintain interest as much interaction with the development team to ensure that the development team can understand what kind of risks and problems are there. If the customer does not help guide the development of the development, the development team may develop a wrong application - everyone will suffer losses. In an iterative development mode, the customer cannot only point out what they expect and then wait for the system to be delivered. Regardless of how clearly definitions, all needs are from numerous instructions and possible implementations. For development teams, there is a more detailed demand, it is better to communicate with key investors (including customers) of the project more frequently and effectively. Then, when customers view evolution applications, they will get better understandings that should be done and provide constructive recommendations to improve the system. At the same time, if there is a quick change in business requirements in the project, the demand also needs to change. Customers can also benefit from the disclosed negotiation iterative and contracts, one called the incoming acquisition method. Using this method, first, both parties can negotiate a general protocol for the entire project as a legal guidance that describes the management of business relationships between the two parties. The project then is divided into two or more sub-and about. Early and about time and the required resources indicated the amount, because any party is not enough to know the entire program and possible development costs to make a reasonable pre-promise. Later, a fixed price, which minimizes the inconsistency of both parties to the payment product. 3 Conclusions We have discussed the use of iterations for software development, not just a series of guidelines, not only to follow a range of guidelines. Iterative development and support for modern technology has changed the rules in software development games and make many axioms that have dominated the dominance in the past. Successful ways from the waterfall type to the iterative method require the software development team to change in personal responsibility and how to interact with other members of the team. In other words, it requires significant and lasting changes in the behavior and value of many middle role team members. Only by each team member understands the basic principles of the necessary changes that iterately develop needs, organizations can achieve these changes. At the beginning of each project, for project teams, disclosure discussed that we have discussed the necessary behaviors and perceptual changes in this article. This article can be used as the starting point of these discussions: The project team should agree with these ideologies and the practice of discussions on their specific projects. Basically, this article is about how to build "correct" software by using iterative development and through the vision of the entire team sharing project, and tells how you should work closely with the team to achieve this vision. Project managers can encourage this change during work, but it is finally based on team membership acceptance and effective implementation. Thank you I am very grateful to Kurt Bittner, Anthony Kesterton and Glen Tattersall, who have valuable proofreading this article, and also thank the Marlene Ellin outstanding editorial work. Other readings If you want better understanding of iteration, I recommend the following resources.

The Rational Unified Process Made Easy: A RUP Personnel Guide, Author Per Kroll and Philippe Kruchten (Addison-Wesley 2003). Software Leadership: Successful Software Development Guide, author Murray Cantor (Addison-Wesley 2002). Software Project Management: Unified framework, author Walker Royce (Addison-Wesley 1998). Notes 1 For more information on the Quality by Design best practice, see Brian Bryson's article on the topic in The Rational Edge, January 2001, http://www-106.ibm.com/developerworks/rational/library/content/RationalEdge/ jan01 / QualitybyDesignJan01.pdf.2 For a more detailed discussion on this topic, see Chapter 3 in The Rational Unified Process Made Easy-A Practitioner's Guide to RUP, by Kroll and Kruchten, Addison-Wesley, 2003.3 See R. Max Wideman's article series on Progressive Acquisition in The Rational Edge, http://www-106.ibm.com/developerworks/rational/library/content/RationalEdge/apr03/ProgressiveAcq_TheRationalEdge_Apr2003.pdf About the author Per Kroll is the IBM Rational software Rational Unified Process development and product management The team's supervisor. He has developed him to develop RUP-based customer training, guidance and consulting. When the RUP product team was established in 1996, he served as the original RUP product manager. He also casts a lot of effort to the RUP service of certified partners and training Rational staff.

转载请注明原文地址:https://www.9cbs.com/read-43547.html

New Post(0)