Software development process
Here, the reasons why this topic will be mentioned, one is that the domestic software industry pays more than other processes, and the second is to learn about new technologies than the study of basic courses. The purpose of this article is also two, it is the old things, and the teacher said to have a little experience. First, analyze the software development process, emphasize the control and absorption of development costs during software development and development. The absorption is mainly to manage technology for the cost caused by different development techniques; the second is to analyze the popular technology, break the "technical worship". This paper uses simple description as much as possible to avoid visiting in terms in terms. Therefore, I hope that the friends who learn the specific technologies through this article will change the website.
The technique is born with demand, and it is hereained here to explain the problem.
Example 1: A company needs a set of settlement systems and settlement agents. Different regions, levels, signing time, signing departments, agents of agents, have different settlement rules, and rules change as the environment changes. At the same time, this system is provided to all subsidiaries of different regions.
Ok, first analyze it!
The above text describes the basic needs of the settlement system. According to the requirements, we can organize a description of the following relationship.
Service object: a company and its subsidiaries.
Objective: Accurate calculation agent fees.
Basic function: Agency relationship registration, agent cost settlement, settlement rules custom.
Chart 1 Overview Analysis of Gold Ability System - Drawing
Further demand. Assuming the company and the subsidiary have similar five-layer organizational structure, as shown below:
Chart 2 Organizational Relationship Diagram
Agents can sign a four-level agreement with the company, subsidiaries and their departments, and enjoy the settlement rules set in the agreement.
From the above description, we can get the following list:
Service object: the head of the head office agent (General Manager or Deputy General Manager) Department of the department (subsidiary department manager, department supervisor)
Objective: Accurate calculation of agents at all levels.
Basic function: Agency relationship registration, agent cost settlement, settlement rules custom.
Figure 2 Example 2
It's a bit chaotic, it is actually adding a few roles.
Next is an analysis of system functions. "Settlement" is here a core use case, we need to re-analyze this use case, the next table hopes to exhaust all "settlement".
Participant Action System Responding to the head of the head office agent and agent relationship 1, registration order 2, add the default settlement rules to the new agent wash. 3
However, such a description has a problem, other people in the team have seen it later, is there a disaglatable? The solution is to standardize the language (the word saying that everyone can understand), such as give a list, explain the commonly used nouns and verbs. There is also a more popular approach, which also saves the trouble of developing a list of words explained, which is UML.
Look at the cost of cost. 1. Demand for demand staff will have ambiguity if there is no detailed explanation with ordinary text description. At this point, all activities made by developers are futile. 2. If the demand staff adds a lot of text notes in order to avoid ambiguity, it will still cause ambiguity. 3. If the team gives a list of common words to solve the ambiguity problem, they have to invest certain costs to develop, and seconds are not necessarily exhaustive. 4. Use open description language, such as UML, of course, other modeling models are also in which cost is training costs. Regardless of the method, the ambigulence of text language is inevitable, just as much as possible. The team works more requires the cooperation between the players, so unity is a tight thing. Chart 3 Illustration Example of Settlement
About "custom settlement rules" here to say a few words. I still remember the rules that the first time demand should be "changed as the environment"? Customers are not technical experts, they just "feel so", rather than clear guidance. Trouble is here, we analyze the needs of the needs and more to communicate more, understand the intent of our customers. Here, we assume that customers mean that the following points are as follows:
1, system working mode includes: Auto settlement according to the specified time Auto settlement settlement.
2, you can customize specific system works, such as developing automatic settlement time, etc.
3, can customize settlement formula
In this way, we can give a table that describes the case where possible.
Participant Action System Response Corporate Agent Leader Customized Settlement Rule Record Settlement Rule Ordering Eventizer Record Event Rule Gets the Settlement Rule to Event Generator Increase Event Generator Listening Objects Corporation Agents The person in charge of the company's dedicated settlement Mode Record Event Rule (Modify / Delete)
Chart 4 settlement rules
Since other agents leaders are similar to the head of the head of the company, we abstract the role of "the person in charge", and other characters inherit him. As for the "Registration Agent Relationship" that appears in Chart 1 has been used to expand the "settlement" use case, it is not necessary to analyze again.
Chart 5 agent role
OK! It seems to be a bit meant now, I feel very simple at the beginning. Demand analysis is here to pay a paragraph, and then how to meet the needs of demand. Of course, this is not to say that demand analysis is done, and it is necessary to return to this process during the design process.
First, it is still satisfied with the "settlement" use case. Objects involved in "settlement" use should be selected in terms of noun. The following list is to choose this method. The method is rough, but it is delicious.
Object Description agent Agent noun agents responsible person AgentManager Corporation Agency owners AgentManagerInParentCompany Corporation, a subsidiary of department heads AgentManagerInPartOfParentCompany agents responsible person AgentManagerInSubsidiaryCompany subsidiary department heads AgentManagerInPartOfSubsidiaryCompany trigger event generator EventCreater settlement arithmetic operation is performed according to the rules of the event EVENT is generated by the event generator, providing the rule arithmetic rule, formula rule, FormulaProccess agent, FormulaProccess agent, FeEOFServices
The following is a summary model
Chart 6 Summary Model
Here we have to consider several issues. 1, the relationship between the EventCreater class and the AgentManager interface is a pair or one or one? 2, EventCreater and FumuleProccess relationship.
If you are taking as shown on the left, EventCreater has only a few instances throughout the serve routine, and more common is a single static instance (such as a Server part in the C / S architecture). More complex features can be achieved, but the development cost is higher, more consideration. If you take a pair of relationships as shown on the right, then every AgentManager instance must maintain an EventCreater object so that it is relatively simple.
If EventCreater and FormuleProccess are one-on-one relationship, EventCreater should maintain their own FormuleProccess objects, relatively simple.
If they are a pair of relationships, there is more problems to handle, such as synchronous issues, such as correlation issues, in summary.
Ok, come to the idea! We need a trigger to trigger the event, and we need a processor to perform computing tasks. So what is the trigger? According to the requirements of "settlement" work, the trigger requires that "settlement" can be triggered in accordance with the system time. A natural idea is to keep the system time, and the conventional comparison is successful, and "settle" is triggered. A simple and easy ideas! But there is a problem, if the AgentManager and EventCreater are one-on-one relationship, then EventCreater will only work if only AgentManager works, so that it is naturally not effectively completed automatic task; Treatment with the relationship between FormuleProccess. Since we maintain one-on-one relationship between EventCreater and FormuleProccess, and provide two EventCreate, a resident memory, and then complete the automatic task, and the other is maintained by AgentManager. Ok, change a thinking. There is only one kind of eventcreater, accepting the management of servers (or containers). There are many ways to achieve, I only put a way of thinking, it is a throwing brick. We created an EventCreater instance when the service was started, and destroy it when the service was terminated. The words retired, see the graphics below.
Figure 7 Two EventCreaters
Next, define the trigger condition. The trigger condition is determined according to the requirements, and it is only assumed that the DTD is given directly.
Obviously, XML technology is utilized, as for other situations (for example, to record the database) naturally have other definition methods. OK, the trigger will say this!
Leave a break, tired, drink the water!