developerWorks article template using Microsoft Word Type of Submission: Title:

advertisement
Agile Approach in Data Intrinsic Development
developerWorks article template using
Microsoft Word
Type of Submission: Article
Title: Agile Approach in Data Intrinsic Development
Keywords: Agile Methodology, RUP
Topics:
Product Family: Rational
Products: Rational Unified Process
Skill Level: 1
Given: Dinesh
Family: Mohata
Job Title: Senor Consultant
Email: dinesh.mohata@in.ibm.com
Dinesh Mohata is a Senior Consultant in the Oracle Retail Practice within Distribution Sector.
The practice is responsible for providing project management, end to end services in retail
industry, and business solutions. Dinesh has over 9 years of IT & consulting experience in
software design, development, deployment and testing. He has retail industry experience of
over 5 years. Dinesh has played a role of Technical Architect.
His areas of interest include Agile Development Methodology, Design Patterns &
Implementation Data Cutover. He has earlier published a paper “Application Agility: A Design
Perspective” with Oracle. Dinesh can be reached at dinesh.mohata@in.ibm.com
Company: IBM India Private Limited
Photo filename: DineshMohata.jpg
Abstract:
This paper details out various Agile Software development methodologies like XP, SCRUM,
RUP etc. The second half of paper details out agile approach taken in one of the real life
projects. It covers the background of the project, approach taken, benefits gained, challenges
and conclusions. This paper will benefit the audience in providing varied perspective for agile
adoption. The tailoring done to the agile approach for data intrinsic development will definitely
provide users with some tips to take and may implement in their projects as well.
Page 1 of 13
Agile Approach in Data Intrinsic Development
Table of Contents
1.
2.
3.
4.
5.
6.
7.
8.
Introduction ............................................................................................................................. 3
Agile Software Development Methodologies .......................................................................... 3
2.1.
Extreme Programming (XP) ........................................................................................... 3
2.2.
SCRUM .......................................................................................................................... 4
2.3.
Agile Modeling (AM) ....................................................................................................... 5
2.4.
Agile Data (AD) .............................................................................................................. 5
2.5.
Rational Unified Process (RUP) ..................................................................................... 5
2.6.
Open Unified Process (OUP) ......................................................................................... 5
Agile Approach ........................................................................................................................ 5
Case Study: Traditional to Agile Approach in Data Intrinsic Development ............................. 6
Benefits Gained .................................................................................................................... 12
Challenges ............................................................................................................................ 12
Conclusion ............................................................................................................................ 12
References ............................................................................................................................ 13
Page 2 of 13
Agile Approach in Data Intrinsic Development
1. Introduction
Agile software development challenges traditional software development approaches. Rapidly
changing environments characterized by evolving requirements and tight schedules require
software developers to take an agile approach. These methods include practices such as short
iterations, frequent releases, simple and emerging design, peer review, and on-site customer
participation.
Traditional software development methodologies (SDMs), also referred to as software
development processes, are being replaced by light or agile SDMs. Agile SDMs are characterized
by iterative development, continuous code integration, and the ability to handle changing
business requirements [1].
Extreme Programming (XP) is the most well-known agile methodology. XP is based on a series of
concepts that include: having the business customer on-site, pair programming, collective code
ownership, continuous code integration, small releases, designing tests before writing code,
standup meetings, refactoring, and 40-hour work weeks [2].
Disciplined agile software delivery processes are Dynamic System Development Method (DSDM),
Open Unified Process (OpenUP), and agile instantiations of the IBM Rational Unified Process
(RUP) process framework. All of these methodologies function differently from traditional SDMs
and help organizations meet the challenges of the digital economy [1].
This paper covers the background of the project, approach taken, benefits gained, challenges
and conclusions.
2. Agile Software Development Methodologies
Agile methodologies are used to produce higher quality software in a shorter period of time. Agile
methodologies were developed to streamline the development process and remove barriers to
accepting business requirement changes during the development process. Agile methodologies
do not require that business requirements and design details be locked in for the duration of
development [3]. Agile SDMs share several features including prototyping, iterative development,
and minimal documentation [4].
2.1.
Extreme Programming (XP)
XP is a collection of practices for software construction, include refactoring, test-first design, pair
programming, on-site-customer, continuous integration, whole team, and collective ownership.
XP Practices
o
Test driven development:
o Focusing on Thinking about what the code should do before doing
 High Quality and defect minimization
