(Disclaimer: This series of teaching notes is complicated with relevant information, only for personal learning, research or appreciation, reference reprint, please indicate the source. If used for commercial purposes, you must have a license for posts. Thank you for the wonderful teaching of Microsoft Engineers!)
Microsoft Product Cycle Model Training
First, Microsoft Product Development Cycle Model
Microsoft product development cycle is usually divided into five phases:
1. Plan: Mainly to do market analysis, watch the market without this software product, and what are the competitors.
2. Design: What functions are mainly software to solve the user? Fine aspects include what language to choose to write code, supported platforms, and models used.
3. Implementation: It is based on the design write code and simultaneously let the tester are looking for BUG.
4, stability: The code just written is definitely there are many problems, and the stability is to find most of these issues, and then correct it.
5, release.
All Microsoft's development teams must follow this development cycle when developing software products, but each team may be slightly different, and different teams used in different phases may be different.
The product development cycle is shown in Figure 1:
There is another straight-line view as shown in Figure 2:
The two pairs of pictures above Microsoft are very famous, and each new employee has to accept training in this development cycle process. Each development manager will tell the developers below this process. In the line diagram, M1 and M2 represent different milestones in the implementation phase.
Second, different groups and their responsibilities
Three major positions have been set up in Microsoft's software product sector, namely the program manager, developer, tester. The program manager is a special position in Microsoft, and it is not necessarily a real manager, and there is no necessity below. The program manager is a person who knows the most well-made project, his work is an extension of the integrated management functions within the project team. During the software development, the program manager does not personally write code, but he has full responsibility to submit the correct product to the customer on time and quality. Generally speaking, the program manager needs to win the recognition and respect of the project group members through their own efforts, winning the organizational rights, coordination rights and the decision-making right in the project group.
Some people think that as long as they have excellent programmers, they can develop excellent software products. This view is a one-sided. On the one hand, a complete commercial software product involves multiple aspects such as document, code, user interface, testing and issuance; on the other hand, if there is no effective organization, coordination, and management, even when the project team development is large, even Excellent programmers gathered together, it is also difficult to form together, and cannot develop qualified large software that truly meets the needs of the business market. This is also in 1984, the program manager gradually boarded the stage of software development management and continued to develop the growing reason. At present, Microsoft has had more than 5,000 program managers, which accounts for the total number of employees in Microsoft.
The specific content of the main responsibility of the program manager includes:
1. The program manager should have a macro, the perspective of the entire product range, responsible for writing the product's functional manual.
2. The program manager should track and promote each work of the project group, and ensure that the project team's work results and product goals are completely consistent according to the requirements of the product function manual.
3, track and manage project progress.
4. Organize project meetings, assess and manage the discovered bugs.
5. Decision makes decisions on the problem of adjusting changes in the project.
6. Keep communicate and communicate with relevant personnel inside and outside the project.
In one sentence, it is: The program manager is the leader of the project, the dispatcher of the project resource, is the coordinator of the project.
Excellent program managers must have very comprehensive technical knowledge, there must be strong software architecture design capabilities. To be familiar with a certain industry, doing a project is very familiar with this project, such as Xbox's program manager, you need to be very familiar with the entire game industry, very familiar with PS2 competitors. What are the competitors, where the competitors are strong, and what is the deficiencies. There is a good interpersonal relationship and written, oral, formal and informal communication skills. There must be customer demand awareness, and always pay attention to the needs of customers. The main responsibility of developers is to write a good and strong code. But only written code is not enough, developers also need design capabilities, as well as debugging procedures and correcting errors.
A excellent developer must first have a very solid computer technology foundation, especially for algorithms, and data structure mastery is a good developer must have. There is a strong write code ability, very strong debugging ability, can be found in a short period of time. To be passionate about new technologies, there must be strong curiosity for new things.
The main responsibility of the tester is to develop detailed test strategies and test programs, writing an informative and accurate test report, and preparationful test tools. In the design phase, you should supervise the functions, the implementation phase should look at the code is ideal, most satisfied, while also check the program's document manual.
A excellent testers have a wide range of technical knowledge, and have a deep understanding of different platforms, development language and development technologies. It is necessary to think about the problem in a very conventional manner, do not limit on a frame box, you can jump out a frame to think about the problem. For example, Microsoft often ask a question when recruiting testers, how to test a pen. First of all, it must be able to write. When writing, it is not leaking, the brush cover can be tightened, but if you want a pen to put it in your pocket, it will be sunken under the sun, similar to these We should think of more things. There have been a strong tester, and more than 50 methods of testing a pen are written within 20 minutes. To continuously analyze and summarize the possible links that may be wrong during the development process, you should participate in software test projects as much as possible, learn skills in practice, and accumulate experience. In addition, after any product is completed, the first customer uses the tester. Therefore, the tester must test the software in ordinary, consumers who are well known to computer knowledge, rather than a person with many years of computer experience.
Microsoft's product sector organizational structure is shown in Figure 3.
Microsoft's product sector is usually responsible for research and development of a certain or some product. In addition to the general manager, the product department is generally jurisdiction: the procedural manager department, the development department and the test department. When the product department establishes a practical project group based on the development needs of the specific product, the project development work will be completed from the three functional departments in accordance with the requirements of the project to match the appropriate candidates from the three functional departments. To add, as shown in Figure 3 is divided into two, one is Tester, and the other is SDE / T. Tester usually makes some boring testing, while SDE / T usually does not do specific tests, full of writing test tools. Of course, Tester's work is very important. The ability of automatic test tools still has certain limits, often the most difficult, and the deepest bugs of Tibet are find out.
In addition to the above positions, Microsoft has many auxiliary positions, such as market planners, salesperson, full-time product planners, hardware designers, full-time users help document writers, localization staff (such as Chinese people ), Artist designers, after-sales service personnel, public relations department, and legal counsel, etc.
Third, the best practice of product life cycle
[1] planning stage
Any software development must be market-oriented, namely, the clear or hidden business opportunities in the market are prerequisites for software products. The business opportunities are presented by the business opportunities under the large market analysis made by the prior period, and hosting a macro business plan. Technicians can provide technical level suggestions at this time for their reference. [2] Design stage
In the design phase, the project group completes all the planning work of the project, including writing functional manual, completing the summary design, writing a work plan, formulating cost budget, and formulating schedule.
In the early stage of the design phase, the project team analyzes customer needs and written it. Subsequently, the project team began designing the entire solution and writing a product manual, which is extremely important to ensure that the correspondence between customer demand and product characteristics is extremely important. The project team must ensure that the characteristics of the product are accurate and completely reflected in customer needs, and can help customers achieve business goals. In the functional manual, the function and execution of each characteristic of the software should be explained in detail, and all combinations of all features and the overall architecture. At the same time, it should also determine the priority of the product characteristics based on the urgency of the market needs and the status of this characteristics in the product architecture, and the resource budget, progress expected, and risk expectation. The functional manual is the cornerstone of all project group members. It allows developers, testers, and other project group members to clarify the functions, operational methods and interfaces of each product feature.
When the function manual is completed, the project group can begin detailed project design, including development design, test design, safety design, and more. After all design does not have obvious contradictions or conflicts, they will be collected into a project overall design book, and each member of the project group is estimated to estimate their working hours and prepare work schedules.
[3] Implementation
The main job of implementation is to complete the development of all components in the product (including code and documentation), and also include audit design documents, install and configure development environments, code check work, daily product generation, and management BUG databases.
It will be that the document manual is very important in this stage, and if there is no qualified document, the software item will appear on the difficulties of communication and the outward of the inheritance. First of all, it is an important reference material for the test personnel; the current company's flow rate is very large. If a core programmer leaves the project group, the next one is just a bunch of code, the next person will master The idea of this program is very difficult, such things are often fatal, and the SNMP Provider in Microsoft WMI is such a typical example.
In Microsoft to use a unified database management source code, documentation and other resources, and save and track different versions of resources. After the development of daily development, developers must update their new source and documents on their own computer to the database, which is called a check-in process. In addition, one of the most successful experiences in Microsoft's software development project is the daily product generation, which is compiled every day and generates a complete executable, and quickly tests each generated program version to ensure products. Each change and each inspection will not damage the overall structure of the product, and ensure that the entire product development process can be managed, expected, and enhance the stability of the product.
The management of the BUG database mainly includes establishing a centralized bug database for each product. BUG in the product generally includes code defects and imperfect product features, most BUG records are added by testers. The program manager is responsible for reviewing the BUG database every day and assigns bug modification work to developers, developers amend BUG and send the result back to testers. Test staff use daily generation to verify that the bug has been corrected. If it is determined, modify the bug record and close the BUG.
[4] Stable stage
The main task of the stable phase is to test the product. This phase of the test is the use and operation test in the real environment, confirming that the entire solution has been completed and can be released. At this stage, the work content includes product characteristics freezing, code completion, freezing of user interface, beta release.
Product feature freezing means unless there is special reason, the project team no longer adds new features or modifications that have been determined for products. The code does mean that the developers have completed all the coding tasks, and the tester began to do system integration tests. The program manager reviews bugs, monitors and distributes bug modifications every day, while developers need to revise the bugs. User interface frozen means that the style of the user interface no longer changes, and the prompt information on the interface no longer changes. Full-time users help document engineers start writing online help and user manuals. If you need to make changes, you must pass through the program manager, and you must carefully track and manage each change. In this stage, Microsoft has a work called dogfood. Everyone knows that when doing dog food, because the dog will not speak, there will be someone to eat this dog's food, and then to judge the taste of such food. Microsoft borrows this way of working, and internal employees must be trial before each product is completed. Although the software at this time is still full of bugs, it may cause the system to crash, but the employees have to continue Dogfood, which is equal to tens of thousands of testers in the test software. Dogfood's purpose is not only to find bugs, but also a role is to help improve interface, operation design.
[5] release phase
The publishing phase is the sprint phase of the entire project lifecycle, including the main work content to reach the zero bug date, publish candidate, officially released, signature approves.
Zero BUG does not mean that there is no bug in the product, it means that it has effectively managed and controlled the found product bugs, which corrects the BUG affecting the product. For the use of BUG that does not affect the product, it can be tracked and recorded by the limited resources that cannot be modified in time, ensuring that all discovered bugs in the product can be corrected in the appropriate timing within the control range of the project group.
Publishing candidates (RC0 ~ RCX) means that all known priority bugs have been corrected, and less important bugs may be postponed to the next release. Developers should fix new discovered major bugs within 24 hours, and will release a new candidate version after BUG correction, and the new candidate must be tested through a complete regression.
There are two ways to formally release the product version, with a box-based product release (RTM) and web-based release (RTW). The test personnel signed the final release version, and the program manager also needs to sign confirmation. After the product is released, you usually have to open a celebration, watch movies, play with fun!