"Editor's note" Software development and procurement staff often have some questions about existing software development methodologies, techniques, and tools. In response to these questions, Kevin Fall has compiled five software topics: Agile at scale,safety-critical systems,monitoring software-intensive System Acquisition Programs,managing intellectual property in the acquisition of Software-intensive Systems, and managing operational Resilien Ce. The first of the series focuses on the Agile at scale issue, which is compiled by OneAPM engineers:
Here are a series of articles that describe the best practices related to these 5 topics. The first set of articles is divided into two, which introduces the challenges in scale agile development and summarizes the 10 best practices. This article covers only the first 5 of the 10 best practices, the next one will cover the remaining 5 best practices and 3 recommendations in applying these best practices.
Challenges faced by scale agile development
The concept of agile development has been widely used over the past decade and has enabled software development teams to develop better software. The main reason for this is that the agile development approach can improve the transparency of the project, while the user can anticipate the prototype of the product early and communicate with the development team. However, achieving business goals is far from the simple development of good software. If you want to scale agile, you must first focus on the following aspects:
1. Team Size
Imagine how agile development can be applied to more than 100 people in a development team. What is the problem when this development team needs to collaborate and communicate with other departments on quality inspection, integration, project management, market operations, etc. to ensure the smooth delivery of the product? Agile development methods such as extreme programming are only available for small teams of 7 to 10 people, while large teams need to be divided into small teams that need to work with a few non-developers. There are already people who are working on how to better solve the collaboration problems brought about by the size of the team.
2. System complexity
Typically, large systems include more features and new technologies, communicate and integrate with other systems, and take care of the needs of different user groups. Need to figure out whether there is real-time, reliability and security requirements, and who the stakeholders are. Often complex systems require rigorous validation, which complicates rapid iterations in agile development.
3. Project planning
How long does it have to be used for system development? How long is the system maintenance period? Large systems typically require more development and maintenance time than the agile development system, and need to focus on possible changes and redesign, and may be required to deliver different versions. Figuring out how this can help determine what's important for the project to measure the success of the project.
Best practices for scale agile development
The circumstances of each enterprise are different, so how to apply these best practices needs to determine whether it will benefit the enterprise. Pay particular attention to the business objectives, existing processes and corporate culture of the enterprise, because all practices have their limitations and there is no such thing as the so-called balm. Choosing these best practices would be best for them to work with each other and make certain adjustments based on the actual situation of the enterprise.
1.[Team Collaboration][1] is the first priority
Scrum is currently the most widely used Agile project management approach. Simply put, the scrum development environment requires only one scrum team. This team needs the knowledge and capabilities required to demonstrate requirements, system architecture, design, coding, and testing.
However, once the size and complexity of the project increase, a single Scrum team may not be able to meet the development requirements, it is necessary to according to the system features and services to separate small teams. For a project, if you have decided to use a project management approach like scrum, you can manage each scrum small team with a scrum approach. This requires an additional collaboration team, which has two responsibilities: one is to identify the information exchanged between the teams in order to solve the dependencies and communication problems between the teams. The second is to analyze and solve the problem of collaboration between the team and the potential risk. Members of a collaboration team typically come from various development teams, so members of the collaboration team can understand all of the functionality of the entire project, and there may also be user interface design, system architecture, testing, and deployment professionals involved. This collaborative team can help communicate and share goals, issues, and risks across development teams. But be careful when the team of collaborators has more of them.
2. Using [architectural runway][2] to manage technical complexity
Stringent security requirements and mission-critical requirements increase technical complexity and risk. This task is technically complex if a task cannot be completed in one iteration and cannot be broken down into smaller tasks to be handed over to multiple teams in parallel. To address the technical complexities, administrators must complete the most important software architecture features early in the project, and sometimes even raise the issue to the height of the enterprise, such as infrastructure platforms or product lines.
This is called architectural Runway in agile development. Its purpose is to provide a relatively stable foundation for future iterations. Having a relatively stable foundation is important for multiple teams. The architecture of software can determine the importance of system features in order to prioritize their development. By defining architectural Runway and extending it during system development, the development team can prioritize the development of features in the runway to meet user needs.
Architectural Runway can also help the development team identify technical risks early in the project and avoid the problem of technical complexity. In addition, system quality requirements such as security, availability, and performance are the sooner you determine the better, or you may have to make big changes or cause project delays. Developing system functionality increases the certainty of the required delivery function if the required infrastructure is already in place.
3. Based on the combination of [feature development and system decomposition][3]
Agile teams typically do this by implementing a feature in all components of the system. This allows developers to focus on features that are meaningful to the user without having to wait for other people's development to complete. This approach is called "vertical alignment", because each component of the system that implements this feature is developed independently in each team. But the decomposition of the system can also be horizontal, which is mainly based on the architecture of the system. This approach is mainly used by some General Service providers because they can be reused more.
Whether you are developing for an attribute or horizontally decomposing the system, the goal is to schedule the development team and decouple it to maintain progress based on the decomposition of the system. When it comes to the need to maintain a balance between agile stability and progress, the strategy is to develop a common service platform, and then quickly perform feature-based development in a plug-in way.
4. Use the [quality assessment][4] to determine the architectural requirements
The focus of scrum is to address the characteristics of the user, which is really important to the success of the system. But when attention is placed entirely on functional characteristics, the architectural requirements are often overlooked.
The advice here is to collect, document, communicate and confirm potential system quality requirements when developing architectural Runway. This is especially important for large systems where maintenance cycles are long. Quality requirements should be evaluated early in the project to determine which architectural requirements should be met as soon as possible or how to deliver the user's needs in a short cut.
For example, a system that needs to be used by 1 million of users. This means that 1 million of users will be satisfied at once. Or is it just a test product? For example, the system generally uses some framework, understanding the system quality requirements can help developers determine which architectural requirements have been solved by the framework. The requirements of the architecture must be given the highest priority when there is a need to address changes in security and deployment environments.
5. Use the [test-driven][5] concept throughout the life cycle
This article should be summed up in a word is to write a good test before development. If the development process only considers the normal situation, then the late will be over-reliance on testing to find out what is missing in development. In order to avoid this situation, it is necessary to consider exceptions during the development process. If you can write tests first, using test-driven development or acceptance test-driven development methods will make the other practices we recommend more productive.
Original link: [Recommended practices for achieving Agile at Scale][6]
[1] http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=87764
[2] http://www.scaledagileframework.com/architectural-runway/
[3] http://resources.sei.cmu.edu/library/asset-view.cfm?assetID=87764
[4] Http://www.sei.cmu.edu/architecture/start/reasoning.cfm
[5] Http://www.agiledata.org/essays/tdd.html
[6] Http://insights.sei.cmu.edu/sei_blog/2015/08/10-recommended-practices-for-achieving-agile-at-scale.html
OneAPM is an emerging leader in application performance management, helping operations personnel with fault early warning and positioning, reducing the workload of business system maintenance, and providing traceable performance data to quantify the business value of the operations department. Want to say goodbye to overtime to stay up, welcome free registration Use!
10 best Practices for scale agile development (UP)