Agile thinking: Methodology in Architecture Design (1)-architecture design from the perspective of methodology

Source: Internet
Author: User

Introduction:What does methodology mean for software development? How do we look at the methodology in software development? Can methodology become a lifeline for software development? After reading this article, these questions will be answered.

In Article 1ArticleTo understand the meaning of some words in the title.

    • What is methodology?
    • What is agility?
    • Why is architecture discussed?

Methodology

The methodology is methodology, which is interpreted as "a series of related methods or
Techniques "we can define it as a complete set of methods, processes, rules, practices, and technologies for software development (for software development. I agree with Alistair about the issues in methodology.
Cockburn's statement, "methodology stems from fear. "Due to fear of Project expiration, out-of-control costs, and other factors, the project managers developed some methods and techniques for controlling and monitoring projects based on their previous experience. This is the cause of the methodology.

In agile software development, the author mentioned the thirteen elements of methodology, which can basically cover all aspects of methodology:

    • Role)
    • Personality)
    • Skill (skills)
    • Team (teams)
    • Techniques)
    • Activity (activities)
    • Process)
    • Work Products)
    • Milestone (milestones)
    • Standard)
    • Quality)
    • Tools)
    • Team Value)

The relationship between them can be expressed in a diagram:

Figure 1. 13 elements of methodology
 

Many methodologies involve part of the thirteen elements listed above. Therefore, we can regard methodology as an abstract, infinite superset, and methodology in reality refers to a superset.
A finite subset. The relationship between them is like the relationship between rational numbers and integers 1 to 100. Both XP and uidesign experience belong to a subset of methodology.
There is a size difference between subsets. We should also see that it is meaningless to discuss a complete methodology. Therefore, this methodology does not exist, just as if the view did not cite all rational numbers. Because
Therefore, our statement about a general methodology is meaningless. Good methodologies, such as XP and the crystal series, all have a suitable scope, because they know a little and they are not everything.
Methodology.

In reality, we are constantly engaged in methodology. For example, to control the project progress, the Project Manager asks all developers to submit a detailed progress report every week.
Skills. If we organize these skill systems in the development process, we can become a methodology. You may say that the generation of that methodology is too easy. No, the methodology is not too much.
There is no need for a methodology without practical value. Therefore, a successful methodology is a methodology that can be accepted by multiple projects and successfully implement the delivery of software.

My colleagues and I have done some experiments in practice, hoping to apply some good methodologies to the development team. The results of the experiment are helpless, and the effects of methodology implementation are not ideal. At first we thought it was a method.
Later, we found that things were not that simple. During the experiment, developers agreed with the advantages of the methodology, but they did not stick to it during the implementation process. In
Agile
In software development, I found that the author encountered the same problems as ours.

After interviewing a large number of project teams, Alistair Cockburn wrote Agile Software
The book development. Prior to the interview, he decided that he would find that highly precise process control is the key to success. As a result, he found that this was not the case. He attributed his findings to seven laws. My findings are also included in these seven laws. In summary, there are only two points: communication and feedback.

As long as good communication and instant feedback are ensured, the development team can succeed even if it does not adopt an advanced methodology. On the contrary, those "high-quality" teams often lack these two factors.
(We mean that the user refuses to use the final software ). Face-to-face (FACE) is the most effective communication method with the lowest cost.
To
Face) communication, and as the project team grows, or other factors (such as geographic location isolation), face-to-face communication becomes increasingly difficult to achieve, this leads to an increasing cost of communication,
The quality is also declining. However, this does not mean that non-face-to-face communication is indispensable. What is important is that we need to know that the cost and quality of different communication methods are different. The XP method emphasizes face-to-face communication.
Users, standing meetings, peer programming, and other methods to ensure effective communication. In my experience, a development team actually needs a combination of multiple communication methods. Full face-to-face communication is difficult for some teams
Now, the key to the problem lies in how you apply the communication method to achieve the desired effect. A team was particularly eye-catching in the l'oreal Entrepreneurship Program competition, which ended recently.
By using the Internet and telephone. Although they did not use face-to-face communication, they still achieved their stated goals. The same is true for software development. Face-to-face communication
But other communication methods are also necessary.

