Agile Software Development & Tools

  • 2,033 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,033
On Slideshare
0
From Embeds
0
Number of Embeds
3

Actions

Shares
Downloads
22
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. DXAT (Disseny de Xarxes i Aplicacions Telemàtiques) Luis Miguel Amorós Adrien Viala
  • 2. 1. Testing Tools 1.1. JUnit 1.2. Selenium2. Agile Software Development 2.1. Scrum3. 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 3
  • 4. import junit.framework.TestCase; @Beforeimport org.junit.*; public void setUp() throws Exception { // Code executed before each testpublic class TestFoobar extends }TestCase{ @BeforeClass @After public static void setUpClass() public void tearDown() throws Exception {throws Exception { // Code executed after each test // Code executed before the }first test method } @Test @AfterClass public void test() { public static void assertTrue(true);tearDownClass() throws Exception }{ } // Code executed after the lasttest method } 4
  • 5. 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
  • 6. 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
  • 7.  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 8
  • 9.  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 10
  • 11. 11
  • 12. 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
  • 13. 1 – Get content: svn checkout svn update2 – Make changes: svn add svn move svn delete3 – See what was changed in therepository in meantime svn status -u4 – Update your local copy svn update5 – Merge your changes and Resolveconflicts svn diff svn resolved6 – Submit your changes svn commit 13
  • 14.  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
  • 15. 3.1. Control Version tools GIT: distributed version control, since 2005, by Torvalds for Linux kernel.  created by programmers for programmers !! • 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. 15
  • 16. 3.2. Maven : Maven: project management and build automation Only direct dependencies Scope specification (JUnit only for test) 16
  • 17.  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
  • 18.  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
  • 19. 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
  • 20. 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. 21
  • 22.  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
  • 23.  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