User:Dmattox1111/sandbox

As Emma and Nathaniel have already touched on the benefits of the OOP nature of Java and C# in helping with Agile Development, I thought I would expand the question a bit and discuss tool-sets which promote agility.

Automated Testing
Automated testing is essential for non-trivial Agile Development.“[Automated testing] not only acts as a safety net against regressions caused by new development, but more importantly frees up a lot of precious developer and tester time - allowing them to focus on the things they do best.”

Unit testing should be considered a core and fundamental activity for software development. Google recommends to its teams for the majority of test cases to be unit test (small tests). "The general rule of thumb is to start with a rule of 70/20/10: 70 percent of tests should be small, 20 percent medium, and 10 percent large."

JUnit is a unit testing framework available for Java development. It allows developers to quickly define unit test cases for the code they are developing and then to run at-will. Having a unit test suite available helps to reduce the risk of refactoring and also allows build automation validation to ensure code checked-in is not regressing.

In addition to JUnit, there are a number of tools available which support test automation from a user or end-to-end perspective. For web development, Selenium is a popular web testing automation toolset. "Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby. The tests can then be run against most modern web browsers. Selenium deploys on Windows, Linux, and Macintosh platforms. It is open-source software, released under the Apache 2.0 license, and can be downloaded and used without charge."

Automated Build Environment/Continuous Integration
With the iterative approach of Agile Development, having the ability to automate the build process is an important time saving process. Additionally, automating the build process helps ensure reliability and reproducibility throughout the development life cycle.

Jenkins/Hudson is an open source continuous integration tool popular for Java development. It is known for being very easy to setup while providing great flexibility for the development team.

Code Quality Management
With continued development, software faces increasing technical debt unless kept in check by the development team. To assist with monitoring and enforcement, SonarQube is a popular open source Code Quality Management Tool for Java and other lanaguages. This tool provides near real-time feedback of:
 * Technical debt
 * Static code analysis
 * Unit test coverage
 * Documentation and comment metrics
 * Duplicate code
 * Code complexity analysis