Agile Thinking - Methodology in Architecture Design (1)

xiaoxiao2021-03-06  105

First, from the methodology to see the architecture design

What does the methodological understanding mean for software development? How do we view the methodology in software development? Can method theory be a life-saving straw? After reading this article, these doubts will be answered.

In the first article, let's understand the meaning of some words in the title.

· What is the methodology?

· What is agile?

· Why discuss architecture?

Methodology

Method's English is Methodology, the interpretation of the Dictionary is "a series of related methods or techniques" we can define it as a complete set of methods, procedures, rules, practices, and technologies for software development (for software development). Regarding the problems of the methodology, I adopted a word in Alistair Cockburn, "the methodology originated from fear." For the fear of the overtime, cost-out of the project, the project manager has set up from the previous experience. Some methods, skills, monitoring projects. This is the reason for the methodology.

In the Agile Software Development book, the author mentioned the thirteen elements of methodology, and basically confirmed all aspects of the methodology:

· Role (Roles)

· Personality

· Skills

· Teams

· Technology (Techniques)

· Activities

· Process (Process)

· Work Products

Milestones

· Standards

Quality

· Tools (Tools)

· Team Values

· The relationship between them can be represented by a picture:

Figure 1. Thirteen elements of methodology

Maximum methodology involves partial elements in the thirteen elements listed above, so we can think of methodology as an abstract, infinite super-collection, and realistic methodology refers to a limited smuggling Subset. The relationship between them seems to be the same as the correlation between the numbers and 1 to 100. Whether it is XP, or the UI design experience, it is a subset of methodology, but there is a size difference between the two subsets. We should also see that discussing a complete methodology is meaningless, so this method is not existed, it is as if your view is poor, all of them are as ridiculous. Therefore, our statement about a general methodology is meaningless. Good methodology, such as XP, crystal series, all have a suitable range, because they know, they are not a methodology that is omnipotent.

In reality, we are actually constant in contacting methods. For example, in order to control the progress of the project, the project manager requires all developers to submit a detailed progress report weekly, which is a method, a technique. If you organize these tips in the development process, you can become a methodology. You may say that the generation of the methodology is too easy. No, the methodology of this is not much practical, and there is no need to exist at all, the methodology of practical value. Therefore, a successful methodology is to be able to accept multiple items, and can successfully implement the methodology of software delivery.

I did some experiments with my colleagues, I hope to apply some good methods to the development team. The results of the test are very helpless. The effect of methodology is not ideal. At the beginning, we think it is the reason it is the reason it is, and later, we find that things is not so simple. During the test, developers agreed with the advantages of methodology, but in the implementation process, it was fresh. In Agile Software Developments, I found that the author encountered the same problem as us. AliStair Cockburn wrote a book for Agile Software Development after an interview with a large project team. Before interview, he will find highly accurate process control is the key to success. As a result, he found that the fact is not the case, he is attributed to the discovery of 7 laws. And I am in the actual discovery is also included in these seven laws, summarizing only two points: communication and feedback.

As long as you can guarantee good communication and instant feedback, the development team can be successful even if there is no advanced methodology. Instead, those "high quality" teams often fail to fail due to lack of these two factors (we refer to the failure here is the user refused to use the final software). The communication method that is most effective, and the lowest cost is the communication of face to face, and as the project team is bigger, or other influencing factors are added (such as the geographic location), the face-to-face communication is increasing The harder it is, this leads to the cost of communication, and the quality also slows down. But this is not to say that non-facing communication is not, it is important that we need to know that the cost and quality of different communication methods are not the same. The XP method is especially emphasized in the face-to-face communication, and the communication is guaranteed by the on-site customers, standing meetings, pair programming and other means. In my experience, a development team actually requires a combination of multiple communication methods. Complete face-to-face communication is difficult to implement for some teams, then the key to the problem is how you apply communication to achieve your desired effect. In the L'Oreal Entrepreneurship Plan Competition, there is a team that is particularly eye-catching, and they have not met each other, just completed efficient cooperation with Internet and telephones. Although they do not use face-to-face communication methods, they still have reached a established goal. Software development is also the same, and face-to-face communication is very necessary, but other communication methods are also required.

