Microsoft Company Software Development Mode Introduction
Author: Smalllamb
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, in particular, some of the contents involved in software product development (Chapter 4 "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 an overview of imaginary descriptions and features to guide items.
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.
Project schedule and milestones
Microsoft usually uses "synchronous-stable product development law". The life cycle of a typical project includes three phases:
l Scientific phase: Completion of the instructions and progress tables of the function table
l Development Stage: Write a complete source code
l Stable stage: Complete the product, make it able 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 the other half of the time debugging or pay the accident. This, if I have one Year's project, I will use it for a good thing in advance ... If something is a bit trouble, I will take it to the characteristics 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 have a good reason to make a change.
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 cutting, independent, and has developed their own things. When there is still three months to ship, all things will be integrated; Borland is developed in a step, that is, divides the work into many small parts, and always makes the development of things Work. It seems that this gradual method fee is seemingly used, but it is actually a long time because it makes you always master the true situation. 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 MICROSOFT development software mode to describe the following simple map: This picture is more detailed in Microsoft's test. I personally think Microsoft's test is a very important division of labor in Microsoft software product development. . This is the conclusion through the observation and analysis of similar companies in Microsoft. Everyone is very clear that domestic software developers are not enough in this regard, especially do not pay attention to software internal testing, there may be a misunderstanding in their thoughts: I think the test should be completely enrolled by the user, in fact, In the software development process, software testing and development is a "spear and shield", complementary, and it is not possible. In Microsoft, this relationship may be played by: Sometimes the development department and the test department are more powerful, the status of the development manager and test manager is the same, and sometimes even the status of the test manager is even over the development manager, but they There is no fundamental conflict between interest, only one common goal: increase the quality of the product.
Add some point: (a brief description of Microsoft's test procedures) Microsoft, specializing in a team responsible for Microsoft's engineers with daily work and management tool software, they are non-profit organizations, the main task is to develop Microsoft internal locations Tool software required: for example:
l 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 completed code Check-in to a central server's SLM tree 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 project group: such as the developer must be off work (such as 6 pm) : 00) CHECK-I that will be modified on the same day before, so that SLM began to compile.
l On the second day, the various testers of the QA group started testing from a Build start test from the server, and timely reflected the situation of the test to another tool software: RAID (RAID IS A TOOL for Entering, Tracking, Analyzing, 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 The version appears, the discovery, 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 that the product's live bugs may mean that this project has problems, policymakers can make quick make Corresponding decisions, timely correcting mistakes in product development (Microsoft once has many products because such factors were 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 that these tools are still constantly improved, upgraded, making Microsoft's engineers working more like tiger, tiger and tigers, such as unsuccessful truth? L During the test process, It is not a free use of software products, and 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 management tools are 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)
Padding Time in the Project Schedule
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 "what products don't do", not "what products do"!
l Use the imaginary description, the program manager begins writing function description files, the file interprets the characteristics of the product and how these features are related to other characteristics 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.
l Imagination description helps to decide 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.
l Writing instructions Documentation Document between all members of the product team and the envoys and requirements of the product team and 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 give it 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) Versions, minimum memory requirements, hard disk space, processor speed, and display resolutions, any dependence on third parties 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?
¨ This feature makes sense?
¨ Do you have similar features in other products in the product or Microsoft?
¨ What issues have been missing?
Does the exchange of communication are satisfactory?
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.
Structural 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 product characteristics and priority sequence based on user behavior and information about users
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.
Behavioral development plan based on feature 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.
Preparation for customer behavior rather than 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.
Conduct 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.
Do marketing research to support behavioral development plan
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 modular and horizontal design structure, and reflect the characteristics of the 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.
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.
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.
Hierarchical structure
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".)
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". Characteristic group and team leadership as "content experts"
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, the program manager summoned a separate schedule, plus buffer 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.
Developers make their own progress estimation
Date Setting Method. However, developers generally make more optimistic estimates, so the development manager needs to adjust and add buffer time to avoid problems that occur due to incomplete information. The advantage of Microsoft's formulation of progress is that it works more from people, because the date is ourselves, not managed; the progress is always rich, because developers inevitably underestimate their true time needed.
Progress estimation for 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.
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. Fixed Japanese (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:
l Imagination describes the product and program management department to use a wide range of customer opinions to identify and optimize the product's characteristics.
l Describe the file based on imaging description, program management department and development group define features, structural problems, and correlation between each part.
l Develop a progressive table and constructive character group to explain the documentation, program management department coordination schedule, arrange the characteristic group, each group includes approximately 1 program manager, 3 - 8 developers, 3 - 8 testers ( 1: 1 ratio works parallel with the developer.)
During development stage