Let's take a look at what Agile software development is and how it came about.
Agile Software Development is a kind of new software development method which has aroused wide attention since the 1990 's, and is a kind of software development ability to deal with the fast changing demand. Their specific names, concepts, processes, terminology are different, compared to "non-agile", more emphasis on the programmer team and business experts close collaboration, face-to-head communication (think more effective than written documents), frequent delivery of new software releases, compact and self-organizing team, Code writing and team organization methods that can adapt well to changes in demand, but also focus on the human role of software development.
Agile, as the name implies, is light, smart, quick, flexible, dynamic, efficient .... , agile processes can easily adapt to change and quickly make self-adjustment, to ensure the quality of the premise, to achieve documentation, measurement of moderation. Agile development is a human-centered, iterative, progressive development approach.
Agile Modeling,am's values include the four values of XP (Extreme Programming: Extreme Programming): Communication, simplicity, feedback, courage, and, in addition, a fifth value: humility.
Scrum and XP are specific ways to develop agile.
The difference between scrum and XP is that scrum focuses on the process, while XP focuses on practice, but in practice, the two are applied in combination.
Scrum refers to an iterative incremental software development process, often used for agile software development. Although scrum is developed for managing software development projects, it can also be used to run software maintenance teams or as a plan management approach. Collaboration between scrum is called "Scrum of Scrums".
Agile development is made up of several lightweight software development methods. They include: Extreme Programming (XP), Scrum, lean Development (Lean development), Dynamic system development Methodology (DSDM), feature-driven development (Feature Driver Development), crystal development, and more.
The value of agile development is 1. Human-to-human interaction takes precedence over processes and tools 2. Software that works better than demand perfection documentation 3. Customer collaboration is better than contract negotiation 4. It is better to deal with change at any time than to obey the rules. The following is a brief introduction to agile development Methods: (1) Extreme Programming XP
Extreme programming (Extreme Programming, abbreviated XP) was presented by Kentbeck in 1996. XP is a lightweight, agile approach to software development, and it is also a very rigorous and thoughtful approach. XP is a near-spiral development method that breaks down the complex development process into relatively simple small cycles, and through positive communication, feedback, and a range of other methods, developers and customers can be very aware of development progress, changes, problems to be solved and potential difficulties, and adjust the development process in time according to the actual situation.
Compared with the traditional software engineering methods, extreme programming has the following advantages: (1) attach importance to customer participation, (2) Pay attention to teamwork and communication; (3) make reasonable forecasts before making plans; (4) Involve programmers in the management of software functions; (5) Pay attention to quality; (6) Simple design ; (7) High frequency redesign and reconstruction, (8) High frequency and comprehensive testing, (9) incremental development, (10) Continuous process Assessment, and (11) ongoing inspection of past work. But it also has its drawbacks: (1) code-centric, ignoring design, (2) lack of design documentation, limited to small-scale projects, (3) lack of clear structure of inspection steps for completed work, (4) Quality assurance dependent on testing, (5) lack of quality planning, (6) No guidance on data collection and use ; (7) The development process is not detailed, (8) The identification problem brought by the new management method, (9) lack of necessary support during the transition.
(2) Scrum
Scrum is an iterative incremental software development process. Scrum is an agile development framework that is an incremental, iterative development process.
Scrum is a process skeleton that includes a series of practices and predefined roles.
Scrum Framework three roles: Product owner, Scrum Master, team four rituals: Sprint planning meeting, daily stand, Sprint review meeting, Sprint review meeting three items: product Backlog,sprint Ba Cklog, Burndown chart (a graph showing daily progress on sprint length. )
Extreme Programming (XP) and scrum differences for agile methods
One difference: The length of the iteration is different
The iteration length of a sprint for XP is roughly 1-2 weeks, while the iteration length of scrum is typically 2~ 4 weeks.
Difference Two: Whether the requirement is allowed to be modified in the iteration
XP in an iteration, if a user story (which is a requirement) has not yet been implemented, consider replacing it with additional requirements, the principle of which is that the amount of time required to implement is equal. Scrum is not allowed to do this, and once an iteration is completed, no requirement is allowed to be added, and scrum master is strictly not allowed to be disturbed by the development team
Difference three: In the iteration, whether the User story is strictly according to the priority level to implement
XP is a must to adhere to the priority level. But scrum is flexible enough to do this without priority, and the rationale for scrum is that if the solution to a priority problem is delayed by other things and cannot claim the task, then the overall progress is delayed. Another reason is that if the user story ranked by Priority #6和 # #, although the high priority, but if the implementation of the achievement to rely on the # #, you have to prioritize the # #.
Difference four: In the process of software implementation, whether strict engineering methods are used to ensure the progress or quality
Scrum does not prescribe an engineering practice for the entire implementation process of the software. Developers are required to make a conscious commitment, but XP has a strict definition of the entire process approach, requiring the use of TDD, automated testing, pairing programming, simple design, refactoring, etc. to constrain the behavior of the team.
Role:
The "pig" role is the person who is involved in the project and scrum process
The product owner represents the customer's wishes. This ensures that the scrum team is doing the right thing from a business perspective. The product owner writes the user story, discharges the priority, and puts in the product order. The Scrum director (or promoter) Scrum director promotes the scrum process, and his main job is to remove the barriers that affect the team's goal of delivering sprints. The scrum director is not the team leader (because they are self-organizing), but rather is responsible for shielding the outside of the development team interference. The scrum director ensures that the scrum process is used as intended. The scrum director is the performer of the rule. The development team is responsible for delivering the product team. A small team of 5 to 9 people with cross-functional skills (designers, developers, etc.) completes the actual development work.
The chicken role is not part of the actual scrum process, but they must be considered. An important aspect of an agile approach is the time it takes for users and stakeholders to participate in the process. It is important for these people to participate in the review and planning of each sprint and provide feedback.
User software is created for some people! Like "If a tree in the forest Falls, but no one hears it, does it make a sound", "if the software is not used, is it developed?" "Stakeholders (customers, providers) who affect the success of the project, but are only directly involved in the sprint review process. The manager is the person who is setting up the environment for the product development community.
(3) Lean software development
Lean thinking:
1. Respect for the first-line staff (who work on the front lines know the real situation, who knows what is happening now and know the best way to respond to the current situation)
2. Eliminate waste (ask the team to identify "waste" in the software development process and take corrective action to eliminate the actions and processes that generate these wastes.) )
3. Enhanced Learning (testing immediately after the code is complete avoids the accumulation of defects.) Not to make more documents or detailed designs, but to actually try to encode a variety of ideas.
4. Delay the decision as much as possible (delaying decisions as far as practicable until decisions can be made based on facts rather than on uncertain assumptions and projections. )
5. Embedding quality (quality is generated in the process; if the quality of the output is guaranteed at every stage of the development process, the quality of the final product can be achieved at the lowest possible cost; Quality is a part of the process.)
6. Fast delivery (the benefits of fast delivery are numerous, such as enabling customers to get the product value earlier, enabling products to be put to market faster)
7. Overall optimization (local optimization, if not bring the overall improvement, will be worthless; construct a complete product)
On the human side, lean thought emphasizes how to limit the ability of each employee to the point that it should not only be a simple manager but rather a training person. The truth of lean production cannot be understood if management is not focused on the training of employees. At the same time, the other essence of lean production is the management process, lean thinking is not focusing on the results, but emphasizing the process. "Results-only management" management thinking results in the staff to find excuses, to justify the results are very good, the data, reports are very good, but the quality of software project results only in the whole process of effective control to get the fundamental guarantee.
(4) Dynamic system development
Dynamic system development Method (development METHOD,DSDM) is an agile software development approach that provides a framework for "building and maintaining time-constrained systems by using incremental prototyping patterns in a controllable project environment".
DSDM uses iterative software processes, each iteration follows the 80% principle that each increment only completes the work that guarantees a smooth entry to the next increment, and the remaining details can be completed after knowing more about the business requirements or proposing and agreeing to the changes.
The basic principle of dsdm DSDM method is based on 9 principles, and in the implementation process, these 9 are indispensable.
Principle 1: Users must continue to participate
Principle 2: The DSDM team must be granted the right to make decisions
Principle 3: Pay attention to the regular delivery of products
Principle 4: The main basis for receiving deliverables is to meet the business user's purpose
Developers don't have to indulge in the perfect solution, delaying project time. The deliverables that maximize business benefits are the most important within a limited time.
Principle 5: Iterative and incremental development is essential to getting the right business solution
The iterative development approach allows the business process to evolve incrementally, keeping the system moving in the direction of meeting business needs.
Principle 6: All changes in the development process are reversible
In the iterative and incremental development process, it is very likely that you will encounter the wrong way, when you need to fall back to a known reliable point.
Principle 7: Establish baselines for requirements at a high level
The requirements of business research must be agreed at a high level. The next step is to get detailed requirements in the iterative process.
Principle 8: Testing throughout the development cycle
Once the developer has completed the development of a module, he will conduct unit tests. When modules are integrated into existing systems, testers need to perform integration testing. In addition, regression testing plays a very important role in DSDM.
Principle 9: Cooperation among all project stakeholders is not an indispensable
(5) Feature driven development
The feature-driven development (fdd-feature Driven Development) approach is one of the agile software development processes that emphasizes feature-driven, fast iterations that guarantee rapid development and ensure proper documentation and quality, making it ideal for small and medium-sized teams to develop and manage. Each feature is developed for no more than two weeks, with granular granularity for each use case, a good enforceability, and accurate and timely monitoring of the project's development process. It captures the core problem areas of software development, that is, to construct software in a correct and timely manner. FDD also breaks down the traditional barriers to isolating areas and business experts /analysts from designers and performers. Analysts are freed from abstract work and are directly involved in the construction of the system that developers and users are working on.
FDD process:
FDD is a model-driven (Model-driven), short-term iterative (short-iteration) process. Note that FDD is a development process, and the process always has a starting point and an end point, and the starting point of FDD is the creation of a global model profile (not requiring very precise, approximate appearance), and then a series of "design by feature, builds by feature" with periods of less than two weeks. iteration, gradually enrich the model function content. An FDD development process is shown in the annex 1 diagram.
It consists of 5 activities:
1. Development of a global model (Develop an Overall models)
2. Create a Feature List
This is described in the following format:
-For Features: <action>the<result><by | for | of | To>a (n) <object>
-For feature set: <action><-ing>a (n) <object>
-For main feature set: <object>management
3. According to the feature plan (plan by Feature)
4. Based on feature design (designs by Feature)
5. Build by Feature (build by Feature)
(6) Crystal Development
Crystal Methods (crystalline method family) was presented by Alistair Cockburn in the late 90 in 20. It's a series because he believes that different types of projects require different approaches. Although the Crystal series is not as productive as XP, more people will be able to accept and follow it. The aim is to develop a "mobile" approach that encompasses the core elements of commonality, each of which contains unique roles, process patterns, work products, and practices.
Core features of Crystal Project development:--regular delivery; --The project organizer receives important feedback according to the progress of the team's work; --users have the opportunity to find out if their original needs are what they really want and have the opportunity to feed their observations back into development--the team is able to adjust the development and configuration process and can inspire morale--timing box to determine the final iteration delivery time point
In my opinion, the common denominator of these six approaches is iterative development, incremental delivery, development team and user feedback promotion, product development, continuous integration, and self-management of the development team. In short, this kind of software development ability is what we lack now and is worth to learn
The content is purely personal and is for informational purposes only.
A survey of Agile development methods