Microsoft Company Software Development Mode Introduction (Reprinted)
SmalllambB
Beijing University Press, "Microsoft's Secret", is currently what I have seen to Microsoft Company Software Products.
The most professional and deepest book introduced by the development process. Through this book, we can see how Microsoft is scientifically
Software product development is effectively managed, I think these experiences have a majority of software developers in China, especially
Dear friends developed by the industry is a great benefit. So it is extracted from the part of the software product development in this book.
(Chapter 4 "Product Definition and Development Process"), coupled with the actual experience in Microsoft China, summed up this article, hope to
Everyone is shared together. 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 clicher called "feature"
Strategic with fixed resources (Resource) to stimulate creativity. This strategy can be divided into five principles:
1. Divide a large project into a number of milestones, and there is a buffer time between each stage, but not
Row separate product maintenance.
2. Use imaginary descriptions and profile instructions for properties (Program Specification) instructions.
3. Determine product characteristics and its priority according to user behavior and information about users.
4. Establish a modular and horizontal design structure and make the project structure reflect the characteristics of the product structure.
5, by personal responsibility and fixed project resource implementation control.
Principle 1: Divide the big project into a number of milestones, and there is a buffer between each stage.
Time, but not separate product maintenance.
1. 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 interconnected cycle methods are very unhappy with traditional "water fall"
With the same, the latter is designed, detailed, modular code design and test, integrated test, and system testing. Whom
Soft three stages 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. Executive personnel
Dance schedule, before the developer wrote the code, these things have promoted people's thinking and discussions on design problems. development stage
Conducted around three main internal products; stabilization stages focus on extensive internal and external testing. Born throughout the product
In the production cycle, Microsoft uses the concept of buffering time. The buffer time enables the development group to deal with accidents and affect the time
The progress of the 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, a project usually uses 2/3 time to development, 1/3 time
Stabilized. (The Vice President of the Office of the Office has an overview of the usual progress: "Generally, in the total schedule, use half of
The time is written out, leaving another half of the time debugging or paying an accident. This way, if I have a two-year project, I will
It has completed the prior thought of things in advanced ... If things are a bit trouble, I will take a short thing I think is less important. ").This
The milestone work process allows Microsoft's managers to clearly understand which step in the product development process has also made them
Some product features are flexibly deleted in the later stage of the development phase to meet the requirements of the delivery period. l planning stage
The program phase is in the life cycle of a project, all the time occupied by the plan before the development. Planning phase
An imagination description, marketing plan, design goals, a component for the initial product, for integrated components developed
The specified interface standard, the initial test plan, a document plan (print and online help form) and a use
Sexual issuance list (USABILITY LIST). The planning phase begins with an imaging description. Imagination description from product managers and products
Program manager of the unit; it is a marketing idea for planning products, including the analysis of competitors products, and future editions
The plan is planned. Imagination descriptions may also discuss issues that must be solved in the previous version and the main work should be added.
can. 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 smaller, but the more, the developer must make a good reason to change
change.
Usually the program manager uses VB to create a project prototype. They also carry out design feasibility studies to understand the design in the design
In the case, make decisions involving product descriptions as soon as possible. The instructions for important products are subject to the company's high-level leaders. For nothing
Important products are completed by some managers.
l development phase
The plan for the development phase has a set of characteristics on three or four main milestones, and the details and techniques of characteristics are specified.
Surgical correlation, record the tasks of a single developer and the estimation of progress. In the development phase, the developer is functional.
The instructions under the guidance of the instructions, the tester writes the test item group to check whether the characteristics and working scope of the product are normal, user education
The USER Education prepares a draft document.
When the tester finds an error, the developer is not left later, but it is right now, and within the development stage
The test is constantly carried out automatically. This improves the stability of the product and makes the version release date easier to estimate. Be reached
After a certain phase of the point (40%), the developer tries to "lock" the main functional requirements or characteristics of the product, only allowed
Small range changes. If the developer wants to make great changes after this point, they must discuss with the program manager and the development manager.
On consultation, we must also seek the views of the product sector manager.
A project is to organize the development phase around 3 or 4 main internal versions, or "Mileston Project" to organize the development phase. General use
2 to 4 months to develop every primary milestone version. Each version includes its own coding, optimization, testing and tune
Test activities. The project preserves the total development of 1/3, which is "Padding Time". (Apple's
The team is a cut, independent, and each developed. All things will be set when there is only 3 months to ship
Being together; Borland has developed in a step of gradually, that is, divides the work into many small parts, and always let the opening
The thing of the thing can run. It seems that this gradual method fee is still, but it is actually almost a long time, because this
Make you always master the real thing. )
After testing and stabilization of the last major milestone, the product is to be "fixed" (UI
Freeze, that is, determine the main user interface of the product, such as menus, dialogs, and file windows, etc. Thereafter, the user interface will
No longer make big changes, so as not to introduce the difficulty of synchronous modification of the corresponding document.
l Stable stage
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 model to describe the following simple map: (This picture is compared to Microsoft's test.
Detailed description, I personally think that Microsoft's test is a very important feature of Microsoft software product development.
Division of labor. This is the conclusion through the observation and analysis of similar companies in Microsoft. everyone
They all understand that domestic software developers are doing very enough, especially do not pay attention to software internal testing, in their thoughts
In the middle, there may be a misunderstanding: I think the test should be completely responsible by the user. In fact, in the development process of the software, soft
The test and development of the pieces are the relationship between "spear and shield", complementary, and it is not possible. In Microsoft, there may be this relationship to
Extremely to: Sometimes the development department and the test department are similar to each other, the status of the development manager and test manager is the same, sometimes even
The status of the test manager is even above the development manager, but there is no fundamental conflict between them, there is only one common goal:
Improve the quality of the product. )
Add some point: (a brief description of Microsoft's test procedures) Microsoft, specializing in a group responsible for micro
Soft engineers offer tool software for daily work and management, they are non-profit organizations, and their main tasks are to develop Microsoft inside.
Tool software required: for example:
l SLM (Source Library Tree), Source Management Tool, responsible for managing software development process sources
Code, each programmer is responsible for writing its own module, and the code will be completed every day CHECK-IN to a central server
In the SLM tree, this SLM tree is compiled by a predetermined script in a fixed time, usually this process.
It takes several hours, so Microsoft has its own provisions according to the situation of each project group: such as the developer must
You must enter the code CHECK-I in the day before get off work (such as 6:00 in the afternoon), so SLM is only
Start compilation.
l On the second day, the various testers of the QA group started testing a Build start test from the server on the server.
Situate reflection to another tool software: RAID (RAID IS A TOOL for Entering, Tracking,
Analyzing, And Reporting Product Defects During development and maintenance.). This tool
Responsible for managing the BUG of the product, each bug contains many properties: such as status (activity, resolved,
Off), severe level, priority, which area, which version appears, discoverer, to assign this bug
Which developer is given a series of properties. You can also query which developer's BUG live according to this tool
Move, solved quantity, which tester's BUG quality, etc. Some basic product quality, so
Project managers can easily grasp the specific progress of the project. If the project is developed in the middle, discovery
The number of bugs continues to be more than the number of bugs solution (meaning more and more living BUG),
It can mean that this project has problems, policymakers can quickly make corresponding decisions, timely correcting products
The mistakes in the development (Microsoft have many products have been used by such factors). There are also project managers
It is important to understand the work status of each tester and the developer according to this tool. Many people have said: Microsoft defeated countless competitors with SLM and RAID, through
I am in Microsoft, I see this, I can't do this. These two tools are indeed very outstanding tools, Microsoft will
They use very artistic extent that the success of Microsoft plays a very important role. It is more difficult to be valuable
Yes, these tools are still constantly improved, upgraded, making Microsoft's engineers working
It's more like a tiger to add wings, tigers and tigers, and such companies have unsuccessful truth?
l During the test, it is not a free use of software products, and there is also a set of smashing.
A very advanced approach and tool supports each aspect of the test: such as ATCM (Access Test Case)
Management, a test management tool based on TEST CASE (test case) assumes this work.
Microsoft may be the building of the software empire by "programmer's smart and tester" to build software empire.
Glory.
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, buffering 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 kind of burst
The time of the event is part of each primary milestone during the development and stabilization. Buffer time is mainly used to make up due to
The incomplete understanding of Features, or technical difficulties or forgets the progress of the task due to negligence, or not
Vulnerabilities formed by the problem. 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 framework to make the work continue, and can accommodate changes in the development process and keep
Sufficient flexibility, Microsoft uses imagination descriptions and summary instructions to guide project development, rather than working hard at the beginning.
A complete and detailed description. The so-called imaging description is co-edited by the program manager and product plan from the marketing group.
A very short file written in which it is mainly to define product development targets (do not involve specific details of the product!). Usually
A brand new product, imagination description is generally relatively detailed, and there is a rough instruction file therein. In general,
Microsoft's requirement for imagination is:
The shorter, the better, try to explain "What is the product is not doing" (instead of "what products do"!).
l Use the imaginary description, the program manager begins writing function description files, what is the characteristics of the product?
And how these features are related to other characteristics and product. Initially it is just a profile, with
With the progress of the project, the program manager will add more details to it, and the final explanation will become like
The same is true for the manual. Complete instructions not only play a description of the latest features of the product, and it is still in product investment
The main basis for testing and evaluation before 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 of the rules, and then decide on this topic
Do you need to increase the possible properties of the product. It is usually not easily changed to change the determined subject, otherwise it may result in product development.
mess.
l Writing a document
Explain that the files between the product team, between the product team and the product team and the management department
The idea and requirements of the product. Product features must be clearly described in the documentation (describing how each property works, how and how to interact with users from the user's perspective. If the feature has an interface, there should be a schematic diagram,
To display the effect of the interface and empower its corresponding priority. The program manager establishes a project development schedule. In addition
It should also include the following items: use a sentence to develop the project development purpose, what is the product is not clear?
Single, the definition of customers, the definition of competitive products, product requirements for the system (including operating system version, minimum memory requirements,
Hard disk space, processor speed, display resolution resolution, any dependence on third-party (such as printer drivers, components)
Sex. The program manager is responsible for coordination and "writing" instructions
Program Manager (Program Manager) should consider the following questions:
l What is the main point of this feature?
l How do users use this feature?
l This feature makes sense?
l Is there a similar feature in the product or other products in Microsoft?
l 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.
1, constructive prototype
The constructor is the best way to specifically describe a new product or a new version of the program manager. This is from many ways.
It is possible to make the development test, especially in terms of availability, and help to understand the situation with the user's interaction, it also
Enables product descriptions more compact.
Microsoft's developers usually use VB to construct user interface prototypes, but work for constructing computer screen models.
Paint brush is also a very good tool. The description of the dead plate becomes a file with life, indicating that it should not be too
Detailed to limit the invention creation. 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 corresponding development work, Microsoft is usually concentrated in those who are universal.
In addition to the characteristics of the user interface, you don't have to know what the user reacts to them before completing the development, that is, these special
Sex is unlikely. Then face other characteristics. But after the product is developed to a certain process, for example, after 40%, the program
The manager must strictly control the modification of characteristics (mainly refer to increasing new features), otherwise it will not only cause development delays, and will
Compressed 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 programs that support important or frequent user behavior are evaluated. The advantage of doing this is that the characteristics are more
Sex: Discuss how to make better arrangements for customers, whether a given feature is convenient for a more concentrated argument for specific tasks
On the focus, more readability, 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 law are within the internal connection between user behavior, product characteristics, and behavioral and characteristics.
Tie the products are analyzed. Program manager and product planners divide the products that are trying to support into approximately 20 "behavior",
Then they strive to map behaviors (and any sub-behavior) into Microsoft's current characteristics and competitors' characteristics. he
They also map behaviors to different customer image or different market sections.
When describing the new version of the product, behavioral development planning method helps program manager and developer concentrate their energy and create
Strong. Items like Excel, striving for the main behavior added in each new version without more than four. Most of the most characteristics
Protected into these behaviors. This approach allows the project to grade the value of the user in terms of characteristics. By grading,
The order manager and developers act, so that their features support as much behavior as possible. This kind of benign competition is beneficial for users.
It is also beneficial to improve productivity.
2, prepare information 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 city
Marketing staff don't think about and eliminate their favorite features, and then surround them from the draft description. They really do
What lists are listed in what customers do, and then focused on the characteristics that support those behavior.
3. Take a comprehensive consideration of products in behavior
Since behavioral development planning is an eye from the view of the entire product, it helps to work on different functions.
Members understand what products do, and how other products may support those need or do not require other application
The behavior of the product.
4. Do marketing research to support behavioral development planning law
In order to support the behavioral development plan, the product manager from the marketing group and the procedural manager and developers have launched some joints.
The study, such as guiding the research work on users. However, it is generally the product manager to do most of the research and make it more
Clearly affect the evolution of Microsoft products.
Principle 4: Establish modular and horizontal design structure, and reflect the project structure
Structure characteristics
A key concept in Microsoft product design is the infrastructure of the product, especially short life cycles.
Application software should be more unique with the progress of the project (rather than intricate). When the development group constructs the first version of the product,
They use the graded structure more, so that the product design specifies a first architecture. As time goes by, they
The structure is moving into so that the project can focus on characteristic development. Microsoft is increasingly emphasizing features between different products. Sharing help
The "Look and Feel" of different products is unified; it is also convenient for not only one application soft
The user, reducing the reciprocal writing of the code, narrowing the size of a single application software.
Microsoft uses property group to organize product development, this method makes everyone easy to understand how the group is with the entire product
Associated. The project starts from the provisions summary. The form of summary is a list of contents that have been determined by priority arrangements.
And the relatively independent characteristics of the next version will be developed in order to develop by separate feature groups.
The program manager and the developer divide the project into a characteristic subset, and then assign it to each feature team, allowing them to be 3 to 4 main
Production in the internal project milestones. This product organization and development method make Microsoft to simply add developers and create a
The big group will gradually increase the function of the product.
1. Take the characteristics (with functions) as development units
The characteristics of Microsoft software products are the relatively independent functional units that the user's ultimate visible is, such as building materials, product production.
This is even more like this. System software products, such as NT or 95 features, usually not directly visible to end users. Microsoft and other
The company is sometimes referred to as these non-visible features "functions".
The program manager undertakes a group of characteristics or functions to achieve the process of testing, documentation until the final completion process. he
We must work with the developer, the latter is responsible for estimating progress tables and improving each property. The developer also develops a computer in a network
Save one to several files to save the source code for the feature. The development and improvement of most features as long as a developer,
Some large features have a small group.
2, 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). Product's knot
It is usually not directly visible to end users. Only structural features to be implemented is visible. Product structure is also decided
The cornerstone of long-term structure integrity. Any change in product function should not cause potential product structure.
3, the hierarchy of the product
For products, methods of hierarchical structures can also be analyzed. Usually defined a good hierarchy helps product
Features Flexible increase, delete and improvement. In addition, a good hierarchy contributes to the transplantation of the product on different platforms. (example
For example, Excel defines a five-layer, only the bottom of the most underlying operating system layer is related to the platform, and other layers are passing
It is achieved by the API interface provided by its lower layer, so its transplant is extremely convenient. And through "virtual" in Windows 95
The concept of machine has achieved support for 16-bit, 32-bit, and DOS programs.)
4, small structure document: Source code is the only file
In addition to the API document, Microsoft does not generate the corresponding documentation of its product structure, although Senior developers may write high
Layer structure. For complex features, many developers record and review the structural details specific to them, but this work
It is optional and does not enforce it. In addition to the source code file and feature, numerous groups are depicted for new programmers.
The documentation of a layer of structure (main data structure, how to work, etc.). But these documents are not updated, and managers are not
The project group is required to generate such internal documents. In the relevant documentation documents, do not involve implementation. Developer should know how
Go to achieve, or you can go to learn. The recorded documentation is less because "a developer's work is to write me.
The code you want to sell, instead of spending a high level of design document "," design documents should not be separated from source code. "Split Code
And "keep it simple".
5, the characteristic team and the team leader as "content expert"
The Characteristics Group is generally composed of one leaders and 3 to 8 developers, working in the relevant feature. Team size
It is often dependent on the experience and ability of the team leaders. Property team leaders report to project development leaders and responsible for the entire development of the project
Working; project development leadership has a more global view of the product, so that it is most likely to find problems that are not associated with each other.
Each of the feature group is "experts" in this area, they understand how to use the product, understand the products of competitors,
Solution will go to where will it be. Usually to facilitate communication, improve software organizational structure (software tend to map the organization of constructing it
Structure), should 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 on this Microsoft is
Push the responsibility of progress arrangements and work management to the bottom, namely a single developer and test person. This guarantees each
In addition to part of the group, people also have personal responsibilities. Separate developers set up their own progress table, program
The manager sums a separate schedule, plus buffering time to develop a comprehensive project schedule. Top-level total
It is also fundamental resources such as fixed personnel and time to ensure that projects are concentrated and restrictive and to create 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. Approach
The sequence manager and the developer are traced back from the date of the product, and the date of the mid-project milestone is specified. The center of this "fixed product date" is
Developer. To avoid endless design, recycling cycles due to no fixed end points of the project
Consumption of one year or more.
1. 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 this method of developing progress
The advantage is that it works more from people, because the date is self-defined, not managed; progress is always rich
It has progressive because developers inevitably underestimate their truly time.
2. Progress estimation for meticulous tasks
Microsoft's second progress scheduled method is to make a very detailed consideration for the task to be completed, please develop people on this basis
The member gives them an estimate of "implementation", with this trying to "promote" more realism and avoid excessive underestimation.
Usually Microsoft puts the task to 4 hours (half days) to 3 days. For the arrangement of accurate progress, Microsoft's manager is
In this way: "Any task only takes more than a week, then people must not fully consider it. Any task
It is estimated that only less than half a day can be completed, then he considers it too much. He should use more time to program, less time
Come and consider. "For operating systems similar to WINDOWS NT, progress arrangements are more difficult, generally
The day or half week is a progress estimate of the work unit.
3. Arrange the psychology of developers and team 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
Groups and individuals; this makes both a feeling of supporting work. It is still in the group, in individual, especially the group leadership
A strongly keeping the pressure of other colleagues expected progress, because the manager may be balanced, from backward group or personal hand
Take away from the job. In this way, the pressure between colleagues makes the manager do not need too much effort to implement the process of individual or a single group.
strict control.
4. "Fixed" Production Day (RTM: Release to Manufacture)
In order to restrict the creativity constraint in time limit, Microsoft is now trying to fix it 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 characteristic and concentrated pressure on a project, forced him.
We have to think about which new feature should be added to the product. Although the delivery of the final product may be set by senior executives
Dedicated, but developers and groups still set their own progress tables.
Microsoft generally estimate a RTM date based on the pre-scheduled process, and then reaches the respective
Milestone Date, such as RC, Beta, Tree Lock, UI Freeze, Feature Complete, CC (Code Complete)
Wait a corresponding date of each Milestone. Develop a very detailed product research and development time schedule, the product development group
Members work with this schedule as a target unified coordination. Microsoft is very emphasizing Teamwork Spirits in software development.
This concept runs through various phases developed in Microsoft products. This is also a very important reason for Microsoft to succeed.
Summary: Synchronization - Stable Development Law
l planning stage
Define the imagination description, description and progress
Imagination describes the product and program management department to use a wide range of customer opinions to determine and optimize the product's characteristics.
Description Files Based on imaging description, program management and development group define features, structural issues, and departments
Correlation between separation.
Develop progress tables and constructor groups to explain the documentation, program management department coordination schedule, arrange special groups,
Each team includes approximately 1 program manager, 3 - 8 developers, 3 - 8 testers (in 1: 1 ratio with the developer parallel.)
l development phase
Use 3 - 4 subpredals, each generating a milestone product sent to complete the development of features. Program
Coordinated 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.
The characteristics of the last 1/3 of the subproject 3: the most unimportant feature.
l Stable stage
Comprehensive internal and external testing, final product stabilization and delivery. Program Manager coordinates OEM and ISV, supervising from customers
Get information feedback. The developer conducts the final debugging and code stabilization. The tester discovered and cleared the error.
Internal testing company is a detailed test of the entire product.
External test company's external "ß" test point, like OEM, ISV, and end users, do a detailed test of the entire product.
Delivery is prepared for mass production preparation to release the last "Golden Disk" and documentation, before making it,
Various strict inspections: such as political sensitivity terms, virus checks, document correlation inspections.