Agile Software Development & Tools

23
DXAT (Disseny de Xarxes i Aplicacions Telemàtiques) Luis Miguel Amorós Adrien Viala

description

Presentation about "Agile Software Development & Tools" in Disseny de Xarxes i Aplicacions Telemàtiques course

Transcript of Agile Software Development & Tools

Page 1: Agile Software Development & Tools

DXAT (Disseny de Xarxes i Aplicacions Telemàtiques)

Luis Miguel Amorós Adrien Viala

Page 2: Agile Software Development & Tools

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

Page 3: Agile Software Development & Tools

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

Page 4: Agile Software Development & Tools

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); } }

Page 5: Agile Software Development & Tools

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

Page 6: Agile Software Development & Tools

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

Page 7: Agile Software Development & Tools

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

Page 8: Agile Software Development & Tools

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

Page 9: Agile Software Development & Tools

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

Page 10: Agile Software Development & Tools

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

Page 11: Agile Software Development & Tools

11

Page 12: Agile Software Development & Tools

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

Page 13: Agile Software Development & Tools

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

Page 14: Agile Software Development & Tools

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

Page 15: Agile Software Development & Tools

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.

Page 16: Agile Software Development & Tools

3.2. Maven : Maven: project

management and build automation

Only direct dependencies

Scope specification (JUnit only for test)

16

Page 17: Agile Software Development & Tools

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

Page 18: Agile Software Development & Tools

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

Page 19: Agile Software Development & Tools

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

Page 20: Agile Software Development & Tools

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

Page 21: Agile Software Development & Tools

21

Page 22: Agile Software Development & Tools

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

Page 23: Agile Software Development & Tools

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