APP + Trilinos Integration. Status, Opportunities, and Challenges



Similar documents
Review of ACN Working Environment

Software Engineering Principles The TriBITS Lifecycle Model. Mike Heroux Ross Bartlett (ORNL) Jim Willenbring (SNL)

Barely Sufficient Software Engineering: 10 Practices to Improve Your Research CSE Software

Agile Development and Testing Practices highlighted by the case studies as being particularly valuable from a software quality perspective

What s Lean Agile & How does it allow teams to progressively improve customer satisfaction & service delivery?

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Software Development Lifecycle. Steve Macbeth Group Program Manager Search Technology Center Microsoft Research Asia

A Case Study - Scaling Legacy Code on Next Generation Platforms

Introduction to Agile Software Development Process. Software Development Life Cycles

Nova Software Quality Assurance Process

Continuous Integration Processes and SCM To Support Test Automation

Software Development Life Cycle (SDLC)

Executive Guide to SAFe 24 July An Executive s Guide to the Scaled Agile Framework.

Agile Software Development Methodologies and Its Quality Assurance

A Capability Maturity Model (CMM)

Agile and Secure: Can We Be Both?

Chapter 9 Software Evolution

Introduction to Agile and Scrum

DevOps Stack. Reid Holmes. Chris Parnin:

Agile extreme Development & Project Management Strategy Mentored/Component-based Workshop Series

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Software configuration management

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

Life-Cycle Model. Software Life-Cycle Models. Software Development in Theory. Software Development in Practice

Continuous Integration (CI)

From Traditional Functional Testing to Enabling Continuous Quality in Mobile App Development

Cloud Development Strategies

How To Test For Performance

Continuous Integration: Aspects in Automation and Configuration Management

Software Configuration Management Best Practices for Continuous Integration

Kernel Testing: Tool and Techniques. Matt Porter Texas Instruments 21 February 2013

Life Cycle Models. V. Paúl Pauca. CSC Fall Department of Computer Science Wake Forest University. Object Oriented Software Engineering

DATA DONE RIGHT. Applying Agile and XP Concepts. #DataDoneRight

Testing Tools Content (Manual with Selenium) Levels of Testing

Bottlenecks in Agile Software Development Identified Using Theory of Constraints (TOC) Principles

Agile and lean methods for managing application development process

Topics covered. Agile methods Plan-driven and agile development Extreme programming Agile project management Scaling agile methods

Testing Rails. by Josh Steiner. thoughtbot

Codeless Test Automation for Web Apps

Methodology: Agile development of safety critical systems Annex D1.1.d to deliverable D1.1

