What is Agile Java?
Agile Java weaves Master Java 5.0, object-oriented design, and Test-Driven
Development (TDD) into a single coherent approach to building professional, robust
software systems. Java and Test-Driven Development integrate throughout the entire
development lifecycle; helping you leverage today’s fastest, most efficient
development techniques from the very outset.
What’s agile methodology?
One of the fundamental tenets of any agile software methodology is the importance of
communication between the various people involved in software development.
Furthermore agile methods put a large premium on improving communication
through face-to-face communication. As the agile manifesto states "The most efficient
and effective method of conveying information to and within a development team is
face-to-face conversation." Extreme Programming emphasizes this with its practice of
a single open development space where the team can work closely together.
Why Agile Methodology?
An agile software development team can add features in any order and can release a
working version of the product at any iteration. The ability to release a version of the
product at each iteration also makes the developers far better software engineers.
Issues such as integration and installation that previously were deferred to the end of a
project must now be addressed consistently throughout the entire development
lifecycle. Software built in this manner is of consistently higher quality
Why TDD?
Test-driven development (TDD) is a programming technique heavily emphasized in
Extreme Programming. Essentially the technique involves writing your tests first then
implementing the code to make them pass. The goal of TDD is to achieve rapid
feedback and implements the "illustrate the main line" approach to constructing a
program. This TDD-centered approach doesn't just lead to better code: it provides
powerful feedback that will help you learn Java far more rapidly. The use of TDD as a
learning mechanism is a landmark departure from conventional teaching techniques.
How do I Start Coding Agile java?
Agile java can be achieved by building a team that’s competent of developing
software using tools that support Extreme Programming i.e. Agile Tools .
What are agile tools?
Exactor Framework:
An Acceptance Test Framework for use in a Java based environment. A framework
for creating automated acceptance tests, this tool acts as a layer of verification on top
of unit testing, and a benchmark from which project completion can be measured.
Mainly used within an Agile environment, Exactor supports web and desktop (SWT)
applications and is easily extended to support other application. The framework is
built on top of parts of JUnit and utilises JWebUnit.
IntelliJ
A State of the Art Java Development Environment with some of the most advanced
support tools available. Built with Agile developers in mind, this IDE can actively
increase development time by minimizing the time needed for repetitive or often-
unneeded tasks, as well as utilising an extremely advanced toolset for refactoring,
Testing and Integration.
MySQL
MySQL is a full fledged Relational Database Management System.
NSIS
NSIS is a state of the art tool for creating installation scripts for Windows
applications. Using the extensive scripting language, you can not only put the
software in the right directory but also create shortcuts on the desktop, modify registry
entries and create the uninstall utility.
OpenSTA (Open System Testing Architecture)
OpenSTA is a tool for capturing usage-scenarios of web-applications and using this
scenarios for stress testing these web-applications. The test-results are displayed in
both reports and graphs. It runs on the Windows-platform. More info can be found on
http://www.opensta.org.
SAME
Same is a small java-application that gives you the ability to spot identical
lines/sections across selected files or all files in your codebase. This way it helps to
identify duplicated code.
SourceMonitor
With SourceMonitor you can easily monitor the health of your codebase by
periodically creating a snapshot of metrics of your codebase. It supports all major
languages as Java, Delphi, C#, C/C++, VisualBasic, HTML. The metrics can be
graphed over time. SourceMonitor is a Windows application.
Other Tools and IDE’s
DBUnit - Unit testing against a database
DbUnit is a JUnit extension (also usable with Ant) targeted for database driven
projects that, among other things, puts your database into a known state between test
runs. This is an excellent way to avoid the myriad of problems that can occur when
one test case corrupts the database and causes subsequent tests to fail or exacerbate
the damage. DbUnit has the ability to export and import your database data to and
from XML datasets. Since version 2.0, DbUnit can works with very large dataset
when use in streaming mode. DbUnit can also help you to verify that your database
data match expected set of values.
Further Information available at: http://dbunit.sourceforge.net/
Maven - For building, deploying, and collecting application metrics Maven is a
software project management and comprehension tool. Based on the concept of a
project object model (POM), Maven can manage a project's build, reporting and
documentation from a central piece of information.
Further Information available at: http://maven.apache.org/
JUnit - Unit testing in java
Testing is not closely integrated with development. This prevents you from measuring
the progress of development- you can't tell when something starts working or when
something stops working. Using JUnit you can cheaply and incrementally build a test
suite that will help you measure your progress, spot unintended side effects, and focus
your development efforts.
Further Information available at:
http://junit.sourceforge.net/doc/testinfected/testing.htm
StrutsTestCase - Unit testing web applications written with Struts StrutsTestCase for
JUnit is an extension of the standard JUnit TestCase class that provides facilities for
testing code based on the Struts framework. Action Servlet plays a key Role in
performing the JUnit & allows developers to test action mappings, form beans, and
forwards declarations. StrutsTestCase is compliant with the Java Servlet 2.2, 2.3, and
2.4 specifications, and supports Struts 1.2, and Cactus 1.6.1 and JUnit 3.8.1.
StrutsTestCase is no longer backwards compatible with Struts 1.0.
Further Information available at: http://strutstestcase.sourceforge.net/
Eclipse IDE - Wonderful refactoring tool.
Further Information available at:: http://www.eclipse.org/
What’s refactoring?
Refactoring (Fowler, 1999) is a technique to restructure code in a disciplined way, a
technique that is a fundamental practice of XP. The basic idea is that you make small
changes to your code, called refactorings, to support new requirements and/or to keep
your design as simple as possible. The advantage of refactoring is that it enables
programmers to safely and easily evolve their code to fulfil new requirements or to
improve its quality.
Conclusion:
The array of tools that have emerged and are emerging proves there’s a lot of work
going on Agile Java. Once these become de facto standards the development effort
will be considerably cut down and the quality of development is certainly going to
improve.
Agile Java weaves Master Java 5.0, object-oriented design, and Test-Driven
Development (TDD) into a single coherent approach to building professional, robust
software systems. Java and Test-Driven Development integrate throughout the entire
development lifecycle; helping you leverage today’s fastest, most efficient
development techniques from the very outset.
What’s agile methodology?
One of the fundamental tenets of any agile software methodology is the importance of
communication between the various people involved in software development.
Furthermore agile methods put a large premium on improving communication
through face-to-face communication. As the agile manifesto states "The most efficient
and effective method of conveying information to and within a development team is
face-to-face conversation." Extreme Programming emphasizes this with its practice of
a single open development space where the team can work closely together.
Why Agile Methodology?
An agile software development team can add features in any order and can release a
working version of the product at any iteration. The ability to release a version of the
product at each iteration also makes the developers far better software engineers.
Issues such as integration and installation that previously were deferred to the end of a
project must now be addressed consistently throughout the entire development
lifecycle. Software built in this manner is of consistently higher quality
Why TDD?
Test-driven development (TDD) is a programming technique heavily emphasized in
Extreme Programming. Essentially the technique involves writing your tests first then
implementing the code to make them pass. The goal of TDD is to achieve rapid
feedback and implements the "illustrate the main line" approach to constructing a
program. This TDD-centered approach doesn't just lead to better code: it provides
powerful feedback that will help you learn Java far more rapidly. The use of TDD as a
learning mechanism is a landmark departure from conventional teaching techniques.
How do I Start Coding Agile java?
Agile java can be achieved by building a team that’s competent of developing
software using tools that support Extreme Programming i.e. Agile Tools .
What are agile tools?
Exactor Framework:
An Acceptance Test Framework for use in a Java based environment. A framework
for creating automated acceptance tests, this tool acts as a layer of verification on top
of unit testing, and a benchmark from which project completion can be measured.
Mainly used within an Agile environment, Exactor supports web and desktop (SWT)
applications and is easily extended to support other application. The framework is
built on top of parts of JUnit and utilises JWebUnit.
IntelliJ
A State of the Art Java Development Environment with some of the most advanced
support tools available. Built with Agile developers in mind, this IDE can actively
increase development time by minimizing the time needed for repetitive or often-
unneeded tasks, as well as utilising an extremely advanced toolset for refactoring,
Testing and Integration.
MySQL
MySQL is a full fledged Relational Database Management System.
NSIS
NSIS is a state of the art tool for creating installation scripts for Windows
applications. Using the extensive scripting language, you can not only put the
software in the right directory but also create shortcuts on the desktop, modify registry
entries and create the uninstall utility.
OpenSTA (Open System Testing Architecture)
OpenSTA is a tool for capturing usage-scenarios of web-applications and using this
scenarios for stress testing these web-applications. The test-results are displayed in
both reports and graphs. It runs on the Windows-platform. More info can be found on
http://www.opensta.org.
SAME
Same is a small java-application that gives you the ability to spot identical
lines/sections across selected files or all files in your codebase. This way it helps to
identify duplicated code.
SourceMonitor
With SourceMonitor you can easily monitor the health of your codebase by
periodically creating a snapshot of metrics of your codebase. It supports all major
languages as Java, Delphi, C#, C/C++, VisualBasic, HTML. The metrics can be
graphed over time. SourceMonitor is a Windows application.
Other Tools and IDE’s
DBUnit - Unit testing against a database
DbUnit is a JUnit extension (also usable with Ant) targeted for database driven
projects that, among other things, puts your database into a known state between test
runs. This is an excellent way to avoid the myriad of problems that can occur when
one test case corrupts the database and causes subsequent tests to fail or exacerbate
the damage. DbUnit has the ability to export and import your database data to and
from XML datasets. Since version 2.0, DbUnit can works with very large dataset
when use in streaming mode. DbUnit can also help you to verify that your database
data match expected set of values.
Further Information available at: http://dbunit.sourceforge.net/
Maven - For building, deploying, and collecting application metrics Maven is a
software project management and comprehension tool. Based on the concept of a
project object model (POM), Maven can manage a project's build, reporting and
documentation from a central piece of information.
Further Information available at: http://maven.apache.org/
JUnit - Unit testing in java
Testing is not closely integrated with development. This prevents you from measuring
the progress of development- you can't tell when something starts working or when
something stops working. Using JUnit you can cheaply and incrementally build a test
suite that will help you measure your progress, spot unintended side effects, and focus
your development efforts.
Further Information available at:
http://junit.sourceforge.net/doc/testinfected/testing.htm
StrutsTestCase - Unit testing web applications written with Struts StrutsTestCase for
JUnit is an extension of the standard JUnit TestCase class that provides facilities for
testing code based on the Struts framework. Action Servlet plays a key Role in
performing the JUnit & allows developers to test action mappings, form beans, and
forwards declarations. StrutsTestCase is compliant with the Java Servlet 2.2, 2.3, and
2.4 specifications, and supports Struts 1.2, and Cactus 1.6.1 and JUnit 3.8.1.
StrutsTestCase is no longer backwards compatible with Struts 1.0.
Further Information available at: http://strutstestcase.sourceforge.net/
Eclipse IDE - Wonderful refactoring tool.
Further Information available at:: http://www.eclipse.org/
What’s refactoring?
Refactoring (Fowler, 1999) is a technique to restructure code in a disciplined way, a
technique that is a fundamental practice of XP. The basic idea is that you make small
changes to your code, called refactorings, to support new requirements and/or to keep
your design as simple as possible. The advantage of refactoring is that it enables
programmers to safely and easily evolve their code to fulfil new requirements or to
improve its quality.
Conclusion:
The array of tools that have emerged and are emerging proves there’s a lot of work
going on Agile Java. Once these become de facto standards the development effort
will be considerably cut down and the quality of development is certainly going to
improve.