Agile Software Development & Tools

2,611 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,611
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
28
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Agile Software Development & Tools

  1. 1. DXAT (Disseny de Xarxes i Aplicacions Telemàtiques) Luis Miguel Amorós Adrien Viala
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 11
  12. 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. 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. 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. 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. 16. 3.2. Maven : Maven: project management and build automation Only direct dependencies Scope specification (JUnit only for test) 16
  17. 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. 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. 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. 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. 21
  22. 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. 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

×