Repropting feedback, whether it is control progress, or guarantees customer satisfaction, these activities require management costs. One of the management costs in software development is accompanied by Intermediate Delivery. For example, our demand statute, analytical documentation, design documentation, test plan, which belong to intermediate output. The increase in intermediate output will result in a problem of decline in efficiency, because developers have spend the work of completion of intermediate output, which is reduced to software. The main purpose of intermediate output is two, one is to ensure that software such as customers are willing, such as demand regions; the other is for inputs for other members in the team, such as development plans, test plans, etc. Therefore, we can also discuss the countermeasures for these two points. One is the use of iterative ideas, improve the frequency of software release, to ensure that customers' needs are indeed satisfied, and the other is to narrow the team's communication, guarantee members From other people, they get new ideas, not the internal documentation of the specification (internal document refers to documents required for communication between internal developers).

Therefore, there is no direct relationship with the success of a software project and the development methodology you use.

weight

We are referred to as a Heavy method, relative, compared, We call the less method of Artifact is a lightweight method. In the traditional concept, we believe that the weight method is much better than lightweight. Because we want to have a weight method, because of the large-scale project, the project manager is often far from the code, he cannot effectively understand the progress, quality, cost of the current project. In order to overcome the unknown fear, the project manager has developed a large number of intermediate management methods, hoping to control the entire project, most typical is to require frequent development of various states that represent the current state of the project. In the Planning XP book, there is a consecutive discussion of lightweight methodology. It is attributed to a defensive posture, and the light-type method is summed up as a mentality of Plan To Win. . If you use a defensive posture, then your work is concentrated on preventing and tracking errors, a large number of workflows, is to ensure that the project does not make mistakes, not the project success. And this method is not good, provided that if the entire team can meet the two conditions mentioned earlier, the project will definitely succeed, but a disadvantage of heavy-duty methodology is that everyone is preventing errors, all In the fear of mistakes, the relationship between people and people is very subtle, and it is difficult to achieve sufficient communication. In the end, even the evaluation of people has also become the basis for avoiding the error as an assessment, not achievement. When we were doing the test, a project manager joked, "The method comes from the fear of the project manager, this is not wrong. But the worst, the entire team only has a person who is fear, if you can do the fear of everyone, There isn't a good fear. "This sentence reminds us that if a team spirit is to succeed, then the mentality of this team is different from other teams, especially for mistakes. At all, there is no need to spend a lot of energy to prevent mistakes. If you make a mistake, it is possible to correctly correct it. This is actually a mentality desire for success.

Methodical art

Manage, known as science and art fuse, and management of artistic parts is largely reflected in human management. I said, methodology, the same integration of science and art. This is a basis. In fact, methodology and management are close relatives. One branch in management is project management, and in software organizations, project management is very important. Methodology is a specific to software development. Project management (or a subset of project management).

One of the largest weights is that he is unclear or ignored by this level, ignoring the factors of people, and makes people as a unit, a resource, a linear element. And the elements of people are very important in software development. Software development is actually a knowledge, intelligence transfer process, and finally formed products are a knowledge product, and its cost depends on the development of the developer, so People are the most important factors. This element is difficult to measure, everyone has different individuals, ideas, experience, experience, so many complicated factors, resulting in unpredictability of people. Therefore, we emphasize the art of workers.

