The "Secrets of Microsoft", published by Peking University Press at the end of 96, is the most professional and in-depth book I have ever seen for the introduction of Microsoft's software product development process. Through this book, we can see how Microsoft is a scientific software product development effective management, I think these experience for the vast number of software developers in China, especially concerned about the development of China's software industry friends are very beneficial. Therefore, this book is related to the development of software products from the part of the excerpt (the fourth chapter "Product definition and development process"), coupled with my work in Microsoft China to summarize the actual experience of this article, I hope to share with you. This article as an extract, nature is exhaustive, so we suggest that if you have time to find the original book first read.
In Microsoft's product definition and development process, Microsoft software development follows a strategy that can be called "by Improving features (Feature) and fixed resources (Resource) to inspire creativity". The strategy can be divided into five principles:
1. The major project is divided into milestones (Milestone), with buffer time between phases, without separate product maintenance.
2. Use an imaginative description and a brief description of the feature (program specification) to guide the project.
3. Determine product characteristics and their priorities based on user behavior (username Behavior) and information about the user.
4. Establish a modular and horizontal design structure, and make the project structure reflect the characteristics of the product structure.
5. Individual responsibility and fixed project resource implementation control.
Principle one: The major projects are divided into milestones of important stages, with buffer time between each phase, but no separate product maintenance.
1. Project schedule and Milestones
Microsoft usually adopts the "synchronous-stable product development method". The life cycle of a typical project consists of three phases:
Planning Phase: A description of the completion function and final formulation of the schedule
Development phase: Write out the complete source code
Stabilization phase: Complete the product to make it capable of mass production (Roll out)
These three stages and phases are inherently different from the traditional "waterfall" (Water Fall) development approach, which consists of requirements, detailed design, modular code design and testing, integration testing, and system testing. Microsoft's three phases are more like a risk-driven, incremental "spiral" lifecycle model.
The product at the planning stage is an imaginative description and documentation that explains what the project will do and how to do it. These things promote the thinking and discussion of design issues before managers draw up schedules and developers write code. The development phase revolves around three major internal product releases, and the stabilization phase focuses on extensive internal and external testing. During the entire production cycle, Microsoft has used the concept of buffer time. Buffering time enables the development team to cope with unforeseen difficulties and changes that affect time schedules, and it also provides a means to mitigate the contradictions between timely shipments and attempts to accurately estimate delivery times.
At all times during the development and stabilization phases, one project typically uses 2/3 of the time for development, and 1/3 of the time for stabilization. (The vice President of Office has outlined the usual progress: "Generally, in the overall schedule, half the time to write the product, leaving the other half of the time to debug or cope with accidents.) So, if I had a two-year project, I'd spend a year doing what I thought was good ... If things get a little bit messy, I get rid of features that I don't think are very important. ”)。 This landmark process gives Microsoft managers a clear idea of where the product development process is going, and allows them to flexibly delete some of the product features at the end of the development phase to meet the requirements of the shipping period.
Planning Phase
The planning phase is the time spent in the life cycle of a project, all the plans that were made prior to development. The planning phase produces an imaginative description, marketing plans, design goals, an initial product description, interface standards for integrating components developed by other groups, initial test plans, a document planning (print and online Help form), and a list of usability issues (usability list). The planning phase begins with an imaginative description. The imaginative description comes from the Product manager and the program manager of each product unit; it is a marketing vision of the planned product, including an analysis of competitor products and planning for future versions. An imaginative description may also discuss the issues that must be addressed in the previous version and the main features that should be added. All of this is based on customer and market analysis and information obtained from the Product Support Services section.
A description file starts with an outline and then defines a new or added product feature and assigns it a different priority. The description file is only a preliminary overview of the product features, from the beginning of development to the completion of the project it will increase or change 20%-30%. Although the changes are generally small in the late stages of the life cycle, the more advanced it is, the more the developer must have a good reason to change.
Typically, program managers use VB to create Project prototypes. They also carry out design feasibility studies to understand the trade-offs in design, and to make decisions that involve product descriptions as soon as possible. The description of the important product needs to be reviewed by the company's top leaders. For less important products, it is done by some managers.
Development phase
The plan for the development phase assigns a set of features to each of the three or four major milestone versions, providing details of the features and technical dependencies, documenting the tasks of individual developers and estimating progress. During the development phase, the developer writes the source code under the guidance of the functional description, and the tester writes out the test project team to check that the product's characteristics and work scope are normal, and the user Education person (education) writes the draft document.
When the tester discovers the error, the developer is not left to deal with later, but immediately corrected, and throughout the development phase to make the test continuously and automatically. This improves the stability of the product and makes the release date easier to estimate. When a certain stage point in the project is reached (40%), the developer attempts to "lock" the main functional requirements or features of the product, allowing only minor changes. If the developer wants to make a big change after this point, they have to discuss it with the program manager and the development manager, and perhaps ask the Product department manager for advice.
An item is organized around 3 or 4 major builds, or "milestone subprojects" to organize the development phase. It is generally used for 2-4 months to develop each major milestone version. Each version includes its own coding, optimization, testing, and debugging activities. The project retains a total development of 1/3 for an accident, that is, "Buffer time" (Padding times). (Apple's team is fragmented and independent, each developing its own stuff.) All things will be integrated when the goods are shipped in 3 months; The Borland company develops in an asymptotic fashion, dividing the work into small parts and always allowing the development of things to function. It may seem like this gradual approach takes time, but in practice it's rarely used for long because it allows you to keep track of what's really going on. )
Once the final major milestone version is tested and stabilized, the product is subject to "Skin fixed" (UI Freeze), which determines the main user interface for the product, such as menus, dialogs, and file Windows. Since then, the user interface will no longer make major changes, so as not to introduce synchronization to modify the corresponding document difficulties.
Phase of stabilization
The stabilization phase focuses on the testing and commissioning of the product. The project will not add new functionality at this stage unless it is a competitive product or the market has changed. The stabilization phase also includes buffer time to cope with unforeseen problems or delays.
Below I will describe the Micosoft development software model using the following diagram: (This chart describes the Microsoft test in more detail, and I personally think that Microsoft's testing is a very important and distinctive division of work in Microsoft software Product development.) This is through the observation of Microsoft for nearly a year and with the analysis of similar domestic enterprises, I came to this conclusion. As we all know, the domestic software developers are not doing enough in this area, in particular, the internal testing of software, in their thinking, there may be a misunderstanding: that the test should be completely to the user to be responsible for, but in fact, in the software development process, software testing and development is a "spear and shield" relationship, complementary to each other, Indispensable. At Microsoft, it is possible that this relationship has played to the extreme: sometimes the development department and the test department are in the same position, the development manager and Test Manager status is the same, sometimes even the Test manager's status even above the development manager, but there is no fundamental conflict of interest between them, there is only one common goal: to improve the quality of the product. )
Add: (Brief description of Microsoft's testing process) within Microsoft, there is a team dedicated to Microsoft's engineers to provide day-to-day work and management of the tools software, they are non-profit organizations, the main task is to develop internal Microsoft's required tool software: for example:
SLM (source Library tree), which is responsible for managing the source code of each programmer in the software development process, each programmer is responsible for writing its own module, check-in the completed code into a central server SLM tree every day, The SLM tree is compiled at a fixed time by a predefined script, which usually takes several hours, so there are rules within Microsoft based on each project team: for example, a developer must check-in the code modified by the day before work (such as 6:00). So SLM began to compile.
The next day, the QA team testers from the server download a previous build to start testing, the test will be reflected in a timely manner in another tool software: Raid (RAID is a tool for entering, tracking, analyzing, and Reporting product defects during development and maintenance. This tool is responsible for managing bug cases for products, and each bug contains many attributes: such as status (active, Resolved, closed), severity, Priority, which area, which version appears, who found it, which developer to assign the bug to, and so on, a series of attributes. Depending on the tool, you can also query which developer's bug activity, the number of fixes, the number of bug bugs, and so on, some basic product quality conditions, so that the project manager can easily grasp the specific progress of the project. If the number of bugs found in the middle of a project is more persistent than the number of bugs resolved (meaning that the product is getting more and more bugs alive), it could mean that the project is in trouble and policymakers can make the appropriate decisions quickly. Timely correction of errors in product development (Microsoft used to have many products because of such factors were cancel). It is important for the project manager to have a timely grasp of the work status of each tester and developer based on this tool. A lot of people have said that Microsoft has defeated countless competitors with SLM and RAID, and I don't think it's true from my experience at Microsoft. These two tools are indeed very good tools, Microsoft has used them to a very artistic level, the success of Microsoft plays a very important role. More commendable is that these tools are still in the function of continuous improvement, upgrade, so that Microsoft's engineers to work more powerful, Tiger wind, such enterprises which have the reason for unsuccessful?
During the testing process, it is not random to the SOFTWARE PRODUCT blind use, indiscriminate use, Microsoft also has a very advanced method and tools to support each aspect of the test: such as ATCM (Access test Case Management), a based on test Test management tools for case (test cases) are responsible for this work.
Microsoft may be relying on "programmer's cleverness and tester's diligence" to build the software empire Building, write the software business brilliant.
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.