Software Engineering

What is an ultra-large-scale system:

  • More an ecosystem than system

  • 1000s of stakeholders

  • Multiple user scenarios and requirements

  • Continuous integration

  • A wide variety of infrastructure and process integration

Characteristics of large system development

  • Collections of separate, communicating systems, where separate teams develop each system

  • Development team spread over locations and timezones

  • Include and interact with a number of existing systems

  • Constrained by external rules and regulations limiting the way that they can be developed

  • Long procurement and development time

  • Diverse set of stakeholders

Distributed teams

Create coherence:

  • Acknowledge bit and small cultural differences

  • Strengthen functional and team subcultures

Change how you communicate:

  • Cross team communication mechanisms have to be designed and used. This should involve regular phone and video conferences and frequent electronic meetings

  • Initial and quarterly face to face meetings

  • Stay together for as many iterations as possible

  • Need strong documentation

Agile in large systems

Some attributes significant in applying Agile to large projects are:

  • Retain team sizes

  • Iteration length

  • Synchronised cadence

  • Batch size

  • Preserve PO and User role

Scrum in large systems

Scrum of Scrums:

  • A team member from each scrum regularly attends the scrum of scrums to coordinate work

Large scale scrum:

  • Team focused on the whole product instead of individual parts

  • Only one sprint and backlog

  • One overall product owner

Problems of large system development

  • Project managers may be reluctant to accept the risk of a new development approach

  • Quality procedures and standards that would be incompatible with agile methods

  • Large range of skill levels in large organisations

  • Cultural resistance to using agile

Technical, human and organisational questions

  • Is it important to have a very detailed specification and design before moving to implementation

  • Is an incremental delivery strategy realistic

  • How large is the system being developed

  • What type of system is being developed

  • What is the expected system lifetime

  • What technologies are available to support system development

  • How is the development team organised

  • Are there cultural or organisational issues that may affect the system development

  • How good are the designers and programmers in the development team

  • Is the system subject to external regulation