Microsoft Product Cycle Model Training
(Statement: this series of teaching notes is made up of all relevant materials and can only be used for personal study, research, or appreciation. Please indicate the source for reprinting. For commercial purposes, you must obtain the permission of the copyright holder. Thanks for the wonderful lectures given by Microsoft engineers !) I. Microsoft product development cycle model Microsoft product development cycle is generally divided into five stages: 1. Planning: mainly for market analysis to see whether the market has the need for this software product, and competitors. 2. Design: Mainly what functions should the software provide and what problems should the users solve. The details include the language used to write code, supported platforms, and models used for development. 3. Implementation: write code based on the design and ask the tester to find bugs. 4. Stability: The code you just wrote must have many problems. stability is to find out most of these problems and then correct them. 5. Release. All development teams of Microsoft must follow this development cycle when developing software products, but each team may be slightly different, the time used by different teams in different stages may be different. The product development cycle is shown in Figure 1: There is another line representation of view 2: the two pictures above Microsoft are very famous, every new employee should be trained in the development cycle process. Each development manager will explain this process to the following developers. In the line chart, M1 and M2 represent different milestones in the implementation phase. 2. Different teams and their responsibilities the software product department of Microsoft has set up three main positions: program managers, developers, and testers. Among them, the program manager is a special position in Microsoft. It is not necessarily a real manager, and there may not be any subordinates below. The program manager is the person who knows the most about the project. His work is an extension of the overall management function of the project team. In the software development process, the program manager does not write the code in person, but is fully responsible for submitting the correct product to the customer on time and in a secure manner. Generally, the program manager needs to win the approval and respect of the project team members through his own efforts, win the organization, coordination, and development-related decision-making powers of the project team. Some people think that as long as they have excellent programmers, they can develop excellent software products. This is one-sided. On the one hand, a complete commercial software product involves documents, code, user interfaces, testing and release. On the other hand, if there is no effective organization, coordination, and management, when the development scale of the project team is large, even if excellent programs are together, it is difficult to form a combination of capabilities, and it is impossible to develop qualified large software that truly meets the needs of the commercial market. This is exactly why the program manager gradually stepped onto the stage of Software Development Management in 1984 and continued to grow and grow. At present, Microsoft has more than 5000 program managers, which accounts for almost of Microsoft's employees. The main responsibilities of the program manager include: 1. The program manager should be responsible for preparing product function manuals from a macro perspective and within the entire product scope. 2. The program manager should track and promote every task of the project team, and ensure that the project team's work results and product objectives are consistent according to the requirements of the product functional manual. 3. track and manage the project progress. 4. Organize project meetings to evaluate and manage detected bugs. 5. Make a decision on the issue of adjusting and changing the requirements in items. 6. maintain communication with relevant personnel inside and outside the project. In a word, the program manager is the project leader, the project resource dispatcher, and the project coordinator. An excellent program manager must have comprehensive technical knowledge and strong software architecture design capabilities. To be familiar with a certain industry, you must be familiar with the background of a project. For example, the Xbox program manager must be familiar with the entire game industry and be familiar with pS2 and other competitors. You need to know what competitors are, where their strengths are, and what are their weaknesses. Good interpersonal and written, verbal, formal, and informal communication skills are required. Be aware of customer needs and always pay attention to customer needs. The primary responsibility of developers is to write robust code. However, writing code alone is not enough. Developers also need to be able to design, debug programs, and correct errors. A good developer must first have a solid foundation in computer technology, especially the mastery of algorithms and data structures. Strong code writing and debugging capabilities are required to locate program problems in a short time. Be enthusiastic about new technologies and have a strong desire to learn new things. Testers are mainly responsible for developing detailed test strategies and plans, writing detailed and accurate test reports, and compiling test tools with excellent performance. In the design phase, supervision should be performed, and the implementation phase should be based on whether the code is the most ideal and the best fit for the design, and the documentation of the program should also be checked. An excellent tester should have extensive technical knowledge and have a deep understanding of different platforms, development languages, and development technologies. Be good at thinking about problems in unconventional ways, not limited to a box, or think out of a box. For example, Microsoft often asks a question when recruiting testers, that is, how to test a pen. First of all, you must be able to write. When writing, you should not leak water, and the pen cover should be tight. But have you ever thought about whether a pen can be placed in your pocket and whether it will be sun-dried in the sun, similar to these, we should think of more things. A strong tester once wrote more than 50 test pens in 20 minutes. To continuously analyze and summarize possible errors in software development, you should participate in software testing projects as much as possible, learn skills and accumulate experience in practice. In addition, after any product is completed, the first customer to be used is the tester. Therefore, testers must test the software from the perspective of a common consumer who knows little about computer knowledge, rather than a person with years of computer experience. The organizational structure of Microsoft product department 3 is shown in. The product department of Microsoft is generally responsible for the R & D of a certain type or product. Apart from the general manager, the product Department generally has three functional departments: the program manager department, the Development Department, and the test department. When a product Department establishes a project team based on the development requirements of a specific product, it will meet the requirements of different functional personnel according to the project, allocate appropriate candidates from three functional departments to form a project group to complete project development. In addition, there are two types of testers, one is tester and the other is SDE/t. Tester usually does some boring testing work, while SDE/t usually does not perform specific tests and is dedicated to writing test tools. Of course, tester's work is very important. The ability of automatic testing tools is limited. The most difficult and hidden bug is found by tester. In addition to the above positions, Microsoft also has many auxiliary positions, such as marketing planners, sales staff, full-time product planners, hardware designers, full-time users to help document writers, and localization personnel (such as Chinese Personnel) art designer, after-sales service personnel, PR department personnel and legal counsel. Iii. Best practices of product life cycle [1] Any software development work in the planning stage must be market-oriented, that is, the clear or hidden business opportunities in the market are the prerequisites for the establishment of software products. Based on a large amount of market analysis done in advance, the company's management should preside over macro business plans. At this time, technical personnel can provide technical suggestions to the management for their reference in decision-making. [2] in the design phase, the project team completes all the planning work of the project, including writing functional manuals, completing the design of the summary, preparing the work plan, preparing the cost budget and formulating the schedule. In the early stages of the design phase, the project team analyzes customer needs and externalizes them. Subsequently, the project team began to design the entire solution and prepare Product functional manuals. This process is extremely important to ensure the correspondence between customer requirements and product features. The project team must ensure that the product features fully reflect the customer's needs and help the customer achieve their business goals. In the function manual, the functions and execution methods of each feature of the software, as well as the combination and overall architecture of all features should be elaborated. At the same time, the priority of product features should be determined based on factors such as the degree of urgency required by the market and the position of the feature in the product architecture, and information such as resource budget, progress expectations, and risk expectations should be obtained. The functional manual is the cornerstone of the synchronization of all project team members. It allows developers, testers, and other project team members to clarify the features, operations, and interfaces of each product. After the Functional Instruction is complete, the project team can start the detailed project design, including development design, test design, and security design. After no apparent conflict or conflict exists in all designs, they will be collected into a project overall design document, where members of the project team will estimate their respective working hours and prepare work schedules accordingly. [3] The main task in the implementation phase is to complete the development of all components in the product (including code and documentation ), in addition, it also includes reviewing design documents, installing and configuring the development environment, checking the code, generating products on a daily basis, and managing the bug database. It should be noted that the documentation is very important in this phase. If the software project does not have a qualified document, there will be communication difficulties and a gap in inheritance. First, it is an important reference for testers. Secondly, the company's staff are very busy. If a core programmer leaves the project team and only leaves a bunch of code, the next person to take over is very difficult to grasp the idea of the program design. The impact of such a thing on the project is usually fatal, the SNMP provider in Microsoft WMI is a typical example. Use a unified database in Microsoft to manage source code, documents, and other resources, and save and track different versions of resources. After the development ends every day, developers must update the latest source code and documents on their computers to the database. This process is called the check-in process. In addition, one of the most successful experiences in Microsoft's software development projects is product generation every day, that is, code compilation and complete executable versions are generated every day, and quickly test each generated program version to ensure that every change to the product and every check will not damage the overall structure of the product, to the greatest extent possible, the entire product development process can be managed, predictable, and enhance product stability. The management of the Bug database mainly involves creating a centralized bug database for each product. The bugs in the product generally include code defects and imperfect product features, most bug records are added by testers. The program manager reviews the bug database every day and assigns bugs to developers. The developers fix the bugs and send the results back to the testers. The tester uses Daily generation to check whether the bug has been corrected. If it is confirmed that the bug has been corrected, modify the bug record and close the bug. [4] The main task in the stable phase of the stable phase is to test the product, which focuses on the use and operation tests in the real environment, confirm that the entire solution has been completed and can be released. Work in this phase includes product feature freezing, Code Completion, user interface freezing, and beta release. Product feature freezing means that, unless for special reasons, the project team will no longer add new features or modify the identified features for the product. Code Completion means that the developer has completed all the coding tasks, and the tester starts to perform system integration testing. The program manager Reviews, monitors, and allocates bug changes every day, while developers need to constantly correct bugs. When the user interface is frozen, the style of the user interface is no longer changed, and the prompt information on the interface is no longer changed. Full-time user help document engineers began to compile online help and user manuals. If changes need to be made, they must be approved by the Program Manager, and every change must be carefully tracked and managed. In this phase, Microsoft has a kind of job called dogfood. We all know that when a dog is cooking, because the dog does not speak, a person will eat the dog's food and then judge the taste of the food. Microsoft has borrowed this method of work. Before each product is completed, internal employees must first try it out. Although the software is still full of bugs and may cause system crashes at any time, the employees still have to continue dogfood, which means tens of thousands of testers are testing the software. The purpose of dogfood is not only to find bugs, but also to help improve the interface and operation design. [5] The release phase is the sprint of the entire project lifecycle. The main work includes reaching the zero bug date, releasing candidate versions, officially releasing versions, and signing and approving. Zero bug does not mean that there are no bugs in the product. It means that all detected bugs are managed and controlled effectively, and the bugs that affect the product usage are corrected, track and record bugs that do not affect product use and cannot be modified in time due to limited resources, so that all bugs found in the product are under the control of the project team, can be corrected at the right time. Release Candidate versions (RC0 ~ RcX) means that all known bugs with high priority have been corrected, and less important bugs may be postponed to the next version for correction. Developers should fix major bugs found within 24 hours. A new candidate version will be released after the bug is corrected, and the new candidate version must pass the complete regression test. There are two ways to officially release the product version: boxed product release (RTM) and Web-based release (RTW ). The tester signs the final officially released version, and the program manager also needs to sign and confirm. After the product is released, we usually have a celebration meeting to watch a movie and have a good time!