Microsoft Company Software Development Mode Introduction
SmalllambB
The book "Microsoft's Secret", the "Microsoft Secret", is currently what I have seen, the most professional and deeper book introduced by Microsoft's software product development process. Through this book, we can see how Microsoft has effectively managed software product development, I think these experiences have a great benefit to China's major software developers, especially those who care about China's software industry. of. Therefore, the book is extracted in this book (the fourth chapter "Product Definition and Development Process"), coupled with the actual experience in Microsoft China, I hope to share with you. As an excerpt, it is natural to hang a long, so I suggest that if you have time, you still find the original book.
During Microsoft's product definition and development, Microsoft software development follows a strategy that can be called "feature" and fixed resource (resource) to stimulate creativity. This strategy can be divided into five principles:
1. Divide large projects into important phases of several milestones, and there is a buffer time between each stage, but not separate product maintenance.
2. Use imaginary descriptions and profile instructions for feature (Program Specification) instructions.
3. Determine product characteristics and its priority sequence based on user behavior (user behavior) and information about users.
4. Establish modular and horizontal design structures and make the project structure reflect the characteristics of the product structure.
5. Rely on personal responsibility and fixed project resource implementation.
Principle 1: Divide large projects into a number of milestones, and there is a buffer time between each stage, but not separate product maintenance.
1. Project schedule and milestone
Microsoft usually uses "synchronous-stable product development law". The life cycle of a typical project includes three phases:
Planning phase: Completion of the instructions and progress tables of the function table
Development Stage: Write a complete source code
Stabilization phase: Complete the product, enabling it to mass production (Roll Out)
These three large stages and the intrinsic cycle methods are very different from the traditional "Water Fall" development methods, the latter is designed, detailed, modular code design and test, integrated test, and system Test composition. The three stages of Microsoft are more like risk-driven, gradually "spiral" lifecycle models.
The products of the planning phase are imagination descriptions and instructions, used to explain what the project will do and how to do it. These things have promoted people 's thinking and discussions in design problems before the program is prepared. The development phase is carried out around three main internal products; the stabilization phase is concentrated in a wide range of internal and external tests. In the entire product production cycle, Microsoft uses the concept of buffering time. The buffer time enables the development group to deal with accidents and changes in time progress, it also provides a means to alleviate the contradiction between timely delivery and trying to accurately estimate the delivery time.
In all times in the development and stabilization phase, one project usually uses 2/3 of time to develop, 1/3 time is used to stabilize. (The Vice President of the Office Department has such an overview of the usual progress: "Generally, in the total schedule, use half of the time to write the product, leave another half of the time debugging or to pay for an accident. This, if I have one Two years of project, I will use it for a year in advance ... If things are a bit trouble, I will take a short thing I think is less important. ")."). Such a milestone work process makes Microsoft's managers to clearly understand which step in the product development process has made them flexibly delete some product characteristics in the later stage of the development phase to meet the requirements of the delivery period.
Planning phase
The program phase is in the life cycle of a project, all the time occupied by the plan before the development. The planning phase produces an imagination description, marketing plan, design goals, an initial product description, the interface standard, initial test plan, a document plan (print and online help) for the components developed by other groups ) And a list of availability issues (USAbility List). The planning phase begins with an imaging description. Imagination description from the product manager and the program manager of each product; it is a marketing idea for planning products, including the analysis of competitors products, and planning to future versions. Imagination descriptions may also discuss issues that must be solved in the previous version and the main features that should be added. All of this is based on the analysis of customers and markets and the information obtained from the product support service group.
Description File starts from an outline and defines new or increased product features and assigns different priorities. The documentation is just a preliminary overview of product features; from starting to develop to project to complete it to increase or change 20% - 30%. Although the changes in the life cycle are generally small, but the more, the developer must make a change in the reasons.
Usually the program manager uses VB to create a project prototype. They also launched design feasibility studies to understand the situation in the design, and make decisions involving product descriptions as soon as possible. The instructions for important products are subject to the company's high-level leaders. For less important products, some managers are completed.
development stage
The plan for the development stage has allocated a set of features, specifying the details and technical relevance of characteristics, and records the tasks of a single developer and the estimate of the schedule. In the development phase, the developer writes the source code under the guidance of functional instructions, and the tester writes the test item group to check whether the characteristics of the product are normal, and the user education (User Education) is written.
When the tester finds an error, the developer is not left later, but immediately corrects, and the test is continually automatically and automatically. This improves the stability of the product and makes the version release date easier to estimate. When reaching a certain phase of the project (40%), the developer tries to "lock" the main functional requirements or characteristics of the product, only allowing small modes. If the developer wants to make great changes after this point, they must discuss consultations with the program manager and the development manager, and may also solicit product sector managers.
A project is to organize the development phase around 3 or 4 main internal versions, or "Mileston Project" to organize the development phase. Each main milestone version is generally developed in 2 to 4 months. Each version includes its own encoding, optimization, testing, and commissioning activities. The project preserves the total development of 1/3, which is "Padding Time". (Apple's team is a cut, independent, each developing their own things. All things will be integrated when they have to ship; Borland is developed in a step-by-clutch way; That is to divide the work into many small parts, and always let the development of things can run. It seems that this gradual method fee is always, but it is actually almost a long time, because this makes you always master Things are true.)
After testing and stabilization of the last major milestone, the product is to be "UI Freeze," ie determined the main user interface of the product, such as menus, dialogs, and file windows. Thereafter, the user interface will no longer make a big change, so as not to introduce the difficulties of the corresponding document.
Stable phase
The stabilization phase focuses on the test and commissioning of the product. Projects do no longer add new features at this stage unless a competitive product or market has changed. The stabilization phase also includes buffering time to cope with unforeseen problems or delays.
Below I use the MICoSoft development software mode to describe the following simplicity: (This picture is more detailed in Microsoft's test, I personally think Microsoft's test is a very important in Microsoft software product development. " Division. This is through the observation of Microsoft for nearly a year and the analysis of similar domestic companies. Everyone understands that domestic software developers are doing very enough in this regard, especially do not pay attention to software. Internal test, in their thoughts, there may be a misunderstanding: I think the test should be completely being responsible by the user. In fact, in the development process of the software, the software test and development is a "spear and shield" relationship. In addition, it is not possible. In Microsoft, this relationship may have been to: sometimes the development department and the test department are more powerful, the status of the development manager and test manager is the same, sometimes even the status of the test manager even Above the development manager, but there is no fundamental conflict between them, there is only one common goal: the quality of the product is improved.) Add a little: (a brief description of Microsoft test procedures) Microsoft, special A group is responsible for providing Microsoft engineers with daily work and management tool software, they are non-profit organizations, the main task is to develop the tool software required to develop Microsoft: for example:
SLM (Source Library Tree), Source Management Tool, responsible for managing software development process sources, each programmer is responsible for writing its own module, and the code CHECK-IN to a central server every day, in the SLM tree of a central server, This SLM tree is compiled by a predefined script in a fixed time. Usually this process takes several hours, so Microsoft has its own provisions according to the situation of each item group: such as the developer must be before get off work (such as 6 PM: 00) The code CHECK-I in the day before, so that SLM began to compile.
The next day, each tester of the QA group started testing from a Build start test from the server, and the situation of the test will be reflected in the case of another tool software: RAID (RAID IS A TOOL for Entering, Tracking, Analyzing, and And Reporting Product and Maintenance.). This tool is responsible for managing the BUG of the product, each bug contains many properties: such as status (active, resolved, off), severe level, priority, which area, which version In addition, the discoverer, to assign this bug to which developer, etc. a series of properties. You can also query which developer's BUG activity, the number of solutions, which testers' BUG quality, and so on, such that the project manager can easily grasp the specific progress of the project. If the number of bugs found in the project, the number of bugs that is discovered is more than the number of bugs (meaning more and more, which may mean that this project has problems, policymakers can make corresponding corresponding Decision, timely correcting the mistakes in product development (Microsoft once has many products because such factors are Cancel). There is also a project manager to understand the work status of each tester and developer according to this tool, to understand each tester and the developer. Many people have said: Microsoft defeated countless competitors with SLM and RAID, through my experience in Microsoft, I don't see this. These two tools are indeed very outstanding tools. Microsoft uses them very artistic extent, which plays a very important role in Microsoft's success. It is more important to be expensive, currently these tools are still constantly improving, upgraded, making Microsoft's engineers working more like tiger, tigers, such as unsuccessful truth? In the test process, It's not just a free use of software products, use, Microsoft also has a very advanced approach and tool to support each aspect of the test: such as ATCM (Access Test Case Management), a TEST CASE (Test The test management tool for use is taken on this work.
Microsoft may be the building of the software empire, and written the glory of the software career.
Product Developing Process in Microsoft
In the figure above: QA is a comparative professional test department under the Microsoft product sector (Quality Assurance DEPT)
1. Padding time in the project schedule (Padding Time)
Microsoft uses a buffer plan to balance the future in the highest efficiency and better to make a balance between future. This time to cope with emergencies is part of each primary milestone during development and stabilization. The buffer time is mainly used to compensate for the incomplete understanding of feature, or if the technical difficult or forgets to write task write progress, or unbained puzzles. The buffer time contributes to an event that is expected.
Principle II: Using Imagination Description and Summary of Features Description Guide Project
In order to give a sufficient development frame to make the work continue to perform, and can accommodate the changes in the development process and maintain sufficient flexibility, Microsoft uses the imaginary description and summary instructions to guide the project development, not at the beginning. Efforts have written a complete and detailed description. The so-called imaging description is a very short document written by the program manager and the product plan from the marketing group, mainly to define the goal of product development (do not involve specific details of the product!). Usually a brand new product, imaging description is generally relatively detailed, and there is a rough instruction file therein. In general, Microsoft's requirements for imagination are:, better, try to explain "products do not do" (rather than "what is going to do"!).
Using imagination description, the program manager starts writing function documentation, which interprets the characteristics of the product and how these features are related to other features and product. Initially, it is just a profiling document. With the progress of the project, the program manager will add more details to it, and the final description file will become like the user manual. A complete explanation does not only play a description of the latest features of the product, and it is still the main basis for testing and evaluation before product production and delivery.
Imagination description helps determine which features are deleted.
Microsoft's various development groups use imagination description to help refine product versions, and then decide whether to increase product possible features in this topic. It is usually not easy to change the determined subject, otherwise it may result in chaos on product development.
Write instruction file
Declaring documents between all members of the product team, between the product team and the envisage and requirements of the product team and the management department. Product features must be clearly described in the description file (describe how each property works, how and how to interact with users from the user's perspective. If the feature has an interface, a schematic diagram should also be included to display the effect of the interface ) And emphasizes its corresponding priority. The program manager establishes a project development schedule. In addition, the following items should also include the following items: the purpose of the project is expressed, about what is the list of products, the definition of the customer, the definition of competitive products, product requirements (including operating system) Version, minimum memory requirements, hard disk space, processor speed, and display resolutions), any dependencies of third-party (such as printer drivers, components). The program manager is responsible for coordination and "writing" instructions
Program Manager (Program Manager) should consider the following questions:
What is the main point of this feature?
How do users use this feature?
Is this feature meaningful?
Is there similar features in other products in Microsoft?
What issues have been missing?
Is there a satisfactory communication in the group?
The final program manager determines the content of the relevant characteristics by discussing the joint discussion of the developers in the group, and writing it down.
Structure prototype
Construction prototype is the best way to specifically explain a new product or a new version of the program manager, which makes it possible for development before development, especially in terms of availability, and helps to make good interactions with users. Understanding, it can also make product descriptions more compact.
Microsoft's developers usually use VB to construct user interface prototypes, but the paint brush is also a good tool for constructing a computer screen model. The description of the dead plate becomes a file with life, indicating that the invention is not limited in detail. In the project development process, the early versions of the document will have considerable increases and changes. Since changes in the description may result in great changes in the development of work, Microsoft is usually concentrated on the characteristics of those who have no user interfaces, because they do not have to know what users have to react to them before completing the development, that is Say these characteristics is unlikely to change. Then face other characteristics. However, when the product is developed to a certain process, after, for example, 40%, the program manager must strictly control the modification of the characteristics (mainly refer to adding new features), otherwise it is not light to cause development delays, and will compress the available test time. Principle 3: Determine the product specific achievement according to user behavior and information about users and their priority
For a development project, how to determine what characteristics that should contain in the final product is often a more difficult thing. To this end, Microsoft uses a "behavioral-based development plan" to make character selection and priority arrangements.
Based on behavioral development planning methods from user behavior, such as write letters or budgets, do systematically research. Then, according to a certain feature, the program supports important or frequent user behavior is evaluated. The advantage of doing this is a more rational for characteristics: discuss how to do better for customers, whether a given feature is convenient for a more concentrated debate of a particular task, more readable, And better synchronization in marketing, user education and product development.
1. Behavioral development plan based on characteristic selection and priority arrangements
The key points based on behavioral development planning methods are to analyze the product according to user behavior, product characteristics, and internal contact between behavior and behavior. The program manager and product plan divide the products that are trying to support into approximately 20 "behavior", and then they strive to map behaviors (and any sub-behavior) into Microsoft's current characteristics and competitors. They also map behaviors to different customer image or in different market sections.
When describing the new version of the product, the behavioral development plan method helps the program manager and the developer concentrate their energy and creativity. Items like Excel, striving for the main behavior added in each new version without more than four. Most characteristics are directly mapped into these behaviors. This approach allows the project to grade the value of the user in terms of characteristics. Through the grading, the procedures managers and developers have enabled their characteristics to support as much behavior as possible. This kind of benign competition is beneficial to users, but also to increase productivity.
2. Preparation for customer behavior instead of product characteristics
Based on behavioral development schedule, the project is first concentrated in behavior during the planning phase, and the second is characteristic. Program manager and marketing staff do not think and eliminate their favorite features, and then surround them from the draft description. What they really do is to list a list of customers, and then focus on the imagination description to support those behaviors.
3. Take a comprehensive consideration of products in behavior
Since behavioral development plan is based on the view of the entire product, it helps to understand what products work on different functions, and how other products may support those needs or do not require other application software products. behavior.
4. Do marketing research to support behavioral development plan law
To support the behavioral development planning method, some joint research work from the product manager and developers from the marketing group, such as guiding the research work of users. However, it is generally the product manager to do most of the research and make it more clearly affecting the evolution of Microsoft products.
Principle 4: Establish a modular and horizontal design structure and make the project structure reflect the characteristics of product structure
A key concept in Microsoft product design is the infrastructure of the product, especially short-lived application software, which should be more unique with the progress of the project (rather than intricate). When developing group constructs the first edition of the product, they use the graded structure more, so that the product design specifies a first architecture. As time goes, they move to a single structure so that the project can focus on characteristic development. Microsoft is increasingly emphasizing features between different products. Sharing helps to make a uniform coordination of "Look and Feel" in different products; it is also convenient for users who need only one application software, reducing code repeated writing, narrowing the size of a single application software . Microsoft uses the characteristic group to organize product development, which makes everyone easily understand how the team is associated with the entire product. The project starts from the provisions summary. Summary The form is a list of contents that have been identified, involving relatively independent features that the next version will be developed in order to develop by separate feature groups.
The program manager and the developer divided the project into a characteristic subset, and then assigned to each feature team, allowing them to produce in 3 to 4 main internal project milestones. This product organization and development method make Microsoft to increase the developer and create a large team to gradually increase the functionality of the product.
5. Take features (with functions) as development units
The characteristics of Microsoft software products are the relatively independent functional units that the user's ultimate visible function is, such as building materials, even more such. System software products, such as NT or 95 features, usually not directly visible to end users. Microsoft and other companies are sometimes simply claiming that these non-visible features are "functions".
The program manager undertakes a group of characteristics or functions to achieve the process of testing, documentation until the final completion process. They must cooperate with the developer, the latter is responsible for estimating progress tables and improving each characteristic. The developer also stores one to several files on a network development computer to save the source code of the feature. The development and improvement of most features as long as a developer, and some large features have a small group.
6. The product structure is the cornerstone that determines its long-term structure integrity.
The product structure is the base of the product, which specifies the important structural components and how these components are assembled together. Product structure and components for assembly structures provide pillars that achieve product characteristics (ie, do detailed design and encoding). The structure of the product is usually not directly visible to end users. Only structural features to be implemented is visible. The product structure is also the cornerstone that determines the long-term structure integrity of the product. Any change in product function should not cause potential product structure.
7. Hierarchical structure of the product
For products, methods of hierarchical structures can also be analyzed. Usually define a good hierarchy helps flexibly, delete and improve product features. In addition, a good hierarchy contributes to the transplantation of the product on different platforms. (For example, Excel defines a five-layer, where only the bottom-up operating system layer is related to the platform, the other layers are implemented by calling the API interface provided by the next layer, so it is extremely convenient. And in Windows The support of 16-bit, 32-bit, and DOS programs is achieved through the concept of "virtual machine".)
8. Small structure document: Source code is the only file
In addition to the API document, Microsoft does not generate the corresponding documentation for its product structure, although the senior developer may write a high-level structure. For complex features, many developers record and review their structural details they are responsible, but this work is not enforced. In addition to the source code file and feature description, numerous groups are a new programmer to describe a document of a layer of structure (main data structure, how to work, etc.). But these files are not updated, and the managers do not require the project group to generate such internal documents. In the relevant documentation documents, do not involve implementation. Developers should know how to achieve, or can go to learn. The recorded documentation is so little because "a developer's work is to write the code we have to sell, not the time to write high design documents", "design documents should not be separated from source code." Segmentation code and "Keep things simple". 9. Group leadership of the feature team and as "content expert"
The Characteristics Group is generally composed of one leaders and 3 to 8 developers, working in the relevant feature. The size of the group is often dependent on the experience and ability of the team leadership. Property team leaders report to project development and responsible for all development efforts of the project; the project development leadership have a more global view of the product, so that it is most likely to discover the issues that are not associated with each other. Each per person in the feature group is "experts" in this area. They understand how to use the product, understand the products of competitors, and understand where to go to the future. Typically, the organizational structure (software tends to map the structure of the structure) to maintain a small scale of the characteristic group.
Principle 5: Relying on personal responsibility and fixed project resources
For software projects, it is difficult for the development and delivery progress of the product. The method taken for this Microsoft is to push the responsibility of progress arrangements and work management to the bottom, namely a single developer and test person. This ensures that everyone is responsible for everyone in addition to part of the group. Separate developers set their own schedule, and the program manager summoned a separate schedule, plus buffering time to develop a comprehensive project schedule. The general manager of the top layer is also fundamental resources such as personnel and time to ensure that the project is concentrated and restricting its efforts and creation procedures.
Key goals, especially for application software, is to specify the product's goal of the product day and strive to adhere to it as much as possible. The program manager and the developer retrospectively retroses the day after the date, specifies the date of the middle project milestone. The center of this "fixed date the date" is on the developer. To avoid the endless design, recurrence of the finally useless design, re-design, and test cycles, resulting in a final useless design, re-design, and test cycle.
10. Developers make their own progress estimation
Date Setting Method. But developers generally make more optimistic estimates, so the development manager needs to adjust and add buffer time to avoid problems due to incomplete information. Microsoft's ability to develop progress is: it gets more cooperation from people, because the date is self-defined, not managed; progress is always rich, because developers inevitably underestimate them time needed.
11. Progress estimation of meticulous tasks
Microsoft's second progress schedule method is: to make a very detailed consideration on the task to be completed. On this basis, the developers will give them an estimate of "implementation", and this to "promote" more realism and avoid excessive underestimate.
Usually Microsoft puts the task to 4 hours (half days) to 3 days. For the arrangement of accurate progress, Microsoft's manager knows this: "Any task only takes more than a week, and that people must not fully consider it. Any task is estimated that only less than half a day can be completed, then he It considers too much. He should use more time to program, less time consider ". For operating systems similar to Windows NT, progress schedules are more difficult, and it is generally estimated to work in a few days or half a week. 12. Arrange the psychology of developers and group progress
When the project becomes large, Microsoft divides the employee into a group. The manager then distributes the responsibility and ownership as much as possible until the group and individual; this makes both a feeling of supporting work. It is also in the group, in individual, especially the group leadership, causing a strong pressure to keep up with other colleagues expected progress, as the manager may re-balance the progress, take away from the backward group or individual. In this way, the pressure between colleagues makes the manager do not need much effort to implement strict control of the process of individuals or individual groups.
13. "Fixed" Production Day (RTM: Release to Manufacture)
In order to restrict the creativity constraint in time limit, Microsoft is now trying to fix the day before the new product or new version of the product, at least the internal goal of the product day. This gives people a cut-off feature and concentrate on a pressure on a project, forcing them to think about which new feature should be added to the product. Although the final product delivery goal may be set by advanced executives, the developer and the team still set their own progress table.
Microsoft generally estimates a RTM date substantially based on the pre-scheduled progress, then reaches the corresponding Milestone dates, such as RC, Beta, Tree Lock, UI Freeze, Feature Complete, and CC (Code Complete), etc. date. Develop a very detailed product research and development time schedule, and the various members of the product development group work with this schedule as a target unified coordination. Microsoft emphasizes Teamwork Spirits in software development, which runs through various phases developed in Microsoft products. This is also a very important reason for Microsoft to succeed.
Summary: Synchronization - Stable Development Law
Planning phase
Define the imagination description, description and progress
· Imagination Description Product and Program Management Department uses a wide range of customer opinions to identify and optimize the characteristics of the product.
· Description files based on imaging description, program management department and development group define features, structural problems, and correlation between sections.
· Develop progress tables and constructive groups to explain the documentation, program management department coordination schedule, arrange the character group, each group includes approximately 1 program manager, 3 - 8 developers, 3 - 8 testers ( 1: 1 ratio works parallel with the developer.)
development stage
Use 3 - 4 subpredals, each generating a milestone product sent to complete the development of features. The program manager coordinates the development process. Developer design, encoding, debugging. Testers are paired with the developer and continue to test.
· Subject 1 1/3 characteristics: the most important characteristics and shared components.
· The characteristics of 1/3 in the middle of the subproject 2.
· Subject 3 last 1/3 characteristics: the least important features.
Stable phase
Comprehensive internal and external testing, final product stabilization and delivery. The program manager coordinates OEM and ISV to monitor information feedback from customers. The developer conducts the final debugging and code stabilization. The tester discovered and cleared the error.
· Internal testing companies do a detailed test of the entire product.
· External test company's external "β" test point, like OEM, ISV, and end users to do a detailed test of the entire product.