Agile development from concept principles to business models

Source: Internet
Author: User

Masters should not only sum up some theories about agile methods, but also have practical methods to operate and cooperate with the corresponding business models. Otherwise, they will always say that agile declarations are principles, practices, or experiences, there is no theoretical or business model support, and there is nothing to talk about when it comes to charging problems. Who pays for agile communication and who pays for agile changes, how to trust an agile team through a third party is a business model.

Agile Methods sometimes need to put all kinds of new things in Agile terms, think agile Paul Vientiane, some people ask a question, the answer is amazing, the clouds are misty, people feel that the loopholes are not good.

Or process control is not agile, and the results have to be formal as the main activity of agile development in practice.

Or in a project, agility means that another project is not agile. Some agile projects are actually not agile, some are quick success and endless troubles, or they have to pass without planning.

These negative things can be doubted. Whether agile needs to improve work efficiency or reduce work efficiency.

 

From thisArticleAt first, I tried to describe and summarize agile from the perspective of theory and business model, so as to summarize agile from concepts, origins and existing practices, at least the differences between agile development methods and traditional software engineering methods and various concepts are revealed, and agile definition, applicability, type, scale, and business model are revealed, constraints are strictly defined, rather than perceptual practical experience. Although I know that my definition is not necessarily very accurate or wrong, this attempt is always better than a confused, emotional agile fan to guide the practice.

The so-called basic theoretical elements were originally intended to form a complete set of theoretical services. However, during the writing process, I found that although I summarized some cases with the current materials, but it still cannot be called a theory. So we should change it to a basic element for the time being. It can be used as a real theory that needs to solve problems and concerns and gradually develop.

 

Agile values

First of all, from a conceptual perspective, how agile.

The value of agility lies in the common growth. Therefore, the 1st and 3rd articles in the agile Declaration indicate that individuals and interactions are more important and customer participation is more important. It is to make everyone in the work equal and accomplish a goal together. From these two points, agile declarations are philosophical, not methodological.

The value of agility lies in the philosophy that any method can be called agility. Therefore, in the agile declaration, 2nd write-and-run software is more important, that is, achieving the goal is very important, and 4th write-response changes are more important. In fact, 4th are a subsidiary method of 2nd, since achieving the goal is the most important, of course, if the goal changes, we will naturally adapt to this change.

Communication is also an important factor in agility. You can get the right goals through communication. Communication is not one-way. Is demand research counted as communication? Agile communication should be two-way, that is, everyone may be affected, users may affect developers, and developers may also affect users. This is equal.

Then let's look at the unimportant aspects, among the four weakened items: 1. Process and tools; 2. Documents; 3. contract negotiation; 4. Follow the plan; in Agile development, these content is not unnecessary, but determined under equal communication. It is also a method that everyone thinks is comfortable to adapt to, and the logo, so it doesn't matter whether up or XP, scrum or iteration. It can be used or not used as long as members of this project are recognized by users.

Agility is a principle. Under this principle, there will be a variety of practical methods. These methods may be a part of an agile idea and are not comprehensive agile branches.

To become a true development theory, agility will embrace everything, carry everything, include good development methods and processes, and make them more efficient, rather than rejecting or opposing them.

 

Origin of agility

Whether it is agile or other ideas, a software system is the first goal, and can then be optimized and improved, just like human survival, survival-food and clothing-well-off society. If our first goal is "well-off", we will not eat anything like pickles, and we will not develop into a well-off society. The same is true for software. A strong sense of implementation allows developers to implement the first version within a short period of time. This is a common goal.

The difference between agility and traditional software engineering lies in whether the implementation of software requirements requires an overall design or an overall design.

The good and bad design is a level problem of designers and architects, but the design is not designed and is a development concept.

In software engineering, after each iteration goal is defined, the goal needs to be decomposed before a module can be implemented in a module. In fact, the process of Goal clarity and decomposition is the Framework process.