Looking at the feedback, whether it is controlling the progress or ensuring customer satisfaction, these activities need to manage costs. Management Costs in software development are accompanied by intermediate deliverables.
(Intermediate
Delivery ). For example, our requirement specification, analysis documents, design documents, and test plans are all intermediate deliverables. The increase in intermediate outputs will lead to a reduction in efficiency because developers
The employee's time is spent on completing intermediate deliverables, and the time spent on new software features is reduced. The main purpose of intermediate deliverables is two. One is to ensure that the software is as desired by the customer, for example, the requirement specification.
The other is for input into the work of other Members in the team, such as development plans and test plans. Therefore, we can also discuss countermeasures based on these two points. One is to adopt the idea of iteration to improve software development.
Frequency of deployment to ensure that the customer's needs are met. The other is to narrow down the communication scope of the team and ensure that Members can get new ideas from others, instead of writing standard internal documents (internal documents refer
Documents required only for communication between internal developers ).

Therefore, the success of a software project is not directly related to the development methodology you adopt.

Weight

Based on the software development method that has a large number of artifact (the official translation of RUP as the workpiece, which means the intermediate product in the software development process, such as requirement specification and design model) and complex control
Known as heavy (heavy
Weight) method. We call the method with fewer artifact as light
Weight) method. In the traditional concept, we believe that heavy methods are much safer than light methods. This is because in medium and large projects, project managers tend to stay away from
He cannot effectively understand the progress, quality, cost, and other factors of the current project. To overcome the fear of the unknown, the project manager has developed a large number of intermediate management methods to control the entire project.
Developers are required to submit various reports that indicate the current status of the project frequently.

In the book of planning XP, there is an incisive discussion of the lightweight and heavy-duty methodology, which points heavy-duty methodology to a defensive attitude (defensive
Posture), and the light methodology comes down to a desire for success (Plan
Win) mentality. If you adopt a defensive posture, your work will focus on preventing and tracking errors. A large number of workflow is developed to ensure that the project does not make mistakes, rather than project success. While
This method is not bad either, but the premise is that if the entire team can meet the two conditions mentioned above, the project will certainly succeed, but one drawback of the heavy methodology lies in, everyone is preventing errors,
They are all afraid of mistakes, so the relationship between people is very subtle, and it is difficult to achieve full communication. In the end, even the evaluation of people becomes the basis for evaluation, rather than achievement.
When we were doing the experiment, a project manager joked, "the methodology stems from the fear of the project manager. That's right. But the worst thing is that only the project manager is alone in the whole team.
No fear. "This sentence reminds us that if a team is striving for success, the team's mentality is different from that of other teams, especially the wrong attitude.
Status. There is no need to spend a lot of effort to prevent mistakes at all. If a mistake is made, you can immediately correct it. This is actually a desire for success.

Methodology Art

Management is called the integration of science and art, while the artistic part of management is largely reflected in human management. I said that methodology is also a fusion of science and art. This is well-founded.
Law and management are close relatives. One branch of management is project management. In software organization, project management is very important, methodology is a specific project management for software development (or
A subset of project management ).

One of the biggest problems with heavy-duty methods is that he does not know or ignore the art layer, ignoring the human factors, and regards people as a measurement unit, a resource, and a linear element. While the human elements are being developed in Software
Development is very important. Software development is actually a process of transferring knowledge and intelligence. The final product is a knowledge product, and its cost depends on the Knowledge Value of developers. Therefore, people are the most important reason
. It is difficult to measure the human factor. Everyone has different personalities, ideas, experiences, and experiences. The combination of so many complex factors leads to unpredictability. Therefore, we emphasize human skills
.