The easiest example is that in a heavy-duty method, our basic assumption is the untrust of people. Project Manager To control the project. But not trust will have a lot of problems, such as morale, and plan to catch up, low innovation ability, and elevated quick-hopping rate. People hope to be respected, the technicians value this more, and many companies also say how people-oriented themselves, but they use the development methods for untrusted people, words and deeds. We said that the starting point of agile methods is mutual trust, which is very difficult to do this, but once it is done, the team is very competitive. Therefore, this has a problem that we don't believe in others before do not have complete mutual trust, this is the artistic problem I mentioned, when do you believe in people? When you don't believe people, these are the problems that need to be weighing, and it is also a problem with your artistic. agile

Agile represents effective and flexible. We call those light, effective methods as agile methods. In a heavy-duty method, we waste too much energy in some unnecessary, repeated intermediate links, and agility avoid this waste. Our article will focus on discussing the idea of ​​agile methodology, and the predecessor of this name is light. At present, there is already an agile alliance, they have developed agile declarations:

· Individuals and Interactions over Processes and Tools.

· Working Software over Comprehensive Documentation.

Customer Collaboration over contract negotiation.

· Responding to change over Following a plan.

And I have included several aspects for agile understanding:

· Lower management costs and high quality output. Software development has two extremes: one is there is no management cost, all work is for the output of software, but this way often leads to chaos, low quality of the software development process, and the low quality of the team. The other is the joining, review, change management, defect tracking of a large number of management activities. Although the joining of management activities can improve the order of development process to a certain extent, the cost is therefore improved, even worse, it is easy to lead to teams. Low efficiency reduces innovation capabilities. Therefore, agile method views look for a balance point, bringing maximum output with low-cost management activities, which is the high quality of software.

· Respect humanity. Agile method respects humanity and emphasizes efficiency. Software development can be said to be a kind of mental investment. If you don't guarantee the voluntary investment in developers, the product must be discouraged. The fact that a developer who is willing to invest is three times more than three times the developer who is willing to invest three times, and the contribution to the organization is more than ten times.

· Communication and feedback are the foundation of everything. We have discussed the importance of communication, and immediate feedback is a prerequisite for hug changes.

· The customer is God. There is no customer, there is no matter, the importance of customers can be described in one sentence, which is to build a suitable software with reasonable cost (Build The Right System At the Right Cost).

Agility is actually a lightweight, and the key is whether it is effective and flexible. Therefore, an idea of ​​advocating agility methodology is "Barely Sufficient". However, this "just enough" is not so easy to judge. A 8-person team adopts XP method. With the skilled use of the method, the team's ability is constantly enhanced, the more complicated the problem that can be handled, maybe they can handle the 20 people who can use the weight of the 20 people can handle the problem . However, if the number of teams suddenly increased to 12 people, this team will definitely have problems, and his performance may not be as good as 20 people. When the number of people has increased, the original method is definitely adjusted, for example, adding some heavy-duty methods to the original agile method. We cannot ask a 6-person team and a 20-person team with the same way, the former may adopt a light and some way, the latter may adopt a weightful agile method, the key issue is that the two teams are Putting key factors that focus on communication, feedback, frequent delivery software, is effective and flexible. Architecture design

Architecture (also known as architectural) is a very important part of software design. During software development, only the software is only fixed after the demand and architecture is determined. This is better than the bones, this person's body shape will not change much. So I chose architecture design to discuss agile software development (I have written it). We discussed the concept of supercharge and subset, so we will look at the architecture design to be discussed is a small subset. Methodology If the inspection that has not experienced multiple projects is the methodology that cannot be called success, I don't think that my architecture design is a good methodology, but it is necessary to stop the brick, and his main purpose is to spread one. Ideas. Therefore, I adopted the pattern language (PLOP) as a form of writing architecture, the main reason is that model is a good way of organizing ideas.

Therefore, in the process of our next, we focus on the three elements of the architecture, methodology, and agile. This article is not to discuss how to encode software architecture, and do not simply think of it as a guide to architecture design. Many of the ideas in the art come from methodology, so many architectural designs are also suitable for other work. If you can understand this, you can see more than the harvest of this article.

转载请注明原文地址:https://www.9cbs.com/read-103885.html

New Post(0)