The architecture can be sub-system architecture, large architecture, and internal project architecture. architectures of different scales focus on different granularities. For example, the system architecture focuses on the relationship between systems, while the internal architecture of the Project is closerCodeStructure and design mode.

Because the architecture is designed in advance, there will be much less confusion and ambiguity in the development process, but some designs may be excessive or redundant, each implementation is completed through a framework with little coupling. Members do not have a deep understanding of the global architecture.

Because the architecture needs to understand all aspects of software requirements and design the architecture in the software development process, but it is not implemented, some people in the project do not have to participate, users cannot see what they can understand in this process, reducing their engagement.

If the three major steps of design, implementation, and deployment are all 30 days, you will be able to see the running software after 30 days. If you see the software after 60 days, users can only be trained.

The agile method also says that the target is completed through small iterative scrum, but the agile iteration is smaller, more blind, and closer to the surface, so the internal structure is often chaotic, as a result, it is necessary to carry out design activities through restructuring. This special architecture has the advantage of completely avoiding over-design, all process team members are more aware of the process generated by the framework, with no redundant code.

 

If the software is developed in an agile manner, implemented within 30 days or longer, reconstructed within 30 days, and deployed within 30 days, you may see the software running within the first few days, but the functions and interfaces are limited, the user can further modify and verify his idea until the software is successful, and the growing user of the software can see it. When the developer reconstructs the system, the user has been relieved to go to bed.

 

Concept scope of agile development

"Agility" is just an adjective describing rapid actions and flexible responses. Before developing this term, it serves as a modifier and constraint to differentiate other software development methods. Therefore, agile development focuses on the principles and methods of software development activities, and does not even include the specific process of software architecture design and implementation. What's more, it is not how we use software to improve work efficiency, how to refactor and so on, even if there is such content, is only a small part, does not affect the entire method. It's not like "agility" in "agile skills", or he quickly escaped the enemy's bullets and began to fight back.

The Research on Software Development Methods aims to improve the quality and development capability of software engineering, and emphasizes the balance and unification of the three elements of software development and management, specifically, resources and time, and tries to coordinate various aspects of the software engineering throughout the lifecycle.

 

Agile Constraints

After summarizing some agile methods, we began to determine the appropriate scope of agility, as well as business models and management methods.

 

Traditional software engineering, with the requirement specification as the final acceptance criteria, needs to be delivered to the user by submitting things at a certain time and under certain investment conditions. These are all written into the contract, and can even be used as evidence to stand the judge's trial. However, in the agile declaration, customer cooperation is better than contract. That is to say, we cannot complete agile development in contracted projects. We must strictly manage them with the goal, progress Management is used to track the process and promptly follow up and resolve problems and risks, so as to fulfill the objectives required by the contract within the specified time.

Since the contract stipulates the goal, this goal cannot be changed at will. Once the user finds that there is a problem with the demand, it is necessary to enter into the complicated demand change process, or even re-sign the contract. Since demand specification changes are so difficult, we must be very careful in the preliminary work, so more projects will not be able to begin due to lack of definition of requirements.

Agility is quick because his development can quickly keep up with the definition of the requirement. Even if the requirement is not completed, even if it is just a key point or not comprehensive, he can start agile development. As a result, the development may not be what the user wants, but fails, or the development results may stimulate the user's needs. The user has a basis to improve their needs, it proves that his needs are more complete and comprehensive. At this time, agile development will also be followed up in a timely manner to achieve a perfect system.

In this sense, agile is not only the development team, but also the user. If the user has not tried agility, the agile team can teach the user through preaching. if the user has tried agility, the agile team can make the user's agility more effective.

The business model here, the traditional software engineering is generally the prepayment method, there is a prepayment before development, during the development process, the user needs to pay a part in a milestone, after acceptance to pay a part, after the after-sales guarantee time, pay another part. Because every start paymentProgramIt is an unconventional action, so it is a very troublesome task to ask for payment.

