Agile Integration with Enterprise

Agile by definition is an iterative and incremental approach to software development which is performed in a highly collaborative manner by self-organizing teams within an effective governance framework with enough ceremony that produces high quality software in a cost effective and timely manner which meets the changing needs of its stakeholders.

Agile methodologies share much of the same philosophy, practices and characteristics. But from the way each of them is implemented they have their own recipe of practices and terminology. Agile basically promotes iterative development, teamwork, collaboration and process adaptability throughout the life-cycle.

Iterations are short time boxes that last from one to four weeks. The goal is to ensure the application is ready to be deployed at the end of the iteration however it might not always be true in most organizations. The production readiness happens at the end of last iteration for the planned release in most of the scenarios especially involving multiple teams as the integration need to happen as well which is especially true for the shorter iteration cycles of one to two weeks.

I have listed below some of the most commonly used methodologies; however there are others that are available.
• Scrum
• Extreme Programming (XP)
• Feature-Driven Development (FDD)
• Lean Software Development

Scrum
Scrum is a lightweight management framework with broad applicability for managing and controlling iterative and incremental projects of all types. Over the last couple of years in particular, Scrum has garnered increasing popularity in the software community due to its simplicity, proven productivity, and ability to act as a wrapper for various engineering practices promoted by other Agile methodologies.

In Scrum, the "Product Owner" works closely with the team to identify and prioritize system functionality in form of a "Product Backlog". The Product Backlog consists of features, bug fixes, non-functional requirements, etc. - whatever needs to be done in order to successfully deliver a working software system. With priorities driven by the Product Owner, cross-functional teams estimate and sign-up to deliver "potentially shippable increments" of software during successive Sprints, typically lasting 30 days. Once a Sprint's Product Backlog is committed, no additional functionality can be added to the Sprint except by the team. Once a Sprint has been delivered, the Product Backlog is analyzed and reprioritized, if necessary, and the next set of functionality is selected for the next Sprint.

We have used a hybrid version of Scrum integrating with the waterfall model enterprise level program since other teams were not following agile. We split into Agile phase once we get into the design, while other teams were still designing we were able to develop and show it to business how the components look.

Testing Approach
Test First
Test as early as possible during the construction iteration
Test Often
Test as often as possible and as effectively as possible to reduce defects
Test Coverage
Test appropriately for the business flows do not over test

Development Tools Used
• IBM RAD7.5 for development
• Cruise Control for continuous integration
• Findbugs to check the code quality
• Version1 for managing the stories
• Telelogic change synergy to log the defects
• Quality Center for maintaining the test scripts
• QTP for executing the automated regression script

Cruise control and FindBugs were integrated as part of the build process. Cruise control was used for continuous integration which helped to ensure no issues with compilation of the checked in code. We did get some false positives using Findbugs but it did find some potential issues that were overlooked in the code. . We also used a diff tool to compare the last build files with the current build files as we move into the last two weeks of coding. This is shared with the test teams to help them come up with the test strategy very useful during the last weeks of the release.

Learn more at http://www.controlchaos.com/about/

Extreme Programming (XP)
XP has emerged as one of the most popular and controversial Agile methods. XP is a disciplined approach to delivering high-quality software quickly and continuously. It promotes high stake holder involvement with rapid feedback loops, continuous testing, continuous planning, and close teamwork to deliver working software at very frequent intervals, typically every 1-3 weeks.

The recipe for XP is based on simplicity, communication, feedback, and courage – and following supporting practices:
1. Planning Game
2. Small Releases
3. Customer Acceptance Tests
4. Simple Design
5. Test-Driven Development
6. Refactoring
7. Continuous Integration
8. Collective Code Ownership
9. Coding Standards
10. Metaphor
11. Sustainable Pace

In XP, the Stake holders works very closely with the development team to define and prioritize granular units of functionality referred to as Stories. The development team than estimates, plans, and delivers the stories based on business priorities in the form of working, tested software on an iteration by iteration basis. In order to increase the productivity the practices provide a supportive, lightweight framework to guide a team and ensure high-quality software.
Learn more at http://www.extremeprogramming.org/

Feature-Driven Development
FDD is a model-driven and short-iteration process. It begins with establishing an overall model shape. Then it continues with a series of two-week design by feature, build by feature iterations. The features are small, "useful in the eyes of the customer" results. FDD designs the rest of the development process around feature delivery using the following practices:
1. Domain Object Modeling
2. Developing by Feature
3. Component/Class Ownership
4. Feature Teams
5. Inspections
6. Configuration Management
7. Regular Builds
8. Visibility of progress and results

FDD recommends specific programmer practices such as "Regular Builds" and "Component/Class Ownership". FDD's proponents claim that it scales more straightforwardly than other approaches, and is better suited to larger teams. Unlike other Agile approaches, FDD describes specific, very short phases of work which are to be accomplished separately per feature. These include Domain Walkthrough, Design, Design Inspection, Code, Code Inspection, and Promote to Build.

Lean Software Development
Lean Software Development owes much of its principles and practices to the Lean Enterprise movement, and the practices of companies like Toyota manufacturing units. Lean Software Development focuses the team on delivering Value to the customer, and on the efficiency of the "Value Stream," the mechanisms that deliver that Value. The main principles of Lean include:
1. Eliminating Waste
2. Amplifying Learning
3. Deciding as Late as Possible
4. Delivering as Fast as Possible
5. Empowering the Team
6. Building Integrity In
7. Seeing the Whole

Lean eliminates waste through such practices as selecting only the truly valuable features for a system, prioritizing those selected, and delivering them in small batches. It emphasizes the speed and efficiency of development workflow, and relies on rapid and reliable feedback between programmers and customers.

Lean uses the idea of work product being "pulled" via customer request. It focuses decision-making authority and ability on individuals and small teams, since research shows this to be faster and more efficient than hierarchical flow of control. Lean also concentrates on the efficiency of the use of team resources, trying to ensure that everyone is productive as much of the time as possible. So it concentrates on concurrent work, and the fewest possible intra-team workflow dependencies. Lean also strongly recommends that automated unit tests be written at the same time the code is written.

Benefits Of Agile
• Risk Mitigation
- Early Integration
- Providing the results sooner
• Increased responsiveness, ability to change or adjust course based on learning from the first few iterations
• Early and continuous delivery of valuable software
• Increased Testing Velocity: Early and continuous testing results in defects getting identified earlier, which reduces the cost of quality, accelerates cycle times and enables the delivery of a deployable solution earlier than otherwise possible

Comments

Popular posts from this blog

Navigating the College Application Labyrinth: A Parent's Journal from Junior Year

Empowering Sales Excellence: Gen AI-Driven Sales Call Planning

ATG Repository Exception | ORA-29861: domain index is marked LOADING/FAILED/UNUSABLE