# 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cctang.gitbook.io/softwarecrafting/seminars/agile-systems-engineering-planning-using-six-thinking-hats.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
