"Agile Software Engineering" Overview
for external offering of ASE ABAP
Juergen Heymann, CPO Software EngineeringThere are many ingredients for successful software
projects…
Experienced Developers
Domain Knowledge
Many Tools
Project & risk management Architecture & Design
Coding Standards …
Two dimensions of success
Do It Right
Do the Right Thing
Do It Right – Isn’t Scrum* enough?
… what happened is that they did not pay enough attention to the internal quality of their software
Scrum is a framework that's centered on project management techniques and
deliberately omits any technical practices.
http://www.martinfowler.com/bliki/FlaccidScrum.html
“ ”
We need agile engineering practices to complement Scrum
What is Agile Software Engineering?
TDD Pair Programming Test Isolation Refac-toring ATDD Retro-spectives Unit Test Clean Code Continuous Integration Scrum*Agile Software Engineering
comprises the values, principles and technical practices
that a developer needs to know to work successfully in a lean and agile context.
Test First
TDD gives you trust in your code Enables to change code & clean up
Living documentation of developer's intent Outside-in development better API design
Test First – Test Driven Development
Test-last didn’t help us. It takes too much time to make code testable afterwards, and therefore it is often not done.
“ ”
Test failsWrite the code
Write test New Requirements All tests pass Refactor Repeat Divide Integration
Dependencies Matter
“I cannot test because …
I need an SRM system with full master data Currently, a component I depend on does not work”
Test Isolation example: Stock Application – What is the
problem?
Portfolio
Stock
no stable values slow
cannot be provoked to raise an exception call is expensi ve under constructi on Stock Quote Service Quote Service WebService in the internet
Testing Stock – Isolating against StockQuoteService
Test Case Isolation Stock Quote Service YahooStockQuoteServiceWebService in the internet
<<interface>> StockQuoteService
Testing Stock – Isolating against StockQuoteService
Test Case
Stock
Quote Service
YahooStockQuoteService
WebService in the internet
<<interface>> StockQuoteService
TestDouble_StockQuoteService
Return x
Always returns a defined value – and fast
"Never touch a running system?"
We keep learning as software evolves How keep the system flexible for change? Can we afford to clean up?
Today’s System The path we took Optimal path
Pair Programming
Pair Programming
Better Code, simpler design Knowledge and skill distribution
Reduce risk of single code-ownership Raise discipline for writing clean code Teambuilding
Good to work in pairs - get different ideas from the pair.
Good way to learn and implement.
Scripted Testing Ad hoc Testing Exploratory Testing
Exploratory testing – a novel smart way of manual testing
The 'Test Tour' is the key
Developed by James Whittaker and best testers at Microsoft
Encapsulate years of testing experience
Exploratory testing – Some Test Tours
Landmark Tour:
•Visit 'landmarks' in different order •Finds sequence dependent bugs
Fedex Tour:
•Follow parcels (data): create, edit, delete •Focus on data consistency
Supermodel Tour:
•Only focus on looks (UI) •UI consistency, guidelines, …
Anti-Social Tour:
•Behave like no 'normal user'
ASE test practices in combination
Coverage of entire functional test pyramid from team perspective
T e s t c o s ts
The ASE Course
ASE
ASE
ASE Course Structure
5-Day Course with 4 sprints; Different 'flavors' for ABAP, Java, C#, ...
+ 1-3 weeks coaching in own team to learn to apply
M in im u m s ta n d a rd
ASE Feedback
Feedback from participants is consistently very good
“I feel quite more confident about my engineering skills now.”
Some Success Stories
Medium Project 'X' – 100 developers
Large scale refactoring & rewrites
Main focus was on quality and performance ASE pilot in two teams, full rollout April 2011
All Project Goals Were Achieved
Usable software after each takt Strong test automation
Small Project 'Y' – 20 developers
Daily Unit Test Results helped to nail down
problems and correct immediately
Sprint Review meeting with co-innovation
customers strong motivation for the team to
hear customers feedback
7 customer meetings with live demo in
Status at SAP: Mature Global Initiative
Status June 2012
More than 2500 developers trained by June 2012 Existing Tracks: ABAP, Java Web, Java Eclipse Global rollout underway
Outlook 2012 / 2013
More developers, remaining locations New tracks: C++, HTML5/JavaScript/mobile
External Offering of ASE ABAP
ASE
ASE
ASE ABAP Course is offered to SAP Customers &
Partners
Value Proposition
Train your developers to write better code Gain speed and quality at the same time
Applicable to all customers / partners who do significant development/extension projects in ABAP
General Delivery Concept:
Customer / Partner designates own trainers; SAP ASE team trains the trainers
Then 'ramp-up' training onsite with experienced SAP ASE ABAP trainers. Local trainers educate their peers.
Customer pays license fee for training material.
Pilot 2012, GA planned for 2013
Thank You
When/where can TDD be used?
TDD works very well in most development situations
Case Details & Issues What to do
1: Completely new code / product
New product from scratch Introduce TDD as global development
practice
2: Extension of existing application
Significant extensions to existing product
New code mostly 'together' and not spread through the old code
TDD for new parts (whenever you create a new class)