In recent times, we have been thinking over and over again the needs, the outline design, the detailed design should be to their respective granularity and what their boundaries are.
Depending on the function of the business, some features are designed with high requirements, and some features are very demanding. The former design thinking is very clear, to find any development can be almost complete, typically for example, in high-concurrency architecture design points such as counters, daily additions and deletions, and even complex business processes. The latter, such as the implementation of distributed cache, performance analysis and optimization, multi-threading, database design and SQL code writing, such as Oracle is a heap table, and MySQL is the IOT table,MySQL There is no index hop scan but has an ICP.
On the formulation of plans
In fact, for the less experienced engineers, the difficulty in making a plan is that they don't know exactly what the requirements, the outline design, the detailed design need to be, why they need to be done, and what their boundaries are. After this is clear, we believe that all developers will be happy to specify the plan.
Software Requirements analysis, summary design, detailed design, development although we may not know at the beginning how much time it takes to finish, the leader may also be a head. It is precisely because this does not know how much time to complete, so we need to according to their own experience on the top of the high-level leadership of the head to refine, to draw our head of the conclusion. Most project plans are usually given before the start of the demand analysis, although they may not be reliable, but we still need to give a preliminary conclusion of how much time we need if we need to design this system. For the bottom-level people, may think this plan does not have the significance, own responsibility is to develop, own goal is the more study technology, makes this plan is the pure time, but the work is not equal to the study, sometimes the company goal and the personal goal may be contradictory. But for senior leaders, the significance of the plan is whether it is worth doing and how much it will cost.
Typically, after the requirement analysis is completed, we will be more clearly estimating how long it will take to design, detail, and encode the profile. They may deviate very much, or they may deviate very little. At this point, whether the deviation is very large, very small, as long as we have an objective analysis of the demand, we have reason to believe that, even if it may be exaggerated or misunderstood by the superior, even if it is possible to cancel the project at this time, and may eventually affect our year-end performance (depending on the leadership of the courage), But in fact we have avoided losses for the company, and we deserve to be rewarded. If OK, you are now in the outline design phase.
In fact, the following summary design, detailed design, coding are the same, with the completion of the summary design, we will find out where the technical difficulties, where the need for further refinement, further detailed design will take more time to be more clearly revealed. At the same time, with the completion of detailed design, the code will take much longer to clear up.
In fact, the tragic extension of the vast majority of projects, the cost of the explosion caused the team to dissolve, out of control, huge losses, not because the process is not a problem, not the developers themselves have problems, not even the project manager irresponsible, the team is not harmonious, Instead, the leaders who formed the team formed the team itself or the team's organizational structure, which was doomed to failure. Not a member or project manager has responsibility, old ox, hard work, the project will be successful, the market does not believe in tears, if the distribution of the market according to the principle of non-compliance, then the world's mining, construction workers should be the highest income people. At the end of the day, the eventual failure of the project is usually symptomatic at every stage, but as time progresses, the sign becomes more pronounced, which, of course, requires insight. What deliverables are required at each stage, how many deliverables are not critical, and the quality metrics of deliverables are key. The project is found in the end, usually because of the requirements analysis, summary design, detailed design of the three stages should produce what kind of deliverables do not have clear metrics, which led to a lot of projects although each link took a lot of time, but to the real coding phase, Found that there is a large number of uncertainties and to be deterministic, while a large number of technical decisions are pending, to verify the state, even a large number of business points are in the state of being determined, carefully stand in the perspective of the beholder, it seems that the previous three stages and there is no progress. This is one of the keys.
In addition, some projects, such as the requirements of TPS tens of thousands, fully high-availability, for these systems, whether the project has mastered the key technology personnel or their satisfaction determines the success of the system, that is, according to the above-mentioned different business functions, some features of the design requirements are very high, Some features require a high level of implementation. For a high-end example, the car engine is not a strong project management ability can be studied, the core of the technical personnel are treated to determine its success or failure. Some software projects are the same, not the project Manager management ability, the project will be successful, and its professional ability is also likely to be necessary rather than sufficient conditions.
However, no matter what kind of project, in order to ensure the success, the project plan is a key link, there is no plan to achieve the goal of the path, so it is necessary to develop the project plan and regularly to adjust and improve it.
On the boundaries of requirements, outline design, detailed design, and development
The target output of the requirement should include: terminology and the interpretation of terminology, normal business processes, and the abnormal flow of business, various business statuses. The business element and composition of the object. A variety of participants and participatory processes. Detailed description and composition or decomposition of business functions. The operating environment of the system is limited, including server, client, network.
In the outline design phase, the module-level split, which function points must be clear, fully describe the interface between modules (as well as with external systems) and parameters, data dictionary, error number, tentative call relationship. Abstraction of function, extraction of repetitive function module and attribution assignment.
At this point in the design phase, its output needs to include which external interfaces need to be called, which external interfaces to provide, the parameter list (not just the business, but also the additional elements that are in maintenance or other considerations), the format, the state of successful failure, the value range of the parameters, the data dictionary, the exception flow of all the business, Technically possible exception processes such as network timeouts, rollback are already included, and the real table structure. In theory the output of the design phase is expressed in UML or the current mainstream, equivalent to the ui/ External System ->ls(Business services)->as/logic(microservices / External Services), there is no need to refine to the specific implementation of DAO or the implementation of the cache , the function number, the menu number.
In different life cycles of software systems, the degree of refinement of requirements and design is often different. For example, for the development of new systems, it is usually time to assume that everything starts at 0, at which point it may be written in the requirements, "customer position query", and at this point, the system does not even have a position table, so in the outline design of the plan, Need to reflect the customer position table model design, if the system is only to manage the position, but the business itself is not the responsibility of the system, at this time also need to reflect the external to other subsystems or external systems to increase the position of the interface. And this demand if placed in the system maintenance phase, at this time the model and so on all aspects are already ready and mature, the demand can be said to be more intuitive reflects the design phase of the work.
The architecture phase, while in the design phase of the requirements, should already be in sync with the architecture design, because the outline design phase has in fact involved the call between systems, key interface access parameters, so if the architecture and the design phase of the outline at the same time, it is likely to lead to the design phase of rework, Therefore, the schema scheme must be locked in advance. The architecture design needs to produce the following output:
Business Architecture
Network architecture
Deployment architecture
Development architecture
Develop design specifications and constraints, templates
Development Support tools and related scripts
Non-business basic functions
Technical solutions for critical functions
In the detailed design stage, the outline design document is equivalent to the assembly drawing in the mechanical design, and the detailed design document is equivalent to the part drawing in the mechanical design.
In the detailed design phase, the designer's work object is a module, according to the summary design of the local tasks and external interface(also need to confirm external interface), design and express the module'sThe essentialAlgorithmDescription (such as calling the local cache/Distributed cache, synchronization/asynchronous, parallel/Serial, polling/Be polled), process, state transitions, and more. It should be noted here that if there is a need for structural adjustment (such as decomposition of sub-modules, etc.), it must be returned to the outline design phase, and the adjustment will be reflected in the profile design document, not in-place, not to say hello. The most important part of the detailed design document is the flowchart of the module, the state diagram and the corresponding text description.In theory, the output of the design phaseumlui/ External System ->ls (business services) ->as/logic (microservices / external services, must be refined to daoeclipse to achieve it, as for the copy to word javadoc paste in May be a better choice), this time can be said to the pseudo-code level (the Output field of the query, Table Structure field, ui layer translation or pojo layer translation or dao layer translation). Therefore, to determine whether the detailed design is based on whether the encoding is still some if/else need to be determined, including technical, business. If the coding phase, there are some business needs to be refined or technical decisions need to be judged, can be said that the detailed design is inadequate, or failure.
On the design and development of software system