# Agile Systems Engineering Planning Using Six Thinking Hats

## Presenters

* Phyllis R. Marbach
* Laurie Buss

_Systems Engineering for Software Intensive Projects Using Agile Methods_ presented at INCOSE International 2014

## Introduction

* **Scrum** is an iterative, incremental methodology for project management often seen in agile software developement, a type of software engineering
* Agile Includes:
  * Scrum: Iterative, incremental methodoogy for project management
  * Lean: reduce waste, reduce work in process; have what you need to start, once an item is started, finish it before starting the next item
  * eXtreme Programming: pair programming, continuous integration, automated testing, test first development
  * Crystal Methods: frequient delivery, reflective improvement
* "Ceremonies" of Agile
  * Vision of the system must be well-defined
  * Create a product backlog: list of stuff to accomplish
    * Prioritize the list of stuff by the highest priority at the top
    * list of stuff usually comes from a group of stakeholders
  * Commit to a small set of goals - the Iteration Backlog
    * Identify the smallest capability that canb e created; some call this a Minimum Viable Product (MVP)
  * Iteration Planning
    * Product owner identifies the highest priority items and the environmental constraints
    * Architect or SE defines architectural requirements
    * **Team** looks at the highest priority items on the product backlog and plans what they can do in the 2 to 4 week iteration
      * Team defines which of the high priority items they can do in the iteration being planned
    * Team identifies any dependencies between the backlog items
    * Agreement is that no stakeholders can add to or change the planned work during the iteration
      * Job of the _scrum master_ to protect the team from the stakeholders adding or changing the planned work during the iteration
  * Daily stand-up where team reports to each other
    * This is what I just finished
    * This is what I plan to do next
    * Also report any impediments that might be slowing you down or in the way of finish something
  * Iteration Demonstration
    * Team presents what has been finished during the iteration in a "Show and Tell"
    * Stakeholders and Product Owner provide feedback on what is demonstrated
    * This inspects and improves the product
  * Retrospective
    * Faciliated by the scrum master
    * Usually soon after the demonstration, attended by team members only (not customers)
    * Each team member identifies:
      * What worked well
      * What did ot work well
      * What could/should be improved
    * Agreements on what will be changed to improve how everyone is working together
      * Pick the highest value prospect to address
    * This inspects and improves the process
* Team Roles
  * Product Owner
    * Responsible for the product backlog
    * Removes impediments
    * Represents the customer and works closely with the customer
  * Scrum Master
    * Facilitates the team meetings
    * Removes impediments
  * Team Members
    * Plan the iterations
    * Estimate the amount of backlog that canb e completed each teration
    * Demonstrate the capabilties at the end of each iteration
  * Teams ideally are 5 to 9 members of developers, testers, and other members
* Agile Summary
  * Roles
    * Team Member
    * Scrum Master
    * Product Owner
  * Artifacts
    * Product backlog
    * Iteration backlog
    * Working demonstrate-able increment of capability
  * Communication and Planning
    * Pre-product backlop
      * Vision/Roadmap
    * Pre-iteration backlog
      * Iteration planning
    * During iteration
      * Daily stand-up
    * Pre-working increment of a capability
      * Iteration demonstration
    * Post-demonstration
      * Retrospection
* Systems Engineering
  * Stakeholder requiements defintion
  * Requirements analaysis&#x20;
  * Architectural design
  * Implementation
  * Integration
  * Verification
* Impact of Agile on Systems Engineering
  * SE Architect Role
    * SE identify and analyze architecture dependencies
    * Create and continuously update an architecture description
    * Participate with the SE Team
    * Partication on one or more implementation teams
    * Work one iteration ahead of the developers
  * SE Process
    * SE and software development work together to
      * Define capabilities
      * Implement capabilities
      * Test capabilities
      * Inspect the results
      * Adapt capabitlies as needed
      * Maintian system integrity
    * Larger programs with several teams working in parallel need SE engaged
    * Each aspect of development (requirements, design, implementaiton, test, verifcation) is continually revisited through the devleopment lifecycle
* Agile SE Framework Conclusion
  * SE and software development work toegether to develop and evolve the work products iteratively
  * Define "just enough" architecture and requirements prior to the beginning of implementation
  * Release planning and iteration planning are essential to detail the work and coordinate the teams
  * Release products frequently
  * Absorb changes to mission requirements
  * Include requirements, architecture, system design and validation by SE on large scale agile projects
* Will iterative and incremental development work for you?
  * Is the system complex?
  * Do you epect to have discoveries during the development that will cause changes?
  * Is there an involved and commiteed customer or product owner that can help prioritize the prodcut backlog and define the requirements
