Large Systems Flashcards
What are the two main aspects of agile?
The two main aspects of agile are frequent delivery and minimal documentation. We do this in order to focus on creating and refining working software.
What is the aim of agile?
The aim of agile methods is to reduce overheads in the software process, and also to be able to respond quickly to changing requirements without excessive rework. Our customer plays an important part in this
Why don’t customers want to be active participants in agile?
Unfortunately not every customer wants to be an active participant in a software development team. The customer representative may feel that providing the requirements was enough, and might be reluctant to contribute to testing of software and refinement of the requirements and design. Without user testing, and with no changes in requirement, there is no effective evaluation of the working system and no feedback for the agile development cycle.
What are some agile challenges for large projects?
Agile can be a challenge for large projects. This is because:
- The user might not want to be involved
- Documentation might need to be complete upfront for legal reasons
- It might conflict with the established practices.
- A key aspect of Agile is communication and that can be very difficult in large projects: large systems are broken down into teams and they may not be working in the same place
- Agile is more suited to new software development over maintenance. Yet the majority of software costs for large companies is maintenance
- Agile requires a different type of contract but a contract that pays for a developers time rather than functionality is seen as high risk by many legal departments
- It relies on the team knowing and understanding what has to be done
- Maintenance can be challenging for agile as the development team might move on and there is little documentation (DevOps tries to overcome his but it still is a problem for large systems)
- Large companies often have a strict hierarchy which can conflict with the trust and initiative needed for agile
- Long-lifetime systems may require documentation to communicate intentions
In turn scaling agile requires a mix of agile and plan-based development to overcome the issues above.
What are some factors that affect choice of development method?
System: Type, Lifetime, Scale, Regulation Team: Technology, Distribution, Competence Organisation: Contracts, Delivery, Culture
What are the fundamentals of agile?
Flexible planning Frequent system releases Continuous integration Test-driven development Good team communication
What are the characteristics of large software systems?
System of systems Prolonged procurement System configuration Regulatory constraints Diverse stakeholders Brownfield development
What is brownfield systems?
Brownfield systems include and interact with many exiting systems
What is core agile development?
Value driven life-cycle
Self-organising teams
Focus on contruction
What is disciplined agile delivery?
Risk+Value driven lifecycle
Self-organising with appropriate governance and framework
Full delivery life-cycle
What is agility at scale?
Disciplined agile delivery where scaling factors apply: Large team size Geographic distribution Regulatory compliance Domain complexity Organisation distribution Technical complexity Organisational complexity Enterprise discipline
What are the characteristics of large systems?
There are characteristics of large systems that we do see repeated frequently. For example large systems are often composites of interconnected systems with a variety of hardware and software technologies.
Different aspects of the system are likely to be the responsibility of separate teams and each team is likely to progress independently. These teams may even be in different locations, and in some cases located on different continents, and speaking different languages.
Large projects often comprise existing systems, referred to as legacy systems. These may themselves be systems of systems. The complexity of such environments can mean that software development is more concerned with system configuration than writing new code. Such projects probably don’t lend themselves to agile methods where we aim to deliver many iterations of working software.
Another common characteristic of legacy systems is a shortage of staff with appropriate skills to work on the original software. It is difficult to maintain coherent teams who know about systems over long periods. Inevitably people move on to other jobs and projects. Maybe only one person knows how to make significant changes and they are at a different site. Or perhaps nobody knows.
Large systems typically belong to large organisations and this means there are likely to be many stakeholders. Operational systems are almost never owned by development teams. The development team might once have had their own development and test system, but for a decade old, or older, system that is unlikely to still be true. Changes desired due to increase in the scale of business, or new products or markets, are sure to create tension between existing users and those wanting a new system. In the end it’s usually the budget holder that gets the final say.
What are the benefits of user stories?
Benefits of user stories are increased transparency, fosters collaboration, bring direct value that are building blocks of the product, shared understanding and reduces risk overall. But some potential problems are mediocre stories bring a lot of risk and could allow the team to drift.
What are the problems with plan based development?
Plan based development is more likely to result in higher costs and later delivery than agile because the scope is too big and the team can drift a lot. Testing is a huge task for plan-based development and will unearth a lot of problems that will increase costs.
What aspects of plan based development should be included in agile for large systems?
Aspects of a plan based approach that are likely to be included when using agile for large systems is more documentation needed for the larger teams, upfront specification and future maintenance.