The simplest example is that in heavy-duty methods, our basic assumption is that we do not trust people. The project manager must control the project. However, distrust can lead to many problems, such as low morale and inability to keep up with changes,
Low innovation capability and high skip rate. People all want to be respected, and technicians pay more attention to this point. Many companies also say how people-oriented they are, but they use people without trust.
Different development methods are provided. We say that the starting point of agile methods is mutual trust. It is very difficult to achieve this, but once it is done, this team is very competitive. Therefore, this produces
Question: Before we fully trust each other, do we trust others? This is the artistic question I mentioned. When do you want to trust people? When do you not trust people? These are all rights required.
The issue of balance is also a matter of your artistic performance.

Agility

Agility represents efficiency and flexibility. We call lightweight and effective methods agile methods. In heavy methods, we waste too much effort on unnecessary and repetitive intermediate steps, while agility avoids
This waste is avoided. Our article will focus on the Agile Methodology. The predecessor of agile is lightweight. An agile alliance has been established, and they have formulated the agile declaration:

    • Individuals and interactions over processes and tools.
    • Working software over comprehensive documentation.
    • Customer collaboration over contract negotiation.
    • Responding to change over following a plan.

My understanding of agility includes the following aspects:

    • Low management costs and high-quality output. There are two extremes in software development: one is that there is no management cost, and all the work is for the production of software, but this method often leads to software development
      Chaos in the process, low product quality, and low team morale. The other is the addition, review, change management, and defect tracking of a large number of management activities. Although the addition of management activities can improve the development process to a certain extent
      This increases the cost. Worse, it can easily lead to low team efficiency and lower innovation capabilities. Therefore, the agile method view finds a balance point, and uses low-cost management activities to bring the greatest Production
      Out, that is, the high quality of the software.

    • Respect human nature. Agile Methods respect human nature and emphasize efficiency. Software development can be said to be a mental investment. If the developer's voluntary investment cannot be ensured, the product will be compromised. Facts have repeatedly proved that the efficiency of a developer who is willing to invest is more than three times that of a developer who is unwilling to invest, 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 instant feedback is a prerequisite for embracing changes.

    • The customer is God. Without a customer, the importance of the customer can be described in one sentence, that is, building the right system at
      Right cost ).

In fact, agility is equally important. The key is whether it can be effective and flexible. Therefore, the idea advocated by Agile Methodology is "barely enough
Sufficient )". However, this "enough" is not so easy to judge. An eight-person team adopts the XP method. With the skillful use of the method, the team's ability is constantly improved, and
The more complex the problem is, the more complicated the team may be able to handle the problem that 20 people using heavy methods can handle. However, if the number of people in the team suddenly increases to 12, the team will certainly have problems.
The performance may not be as good as that of the team of 20 people. When the number of people increases, the original method must be adjusted as appropriate. For example, you can add some heavy method skills in the original agile method. We cannot
A team of 6 people and a team of 20 people are required to use the same method. The former may adopt a lighter agile method, and the latter may adopt a heavier agile method, the key issue is that both teams
Focus on the key factors of communication, feedback, and frequent delivery of software, that is, effective and flexible.

Architecture Design

Architecture (also known as architecture) is an important part of software design. In the process of software development, as long as the requirements and architecture are determined, the software
It can be finalized. This is like determining the skeleton. This person's shape will not change much. So I chose architecture design to discuss Agile Software Development (I have already written about the requirements ). We discussed earlier
The concept of over-set and subset, so the architecture design we will discuss next is also a very small subset. If methodology has not gone through the tests of too many projects, it cannot be called a successful methodology, and I do not think that I
Architectural Design is a good methodology, but the idea still needs to be thrown. His main purpose is to spread an idea. Therefore, I have adopted the Pattern Language (Plop) as the form of writing architecture design.
Because mode is a good way of organizing ideas.

Therefore, in our next journey, we will focus on the three elements of architecture, methodology, and agility. This article does not discuss how to encode and implement the software architecture.
It is regarded as a guide to architectural design. In fact, many ideas in this article come from the methodology. Therefore, many architectural design ideas mentioned here are also applicable to other work. If you can understand this, what I learned from this article
There will be more.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.