– Regression test baseline
– Create confidence in development team
o Refactoring:
Page 3 of 13
Agile Approach in Data Intrinsic Development
o
o
2.2.
– Improve quality, reducing code entropy
– Re-organize design, to lessen the cost of change
Simple Design:
– Avoid paying the cost of potentially useful, but not business critical
feature.
– The design evolves according to client business requirements
Pair Programming
– High Quality standards through constant Code Review
– Cross Training of the whole team
SCRUM
The focus of Scrum is project leadership and requirements management. Scrum proponents
claim that it is a process framework, but if so then it is a sparse and incomplete one at best. A
more accurate description is that it is a high-level lifecycle for construction iterations (what Scrum
calls “sprints”), see Figure 1, and several practices such as daily stand-up “Scrum” meeting,
product owner, product backlog, iteration/sprint planning, and potentially shippable software.
Figure 1 Scrum Construction Lifecycle
alt=Agile lifecycle as used in SCRUM
The above figure has been referenced from http://www.ambysoft.com/essays/agileLifecycle.html
Scrum Approach

Accept:
Page 4 of 13
Agile Approach in Data Intrinsic Development
o
o
This is a complicated, unpredictable world and development environment.
You can't predict or definitively plan what you will deliver, when you will deliver it,
and what the quality and cost will be.

Assume:
o You can estimate, and then negotiate according to various risks as you proceed.

Understand:
o Following any cookbook approach won't improve the definition of "best", and will
only hinder appropriate responsiveness to the complexity and unpredictability.
o the delivery will be the best possible given the circumstances
The above Scrum Approach content has been referenced from http://www.controlchaos.com/oldsite/philo.htm
For implementing scrum visit www.implementingscrum.com for further details.
2.3.
Agile Modeling (AM)
AM is a collection of practices for light-weight modeling and documentation, including
requirements envisioning, executable specifications, active stakeholder participation, prioritized
requirements, and prove it with code. See www.agilemodeling.com for details.
2.4.
Agile Data (AD)
AD is a collection of practices for database development, including agile data modeling, database
testing, database refactoring, and continuous database integration. See www.agiledata.org for
details.
2.5.
Rational Unified Process (RUP)
RUP is a comprehensive process framework for iterative software delivery which can be
instantiated anywhere from a very agile form to a very traditional form as your situation warrants
[6]. RUP practices include risk-value lifecycle, whole team, test-driven development (TDD), and
business process. See http://www-01.ibm.com/software/awdtools/rup for details.
2.6.
Open Unified Process (OUP)
OpenUP combines and extends practices from Scrum, XP, AM and RUP for co-located agile
teams which are building business applications. OpenUP practices include whole team, daily
standup meeting, prioritized work items, risk-driven lifecycle, TDD, active stakeholder
participation, and continuous integration. See www.eclipse.org for details.
3. Agile Approach
Agile Approach has to be tailored to the needs of the project one is working upon. Agile process
adopted in this project was culmination of various precepts pronounced in various agile SDMs.
Page 5 of 13
Agile Approach in Data Intrinsic Development
Various precepts applied in the current work with respected to Agile SDM were as follows:










