Agile Software Development & Tools
-
Upload
luismi-amoros-martinez -
Category
Technology
-
view
2.239 -
download
6
description
Transcript of Agile Software Development & Tools
DXAT (Disseny de Xarxes i Aplicacions Telemàtiques)
Luis Miguel Amorós Adrien Viala
1. Testing Tools 1.1. JUnit
1.2. Selenium
2. Agile Software Development 2.1. Scrum
3. Continuous Integration 3.1. Version control tools (SVN, GIT)
3.2. Project creation and management tools(Maven)
3.3. Hudson
2
3
1.1. JUnit
From xUnit generic term: a framework to test the smallest part of a code.
For Java: class, interface. It aims at repeatable tests: checking that code’s
evolution do not alter the specification compliance. Integrated in Eclipse, NetBeans… Content:
Assertions for testing expected results
Test fixtures for sharing common test data
Test runners for running tests
import junit.framework.TestCase; import org.junit.*; public class TestFoobar extends TestCase{ @BeforeClass public static void setUpClass() throws Exception { // Code executed before the first test method } @AfterClass public static void tearDownClass() throws Exception { // Code executed after the last test method } 4
@Before public void setUp() throws Exception { // Code executed before each test } @After public void tearDown() throws Exception { // Code executed after each test } @Test public void test() { assertTrue(true); } }
1.2. Selenium
Test web applications It records a previous test and plays it anytime it would be
necessary in order to test the webapp It has its own programming language (Selenes) in order to
program tests in most popular languages: C#, Java, Groovy, Perl, PHP, Python & Ruby.
Tests can be executed in any web browser and any platform
5
1.2. Selenium
Its architecture is based on: Selenium IDE:
▪ Firefox Extension which lets to record, edit and debug tests
▪ It lets to export created tests into different programming languages
Selenium RemoteControl ▪ Java Server which interprets commands via
HTTP
Selenium Client API ▪ Selenese
6
Its purpose is to assure the main demands of the industry nowadays: Value:
▪ Value at the moment of product launch
▪ Ability to adapt and evolve through upgrades and expansions
Reduced development time: ▪ Overlapping in development phases
▪ Early delivery of the first parts of the product which are often the most urgent
Quickness: ▪ Produce complete parts of the product in short periods of time
Flexibility: ▪ Adjust the shape and course of project development characteristics and evolution of
requirements
Reliability: ▪ The processes are good when they get delivered early and continuously innovative value
7
8
Agile Software Development cycle is divided into: Concept:
▪ Create the vision of the product
▪ Determine what the team is going to work on
Speculation: ▪ Determine limitations imposed by business
environment: agendas and costs
▪ Close first approximation about what it can be produced
Exploration: ▪ Develop an increment of the product which includes
those functionalities determined in previous phase
Revision: ▪ Revision what it has been built until this moment
Closing: ▪ It does not imply the end of the project
Most popular Agile Software Development models are: Adaptive Software Development (ASD)
Agile Unified Process (AUP)
Crystal Clear.
Essential Unified Process (EssUP)
Feature Driven Development (FDD)
Lean Software Development (LSD)
Kanban
Open Unified Process (OpenUP)
eXtreme Programming (XP)
Dynamic Systems Development Method (DSDM)
Scrum
9
10
2.1. Scrum
Very simple development methodology: It requires hard work there’s no plan, only continuous adaptation of the
project
All the people which participate in the project are classified in: Committed (pigs) Involved (hens)
Meetings: They must be done stood
It is advisable to use a cell format tasks on a blackboard
A graph indicating the improvements done in the sprint should be there
Meetings Type: Sprint planning Sprint track Sprint review
11
3.1. Control Version tools Apache Subversion (SVN):
How you manage several versions due to different programmers?
Started as early as mid 70’s.
SVN’s ancestor is CVS: Concurrent Version System, started as shell scripts in 1986.
SVN was born in 2000 to complete and develop CVS
Today, it is a top-level Apache project.
12
1 – Get content: svn checkout svn update 2 – Make changes: svn add svn move svn delete 3 – See what was changed in the repository in meantime svn status -u 4 – Update your local copy svn update 5 – Merge your changes and Resolve conflicts svn diff svn resolved 6 – Submit your changes svn commit
13
Conflicts resolution:
svn diff show the differences from the checkout files
svn revert cancel all modification( except deleted files), then update & work again. Svn does not know how to merge binary files (.doc).
svn resolved <FileName> then commit again
svn automatically merge (fusion) if modifications are not at the same place.
14
3.1. Control Version tools GIT: distributed version control, since 2005, by Torvalds for
Linux kernel. created by programmers for programmers !!
15
• Only working copies • Faster operation (no central
server) • Autonomous group of
developers from network and chiefs.
• Private versioning. • Still possibility to have a central
server.
3.2. Maven : Maven: project
management and build automation
Only direct dependencies
Scope specification (JUnit only for test)
16
Project described in the POM file, Project Object Model. XML, and v3.0 Ruby, Groovy or Yaml.
Contents: Src and resource files location
Java version
Direct dependencies
Used plugins
Technical report asked
<project>
<modelVersion>4.0.0</modelVersion> <groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>1.0</version>
</project>
17
Convention over Configuration: specified only the unconventional.
Build life cycles: process-resources
compile
process-test-resources
test-compile
test
package
install
Deploy mvn test all the way until test.
18
3.3. Hudson
Continuous Integration Tool implemented in Java It works over an application server such as Apache or GlassFish It supports control version tools (CVS, SVN, GIT) It can execute projects based in Apache Ant or Maven, and
scripts based on batch or shell/bash scripts It can build the projects through:
A scheduler programmed with cron
Compilation of other projects
Request of an specific URL
19
3.3. Hudson
Principals advantages: Easy installation and use: deploy a .war and easy web interface
An extensible plugin system
Support for distributed compilation based on master-slave systems
Support for multiples machines and project groups
It is completely Free Software
20
21
Selenium: http://seleniumhq.org/docs/05_selenium_rc.html
Scrum: http://www.scrummanager.net/files/sm_proyecto.pdf
Hudson: http://www.xnoccio.com/es/362-hudson-parte-1-introduccion/
Maven:
http://en.wikipedia.org/wiki/Apache_Maven
http://maven.apache.org/ (faq, doc, etc)
http://linsolas.developpez.com/articles/java/outils/builds/#LV-A
http://docs.codehaus.org/display/MAVENUSER/introduction-to-the-lifecycle*
22
Junit: http://junit.org/
http://junit.sourceforge.net/doc/faq/faq.htm
http://junit.sourceforge.net/doc/cookbook/cookbook.htm
http://en.wikipedia.org/wiki/JUnit
http://en.wikipedia.org/wiki/Unit_testing
SVN Apache: http://en.wikipedia.org/wiki/Apache_Subversion
http://en.wikipedia.org/wiki/Software_versioning
http://en.wikipedia.org/wiki/Concurrent_Versions_System
http://subversion.apache.org/
http://www.siteduzero.com/tutoriel-3-2696-gerez-vos-projets-a-l-aide-du-gestionnaire-de-versions-subversion.html
http://doc.ubuntu-fr.org/subversion
23