Re: is XP adapted for Business Intelligence applications
"Phlip" <[email protected]> Sat, 2 Jan 2010 11:36:24 -0800
| Newsgroups | gmane.comp.programming.extreme-programming,gmane.comp.programming.test-first-user-interfaces |
|---|---|
| Message-ID | <[email protected]> |
> loicmidy wrote:
> I work at the french institute of statistics (INSEE). We are going to try
> agile processes (I think a mix of SCRUM and XP).
XP _is_ a mix of Scrum and XP. Scrum is the "planning game" and "user
stories" aspect of XP. They are the concept that programmers should work on
one small feature at a time, and do features in order of business priority.
> Like most firms we have OnLine Transactional Processing (OLTP)
> applications and we also have Decision Support System (DSS) (or Business
> Intelligence)applications.
> for the OLTP applications we have mainly J2EE applications with struts 2
> and hibernate. In this context the programmation is OOP. I see clearly how
> to do XP and we know the toolkits (Junit, Dbunit, easyMock and so on).
It sounds like you don't have unit tests yet. Some frameworks make them
hard, so you should schedule an "engineering task" to write some example
unit tests for each of those layers
> for the DSS applications I don't see how to do XP.
> for example we are doing the developpment of an application with a lot of
> statisticals calculus and with a lot of data agregations in batch mode.
> the data is in an oracle database with a star schema.
You need a "customer test" system, also called "behavior driven development"
these days. Consider the table at the end of this:
http://c2.com/cgi/wiki?MoreliaViridis
Scenario: orders above $100.00 to the continental US get free
ground shipping
When we send an order totaling $<total>, with a 12345 SKU,
to our warehouse
And the order will ship to <destination>
Then the ground shipping cost is $<cost>
And <rapid> delivery might be available
| total | destination | cost | rapid |
| 101.00 | Rhode Island | 0.00 | yes |
| 99.00 | Kansas | 8.25 | yes |
| 101.00 | Kansas | 0.00 | yes |
| 99.00 | Hawaii | 8.25 | yes |
| 101.00 | Hawaii | 8.25 | yes |
| 101.00 | Alaska | 8.25 | yes |
| 99.00 | Ontario, Canada | 40.00 | no |
| 99.00 | Brisbane, Australia | 55.00 | no |
| 99.00 | London, United Kingdom | 55.00 | no |
| 99.00 | Kuantan, Malaysia | 55.00 | no |
| 101.00 | Tierra del Fuego | 55.00 | no |
(Apologies for the wretched word-wrap there!)The top part is a test
specification with insertable data. The bottom part means "re-run that test
case for each of these records, with these values copied in.
In the case of Morelia, you attach that to a Python back-end by writing
"steps" into a test suite; each documented with the regular expression that
matches one of those lines starting with Given, When, And, etc:
def step_the_order_will_ship_to_(self, location):
r'the order will ship to (.*)'
self.order.ship_state = location
self.order.save()
(Subsequent steps will run in the same test case instance, so they all see
each other's self. variables.)
Java has a system like this, called FIT.
> we are going to do the batch using only SQL scripts. those scripts will be
> wrapped together with java or PL SQL. So the programmaing is NOT OOP.
If you attach a table-runner, like mine (except it's in the wrong
language!), to your unit tests, they can then copy those data into the
database and call those SQL proceduces.
So to test huge blocks of data, you essentially add an "alternative user
interface" for that data, so your "onsite customers" can review and augment
those data without running the end-users interface over and over again,
entering each data item.
And neither XP nor TDD requires OOP!
--
Phlip
http://twitter.com/Pen_Bird