Requirements Envisioning
Redefining Stake Holder Participation
Incorporation of Late Requirements
Work Prioritization
Continuous Integration
Pair Programming
Refactoring
Cross Training of whole team
Applying TDD
Technical Excellence
The above approach is explained in detail with all due examples in the subsequent case study
section of this paper.
4. Case Study: Traditional to Agile Approach in Data
Intrinsic Development
A retailing client made their first foray into ERP implementation by implementing Oracle packaged
solution a.k.a. Oracle Retail. This program has been aimed to implement various modules of
Oracle Retail suite formerly called Retek. Oracle Retail Suite will form the technological backbone
of their retail venture. The process of this retailer is quite ad-hoc in nature. The IT infrastructure
required to make this has to be robust and scalable to meet the dynamic changing requirements
for the customer. This project will transform and streamline the business and IT processes for this
retailer in lines with world class best practices in Retail industry
Retail is all about business agility. Requirements change on the fly. To beat the competition
retailer has to change the dynamics of its organization at rapid pace. This requires systems and
processes to be agile. IT has to be an enabler for this happen. This in turn requires IT systems to
follow sound agile process to deliver value to the customer in the minimum time possible. Retail
being highly margin sensitive area retailer has to capture lot of data to optimize its pricing engine
to get the best value to the customer and in turn protect its margins. This requires huge data
churning within the retail organization. This required defining and proving the agile processes
work in packaged implementation. Moreover, the sound agile processes adopted during the
implementation will become the sound backbone for the retailer for future.
This section details about the various facets of agile software development applied for this retailer.
The tenets of agile development have been picked and experience around this has been penned
down in the paragraphs below.
Requirements Envisioning
Ascendant Methodology was adopted to do requirements envisioning. During inception of the
project a high-level requirements modeling was done to understand the scope and identify the
initial stack of requirements. This project being a packaged implementation, it was critical to
understand the fitment of the customer requirements with the product. Any deviations were duly
captured and communicated to the customer as gap. This also made the implementation team
aware of the gaps coming forward beforehand and just in time.
Page 6 of 13
Agile Approach in Data Intrinsic Development
Redefining Stakeholder Participation
Agile approach in traditional environment is really tough. People are not willing to understand the
agile approach as such. Customer is not fully aware of the approach and has no willingness to
here it as well. Approach taken was internally we will satisfy our customer i.e. functional
consultants using agile approach. Agile approach was to internal customers of the project team.
Stake holder for the development team is the internal teams which certify the product before
releasing to the external stakeholder.
Incorporation of Late Requirements
Initial requirements were prototyped. The design was envisaged keeping in mind the changes
coming late in the project to be incorporated. Each report was driven by an Oracle Database View.
Report were predefined by customer in ms excel templates. These templates were uploaded in
the database. Any additional column required a change in template and subsequent upload a
CLOB database object type. Since each report was based of database view it was just matter of
adding the additional column in the view from the table already in use in the view definition.
Work Prioritization
Changing the stakeholder definition to internal customer helped team to prioritize the work. Entire
team was co-located and any suggestions on work priority were discussed right at the moment to
decide team’s future course of action. Real stakeholders were intimated on the details of the work
scheduled for the team. Communication to real stakeholders was done only after having internal
stakeholder approval.
Continuous Integration
Continuous integration was key approaches adopted in the data intrinsic development. In all the
instances the code was deployed based on few iterations of develop, build and test cycle. The
development was done based on requirements provided by the customer. The requirements were
then prioritized. Based in these prioritizations the development would work with iterations of
development. The end product was continuously integrated with the bigger system to ensue this
integration does not break the larger system. This resulted in smooth transition during the
movement of products in production environment.
There was an instance wherein application was developed in the corporate environment using
intranet network. This application was supposed to be deployed at a remote location for the
customer. This application was working perfectly fine when the server was accessed using the
local area network (LAN). But application just was not working when deployed in the remote
location. The connectivity to the server was not appropriate for certain protocols required in the
application. This was a serious issue since without opening up this protocol in all the routers to
server this application wouldn’t work. Design was re-organized to attain this in two step process.
This design was also thought through with customer in mind. The process using the protocol was
replaced with a two step process. The first step was making a direct database entry of the data to
be transported from local client to the server. The second step was creation of the file at the
server side using database server file utilities. These two steps isolated the protocol error
occurring in the application. Cost of change was quite less since this kept the other steps in the
application intact and re-designed a portion of the application process.
During the one of the demonstrations of the code developed during the project the agile approach
was quite handy. Two team members from the team were executing the demonstration to the
Page 7 of 13
Agile Approach in Data Intrinsic Development
customer. One of programmers was displaying the features of the code and performing the initial
tests for the customer on the developed application. This demonstrator was connected to the
projector for the entire audience. Another programmer was sitting just beside and noting the
comments of the audience. There was couple of enhancements requested by the customer
during this session. While the first demonstrator was demonstrating the application, the second
developed already coded these new features in the code and deployed the same code during the
recess break of the session. Post the recess break once more the application walkthrough was
conducted. This walkthrough resulted a huge success maximum of changes requested by the
customer was successfully implemented and demonstrated within a very short duration.
Pair Programming
There was instance in the project were in we had to deploy an unknown application. This
definitely required some initial training to get the job done. Customer arranged for online CBT
training but this did not help. We did form a two member team to get the job done. There was one
programmer doing the typing effort and another person religiously followed the application
deployment guideline to guide the typist. This combined development effort paid off and we were
successfully able to implement the application in very short duration. As a side note I would
emphasize that this required good resources with a good attitude to get the job done.
Cross Training of whole team
All the members in the team were provided an opportunity to work within other modules of the
project. The whole team was collocated in a single venue. Team sitting in a single location
actually helped in various ways. Discussions between team members of various modules by and
large happened in the same room. This resulted in each and every individual having a fair amount
of idea on each module being implemented. As in IBM servers, it applies to humans as well. Not
all the time each individual is fully engaged. IBM virtualization concept utilizes spare processing
power from servers in the stack which are not in use. Applying the same concept in the colocated, it helped in filling any immediate requirement from a module which would require some
extra effort for any dynamic requirement. This in turn also gave some amount of knowledge to the
cross team member who approached to solve the issue.
Applying Test Driven Development
TEST DRIVEN DEVELOPMENT (TDD) LIFE CYCLE
The below diagram explains the TDD process lifecycle.
Figure 2 Test Driven Development
Page 8 of 13
Agile Approach in Data Intrinsic Development
ADD A TEST
Pass
RUN ALL TESTS
Fail
WRITE/REFACTOR CODE
Pass
Fail
RUN THE TEST
alt=Test Driven Development Lifecycle
The above content has been referenced from http://www.agiledata.org/essays/tdd.html
Add a test
In test-driven development, each new feature begins with writing a test. This test must inevitably
fail because it is written before the feature has been implemented. In order to write a test, the
developer must understand the specification and the requirements of the feature clearly. In all
the developments developer was provided with use cases and stories to cover requirements and
exception condition. This made developers aware of the requirement before writing the code.
Page 9 of 13
Agile Approach in Data Intrinsic Development
An instance of test in current scenario wherein a development of Retail application for financial
accounting was developed. User story of this application was beforehand given to the developer.
The requirement was to develop application that sends data on daily basis of certain attributes
and thereafter updation of flag at the subsriber end. The test condition was written by the
developer stating the attributes of the database required to pull the data from. If any of the
columns required fo certain table does not exist then this test condition will fail. The code had to
be rewritten to take the appropriate column from the table for the test to pass.
Run all tests and see if the new one fails
This validates that the test harness is working correctly and that the new test does not mistakenly
pass without requiring any new code.
The new test should also fail for the expected reason. This step tests the test itself, in the
negative: it rules out the possibility that the new test will always pass, and therefore be worthless.
Write some code
The next step is to write some code that will cause the test to pass. The new code written at this
stage will not be perfect and may, for example, pass the test in an inelegant way. That is
acceptable because later steps will improve and hone it.
It is important that the code written is only designed to pass the test; no further (and therefore
untested) functionality should be predicted and 'allowed for' at any stage.
Run the automated tests and see them succeed
If all test cases now pass, the developer can be confident that the code meets all the tested
requirements. This is a good point from which to begin the final step of the cycle.
Refactor code
Now the code can be cleaned up as necessary. By re-running the test cases, the developer can
be confident that refactoring is not damaging any existing functionality. The concept of removing
duplication is an important aspect of any software design. In this case, however, it also applies to
removing any duplication between the test code and the production code.
Repeat
Starting with another new test, the cycle is then repeated to push forward the functionality. The
size of the steps can be as small as the developer likes, or get larger if s/he feels more confident.
If the code written to satisfy a test does not fairly quickly do so, then the step-size may have been
too big, and maybe the smaller testable steps should be used instead.
The first step is to quickly add a test, basically just enough code to fail. Next you run your tests,
often the complete test suite although for sake of speed you may decide to run only a subset, to
ensure that the new test does in fact fail. You then update your functional code to make it pass
the new tests. The fourth step is to run your tests again. If they fail you need to update your
functional code and retest. Once the tests pass the next step is to start over (you may first need
to refactor any duplication out of your design as needed, turning TFD into TDD).
I like to describe TDD with this simple formula:
Page 10 of 13
Agile Approach in Data Intrinsic Development
TDD = Refactoring + TFD. [5]
The above content has been referenced from http://www.agiledata.org/essays/tdd.html
This Test Driven Development approach was followed across on new developments done in the
project.
Technical Excellence
Customer had proposed for development of 16 reports as part of SOW at an implementation
project at a large India based retailer. Since the reports were not classified for its complexity the
customer proposed very complex reports for development.
The challenges for the report development
1. Each report was culmination of three to four medium complex reports
2. Excel output was required for the reports which was not in purview of development
effort/methodology
3. Huge Technical Challenges
Based on the requirements the report development was started developing the skeleton or
framework for one of the reports. Brainstorming was conducted on technical challenges of the
report and work for the same started. The working report was ready in a day. There were issues
of performance in the report as far as the data display in the screen was considered. The data
was displayed in the spreadsheet on a cell by cell basis. Oracle’s Webutil technology was
leveraged to write data in the excel sheet.
Following steps were taken to foresee any bottlenecks and combat well in advance