The business model of agile development is generally quoted hourly. This billing method, instead of billing based on the results, ensures that the development team can respond to changes in demand at any time without binding on the contract. The uncertainty of user requirements is solved by paying more time-based payment. You can change the value at any time if you have money.

 

Is the hourly quotation or fixed price of an Agile Project?

Therefore, in Agile development projects, hourly quotations will become the mainstream pricing model, and fixed prices will become the source of agile failure.

The benefit of hourly pricing is that the payment cycle is fixed. If users and development teams are dissatisfied with the payment cycle in a timely manner, they can all stop in this period. Even if there is a loss, it will not be too great.

As a fixed-price project, the evaluation of a fixed price is based on the development goal. However, the provision of user requirements is often not a real requirement specification, but a business requirement, someone needs to evaluate the project development cost based on business needs to calculate the quotation. This requirement analysis and evaluation requires a certain amount of time and experience, and the accuracy of the evaluation is also very different. Although it can be buffered by a factor, the quotation is often low, the low price is often recognized by users, which brings risks to the start of the project. System Requirement analysis also requires a lot of work. This user generally does not pay, so the evaluation work is not of high quality when saving manpower. Once the project goal cannot be completed within the specified time, And the upfront payment is consumed, the project may fail.

Can I use agile development at a fixed price? Therefore, constraints need to be imposed in traditional contracts. The deliverables are not fixed targets but results within a period of time. In this way, you can use fixed quotations and pay for each cycle, stop at the specified time.

Another option is to increase the buffer time at a fixed price, which can be increased by two times for quotation. Even if the price exceeds the estimated value, the buffer time can be completed later.

 

Can agility determine the development deadline?

 

If you can determine the development deadline, can agile projects be priced at a fixed price?

 

Can agility be developed with fixed requirements?

 

Agility and software engineering

Relationship between agility and various software engineering methods

Can Agile processes pass CMM/ISO certification?

CMM is the maturity model of software capabilities, rather than the need to use up or waterfall development or iterative development. From the CMM Level description, as long as a development team sums up some development methods, and fixed to a certain process, you can use a CMM Level. For example, the requirements of cms2 are manageable. Simply put, As long as someone manages the development process according to certain specifications, it can pass. While cm3, it is to define the elements included in the development process for identification and effective management to reduce confusion.

The essence of CMM is also relatively simple. Based on the experience of the development team, he summarized the experience into multiple steps or key points and fixed these points in a process management process, in the hope that the next project will continue to succeed as the previous successful project.

The implementation of waterfall development, iterative development, and agile development in CMM are all tasks of the development team. You can have documents or no documents, and you can have daily standing meeting, or not, as long as your process can ensure the success of the next project.

Agile development advocates that individuals and interactions are better than processes, but many agile teams still have their own processes, such as standing meeting and work daily reports, they believe that the process can ensure smooth development and facilitate communication. Therefore, agile theories and principles must be implemented in practical activities.

As for certification, it is not the theory of agile development.

Authentication is a business activity in which two business organizations do not know each other. During the first cooperation, one party needs to understand the other party or the other party (Party. There are many ways to understand, and there are many differences between time costs and risks. a trusted third party provides some proof of ability, which is considered a simple and effective method, party A does not need to pay more for this understanding, and it is acceptable for Party B to acquire third-party certification at its own investment costs in order to gain more business opportunities.

Therefore, agile certification is also a third-party certification. As long as Party A recognizes agility, recognizes the Third-Party organizations that issue certificates, and the certification process, it can also give Party B business opportunities.

This third-party organization can be a CMM/ISO organization, or a new certification organization. An organization like CMM/ISO has a certain history and has a high level of trust. If they add some certification categories, naturally, you can quickly get a response.

 

Agile team

Agile team building

Where does the enthusiasm of agile teams come from.

Does the agile team need a project manager?

Do agile teams need architects?

Echelon model of agile teams

How to promote agile team members.

 

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.