SlideShare une entreprise Scribd logo
1  sur  30
1
Requirements
Engineering:
Report from the trenches
Eric D. Schabell
JBoss Technology Evangelist
Radboud University Nijmegen, June 2013
2
Agenda
• A perfect world
• Reality intrudes
• Real life example: STP Aanvragen
– Introduction
– Life in the trenches
– Example: web service
– Example: jBPM process
• Building on legacy: STP Contract Rekeningen (Deposito's)
– Use cases and legacy problems
• Towards the future: STP Betalen
– Use cases, getting better?
3
Up to now...
The world is a pretty place:
• Business rules
• Use cases
• Requirements
• Workshops
• etc...
4
How we like(d) to work
Overview of the work flow (iterations):
• Business workshops (IA)
• Functional designs (FO), use cases
--------------------------------------------------------------
• Use cases, more detailed (requirements)
• Technical designs (TO)
• Unit test + code
5
Agenda
• A perfect world
• Reality intrudes
• Real life example: STP Aanvragen
– Introduction
– Life in the trenches
– Example: web service
– Example: jBPM process
• Building on legacy: STP Contract Rekeningen (Deposito's)
– Use cases and legacy problems
• Towards the future: STP Betalen
– Use cases, getting better?
6
Reality is a wake up call
Sometimes there are other factors:
• Business needs
• Market changes (Crisis?)
• Lack of personnel (quality / quantity)
• Technical challenges
• Planning problems
7
Agenda
• A perfect world
• Reality intrudes
• Real life example: STP Aanvragen
– Introduction
– Life in the trenches
– Example: web service
– Example: jBPM process
• Building on legacy: STP Contract Rekeningen (Deposito's)
– Use cases and legacy problems
• Towards the future: STP Betalen
– Use cases, getting better?
8
All bets are off
Can you be flexible in this environment?
• Business workshops (4x)
• FO is 92 page PowerPoint presentation
• Use cases done by developers
• Coding (minimal unit tests, no mock services framework)
• TO done after or iterative during coding
9
Architecture
Simple overview:
front
office
applicatie business
proces
engine
BOM
SOAL
Backend
systemen
rule
engine
klant
medewerker
uitval
10
What is going on: technically?
A very fast time to market:
• Challenging technical environment
– JBoss jBPM
– JBoss web services
– Back-ends: KIS and SAS mainframe
– Uitval application
11
What is going on: business?
A very fast time to market:
• Four new savings products
– via internet channel
– request processing max 2 days (STP degree)
– Straight Through Processing (STP Aanvragen)
– customer insisting on unrealistic deadlines
12
What is going on: process?
A very fast time to market:
• All banking issues and requirements remain
– privacy
– laws
– security
– validation
– data access / manipulation
13
Life in the trenches
In the trenches:
• Receive task to implement functionality
• Check FO (remember == ppt)
• Extract use cases for task (discuss with IA)
• Create TO
• Write unit tests
• Code implementation
• Test it!
14
Example: web service
Postcode validation:
• Receive task, postcode validation
• Check FO (remember == ppt), slide 24
• Extract use cases for task (discuss with IA), see example
• Create TO, see SIC
• Write unit tests, see SIC
• Code implementation
• Test it!
15
Functional Design (FO): slide 24
SNS XXXXXXXXXX
Verplichte tegenrekening
Internetbankieren of TIN code of softlogin
SNS XXXXXXXXXXX
Verplichte tegenrekening
Internetbankieren of TIN code of softlogin
SNS XXXXXXXXXX
Verplichte tegenrekening
Internetbankieren of TIN code of softlogin
SNS XXXXXXXXXXXX
Internetbankieren of TIN code of softlogin
...and the rest...
“...postcodevalidatie: als postcode niet in ons table
voorkomt dan uitval.”
16
Service Interface Contract
Sequence diagram:
sd Sequence am
Cal ling Applicat ion /
Service
Betrokkenpartij
Service
KisContactAdapter
KIS
1:
findPostcode(PostcodeValidationSO) :
PostcodeValidationSO
2:
val idate(Po stcodeValidationSO)
:PostcodeValidationSO
3:
findAddress CityByPo stcodeHou seNum berAdapter(Postcode ValidationSO)
:PostcodeValidationSO
4:
SnsPostcode.getAddress Details(postcode ,
houseNumb er) :Jk isResult
17
Java anyone?
/** {@inheritDoc} */
public PostcodeValidationSO findPostcode(PostcodeValidationSO postcodeSO) throws BetrokkenPartijServiceException {
PostcodeValidationSO returnPostcodeValidationSO = new PostcodeValidationSO();
logStart(postcodeSO);
try {
validate(postcodeSO);
} catch (ServiceValidationException e) {
throw createBetrokkenPartijServiceException(e, Originator.SERVICES);
}
try {
// call to KIS for postcode lookup.
returnPostcodeValidationSO = KISContactAdapter.getInstance().findAddressCityByPostcodeHouseNumber(postcodeSO);
if (returnPostcodeValidationSO == null || StringUtils.isEmpty(returnPostcodeValidationSO.address)
|| StringUtils.isEmpty(returnPostcodeValidationSO.city)) {
// found invalid postcode, setup for returning an empty SO.
returnPostcodeValidationSO.address = "";
returnPostcodeValidationSO.city = "";
}
} catch (ServiceException e) {
throw createBetrokkenPartijServiceException(e, Originator.KIS);
} finally {
// Do some logging at the end of the call.
logEnd(returnPostcodeValidationSO);
}
return returnPostcodeValidationSO;
}
18
Unit tests
/**
* Test for an invalid postcode.
* Note: there is no backend mock for services, thus is integration test.
*/
public void testFindPostcodeInvalid() {
// fill our invalid postcode service request object.
postcodeSO.postcode = invalidPostcode;
postcodeSO.houseNumber = invalidHouseNumber;
try {
PostcodeValidationSO so = bp.findPostcode(postcodeSO);
// should be empty SO attributes.
assertEquals(so.address, "");
assertEquals(so.city, "");
} catch (ServiceException e) {
e.printStackTrace();
}
}
19
Example: jBPM process
Aanmaak product:
• Receive task
• Check FO (remember == ppt), outside scope
• Extract use cases for task (discuss with IA), outside scope
• Create TO, received from lead developer, iterative
updates
• Write unit tests, ha ha, that's a good one!
• Code implementation
• Test it, SOAPUI
20
Aanmaak product (jBPM)
21
Agenda
• A perfect world
• Reality intrudes
• Real life example: STP Aanvragen
– Introduction
– Life in the trenches
– Example: web service
– Example: jBPM process
• Building on legacy: STP Contract Rekeningen (Deposito's)
– Use cases and legacy problems
• Towards the future: STP Betalen
– Use cases, getting better?
22
How we (now) like to work
Overview of the work flow (iterations):
• Business workshops (IA)
• Functional designs (FO), set UC's & UCM
--------------------------------------------------------------
• SW Architecture Document (SAD)
• Use Case Realizations, more detailed (requirements).
• Technical designs (SIC, components)
• Unit test + code
23
STP Contractrekening use cases
Some facts:
• Actually have UC's!
• Very technical
• Never (still to this day) seen non-concept versions!
• Legacy process decisions haunt implementation:
– polling / scheduler growth (pre-processing, AI,
Documentbewaking, saldo)
– business logic in process layer, expanded with more...
– reference project (jBPM) never applied == political / time
pressures
24
Documentbewaking (pre-project)
25
Documentbewaking (post-project)
26
Agenda
• A perfect world
• Reality intrudes
• Real life example: STP Aanvragen
– Introduction
– Life in the trenches
– Example: web service
– Example: jBPM process
• Building on legacy: STP Contract Rekeningen (Deposito's)
– Use cases and legacy problems
• Towards the future: STP Betalen
– Use cases, getting better?
27
STP Betalen UCM / UC's
Some facts:
• 1x UCM, 10x UC's
• 65 findings in team review (one team member):
– object model in UCM!
– 'boolean' appears 2x in UC's
– instructs where data elements need to go
– describes exact contents of data element to be stored
– details system components as actors!
– 2x technically impossible to implement process steps
28
STP Betalen optimized
General product process:
• Provides cost effective
product platform
• written May 2009, planned
2010
29
SNS Bank STP final report
Current status:
• UC's != final, business redefined requirements ½ way
• Credit crisis caused some problems end 2009
• Published chapters (2x) and Silver Award!
– follow on http://www.schabell.org (jBPM tag)
– http://www.twitter.com/ericschabell
30
Questions?

Contenu connexe

Tendances

Kris Verlaenen on jBPM5 at JBUG.be
Kris Verlaenen on jBPM5 at JBUG.beKris Verlaenen on jBPM5 at JBUG.be
Kris Verlaenen on jBPM5 at JBUG.be
Andries Inzé
 
20080215 jbpm Business Process Simulation with Jboss jBPM
20080215 jbpm Business Process Simulation with Jboss jBPM20080215 jbpm Business Process Simulation with Jboss jBPM
20080215 jbpm Business Process Simulation with Jboss jBPM
camunda services GmbH
 
JUDCon Berlin 2010 - practical enterprise java performance tuning
JUDCon Berlin 2010 -  practical enterprise java performance tuningJUDCon Berlin 2010 -  practical enterprise java performance tuning
JUDCon Berlin 2010 - practical enterprise java performance tuning
mbrasier
 

Tendances (14)

Kris Verlaenen on jBPM5 at JBUG.be
Kris Verlaenen on jBPM5 at JBUG.beKris Verlaenen on jBPM5 at JBUG.be
Kris Verlaenen on jBPM5 at JBUG.be
 
jBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developersjBPM5 in action - a quickstart for developers
jBPM5 in action - a quickstart for developers
 
Felix Müller: Live Coding: Zeebe - Camunda Days Oslo, CPH, Amsterdam
Felix Müller: Live Coding: Zeebe - Camunda Days Oslo, CPH, AmsterdamFelix Müller: Live Coding: Zeebe - Camunda Days Oslo, CPH, Amsterdam
Felix Müller: Live Coding: Zeebe - Camunda Days Oslo, CPH, Amsterdam
 
20080215 jbpm Business Process Simulation with Jboss jBPM
20080215 jbpm Business Process Simulation with Jboss jBPM20080215 jbpm Business Process Simulation with Jboss jBPM
20080215 jbpm Business Process Simulation with Jboss jBPM
 
jBPM5 - Bringing more power to your business processes
jBPM5 - Bringing more power to your business processesjBPM5 - Bringing more power to your business processes
jBPM5 - Bringing more power to your business processes
 
Building trust within the organization, first steps towards DevOps
Building trust within the organization, first steps towards DevOpsBuilding trust within the organization, first steps towards DevOps
Building trust within the organization, first steps towards DevOps
 
jBPM Case Mgmt v7 Roadmap
jBPM Case Mgmt v7 RoadmapjBPM Case Mgmt v7 Roadmap
jBPM Case Mgmt v7 Roadmap
 
Launching Activiti v6 (Activiti Community Day Paris 2015)
Launching Activiti v6 (Activiti Community Day Paris 2015) Launching Activiti v6 (Activiti Community Day Paris 2015)
Launching Activiti v6 (Activiti Community Day Paris 2015)
 
Activiti v6 UI (Activiti Community Day Paris 2015)
 Activiti v6 UI (Activiti Community Day Paris 2015)  Activiti v6 UI (Activiti Community Day Paris 2015)
Activiti v6 UI (Activiti Community Day Paris 2015)
 
Trunk-Based Development and Toggling
Trunk-Based Development and TogglingTrunk-Based Development and Toggling
Trunk-Based Development and Toggling
 
Continuous integration / continuous delivery
Continuous integration / continuous deliveryContinuous integration / continuous delivery
Continuous integration / continuous delivery
 
JUDCon Berlin 2010 - practical enterprise java performance tuning
JUDCon Berlin 2010 -  practical enterprise java performance tuningJUDCon Berlin 2010 -  practical enterprise java performance tuning
JUDCon Berlin 2010 - practical enterprise java performance tuning
 
JudCon 2010 Berlin: Practical Enterprise Java Performance Tuning
JudCon 2010 Berlin: Practical Enterprise Java Performance TuningJudCon 2010 Berlin: Practical Enterprise Java Performance Tuning
JudCon 2010 Berlin: Practical Enterprise Java Performance Tuning
 
Ginsbourg.com presentation of open source performance validation
Ginsbourg.com presentation of open source performance validationGinsbourg.com presentation of open source performance validation
Ginsbourg.com presentation of open source performance validation
 

Similaire à Requirements Engineering - a tale from the trenches

Manish_rawal_Background_final3
Manish_rawal_Background_final3Manish_rawal_Background_final3
Manish_rawal_Background_final3
Manish Rawal
 
2014-02-13 eForms for Boston Life Sciences Summit
2014-02-13 eForms for Boston Life Sciences Summit2014-02-13 eForms for Boston Life Sciences Summit
2014-02-13 eForms for Boston Life Sciences Summit
Bob Meier
 
SPSRED - BCS, REST ans Subscriptions
SPSRED - BCS, REST ans SubscriptionsSPSRED - BCS, REST ans Subscriptions
SPSRED - BCS, REST ans Subscriptions
Chris Givens
 

Similaire à Requirements Engineering - a tale from the trenches (20)

A Journey from Hexagonal Architecture to Event Sourcing
A Journey from Hexagonal Architecture to Event SourcingA Journey from Hexagonal Architecture to Event Sourcing
A Journey from Hexagonal Architecture to Event Sourcing
 
Mainframe Application Testing both With and Without Live Data
Mainframe Application Testing both With and Without Live DataMainframe Application Testing both With and Without Live Data
Mainframe Application Testing both With and Without Live Data
 
Manish_rawal_Background_final3
Manish_rawal_Background_final3Manish_rawal_Background_final3
Manish_rawal_Background_final3
 
Manish Rawal Solution Architect
Manish Rawal Solution ArchitectManish Rawal Solution Architect
Manish Rawal Solution Architect
 
Nesma autumn conference 2015 - Is FPA a valuable addition to predictable agil...
Nesma autumn conference 2015 - Is FPA a valuable addition to predictable agil...Nesma autumn conference 2015 - Is FPA a valuable addition to predictable agil...
Nesma autumn conference 2015 - Is FPA a valuable addition to predictable agil...
 
2014-02-13 eForms for Boston Life Sciences Summit
2014-02-13 eForms for Boston Life Sciences Summit2014-02-13 eForms for Boston Life Sciences Summit
2014-02-13 eForms for Boston Life Sciences Summit
 
Bob Harnisch & Tim Koomen - Mixing Waterfall, Agile & Outsourcing at Dutch Ra...
Bob Harnisch & Tim Koomen - Mixing Waterfall, Agile & Outsourcing at Dutch Ra...Bob Harnisch & Tim Koomen - Mixing Waterfall, Agile & Outsourcing at Dutch Ra...
Bob Harnisch & Tim Koomen - Mixing Waterfall, Agile & Outsourcing at Dutch Ra...
 
Discover Your IT Career Path
Discover Your IT Career PathDiscover Your IT Career Path
Discover Your IT Career Path
 
Functional verification techniques EW16 session
Functional verification techniques  EW16 sessionFunctional verification techniques  EW16 session
Functional verification techniques EW16 session
 
agile constructsim overview
agile constructsim overviewagile constructsim overview
agile constructsim overview
 
IFS Metrix Service Management: An Overview
IFS Metrix Service Management: An OverviewIFS Metrix Service Management: An Overview
IFS Metrix Service Management: An Overview
 
Learn how SAP BusinessObjects is used at BEC and some of their challenges res...
Learn how SAP BusinessObjects is used at BEC and some of their challenges res...Learn how SAP BusinessObjects is used at BEC and some of their challenges res...
Learn how SAP BusinessObjects is used at BEC and some of their challenges res...
 
Workflow Hacks #1 - dots. Tokyo
Workflow Hacks #1 - dots. TokyoWorkflow Hacks #1 - dots. Tokyo
Workflow Hacks #1 - dots. Tokyo
 
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
SOA Mainframe Service Architecture and Enablement Practices Best and Worst Pr...
 
Automated Shop Floor Management at Hills Industries using RFgen
Automated Shop Floor Management at Hills Industries using RFgenAutomated Shop Floor Management at Hills Industries using RFgen
Automated Shop Floor Management at Hills Industries using RFgen
 
Oracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google AppsOracle Application Express as add-on for Google Apps
Oracle Application Express as add-on for Google Apps
 
OOSE Unit 2 PPT.ppt
OOSE Unit 2 PPT.pptOOSE Unit 2 PPT.ppt
OOSE Unit 2 PPT.ppt
 
SPSRED - BCS, REST ans Subscriptions
SPSRED - BCS, REST ans SubscriptionsSPSRED - BCS, REST ans Subscriptions
SPSRED - BCS, REST ans Subscriptions
 
IT NPI Process
IT NPI ProcessIT NPI Process
IT NPI Process
 
SQL Server Managing Test Data & Stress Testing January 2011
SQL Server Managing Test Data & Stress Testing January 2011SQL Server Managing Test Data & Stress Testing January 2011
SQL Server Managing Test Data & Stress Testing January 2011
 

Plus de Eric D. Schabell

OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
Eric D. Schabell
 
Observability For You and Me with OpenTelemetry (with demo)
Observability For You and Me with OpenTelemetry (with demo)Observability For You and Me with OpenTelemetry (with demo)
Observability For You and Me with OpenTelemetry (with demo)
Eric D. Schabell
 
Cloud Native Bedtime Stories - Terrifying Execs into Action
Cloud Native Bedtime Stories - Terrifying Execs into ActionCloud Native Bedtime Stories - Terrifying Execs into Action
Cloud Native Bedtime Stories - Terrifying Execs into Action
Eric D. Schabell
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 
Open Source 101 - Observability For You and Me with OpenTelemetry
Open Source 101 - Observability For You and Me with OpenTelemetryOpen Source 101 - Observability For You and Me with OpenTelemetry
Open Source 101 - Observability For You and Me with OpenTelemetry
Eric D. Schabell
 

Plus de Eric D. Schabell (20)

OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
Checking the pulse of your cloud native architecture
Checking the pulse of your cloud native architectureChecking the pulse of your cloud native architecture
Checking the pulse of your cloud native architecture
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data
 
Observability For You and Me with OpenTelemetry (with demo)
Observability For You and Me with OpenTelemetry (with demo)Observability For You and Me with OpenTelemetry (with demo)
Observability For You and Me with OpenTelemetry (with demo)
 
3 Pitfalls Everyone Should Avoid with Cloud Native Observability
3 Pitfalls Everyone Should Avoid with Cloud Native Observability3 Pitfalls Everyone Should Avoid with Cloud Native Observability
3 Pitfalls Everyone Should Avoid with Cloud Native Observability
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Roadmap to Becoming a CNCF Ambassador
Roadmap to Becoming a CNCF AmbassadorRoadmap to Becoming a CNCF Ambassador
Roadmap to Becoming a CNCF Ambassador
 
Cloud Native Bedtime Stories - Terrifying Execs into Action
Cloud Native Bedtime Stories - Terrifying Execs into ActionCloud Native Bedtime Stories - Terrifying Execs into Action
Cloud Native Bedtime Stories - Terrifying Execs into Action
 
SRECon EU 2023 - Three Phases to Better Observability Outcomes
SRECon EU 2023 - Three Phases to Better Observability OutcomesSRECon EU 2023 - Three Phases to Better Observability Outcomes
SRECon EU 2023 - Three Phases to Better Observability Outcomes
 
Optimizing Observability Spend: Metrics
Optimizing Observability Spend: MetricsOptimizing Observability Spend: Metrics
Optimizing Observability Spend: Metrics
 
Engaging Your Execs - Telling Great Observability Tales Inspiring Action
Engaging Your Execs - Telling Great Observability Tales Inspiring ActionEngaging Your Execs - Telling Great Observability Tales Inspiring Action
Engaging Your Execs - Telling Great Observability Tales Inspiring Action
 
WTF is SRE - Telling Effective Tales about Production
WTF is SRE - Telling Effective Tales about ProductionWTF is SRE - Telling Effective Tales about Production
WTF is SRE - Telling Effective Tales about Production
 
Optimizing Observability Spend: Metrics
Optimizing Observability Spend: MetricsOptimizing Observability Spend: Metrics
Optimizing Observability Spend: Metrics
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Open Source 101 - Observability For You and Me with OpenTelemetry
Open Source 101 - Observability For You and Me with OpenTelemetryOpen Source 101 - Observability For You and Me with OpenTelemetry
Open Source 101 - Observability For You and Me with OpenTelemetry
 
3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data3 Pitfalls Everyone Should Avoid with Cloud Data
3 Pitfalls Everyone Should Avoid with Cloud Data
 
3 Pitfalls Everyone Should Avoid with Cloud Native Data
3 Pitfalls Everyone Should Avoid with Cloud Native Data3 Pitfalls Everyone Should Avoid with Cloud Native Data
3 Pitfalls Everyone Should Avoid with Cloud Native Data
 
DZone webinar - Shift left Observability
DZone webinar - Shift left ObservabilityDZone webinar - Shift left Observability
DZone webinar - Shift left Observability
 
Storytelling - How to build and delivery a story
Storytelling - How to build and delivery a storyStorytelling - How to build and delivery a story
Storytelling - How to build and delivery a story
 
Shift left Observability
Shift left ObservabilityShift left Observability
Shift left Observability
 

Dernier

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Dernier (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Requirements Engineering - a tale from the trenches

  • 1. 1 Requirements Engineering: Report from the trenches Eric D. Schabell JBoss Technology Evangelist Radboud University Nijmegen, June 2013
  • 2. 2 Agenda • A perfect world • Reality intrudes • Real life example: STP Aanvragen – Introduction – Life in the trenches – Example: web service – Example: jBPM process • Building on legacy: STP Contract Rekeningen (Deposito's) – Use cases and legacy problems • Towards the future: STP Betalen – Use cases, getting better?
  • 3. 3 Up to now... The world is a pretty place: • Business rules • Use cases • Requirements • Workshops • etc...
  • 4. 4 How we like(d) to work Overview of the work flow (iterations): • Business workshops (IA) • Functional designs (FO), use cases -------------------------------------------------------------- • Use cases, more detailed (requirements) • Technical designs (TO) • Unit test + code
  • 5. 5 Agenda • A perfect world • Reality intrudes • Real life example: STP Aanvragen – Introduction – Life in the trenches – Example: web service – Example: jBPM process • Building on legacy: STP Contract Rekeningen (Deposito's) – Use cases and legacy problems • Towards the future: STP Betalen – Use cases, getting better?
  • 6. 6 Reality is a wake up call Sometimes there are other factors: • Business needs • Market changes (Crisis?) • Lack of personnel (quality / quantity) • Technical challenges • Planning problems
  • 7. 7 Agenda • A perfect world • Reality intrudes • Real life example: STP Aanvragen – Introduction – Life in the trenches – Example: web service – Example: jBPM process • Building on legacy: STP Contract Rekeningen (Deposito's) – Use cases and legacy problems • Towards the future: STP Betalen – Use cases, getting better?
  • 8. 8 All bets are off Can you be flexible in this environment? • Business workshops (4x) • FO is 92 page PowerPoint presentation • Use cases done by developers • Coding (minimal unit tests, no mock services framework) • TO done after or iterative during coding
  • 10. 10 What is going on: technically? A very fast time to market: • Challenging technical environment – JBoss jBPM – JBoss web services – Back-ends: KIS and SAS mainframe – Uitval application
  • 11. 11 What is going on: business? A very fast time to market: • Four new savings products – via internet channel – request processing max 2 days (STP degree) – Straight Through Processing (STP Aanvragen) – customer insisting on unrealistic deadlines
  • 12. 12 What is going on: process? A very fast time to market: • All banking issues and requirements remain – privacy – laws – security – validation – data access / manipulation
  • 13. 13 Life in the trenches In the trenches: • Receive task to implement functionality • Check FO (remember == ppt) • Extract use cases for task (discuss with IA) • Create TO • Write unit tests • Code implementation • Test it!
  • 14. 14 Example: web service Postcode validation: • Receive task, postcode validation • Check FO (remember == ppt), slide 24 • Extract use cases for task (discuss with IA), see example • Create TO, see SIC • Write unit tests, see SIC • Code implementation • Test it!
  • 15. 15 Functional Design (FO): slide 24 SNS XXXXXXXXXX Verplichte tegenrekening Internetbankieren of TIN code of softlogin SNS XXXXXXXXXXX Verplichte tegenrekening Internetbankieren of TIN code of softlogin SNS XXXXXXXXXX Verplichte tegenrekening Internetbankieren of TIN code of softlogin SNS XXXXXXXXXXXX Internetbankieren of TIN code of softlogin ...and the rest... “...postcodevalidatie: als postcode niet in ons table voorkomt dan uitval.”
  • 16. 16 Service Interface Contract Sequence diagram: sd Sequence am Cal ling Applicat ion / Service Betrokkenpartij Service KisContactAdapter KIS 1: findPostcode(PostcodeValidationSO) : PostcodeValidationSO 2: val idate(Po stcodeValidationSO) :PostcodeValidationSO 3: findAddress CityByPo stcodeHou seNum berAdapter(Postcode ValidationSO) :PostcodeValidationSO 4: SnsPostcode.getAddress Details(postcode , houseNumb er) :Jk isResult
  • 17. 17 Java anyone? /** {@inheritDoc} */ public PostcodeValidationSO findPostcode(PostcodeValidationSO postcodeSO) throws BetrokkenPartijServiceException { PostcodeValidationSO returnPostcodeValidationSO = new PostcodeValidationSO(); logStart(postcodeSO); try { validate(postcodeSO); } catch (ServiceValidationException e) { throw createBetrokkenPartijServiceException(e, Originator.SERVICES); } try { // call to KIS for postcode lookup. returnPostcodeValidationSO = KISContactAdapter.getInstance().findAddressCityByPostcodeHouseNumber(postcodeSO); if (returnPostcodeValidationSO == null || StringUtils.isEmpty(returnPostcodeValidationSO.address) || StringUtils.isEmpty(returnPostcodeValidationSO.city)) { // found invalid postcode, setup for returning an empty SO. returnPostcodeValidationSO.address = ""; returnPostcodeValidationSO.city = ""; } } catch (ServiceException e) { throw createBetrokkenPartijServiceException(e, Originator.KIS); } finally { // Do some logging at the end of the call. logEnd(returnPostcodeValidationSO); } return returnPostcodeValidationSO; }
  • 18. 18 Unit tests /** * Test for an invalid postcode. * Note: there is no backend mock for services, thus is integration test. */ public void testFindPostcodeInvalid() { // fill our invalid postcode service request object. postcodeSO.postcode = invalidPostcode; postcodeSO.houseNumber = invalidHouseNumber; try { PostcodeValidationSO so = bp.findPostcode(postcodeSO); // should be empty SO attributes. assertEquals(so.address, ""); assertEquals(so.city, ""); } catch (ServiceException e) { e.printStackTrace(); } }
  • 19. 19 Example: jBPM process Aanmaak product: • Receive task • Check FO (remember == ppt), outside scope • Extract use cases for task (discuss with IA), outside scope • Create TO, received from lead developer, iterative updates • Write unit tests, ha ha, that's a good one! • Code implementation • Test it, SOAPUI
  • 21. 21 Agenda • A perfect world • Reality intrudes • Real life example: STP Aanvragen – Introduction – Life in the trenches – Example: web service – Example: jBPM process • Building on legacy: STP Contract Rekeningen (Deposito's) – Use cases and legacy problems • Towards the future: STP Betalen – Use cases, getting better?
  • 22. 22 How we (now) like to work Overview of the work flow (iterations): • Business workshops (IA) • Functional designs (FO), set UC's & UCM -------------------------------------------------------------- • SW Architecture Document (SAD) • Use Case Realizations, more detailed (requirements). • Technical designs (SIC, components) • Unit test + code
  • 23. 23 STP Contractrekening use cases Some facts: • Actually have UC's! • Very technical • Never (still to this day) seen non-concept versions! • Legacy process decisions haunt implementation: – polling / scheduler growth (pre-processing, AI, Documentbewaking, saldo) – business logic in process layer, expanded with more... – reference project (jBPM) never applied == political / time pressures
  • 26. 26 Agenda • A perfect world • Reality intrudes • Real life example: STP Aanvragen – Introduction – Life in the trenches – Example: web service – Example: jBPM process • Building on legacy: STP Contract Rekeningen (Deposito's) – Use cases and legacy problems • Towards the future: STP Betalen – Use cases, getting better?
  • 27. 27 STP Betalen UCM / UC's Some facts: • 1x UCM, 10x UC's • 65 findings in team review (one team member): – object model in UCM! – 'boolean' appears 2x in UC's – instructs where data elements need to go – describes exact contents of data element to be stored – details system components as actors! – 2x technically impossible to implement process steps
  • 28. 28 STP Betalen optimized General product process: • Provides cost effective product platform • written May 2009, planned 2010
  • 29. 29 SNS Bank STP final report Current status: • UC's != final, business redefined requirements ½ way • Credit crisis caused some problems end 2009 • Published chapters (2x) and Silver Award! – follow on http://www.schabell.org (jBPM tag) – http://www.twitter.com/ericschabell