Since each report was based on a database view, SQL tuning the underlying view
database query was indispensable.

Server Statistics report collected in daily basis check the server health and apply
appropriate check if necessary

Database performance was continuously monitored by modifying database parameters

Collecting the data base statistics reports.

Each SQL session and application session was traced. Oracle database utilities were
used to analyze the performance impact of session parameters
This approach of continuous integration and collective ownership as a team was adopted to
benchmark the technical approach in an agile way.
Page 11 of 13
Agile Approach in Data Intrinsic Development
5. Benefits Gained
By following the agile-tional approach to software development for data intrinsic development
following was gained

















Design and Build of reports were prototyped resulting in creation of working software
before discussing requirements further with customer
Effort spent on creating this working software was restricted to two days only
New alternatives/suggestions were advised to customer on first meeting itself
Realistic expectations were set for the customer from day one based on the technical
limitations of the development
Functional fitment done well in advance because of requirements envisioning
Ability to take any additional touch-ups on the code as along as the framework of the
development does not change
Customer was very satisfied on the approach of creating prototype in initial phase
Requirements late in the project were easily incorporated
The working reports were used by the customer for extensive data analysis from their
end.
They used the reports to further verify the data in their system
On the fly change during presentation using Pair Demo as part of continuous integration
was just excellent and was highly appreciated by the customer
Pair Programming resulted in huge customer satisfaction
Quick Results
High Quality standards were set through refactoring codes
Good Clean code that works
Agility in the Software development process
Huge confidence in the development team
6. Challenges
There were many challenges faced in journey of applying agile-tional approach to development