Software Engineering. So(ware Evolu1on

Continuous integration for databases using

Testhouse Training Portfolio

SECTION 4 TESTING & QUALITY CONTROL

Increasing Business Efficiency and Agility for ATGbased. Systems. the business challenge: upgrading the development pipeline

Agile Scrum Workshop

DevOps Practical steps towards greater business agility AND stable IT operations.

An Example Checklist for ScrumMasters

MANUAL TESTING. (Complete Package) We are ready to serve Latest Testing Trends, Are you ready to learn.?? New Batches Info

July 12, 2013 Page 1 of 5 BellHawk Systems Corporation

Waterfall vs. Agile Methodology

A New Unstructured Variable-Resolution Finite Element Ice Sheet Stress-Velocity Solver within the MPAS/Trilinos FELIX Dycore of PISCEES

Continuous integration for databases using Red Gate tools

Delivering Quality Software with Continuous Integration

Software Product Testing in Agile Environment

Applying Agile Project Management to a Customized Moodle Implementation

Sreerupa Sen Senior Technical Staff Member, IBM December 15, 2013

Software Development Process

INTERNATIONAL JOURNAL OF ADVANCES IN COMPUTING AND INFORMATION TECHNOLOGY An International online open access peer reviewed journal

Who is Watching You? Video Conferencing Security

MOBILE APPLICATION TESTING ENGINEER

A. System. City of Perrysburg, Ohio URISA EXEMPLARY SYSTEMS IN GOVERNMENT AWARD

Agile Power Tools. Author: Damon Poole, Chief Technology Officer

DevOps for the Mainframe

Software Engineering I (02161)

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Improving database development. Recommendations for solving development problems using Red Gate tools

Continuous integration for databases using Redgate tools

Testing in an Agile Environment

Co-Presented by Mr. Bill Rinko-Gay and Dr. Constantin Stanca 9/28/2011

Implementing Continuous Integration Testing Prepared by:

Agile and lean methods for managing application development process

Agile SPL SCM Agile Software Product Line Configuration and Release Management

Business white paper. Best practices for implementing automated functional testing solutions

Bridging the Gap Between Acceptance Criteria and Definition of Done

TESTING FRAMEWORKS. Gayatri Ghanakota

Transitioning Your Software Process To Agile Jeffery Payne Chief Executive Officer Coveros, Inc.

WHITEPAPER. Improving database development

Software Process. Process: A sequence of activities, subject to constraints on resources, that produce an intended output of some kind.

ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013

Real Time Embedded Software Development Using Agile Technology An Experience Report

Test Driven Development with Continuous Integration: A Literature Review

An Introduction to Continuous Delivery

Distributed Agile Development in the Cloud

Continuous Delivery Workshop

SA Tool Kit release life cycle

Kevin Lee Technical Consultant As part of a normal software build and release process

Transcription:

2008-7716P APP + Trilinos Integration Status, Opportunities, and Challenges Roscoe A. Bartlett http://www.cs.sandia.gov/~rabartl/ Department of Optimization & Uncertainty Estimation Sandia National Laboratories Trilinos User Group Meeting, October 23, 2008 Page 1 Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, f or the United States Department of Energy under contract DE-AC04-94AL85000.

Current Status of APP + Trilinos Integration Charon + Trilinos Integration: ASC FY07 Vertical Integration Milestone Automated daily integration testing done against Trilinos 7.0, 8.0, and Dev Charon could not upgrade to Trilinos 8.0 last year because Xyce did not upgrade Charon will release against Trilinos 7.0 later this quarter! John Shadid is building and running Charon against recent snapshots of Trilinos Dev Charon was not tested against Trilinos 9.0 and there is no interest from the semiconductor side What about Xyce + Charon + Trilinos integration? Conclusion: Current Trilinos release process has little impact on Charon Xyce + Trilinos Integration: Ad-hoc manual integrations with Xyce + Trilinos Dev was done prior to branch of Trilinos Release Testing of Xyce + Trilinos 9.0 brach was *not* done => Xyce can not build against Trilinos 9.0 and it has consumed several weeks worth of effort! Page 2

Current Status of APP + Trilinos Integration Alegra + Trilinos Integration: Automated testing of Alegra + Trilinos Dev was conducted before Trilinos 9.0 branch... Several problems were resolved before Trilinos 9.0 was branched! Alegra switched over to Trilinos 9.0 after branch (but stopped testing against Trilinos Dev) New Xyce TPL depends on Trilinos with versioning issues Alegra was ready to switch to Trilinos 9.0 by 10/15 but could not because Xyce does not build against Trilinos 9.0! Alegra would like to do a Alegra + Xyce + Trilinos Dev daily integration to support their work! Aleph + Trilinos Integration: They take snapshot of Trilinos Dev from time to time and build against that Automated testing of Aleph against Trilinos Dev Shapshot Aleph would be very interested to use the STK IO capabilitily that might be moved into Trilinos? In this case, they would be very interested in doing daily integration with Trilinos Dev... Page 3

Current Status of APP + Trilinos Integration Titan/VTK + Trilinos Integration: They currently do informal builds against snapshots of Trilinos Dev They have already experienced a regression between updated snapshots They want to move to automated daily integration testing with Trilinos Dev SIERRA + Trilinos Integration: Driven by Algorithm Integration Project Embedded algorithms in SIERRA SIERRA does *not* use the Trilinos build system, they build Trilinos with BJAM Developer environment built constructed with Python scripts (STANA scripts) Daily integration testing for all of SIERRA + Trilinos Release and Dev Continuous Integration testing done every two hours for Aria + Trilinos Release and Dev Extensive testing and porting before the branch of Trilinos 9.0 Upgrade to Trilinos 9.0 went very smoothly Transition to Trilinos 9.0 was done in less than one week (could have been done in one day) Page 4

SIERRA + Trilinos Integration: STANA Website http://sierra-trac.sandia.gov/trac/sierra/wiki/modules/aria/subprojects/stana Page 5

Lean/Agile Software Engineering Principles High quality software is developed in small increments and with sufficient testing in between sets of changes. High quality defect-free software is most effectively developed by not putting defects into the software in the first place (i.e. code reviews, pair programming, etc.). High quality software is developed in short fixed-time iterations. Software should be delivered to real (or as real as we can make them) customers is short intervals. Ruthlessly remove duplication in all areas. Avoid points of synchronization. Allow people to work as independently as possible and have the system set up to automatically support this. Most mistakes that people make are due to a faulty process/system (W. Edwards Deming). Automation is needed to avoid mistakes and improve software quality. References: http://www.cs.sandia.gov/~rabartl/readinglist.html Page 6

Lean/Agile Methods: Development Stability Common Approach NOT AGILE! Code instability or #defects Regression! Time Release X Branch for Release X+1 Problems Cost of fixing defects increases the longer they exist in the code Difficult to sustain development productivity Broken code begets broken code (i.e. broken window phenomenon) Long time between branch and release Difficult to merge changes back into main development branch Temptation to add features to the release branch before a release High risk of creating a regression Release X+1 Page 7

Lean/Agile Methods: Development Stability The Agile way! Code instability or #defects Time Release X Advantages Defects are kept out of the code in the first place Code is kept in a near releasable state at all times Shorten time needed to put out a release Allow for more frequent releases Reduce risk of creating regressions Decrease overall development cost Branch for Release X+1 Release X+1 Page 8

APP Only Upgrades After Each Major Release of Trilinos Trilinos X release Trilinos Head Trilinos X+1 bran ch Trilinos X+1 release APP Y+1 & Trilinos X+1 release APP Head Testing: APP VOTD + Trilinos X APP VOTD transition to Trilinos X+1 Testing: APP VOTD + Trilinos X+1 Transition from Trilinos X to Trilinos X+1 can be difficult and open ended Large batches of changes between integrations Greater risk of experiencing real regressions Upgrades may need to be completely abandoned in extreme cases Page 9

APP Builds Against both Trilinos Release and Trilinos Dev APP (SIERRA) VOTD New APP + Trilinos Dev Developers APP (SIERRA) Developers Trilinos Release Trilinos Dev APP (SIERRA) VOTD Developers only build/test against Trilinos Release Changes between Trilinos Release and Trilinos Dev handed through: Refactoring Minimal ifdefs (NO BRANCHES)! Trilinos Dev Developers work independent from APP Use of staggered releases of Trilinos and APP APP + Trilinos Dev Developers drive new capabilities Trilinos Dev Developers Page 10

APP Builds Against both Trilinos Release and Trilinos Dev Trilinos X release Trilinos Head Trilinos X+1 bran ch Trilinos X+1 release SIERRA + Trilinos Integration! APP Y+1 & Trilinos X+1 release APP Head Testing: APP VOTD + Trilinos X Testing: APP VOTD + Trilinos Dev Testing: APP + Tri Dev Tri X Tril X+1 All changes are tested in small batches Low probability of experiencing a regression Extra computing resources to test against 2 (3) versions of Trilinos Some difficulty flagging regressions of APP + Trilinos Dev APP developers often break APP + Trilinos Dev Difficult for APP to have rely on Trilinos too much Hard Page 11 to verify Trilinos for APP before APP release Testing: APP VOTD + Trilinos X+1 Testing: APP VOTD + Trilinos Dev

Challenges of APP + Trilinos Release and Dev Integration APP (SIERRA) VOTD New APP + Trilinos Dev Developers APP (SIERRA) Developers Trilinos Release Trilinos Dev Trilinos Dev Developers Problems APP developers sometimes break APP + Trilinos Dev New APP + Trilinos Dev inherits instability of APP and Trilinos development lines Improvements Make Trilinos Dev backward compatible with Trilinos Release => Minimize need to refactor and ifdef Improve stability of Trilinos Dev Improve stability of APP VOTD Page 12

SIERRA + Trilinos Integration: Opportunities and Challenges SIERRA Framework Developers would like to consider tighter integration with Trilinos: Move new SIERRA toolkits packages into Trilinos STK_Mesh STK_IO? => Make these available for rapid production and other projects Develop the FEI through Trilinos instead of a SIERRA TPL => Allow FEI to be updated more frequently Replace SIERRA code with Trilinos code: Teuchos::ParameterList Intrepid Phalanx => Reduce duplication and increase Trilinos impact Challenge: Tighter integration of APP and Trilinos does not fit well into current APP + Trilinos Release and Dev model! Page 13

APP + Trilinos Integration: Problems with Tighter Integration SIERRA VOTD New Trilinos Release STK Mesh Trilinos Dev Approach? Check out STK Mesh from Trilinos separately to build with SIERRA? Ifdef STK Mesh to build against both Trilinos Release and Trilinos Dev? Problems Development of STK Mesh requires new features in Trilinos packages (i.e. Teuchos) STK Mesh built against Trilinos Release will not have some features! Page 14

APP + Trilinos Integration: Problems with Tighter Integration Trilinos X release Trilinos Head Trilinos X+1 bran ch Trilinos X+1 release SIERRA Y+1 & Trilinos X+1 release SIERRA Head Activity: Develop new features of STK Mesh (new) with new Trilinos Dev features Test: SIERRA + STK Mesh + Trilinos Release Test: SIERRA + STK Mesh (new) + Trilinos Dev Any new development of STK Mesh (new) against Trilinos Dev will not impact release of SIERRA Y+1! Activity: Develop new features of STK Mesh (new) with new Trilinos Dev features Conclusion: This will be complex and involve greater risk! Is there another way? Page 15

APP + Trilinos Integration: Different Collaboration Models APP only upgrades after each major release of Trilinos Little to no testing of APP + Trilinos Dev in between versions APP builds against both Trilinos Release and Trilinos Dev APP developers work against Trilinos Release APP + Trilinos team(s) build against Trilinos Dev Nightly and continuous integration testing done for both APP + Trilinos Release and Dev Must handled staggered releases of Trilinos and APP APP developed only against Trilinos Dev APP developers work directly against Trilinos Dev checked out every day Releases best handled as combined releases of APP and Trilinos Page 16

APP developed only against Trilinos Dev Trilinos Head Trilinos APP Y+1 bran ch Trilinos APP Y+1 release Future of SIERRA + Trilinos Integration? APP Head APP Y+1 branch APP Y+1 & Trilinos APP Y+1 release Testing: APP VOTD + Trilinos Dev Supported with continuous integration testing! All changes are tested in small batches Low probability of experiencing a regression Less computing resources for testing Regressions and flagged immediately by APP developers Can support tighter integration efforts Supports rapid development of new capability from top to bottom Requires Trilinos to be more stable Other issues arise as well Page 17

Challenges with APP-Specific Trilinos Releases SIERRA Y+1 (released against Trilinos SIERRA Y+1) Xyce J+1 (released against Trilinos X) VTK M+1 (released against Trilinos X+1) Trilinos SIERRA Y+1? Multiple releases of Trilinos presents a possible problem with complex applications Solution: => Provide perfect backward compatibility of Trilinos X through Trilinos SIERRA Y+1 Page 18

APP + Trilinos Continuous Integration: Solutions Proposed approach: Develop APP VOTD directly against Trilinos Dev (not against Trilinos Release) Create special releases of Trilinos just for these APPs APP-specific releases of Trilinos will only be needed for these special APPs where tighter integration is required Protect development work with continuous integration server and feedback Improvements to Trilinos needed to support this: Improve the stability of Stable code in Trilinos Dev (see later presentation) Preserve perfect backward compatibility for Trilinos for some period of time => Allows some flexibility of what version of Trilinos gets used by customer codes Improve other related software engineering practices See the talk: Maintaining stability of Trilinos Dev - Stable vs Experimental Code Page 19