# Presentation: 202521

## Software Usability in aLarge Scientific Collaboration,the ATLAS Experience

**Software Usability in a****Large Scientific Collaboration,****the ATLAS Experience**

***P. Calafiura (LBNL/NERSC),******for the ATLAS collaboration***

- IEEE NSS, Session N32 - Honolulu, HI - Wed Oct 31 2007

## Introduction

- Most software for the ATLAS experiment runs in the athena framework
- Based on Gaudi component architecture
- Used for physics since 2003 (at least)‏
- Immediate, unanimous, user feedback:
- “Getting a job to do what one wants, or even understanding what it does is extremely hard”
- Spring 2005 established Usability Task Force
- Focus on job configuration

## Athena Job Configuration

- Python script
- Several thousand lines for reconstruction job
- Schedule execution of  top-level physics components (Algorithms)‏
- About 100 in a typical reconstruction job
- Set Properties of running components
- MyService.OutputLevel = WARNING
- MyAlgorithm.PtMinCut = 1.234

## Event Reconstruction Dataflow

- I. Vukotic
- D. Rousseau

- “Typical” job runs ~300 components and produces/consumes thousands data objects

## How Can We Make it Easier?

- Cognitive Science: D.A. Norman, User-Centered Design

- Opportunistic Execution
- What actions does the system afford to reach one's goal?
- Iterative Evaluation
- What are the consequences of these actions?

- Gulfs of Execution and of Evaluation

- The Action Cycle

## User-Centered Design Principles

- Use both knowledge in the world and knowledge in the head.
- Simplify the structure of tasks.
- Make things visible: bridge the gulfs of execution and evaluation.
- Get the mappings right.
- Exploit the power of constraints, both natural and artificial.
- Design for error.
- When all else fails, standardize

## Making Things Visible

- Athena Configurables
- Building blocks of job configuration framework
- Python objects proxying Athena C++ components during configuration
- Repository auto-generated at build stage
- Configure job without loading any C++ library
- Very fast configuration allows to explore, undo
- Strong syntax checking provide precise feedback
- Repository makes visible default configuration and documentation of every available component.

## Getting the Mappings Right

- Data-centered Configuration
- Configurables help setting or exploring component properties
- The goal of most physicist running athena is not to configure a particular component but to produce or to access some data.
- “I need to look at the Jets”
- “I want to recalibrate the Clusters in the AOD”

## From Configurables to Configureds

- “getJets”
- Configured

- “getJets”
- Configured

- High-level, Data-centric Configuration objects
- Make explicit association among data objects and components producing/consuming them
- If requested data not available from input stores, activate and configure necessary components

- “DST”
- Store

## User-Centered Design Principles

- Use both knowledge in the world and knowledge in the head.
- Simplify the structure of tasks.
- Make things visible: bridge the gulfs of execution and evaluation.
- Get the mappings right.
- Exploit the power of constraints, both natural and artificial.
- Design for error.
- When all else fails, standardize

## Design for Error

- Actually, *Design for Exploration*
- Most users won't read the manual. Even if they do, they'll look at a couple of examples, build a mental model of the system, and start using it.
- Error reports are a great opportunity to relate the *designers* mental model of the system.

*Design*
*Model*

*User*
*Model*

*System*
*Image*

- Developer

- User

- System

## Learning from Errors

- Enforce policies, explain syntax and logic
- Tune feedback to its likely audience
- friendly, tutorial-like for common errors
- Detailed, precise, for unusual problems
- Feedback must be immediate
- But allow experts to see all errors at once
- Support action undo/redo
- For ATLAS job configuration this is allowed by Configurables

## Simplify the Task

- Decompose, hide, automate, standardize, document
- “Simplicity is vastly overrated”
- Users want features
- And they want to feel in control
- Give them features, control
- But automate by default
- This is what Configureds do for ATLAS job config

## Summary and Outlook

- ATLAS “New Job Configuration” in production since last month
- Usability Task Force wrapped up but
- Still learning how to exploit fully the power of Configurables and Configureds
- Expect more powerful abstractions to come up
- Usability is now an essential part of ATLAS software culture.

## Acknowledgements

- Almost every member of the ATLAS software community has been involved in this project.
- Wim Lavrjisen and David Rousseau lead design and implementation of the Configurables and Configured respectively.
- Special thanks to Pere Mato who suggested to auto-generate Configurables from the component library contents

## References

- User-centered design
- www.jnd.org/
- The POET book
- ATLAS
- twiki.cern.ch/twiki/bin/view/Atlas/AthenaFramework
- twiki.cern.ch/twiki/bin/view/Atlas/UsabilityTaskForce
- twiki.cern.ch/twiki/bin/view/Atlas/RecConfigured

## Make Things Visible, Evaluation

## The Gulf of Execution

- Calorimeters Reco

- What fraction of job will still work when this
- component fails to build?

- What's the
- simplest job
- producing
- this data?