It was difficult to make team agree on the agile approach since the school of thought
was more towards waterfall model
Getting the buy in from the Project Management was tough and hence workaround
stakeholder idea was devised
Technical Challenge of publishing an excel report from Oracle 10g server
Performance of the reports in general and this was dealt with continuous monitoring
of database and application
Regression Testing of deliverable upon incorporating late feedback
7. Conclusion
Software development can be done in agile way bringing delight to the customer as an end result.
It provided quick turnaround time to deliver quality product to the customer. Willingness from the
all stakeholders is indispensable for successful agile methodology implementation. Requirements
late in the game can also be incorporated with agile SDM. Customer is fully aware of the end
product getting delivered to him.
Page 12 of 13
Agile Approach in Data Intrinsic Development
Agility is more of perspective. It’s really just a mindset. It’s about adaptability to changing
business requirements. Based on the points highlighted in this paper, and supporting points given,
it could be very well stated that agile SDM can be adopted in an organization whilst providing
huge benefits and requiring few cultural changes that will greatly impact the implementation.
8. References
1. Boehm, B. & Turner, R. Management challenges to implement agile processes in traditional
development organizations. IEEE Software. 22(5), 30-40. 2005.
2. Theunissen, W., Boake, A., & Kourie, D. In search of the sweet spot: Agile open collaborative
corporate software development. Proceedings of the 2005 Annual Research Conference of
the South African Institute of Computer Scientists and information Technologists on IT
Research in Developing Countries. White River, South Africa. 268-277.
3. Lindstrom, L. & Jeffries, R. Extreme programming and agile software development
methodologies. Information Systems Management. 21(13), 41-53. 2005.
4. Holmstrom, H., Fitzgerald, B., Agerfalk, P., & Conchuir, E. Agile practices reduce distance in
global software development. Information Systems Development. 23(3), 7-18. 2006.
5. Agile Database Techniques by Scott Ambler
6. Kroll, P. and MacIsaac, B. (2006). Agility and Discipline Made Easy: Practices from OpenUP
and RUP. Boston: Addison-Wesley
Page 13 of 13
Download