TAPE. Test Code Adaptation Plugin for Eclipse. Lehmia Kiran Department of Computer Sciences NUCES-FAST Lahore, Pakistan

Size: px
Start display at page:

Download "TAPE. Test Code Adaptation Plugin for Eclipse. Lehmia Kiran Department of Computer Sciences NUCES-FAST Lahore, Pakistan lehmia.kiran@nu.edu."

Transcription

1 TAPE Test Code Adaptation Plugin for Eclipse Lehmia Kiran Department of Computer Sciences NUCES-FAST Lahore, Pakistan Dr. Fakhar Lodhi Department of Computer Sciences NUCES-FAST Lahore, Pakistan Wafa Basit Department of Computer Sciences NUCES-FAST Lahore, Pakistan Abstract Refactoring improves the design of software and makes it easier to maintain by eliminating code smells. Manual refactoring is often error-prone and time-consuming. Refactoring tools available in almost all major object oriented programming languages like java, C++, C# etc that provide varying degree of automation. The problem with these tools is that they do not support adaptation of unit tests of the refactored code resulting in inconsistent unit tests. Unit tests are the only safety net available to developers to verify the system behavior after refactoring. Once these tests get broken there is no way to describe whether the system preserved its behavior or not. In this paper we provide technical details of TAPE (Test code Adaptation Plug-in for Eclipse). This tool not only automates a few commonly used refactorings but also supports adaptation of unit tests affected by the refactoring process. Using this tool the developers can concentrate more on code development activities instead of resolving consistency issues between code and unit tests. Keywords-Refactoring; Unit testing; Adaptation I. INTRODUCTION Refactoring is the process to change the code, making it easier to understand and cheaper to modify [6]. But it is important to verify semantic and syntactic correctness of the refactored code. Any modification in code can induce new bug in the code. Unit testing is the key method used to validate the code after refactoring [16]. Unit test cases in Object Oriented Paradigm are the programs that test classes [12]. So, each program is composed of units. Each unit is set of functions and these units are tested separately and test the code at lowest level of granularity [13]. Different frameworks for unit testing are available [1, 23, 24]; Junit [1] is the java plug-in which is used to run the test cases in the background. It tells about the failure or acceptance of the testcases. Eclipse [17] is the java IDE, which is used to edit, compile and run the java code. When junit is embedded in eclipse, test cases can also run on Eclipse. But, junit does not provide support for writing testcases and developers have to write the test cases by themselves, this problem is solved by moreunit. MoreUnit [5] is an eclipse plug-in that helps in generating automated Junit tests. Extreme Programming (XP) [14] allows the code to change often; consequently unit tests must also be changed. In traditional testing, it is a tester who writes the tests but in XP it is developers (not testers) who write tests for every class they develop. Whenever refactoring is applied on code, many test cases fail due to inconsistency with source code. The significant amount of developers effort is required to manually manipulate the testing suite on every single refactoring [15].The process of refactoring is automated by many tools [17, 20, 21, 22]. Eclipse supports automated refactoring and provides separate API to perform refactoring. But this API only focuses on source and does not adapt test cases, making both inconsistent. Cost and effort of adapting test cases are very high. Complication of the adaptation increases with complexity of refactoring applied. In some cases adaptation becomes very complex and test cases have to be thrown away and new test cases have to develop [19]. Creation and maintenance of test cases are very expansive so it s not feasible to throw away [8]. The solution to this problem is presented by TAPE Test Code Adaptation Plug-in for Eclipse. TAPE has been especially designed to improve the process of refactoring. It is an Eclipse plug-in which adapts test cases making it consistent and semantically aligned with the code after applying refactoring. TAPE reduces the cost of maintenance of test cases because it makes source code and test cases synchronized. Both source code and the test code come under the owner ship of a developer. If there is change in the source code; the associated test code should also be adapted accordingly[18].our plug-in gives sigh of relief to developers by drastically reducing time and effort of manually resolving the consistency issues between code and unit test. Section 2 is of literature review which discusses refactoring and available tools for performing refactoring. Section3 contains architecture and implementation details of Test Code adaptation plug-in. Before discussing technical details of TAPE, prerequisite information like refactoring API for eclipse, plug-in for unit testing "Junit" and "MoreUnit", eclipse java plug-in for generation of unit tests are briefly illustrated. Section 4 contains conclusion and future work.

2 II. LITERATURE REVIEW Refactoring is a means to improve the quality of existing code. The main idea behind refactoring is to change the code in small steps, while maintaining its external behavior [6]. Preserving code behavior means that functionality of the program must be unchanged after refactoring. The process of refactoring can be done manually but it s very tedious and error-prone. Significant amount of work can be reduced and efficiency can be increase by making this process automated [10]. Fowler s refactoring guidelines provides road map to perform 72 refactoring [6] but these guidelines are only applicable to production code. To incorporate the unit test adaptation in refactoring the Fowler s guidelines for refactoring are not sufficient so extended guidelines to adapt production code and test code are illustrated in [8] and are followed in TAPE to perform refactoring with unit test adaptation. [8] categorizes refactoring guidelines into three categories based on their affect on test code and production code. In this paper only the impact of refactoring on unit tests is considered therefore the type II and III are merged. So, two broad classes of refactoring guidelines are: A: Refactoring that break test code B: Refactoring that does not break test code Automated tools are available for refactoring in almost all major object oriented programming languages like Java, C++, C# etc. IntelliJIDEA, Eclipse and Net Beans are refactoring tool for java language, CppRefactory and Xrefactory supports refactoring in C++ and to perform refactoring in C#, C# Refactoring Tool and C# Refactory are available. Following table shows the total number of refactorings in different tools and the number of refactorings belongs to classes A and B. refactorings out of 72 are supported by net beans. 10 refactorings belong to classa and 4 refactorings belongs to class B. These figures tell us that out of 72 refactorings only 4 refactorings are those which do not break test code and it is very less in number. Eclipse supports total 21 refactorings. The tool also implements 8 refactorings other then fowler.17 refactorings belongs to class A and 4 refactorings belongs to class B. Only 4 refactorings are those which adapt unit tests in it. Similarly, in IntelliJIDEA 13 refactorings are those, whose guidelines are not provided by fowler and only 4 refactorings out of 72 belongs to Class B, which are very few in number. In CppRefactory there is no refactoring which belongs to class B and in visual Studio.Net only one refactoring adapts unit test with source. III. TAPE Eclipse refactoring plug-in has been used as a baseline for TAPE. Find below a short overview of how refactoring is done in Eclipse. A. Refactoring in Eclipse Eclipse supports automated refactoring and provides an API for implementing refactoring that can be applied to any of its workspace elements (e.g. class or method). Eclipse refactoring is implemented for several languages e.g. Java and C++; but only refactoring of Java code [7] is highlighted in this paper.following eclipse IDE snippet shows the types of available refactoring. Table 1: Class A and Class B refactorings of different tools Tool name Refactorings Total Class A Class B Netbeans Eclipse IntelliJ IDEA Cpp Refactory Figure 1: Refactoring Menu in Eclipse Visual Studio.NET(C# refactoring Tool) Netbeans offers total 14 refactorings. And out of 14, 8 refactorings are defined by fowlers. So, 8 fowlers B. Junit To test the code after refactoring some testing mechanism is needed but writing unit tests is a tedious task. The objective is to make process of writing testing code easier and more maintainable [11]. Testing frameworks are available that automate many aspects of test creation and

3 maintenance [1, 23, 24]. An example of such a framework is Junit [1]. JUnit is a unit testing framework for the Java programming language. JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks collectively known as xunit that originated with SUnit. [1] To run the test cases in background Junit has been used, but problem of writing test cases remains the same as Junit only runs the test cases and gives output about its failure or success. To resolve the issue of writing test cases moreunit an existing plug-in for Eclipse is brought into use [5]. C. MoreUnit MoreUnit is an eclipse plug-in that helps in generating automated JUnit tests. MoreUnit supports the generation of test cases, associates code and test cases. Classes which have associated unit tests are decorated with green marker and it also provides the facility to navigate between code and corresponding test using short cut [5]. assist in refactoring the code and adapting test cases in it. Following refactorings are discussed in this paper: 1. Move method 2. Inline method 3. Pull Up method 4. Rename method Sometimes adaptation of unit tests turns out to be test code refactoring like in move method and pull up method refactoring, if the method is moved, the corresponding test method will also be moved in test case. After applying pull up method refactoring, the corresponding test method will also be pulled up in the test cases. But when inline method refactoring is applied then its corresponding test method is deleted, not the same refactoring is applied on test code. 1) TAPE Overall Architecture Architecture diagram of TAPE is shown in Figure 3, describes that how different components involved in the TAPE are associated with each other. As described above, Eclipse plug-ins are used to perform refactoring on the code (to get the code eclipse plug-ins are associated with eclipse workspace). MoreUnit generates unit test cases and builds an association between tests and corresponding classes. So the inputs to Test Code Adaptation Plug-in for Eclipse are code and its corresponding test cases. TAPE adapts test cases thus making both code and its corresponding test cases synchronous. Figure 2:package explorer of eclipse showing source classes and corresponding testcases TAPE uses moreunit to make an association between source code and test code. MoreUnit also helps in searching for corresponding test cases or test methods of source code when refactoring is applied. D. TAPE Adaptation of unit tests with refactored code means the process of eliminating syntactic and semantic errors after applying refactoring; also the quality of test code and capability to test should remain same as before refactoring of source code [8]. TAPE has been especially designed to improve the process of refactoring. It is an Eclipse java plug-in which is used to Figure 3: Overall Architecture Diagram

4 2) Basic Elements of TAPE information which is required for refactoring is missing, then it will gather more details and check for final conditions. If all conditions are satisfied, corresponding testcases of the code are gathered. After that textual change of refactoring are applied on source code and respective corrective actions are taken on testcases to make test cases synchronous with source code. 4) Object Model Figure 4: Basic Elements of TAPE Figure illustrates how TAPE fits into existing elements of eclipse refactoring plug-in [3]. User starts refactoring by using TAPE GUI. The refactoring implementer gets the requirements for refactoring as specified by the user and then sends this information to the refactoring processor. Based on the requirements provided by refactoring implementer, the refactoring processor determines what change is required in the code then textual changes are performed in workspace resources like the java project or java files to reflect the changes made in underlying code. After that, selected element is sent to moreunit plug-in, it searches for the test cases which are associated with source code. Test cases are sent to take where corrective actions are being taken to make test code and source code consistent. Lastly output of TAPE plug-in is the adapted test cases. 3) Life Cycle of TAPE Figure 5: Lifecycle of TAPE Whenever a client requests for refactoring, the UI forwards this request to the eclipse refactoring to initialize the refactoring. In this initiation phase of refactoring, initial conditions for refactoring are being checked and if some Figure 6: TAPE Object Model Type Façade and Class Type facade are the classes of moreunit which help in parsing eclipse workspace to search for test cases and test methods. Move Method Call, Inline Method Call and Call Pull Method serves as the bridge between GUI and wrapper classes. MoveMethodParticipant, MoveMethodChange, Inline Method, InlineMethodChange and PullUpMethodProcessor are the wrapper classes of existing eclipse refactoring. In these classes already built-in functions of refactoring are overridden to adapt test cases with source code refactoring. 5) Implementation details of TAPE In this section, details of how refactoring is implemented to incorporate test cases change are explained. Few refactorings implementation are illustrated separately. MoreUnit plug-in helps to make an association between source and its test-cases. Using this association the corresponding test cases and test methods are searched and then the process of refactoring is applied on both source and test method.

5 a) Move Method Refactoring: In move method, the source class must have the some association with destination class and this association should be made by passing destination class object as parameter. If this pre condition is not satisfied, Eclipse refactoring will not allow method to move, but when we write test method for a given method, it cannot pass any parameter. So, for moving test method refactoring Eclipse refactoring plug-in is not used. The flow of move refactoring is as follows: firstly the method which is to be moved is taken from GUI and its corresponding test method is searched by ClassTypefacade. This information is sent to MoveMethodProcessor to check preconditions of refactoring. If these conditions are test method is physically moved to destination class using move function which is defined in IMethod (IMethod represents a method in java Model of eclipse) class [2]. Up till now the references that are changed due to moving methods are not updated. Figure 8: Sequence diagram for inline method refactoring Figure 7: sequence diagram of move method refactoring b) Inline Method refactoring: When the method is being inlined then its corresponding test method should be deleted. Thus, when the call from UI is made to the inline method then a call to delete test method must be generated. Hence when Inline method processor performs refactoring, it implicitly calls delete method processor which deletes test method. GUI sends request to InlineMethodCall to initiate inline method refactoring by clicking Inline method button from the starting window of TAPE, after that you have to select class and the method which is to be inlined. This information is sent to ClassTypeFcade. ClassTypeFacade searches for the corresponding testmethod, then inlinemethod class checks for the preconditions of refactoring, and apply refactoring on source method and delete its corresponding test method. The physical changes on code are applied by InlineMethodChange. When refactoring completes both code method and its corresponding test method will be consistent. c) Pull Up Method Refactoring: Like all other refactorings, pullupmethod refactoring is started by selecting super class, sub classes and the method which is to be pulled up from the GUI. The major class which is involved in Pull up method is pull up method processor, but before applying actual refactoring of eclipse plug-in some additional checks on source code are added, like 1. Does the inheritance hierarchy exist between the classes? 2. If there are more than one child classes, only then pull up method refactoring is applied. 3. Body of the methods, in all sub classes, that are to be pulled up should be same. If these conditions are satisfied, then test methods are being searched by ClassTypeFacade and cycle of refactoring that

6 is discussed previously in section 3 is applied to both source and testcases, making testcases and source synchronized. impact of refactoring on unit tests is taken into account and client code is not incorporated. This tool can be extended to cater client code also. Guidelines for performing these refactorings are available in [8]. Figure 9: sequence diagram for pull up method refactoring d) Rename Method Refactoring: Major class that is involved in rename Method refactoring is renamemethod, which is extended from abstract base class rename-participant ; participants that participate in refactoring that rename elements. renamemethod class is responsible to follow the cycle of refactoring and renametextchange class is used to incorporate the text changes in the workspace resources. So, the flow of rename method refactoring is like refactoring corresponding elements of tests are gathered in class renamemethod. The renamemethod then checks for the conditions which are necessary for refactoring and sends all information of source code and test to renametextchange. renametextchange in turn performs textual changes in the code and updates all references to avoid any chances of syntactical or logical errors. IV. CONCLUSION TAPE is a tool which helps in synchronizing code and its corresponding test cases after refactoring. This automated tool of refactoring saves developer's time to make code and test cases consistent in refactoring process. Currently, only REFERENCES [1] [2] [3] M. Petito, Eclipse Refactoring, Clarkson University,EE564 Spring 2007 [4] J. V. D. Bos,Refactoring (in) Eclipse,August 15, 2008 [5] [6] M. Fowler, Refactoring: Improving the Design of Existing Code, Addison Wesley, ISBN , 1999 [7] [8] W. Basit et al., Extending Refactoring Guidelines to Perform Client and Test Code Adaptation, Lecture Notes in Business Information Processing, Volume 48, Part 1, 1-13, DOI: / _1, 2010 [9] W. F. Opdyke, Refactoring Object Orineted frameworks thesis,, University of Illinois at Urbana-Champaign,Urbana, 1992 [10] M. KATIĆ and K. FERTALJ,Towards an Appropriate Software Refactoring Tool Support, Proceedings of the 9th WSEAS International Conference on APPLIED COMPUTER SCIENCE [11] Y. Cheon and G.T. Leavens, A Simple and Practical Approach to Unit,Testing: The JML and JUnit Way,2003 [12] T. Xie et al.,symstra: A Framework for Generating Object-Oriented Unit Tests using Symbolic Execution, Lecture Notes in Computer Science, Volume 3440/2005, , DOI: / _24, 2005 [13] K. Sen et al.,cute: A Concolic Unit Testing Engine for C, ESECFSE,05, Lisbon, Portugal, September 5 9, 2005 [14] K. Beck. Extreme programming explained. Addison-Wesley, 2000 [15] B. Walter and B. Pietrzak, Automated Generation of Unit Tests for Refactoring, Lecture Notes in Computer Science, Volume 3092/2004,2004 [16] G.Meszaros and M. Fowler. xunit Patterns: Refactoring Test Code, Addison-Wesley, [17] [18] J. U. Pipka, Refactoring in a test first -world, in Proceedings of 3rd Int l Conference on extreme Programming and Flexible Processes in Software Engineering, [19] [20] [21] [22] [23] [24] Page

TAPE. Test Code Adaptation Plugin for Eclipse. Lehmia Kiran Department of Computer Sciences NUCES-FAST Lahore, Pakistan lehmia.kiran@nu.edu.

TAPE. Test Code Adaptation Plugin for Eclipse. Lehmia Kiran Department of Computer Sciences NUCES-FAST Lahore, Pakistan lehmia.kiran@nu.edu. TAPE Test Code Adaptation Plugin for Eclipse Lehmia Kiran Department of Computer Sciences NUCES-FAST Lahore, Pakistan lehmia.kiran@nu.edu.pk Fakhar Lodhi Department of Computer Sciences NUCES-FAST Lahore,

More information

Towards Software Configuration Management for Test-Driven Development

Towards Software Configuration Management for Test-Driven Development Towards Software Configuration Management for Test-Driven Development Tammo Freese OFFIS, Escherweg 2, 26121 Oldenburg, Germany tammo.freese@offis.de Abstract. Test-Driven Development is a technique where

More information

Generating Unit Tests for Checking Refactoring Safety

Generating Unit Tests for Checking Refactoring Safety Generating Unit Tests for Checking Refactoring Safety Gustavo Soares, Rohit Gheyi, Tiago Massoni Márcio Cornélio, Diego Cavalcanti UFCG / UPE {gsoares, rohit, massoni, diegot}@dsc.ufcg.edu.br marcio@dsc.upe.br

More information

the first thing that comes to mind when you think about unit testing? If you re a Java developer, it s probably JUnit, since the

the first thing that comes to mind when you think about unit testing? If you re a Java developer, it s probably JUnit, since the By Matt Love W hat s the first thing that comes to mind when you think about unit testing? If you re a Java developer, it s probably JUnit, since the tool is generally recognized as the de facto standard

More information

Agile.NET Development Test-driven Development using NUnit

Agile.NET Development Test-driven Development using NUnit Agile.NET Development Test-driven Development using NUnit Jason Gorman Test-driven Development Drive the design and construction of your code on unit test at a time Write a test that the system currently

More information

JUnit. Introduction to Unit Testing in Java

JUnit. Introduction to Unit Testing in Java JUnit Introduction to Unit Testing in Java Testing, 1 2 3 4, Testing What Does a Unit Test Test? The term unit predates the O-O era. Unit natural abstraction unit of an O-O system: class or its instantiated

More information

Fail early, fail often, succeed sooner!

Fail early, fail often, succeed sooner! Fail early, fail often, succeed sooner! Contents Beyond testing Testing levels Testing techniques TDD = fail early Automate testing = fail often Tools for testing Acceptance tests Quality Erja Nikunen

More information

Rational Team Concert. Guido Salvaneschi Dipartimento di Elettronica e Informazione Politecnico di Milano salvaneschi@elet.polimi.

Rational Team Concert. Guido Salvaneschi Dipartimento di Elettronica e Informazione Politecnico di Milano salvaneschi@elet.polimi. Rational Team Concert Guido Salvaneschi Dipartimento di Elettronica e Informazione Politecnico di Milano salvaneschi@elet.polimi.it Project Areas The project area is the system's representation of a software

More information

Going Interactive: Combining Ad-Hoc and Regression Testing

Going Interactive: Combining Ad-Hoc and Regression Testing Going Interactive: Combining Ad-Hoc and Regression Testing Michael Kölling 1, Andrew Patterson 2 1 Mærsk Mc-Kinney Møller Institute, University of Southern Denmark, Denmark mik@mip.sdu.dk 2 Deakin University,

More information

Testing, Debugging, and Verification

Testing, Debugging, and Verification Testing, Debugging, and Verification Testing, Part II Moa Johansson 10 November 2014 TDV: Testing /GU 141110 1 / 42 Admin Make sure you are registered for the course. Otherwise your marks cannot be recorded.

More information

Visual Paradigm product adoption roadmap

Visual Paradigm product adoption roadmap Visual Paradigm product adoption roadmap Model-Code-Deploy Platform Easy and Intelligent Business Process Modeler Streamlined Design and Development Environment Access Database with Object- Oriented Technology

More information

JetBrains ReSharper 2.0 Overview Introduction ReSharper is undoubtedly the most intelligent add-in to Visual Studio.NET 2003 and 2005. It greatly increases the productivity of C# and ASP.NET developers,

More information

A Database Re-engineering Workbench

A Database Re-engineering Workbench A Database Re-engineering Workbench A project proposal by Anmol Sharma Abstract Data is not always available in the best form for processing, it is often provided in poor format or in a poor quality data

More information

An Automatic Tool for Checking Consistency between Data Flow Diagrams (DFDs)

An Automatic Tool for Checking Consistency between Data Flow Diagrams (DFDs) An Automatic Tool for Checking Consistency between Data Flow Diagrams (DFDs) Rosziati Ibrahim, Siow Yen Yen Abstract System development life cycle (SDLC) is a process uses during the development of any

More information

PTC Integrity Eclipse and IBM Rational Development Platform Guide

PTC Integrity Eclipse and IBM Rational Development Platform Guide PTC Integrity Eclipse and IBM Rational Development Platform Guide The PTC Integrity integration with Eclipse Platform and the IBM Rational Software Development Platform series allows you to access Integrity

More information

Teaching Object-Oriented Concepts with Eclipse

Teaching Object-Oriented Concepts with Eclipse Teaching Object-Oriented Concepts with Eclipse Matthias Meyer, Lothar Wendehals Software Engineering Group Department of Computer Science University of Paderborn Warburger Straße 100 33098 Paderborn, Germany

More information

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53

Contents. Introduction and System Engineering 1. Introduction 2. Software Process and Methodology 16. System Engineering 53 Preface xvi Part I Introduction and System Engineering 1 Chapter 1 Introduction 2 1.1 What Is Software Engineering? 2 1.2 Why Software Engineering? 3 1.3 Software Life-Cycle Activities 4 1.3.1 Software

More information

Umbrello UML Modeller Handbook

Umbrello UML Modeller Handbook 2 Contents 1 Introduction 7 2 UML Basics 8 2.1 About UML......................................... 8 2.2 UML Elements........................................ 9 2.2.1 Use Case Diagram.................................

More information

Desktop, Web and Mobile Testing Tutorials

Desktop, Web and Mobile Testing Tutorials Desktop, Web and Mobile Testing Tutorials * Windows and the Windows logo are trademarks of the Microsoft group of companies. 2 About the Tutorial With TestComplete, you can test applications of three major

More information

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture Pipeline Orchestration for Test Automation using Extended Buildbot Architecture Sushant G.Gaikwad Department of Computer Science and engineering, Walchand College of Engineering, Sangli, India. M.A.Shah

More information

SAP Technical Brief SAP NetWeaver. Increase IT Productivity with ABAP Development Tools for SAP NetWeaver

SAP Technical Brief SAP NetWeaver. Increase IT Productivity with ABAP Development Tools for SAP NetWeaver SAP Technical Brief SAP NetWeaver Objectives Increase IT Productivity with ABAP Development Tools for SAP NetWeaver The drive for better, more efficient IT The drive for better, more efficient IT Your

More information

ASSISTING REFACTORING TOOL DEVELOPMENT THROUGH REFACTORING CHARACTERIZATION

ASSISTING REFACTORING TOOL DEVELOPMENT THROUGH REFACTORING CHARACTERIZATION ASSISTING REFACTORING TOOL DEVELOPMENT THROUGH REFACTORING CHARACTERIZATION Raúl Marticorena, Carlos López Language and Informatic Systems, University of Burgos, EPS Campus Vena Edificio C, Burgos, Spain

More information

Unit Testing JUnit and Clover

Unit Testing JUnit and Clover 1 Unit Testing JUnit and Clover Software Component Technology Agenda for Today 2 1. Testing 2. Main Concepts 3. Unit Testing JUnit 4. Test Evaluation Clover 5. Reference Software Testing 3 Goal: find many

More information

EMC Documentum Composer

EMC Documentum Composer EMC Documentum Composer Version 6.5 User Guide P/N 300 007 217 A02 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com Copyright 2008 EMC Corporation. All rights

More information

Test-Driven Development

Test-Driven Development Test-Driven Development An Introduction Mattias Ståhlberg mattias.stahlberg@enea.com Debugging sucks. Testing rocks. Contents 1. What is unit testing? 2. What is test-driven development? 3. Example 4.

More information

Part I. Introduction

Part I. Introduction Part I. Introduction In the development of modern vehicles, the infotainment system [54] belongs to the innovative area. In comparison to the conventional areas such as the motor, body construction and

More information

Table of Contents. LESSON: The JUnit Test Tool...1. Subjects...2. Testing 123...3. What JUnit Provides...4. JUnit Concepts...5

Table of Contents. LESSON: The JUnit Test Tool...1. Subjects...2. Testing 123...3. What JUnit Provides...4. JUnit Concepts...5 Table of Contents LESSON: The JUnit Test Tool...1 Subjects...2 Testing 123...3 What JUnit Provides...4 JUnit Concepts...5 Example Testing a Queue Class...6 Example TestCase Class for Queue...7 Example

More information

Unit Testing. and. JUnit

Unit Testing. and. JUnit Unit Testing and JUnit Problem area Code components must be tested! Confirms that your code works Components must be tested t in isolation A functional test can tell you that a bug exists in the implementation

More information

tools that make every developer a quality expert

tools that make every developer a quality expert tools that make every developer a quality expert Google: www.google.com Copyright 2006-2010, Google,Inc.. All rights are reserved. Google is a registered trademark of Google, Inc. and CodePro AnalytiX

More information

NetBeans IDE Field Guide

NetBeans IDE Field Guide NetBeans IDE Field Guide Copyright 2005 Sun Microsystems, Inc. All rights reserved. Table of Contents Importing an Eclipse Project into NetBeans IDE...1 Getting the Eclipse Project Importer...2 Choosing

More information

WHITEPAPER. Managing Design Changes in Enterprise SBM Installations

WHITEPAPER. Managing Design Changes in Enterprise SBM Installations WHITEPAPER Managing Design Changes in Enterprise SBM Installations By Tom Clement Serena Software, Inc. October 2013 Summary This document explains how to organize your SBM maintenance and development

More information

Model-View-Controller (MVC) Design Pattern

Model-View-Controller (MVC) Design Pattern Model-View-Controller (MVC) Design Pattern Computer Science and Engineering College of Engineering The Ohio State University Lecture 23 Motivation Basic parts of any application: Data being manipulated

More information

Merlin A Continuous Integration Tool for VisualWorks

Merlin A Continuous Integration Tool for VisualWorks Merlin A Continuous Integration Tool for VisualWorks Michael Meyer November 23, 2005 1 Contents Contents 1. Continuous Integration 3 1.1. Definition.................................... 3 1.2. The benefit...................................

More information

An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases

An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases Paul L. Bergstein, Priyanka Gariba, Vaibhavi Pisolkar, and Sheetal Subbanwad Dept. of Computer and Information Science,

More information

Chapter 13: Program Development and Programming Languages

Chapter 13: Program Development and Programming Languages 15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning

More information

An Automatic Reversible Transformation from Composite to Visitor in Java

An Automatic Reversible Transformation from Composite to Visitor in Java An Automatic Reversible Transformation from Composite to Visitor in Java Akram To cite this version: Akram. An Automatic Reversible Transformation from Composite to Visitor in Java. CIEL 2012, P. Collet,

More information

Writing Self-testing Java Classes with SelfTest

Writing Self-testing Java Classes with SelfTest Writing Self-testing Java Classes with SelfTest Yoonsik Cheon TR #14-31 April 2014 Keywords: annotation; annotation processor; test case; unit test; Java; JUnit; SelfTest. 1998 CR Categories: D.2.3 [Software

More information

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper

Parsing Technology and its role in Legacy Modernization. A Metaware White Paper Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks

More information

CS 4240: Principles of Software Design. Course Introduction. Tom Horton horton.uva@gmail.com

CS 4240: Principles of Software Design. Course Introduction. Tom Horton horton.uva@gmail.com CS 4240: Principles of Software Design Course Introduction Tom Horton horton.uva@gmail.com Official Course Description: This course focuses on techniques for software design in the development of large

More information

Department of Veterans Affairs. Open Source Electronic Health Record Services

Department of Veterans Affairs. Open Source Electronic Health Record Services Department of Veterans Affairs Open Source Electronic Health Record Services MTools Installation and Usage Guide Version 1.0 June 2013 Contract: VA118-12-C-0056 Table of Contents 1. Installation... 3 1.1.

More information

Development of a Personal Budgeting Application Using the Waterfall Model. Lorena Flores and Dr. Jacalyn Huband Department of Computer Science

Development of a Personal Budgeting Application Using the Waterfall Model. Lorena Flores and Dr. Jacalyn Huband Department of Computer Science Development of a Personal Budgeting Application Using the Waterfall Model Lorena Flores and Dr. Jacalyn Huband Department of Computer Science Abstract In today s volatile economy, it is more important

More information

Description. Benefits. Requirements. Selection process. Duration

Description. Benefits. Requirements. Selection process. Duration PHP development Be part of a team that implements a web application displaying products from different affiliate platforms using their available API s. The application is developed using PhalconPHP framework

More information

Improvement of Software Quality and Productivity Using Development Tools

Improvement of Software Quality and Productivity Using Development Tools Improvement of Software Quality and Productivity Using Development Tools V Hideo Abotani V Tomoki Shiratori V Kouji Sasaki V Masaki Tonomura (Manuscript received March 24, 2006) Information systems, which

More information

Chapter 1. Introduction to ios Development. Objectives: Touch on the history of ios and the devices that support this operating system.

Chapter 1. Introduction to ios Development. Objectives: Touch on the history of ios and the devices that support this operating system. Chapter 1 Introduction to ios Development Objectives: Touch on the history of ios and the devices that support this operating system. Understand the different types of Apple Developer accounts. Introduce

More information

Nick Ashley TOOLS. The following table lists some additional and possibly more unusual tools used in this paper.

Nick Ashley TOOLS. The following table lists some additional and possibly more unusual tools used in this paper. TAKING CONTROL OF YOUR DATABASE DEVELOPMENT Nick Ashley While language-oriented toolsets become more advanced the range of development and deployment tools for databases remains primitive. How often is

More information

Test Driven Development Part III: Continuous Integration Venkat Subramaniam venkats@agiledeveloper.com http://www.agiledeveloper.com/download.

Test Driven Development Part III: Continuous Integration Venkat Subramaniam venkats@agiledeveloper.com http://www.agiledeveloper.com/download. Test Driven Development Part III: Continuous Integration Venkat Subramaniam venkats@agiledeveloper.com http://www.agiledeveloper.com/download.aspx Abstract In this final part of the three part series on

More information

MA-WA1920: Enterprise iphone and ipad Programming

MA-WA1920: Enterprise iphone and ipad Programming MA-WA1920: Enterprise iphone and ipad Programming Description This 5 day iphone training course teaches application development for the ios platform. It covers iphone, ipad and ipod Touch devices. This

More information

Module 9. User Interface Design. Version 2 CSE IIT, Kharagpur

Module 9. User Interface Design. Version 2 CSE IIT, Kharagpur Module 9 User Interface Design Lesson 21 Types of User Interfaces Specific Instructional Objectives Classify user interfaces into three main types. What are the different ways in which menu items can be

More information

Tools, Trends and Techniques for Developing Scientific Software

Tools, Trends and Techniques for Developing Scientific Software Tools, Trends and Techniques for Developing Scientific Software Tom Clune - NASA GSFC Brice Womack - NASA/NGC-TASC Brian Foote - The Refactory, Inc. Jeffrey Overbey - University of Illinois ASTG Advanced

More information

Source Code Translation

Source Code Translation Source Code Translation Everyone who writes computer software eventually faces the requirement of converting a large code base from one programming language to another. That requirement is sometimes driven

More information

Using JUnit in SAP NetWeaver Developer Studio

Using JUnit in SAP NetWeaver Developer Studio Using JUnit in SAP NetWeaver Developer Studio Applies to: This article applies to SAP NetWeaver Developer Studio and JUnit. Summary Test-driven development helps us meet your deadlines by eliminating debugging

More information

XFlash A Web Application Design Framework with Model-Driven Methodology

XFlash A Web Application Design Framework with Model-Driven Methodology International Journal of u- and e- Service, Science and Technology 47 XFlash A Web Application Design Framework with Model-Driven Methodology Ronnie Cheung Hong Kong Polytechnic University, Hong Kong SAR,

More information

E-mail Listeners. E-mail Formats. Free Form. Formatted

E-mail Listeners. E-mail Formats. Free Form. Formatted E-mail Listeners 6 E-mail Formats You use the E-mail Listeners application to receive and process Service Requests and other types of tickets through e-mail in the form of e-mail messages. Using E- mail

More information

REMOTE DEVELOPMENT OPTION

REMOTE DEVELOPMENT OPTION Leading the Evolution DATA SHEET MICRO FOCUS SERVER EXPRESS TM REMOTE DEVELOPMENT OPTION Executive Overview HIGH PRODUCTIVITY DEVELOPMENT FOR LINUX AND UNIX DEVELOPERS Micro Focus Server Express is the

More information

Refactoring (in) Eclipse

Refactoring (in) Eclipse Refactoring (in) Eclipse J. van den Bos Master s thesis August 15, 2008 Master Software Engineering Universiteit van Amsterdam Thesis Supervisor: Prof. Dr. P. Klint Internship Supervisor: Drs. H.J.S. Basten

More information

Implementação. Interfaces Pessoa Máquina 2010/11. 2009-11 Salvador Abreu baseado em material Alan Dix. Thursday, June 2, 2011

Implementação. Interfaces Pessoa Máquina 2010/11. 2009-11 Salvador Abreu baseado em material Alan Dix. Thursday, June 2, 2011 Implementação Interfaces Pessoa Máquina 2010/11 2009-11 baseado em material Alan Dix 1 Windowing systems Architecture Layers Higher level Tool UI Toolkit (Widgets) Window System OS Application Hardware

More information

Fundamentals of Java Programming

Fundamentals of Java Programming Fundamentals of Java Programming This document is exclusive property of Cisco Systems, Inc. Permission is granted to print and copy this document for non-commercial distribution and exclusive use by instructors

More information

Software Development Kit

Software Development Kit Open EMS Suite by Nokia Software Development Kit Functional Overview Version 1.3 Nokia Siemens Networks 1 (21) Software Development Kit The information in this document is subject to change without notice

More information

Teamstudio USER GUIDE

Teamstudio USER GUIDE Teamstudio Software Engineering Tools for IBM Lotus Notes and Domino USER GUIDE Edition 30 Copyright Notice This User Guide documents the entire Teamstudio product suite, including: Teamstudio Analyzer

More information

Software Construction

Software Construction Software Construction Martin Kropp University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target You can explain the importance of continuous integration

More information

Tutorial 7 Unit Test and Web service deployment

Tutorial 7 Unit Test and Web service deployment Tutorial 7 Unit Test and Web service deployment junit, Axis Last lecture On Software Reuse The concepts of software reuse: to use the knowledge more than once Classical software reuse techniques Component-based

More information

Editors Comparison (NetBeans IDE, Eclipse, IntelliJ IDEA)

Editors Comparison (NetBeans IDE, Eclipse, IntelliJ IDEA) České vysoké učení technické v Praze Fakulta elektrotechnická Návrh Uživatelského Rozhraní X36NUR Editors Comparison (NetBeans IDE, Eclipse, ) May 5, 2008 Goal and purpose of test Purpose of this test

More information

Principal MDM Components and Capabilities

Principal MDM Components and Capabilities Principal MDM Components and Capabilities David Loshin Knowledge Integrity, Inc. 1 Agenda Introduction to master data management The MDM Component Layer Model MDM Maturity MDM Functional Services Summary

More information

Functional Testing of Adobe Flex Applications: Four Benefits of Using TestComplete

Functional Testing of Adobe Flex Applications: Four Benefits of Using TestComplete Technical Paper Functional Testing of Adobe Flex Applications: Four Benefits of Using TestComplete Adobe Flash applications with dynamic content present unique testing challenges, as they may contain not

More information

ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013

ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013 ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013 Description This three-day, instructor-led course provides students with the knowledge and skills to effectively use the Application

More information

Agile Software Development

Agile Software Development Agile Software Development Lecturer: Raman Ramsin Lecture 13 Refactoring Part 3 1 Dealing with Generalization: Pull Up Constructor Body Pull Up Constructor Body You have constructors on subclasses with

More information

Eclipse for Smalltalkers

Eclipse for Smalltalkers Eclipse for Smalltalkers What a difference a year makes! Eric Clayberg Sr. Vice President of Product Development Instantiations, Inc. July 14, 2003 clayberg@instantiations.com http://www.instantiations.com

More information

CPSC 330 Software Engineering

CPSC 330 Software Engineering CPSC 330 Software Engineering Lecture 4: Unit ing, JUnit, and Software Development Processes Today Unit ing and JUnit Software Development Processes (as time allows) Reading Assignment Lifecycle handout

More information

TESTING FRAMEWORKS. Gayatri Ghanakota

TESTING FRAMEWORKS. Gayatri Ghanakota TESTING FRAMEWORKS Gayatri Ghanakota OUTLINE Introduction to Software Test Automation. What is Test Automation. Where does Test Automation fit in the software life cycle. Why do we need test automation.

More information

Java EE 6 development with Eclipse, Netbeans, IntelliJ and GlassFish. Ludovic Champenois Oracle Corporation

Java EE 6 development with Eclipse, Netbeans, IntelliJ and GlassFish. Ludovic Champenois Oracle Corporation Java EE 6 development with Eclipse, Netbeans, IntelliJ and GlassFish Ludovic Champenois Oracle Corporation The following is intended to outline our general product direction. It is intended for information

More information

Manage Software Development in LabVIEW with Professional Tools

Manage Software Development in LabVIEW with Professional Tools Manage Software Development in LabVIEW with Professional Tools Introduction For many years, National Instruments LabVIEW software has been known as an easy-to-use development tool for building data acquisition

More information

A Practical Guide to Test Case Types in Java

A Practical Guide to Test Case Types in Java Software Tests with Faktor-IPS Gunnar Tacke, Jan Ortmann (Dokumentversion 203) Overview In each software development project, software testing entails considerable expenses. Running regression tests manually

More information

Embracing Change with Squeak: Extreme Programming (XP)

Embracing Change with Squeak: Extreme Programming (XP) Embracing Change with Squeak: Extreme Programming (XP) J. Sarkela, P. McDonough, D. Caster The Fourth Estate, Incorporated Introduction In the sports world, we often hear the adjective extreme applied

More information

A LANGUAGE INDEPENDENT WEB DATA EXTRACTION USING VISION BASED PAGE SEGMENTATION ALGORITHM

A LANGUAGE INDEPENDENT WEB DATA EXTRACTION USING VISION BASED PAGE SEGMENTATION ALGORITHM A LANGUAGE INDEPENDENT WEB DATA EXTRACTION USING VISION BASED PAGE SEGMENTATION ALGORITHM 1 P YesuRaju, 2 P KiranSree 1 PG Student, 2 Professorr, Department of Computer Science, B.V.C.E.College, Odalarevu,

More information

CONFIGURATION MANAGEMENT PLAN

CONFIGURATION MANAGEMENT PLAN CONFIGURATION MANAGEMENT PLAN RONGO RONGO F. Aybike Avşaroğlu Esra Gariboğlu Osman Kaya Önder Kalacı Contents 1. Introduction 1.1. Purpose of Configuration Management Plan 1.2. Scope of the Document 1.3.

More information

Software Quality Exercise 2

Software Quality Exercise 2 Software Quality Exercise 2 Testing and Debugging 1 Information 1.1 Dates Release: 12.03.2012 12.15pm Deadline: 19.03.2012 12.15pm Discussion: 26.03.2012 1.2 Formalities Please submit your solution as

More information

TOGAF usage in outsourcing of software development

TOGAF usage in outsourcing of software development Acta Informatica Pragensia 2(2), 2013, 68 76, DOI: 10.18267/j.aip.25 Section: Online: aip.vse.cz Peer-reviewed papers TOGAF usage in outsourcing of software development Aziz Ahmad Rais 1, Rudolf Pecinovsky

More information

Application Lifecycle Management Using Visual Studio 2013 (SCRUM)

Application Lifecycle Management Using Visual Studio 2013 (SCRUM) Course Code: QAALMS13 Vendor: Microsoft Course Overview Duration: 3 RRP: 2,009 Application Lifecycle Management Using Visual Studio 2013 (SCRUM) Overview This three-day, instructor-led course provides

More information

Swirl. Multiplayer Gaming Simplified. CS4512 Systems Analysis and Design. Assignment 1 2010. Marque Browne 0814547. Manuel Honegger - 0837997

Swirl. Multiplayer Gaming Simplified. CS4512 Systems Analysis and Design. Assignment 1 2010. Marque Browne 0814547. Manuel Honegger - 0837997 1 Swirl Multiplayer Gaming Simplified CS4512 Systems Analysis and Design Assignment 1 2010 Marque Browne 0814547 Manuel Honegger - 0837997 Kieran O' Brien 0866946 2 BLANK MARKING SCHEME 3 TABLE OF CONTENTS

More information

Integrity 10. Curriculum Guide

Integrity 10. Curriculum Guide Integrity 10 Curriculum Guide Live Classroom Curriculum Guide Integrity 10 Workflows and Documents Administration Training Integrity 10 SCM Administration Training Integrity 10 SCM Basic User Training

More information

DEFINING CONTRACTS WITH DIFFERENT TOOLS IN SOFTWARE DEVELOPMENT

DEFINING CONTRACTS WITH DIFFERENT TOOLS IN SOFTWARE DEVELOPMENT Annales Univ. Sci. Budapest., Sect. Comp. 36 (2012) 323 339 DEFINING CONTRACTS WITH DIFFERENT TOOLS IN SOFTWARE DEVELOPMENT György Orbán and László Kozma (Budapest, Hungary) Communicated by Zoltán Horváth

More information

Rational DOORS Next Generation. Quick Start Tutorial

Rational DOORS Next Generation. Quick Start Tutorial Rational DOORS Next Generation Quick Start Tutorial 1 Contents 1. Introduction... 2 2. Terminology... 3 3. Project Area Preparation... 3 3.1 Creating the project area... 3 4 Browsing Artifacts and Modules...

More information

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Leveraging Rational Team Concert's build capabilities for Continuous Integration Leveraging Rational Team Concert's build capabilities for Continuous Integration Krishna Kishore Senior Engineer, RTC IBM Krishna.kishore@in.ibm.com August 9-11, Bangalore August 11, Delhi Agenda What

More information

Announcement. SOFT1902 Software Development Tools. Today s Lecture. Version Control. Multiple iterations. What is Version Control

Announcement. SOFT1902 Software Development Tools. Today s Lecture. Version Control. Multiple iterations. What is Version Control SOFT1902 Software Development Tools Announcement SOFT1902 Quiz 1 in lecture NEXT WEEK School of Information Technologies 1 2 Today s Lecture Yes: we have evolved to the point of using tools Version Control

More information

Software Refactoring using New Architecture of Java Design Patterns

Software Refactoring using New Architecture of Java Design Patterns Software Refactoring using New Architecture of Java Design Patterns Norddin Habti, Prashant 1, 1 Departement d informatique et de recherche operationnelle, Universite de Montreal, Quebec, Canada (Dated:

More information

How To Develop Software

How To Develop Software Software Engineering Prof. N.L. Sarda Computer Science & Engineering Indian Institute of Technology, Bombay Lecture-4 Overview of Phases (Part - II) We studied the problem definition phase, with which

More information

Model Driven Interoperability through Semantic Annotations using SoaML and ODM

Model Driven Interoperability through Semantic Annotations using SoaML and ODM Model Driven Interoperability through Semantic Annotations using SoaML and ODM JiuCheng Xu*, ZhaoYang Bai*, Arne J.Berre*, Odd Christer Brovig** *SINTEF, Pb. 124 Blindern, NO-0314 Oslo, Norway (e-mail:

More information

1/20/2016 INTRODUCTION

1/20/2016 INTRODUCTION INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We

More information

Software Development Tools

Software Development Tools Software Development Tools COMP220/COMP285 Sebastian Coope More on Automated Testing and Continuous Integration These slides are mainly based on Java Tools for Extreme Programming R.Hightower & N.Lesiecki.

More information

Toad Data Modeler - Features Matrix

Toad Data Modeler - Features Matrix Toad Data Modeler - Features Matrix Functionality Commercial Trial Freeware Notes General Features Physical Model (database specific) Universal Model (generic physical model) Logical Model (support for

More information

The goal with this tutorial is to show how to implement and use the Selenium testing framework.

The goal with this tutorial is to show how to implement and use the Selenium testing framework. APPENDIX B: SELENIUM FRAMEWORK TUTORIAL This appendix is a tutorial about implementing the Selenium framework for black-box testing at user level. It also contains code examples on how to use Selenium.

More information

Refactoring BPMN Models: From Bad Smells to Best Practices and Patterns

Refactoring BPMN Models: From Bad Smells to Best Practices and Patterns Refactoring BPMN Models: From Bad Smells to Best Practices and Patterns INTRODUCTION Darius Silingas and Edita Mileviciene, No Magic, Lithuania BPMN is already acknowledged as a de facto standard for business

More information

Continuous integration for databases using

Continuous integration for databases using Continuous integration for databases using Red Wie Sie Gate die tools Microsoft SQL An overview Continuous integration for databases using Red Gate tools An overview Contents Why continuous integration?

More information

Change Management for Rational DOORS User s Guide

Change Management for Rational DOORS User s Guide Change Management for Rational DOORS User s Guide Before using this information, read the general information under Appendix: Notices on page 58. This edition applies to Change Management for Rational

More information

Whitepaper - WebSphere Development Studio for iseries V5R2

Whitepaper - WebSphere Development Studio for iseries V5R2 Whitepaper - WebSphere Development Studio for V5R2 David Slater Worldwide Market Manager Application Development IBM The first release of WebSphere Development Studio for represented a major shift in the

More information

Automated Integration Testing & Continuous Integration for webmethods

Automated Integration Testing & Continuous Integration for webmethods WHITE PAPER Automated Integration Testing & Continuous Integration for webmethods Increase your webmethods ROI with CloudGen Automated Test Engine (CATE) Shiva Kolli CTO CLOUDGEN, LLC NOVEMBER, 2015 EXECUTIVE

More information

Surveying and evaluating tools for managing processes for software intensive systems

Surveying and evaluating tools for managing processes for software intensive systems Master Thesis in Software Engineering 30 Credits, Advanced Level Surveying and evaluating tools for managing processes for software intensive systems Anuradha Suryadevara IDT Mälardalen University, ABB

More information

Agile Techniques for Object Databases

Agile Techniques for Object Databases db4o The Open Source Object Database Java and.net Agile Techniques for Object Databases By Scott Ambler 1 Modern software processes such as Rational Unified Process (RUP), Extreme Programming (XP), and

More information

Testing. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies. CHAPTER AUTHORS Michael Atmadja Zhang Shuai Richard

Testing. Chapter. A Fresh Graduate s Guide to Software Development Tools and Technologies. CHAPTER AUTHORS Michael Atmadja Zhang Shuai Richard A Fresh Graduate s Guide to Software Development Tools and Technologies Chapter 3 Testing CHAPTER AUTHORS Michael Atmadja Zhang Shuai Richard PREVIOUS CONTRIBUTORS : Ang Jin Juan Gabriel; Chen Shenglong

More information

Eclipse-based Applications: Java on the Desktop Revisited

Eclipse-based Applications: Java on the Desktop Revisited Eclipse-based Applications: Java on the Desktop Revisited EclipseCon - Rich Client Platform Track Tuesday, February 3 rd, 3:45pm-4:30pm Todd Williams, Genuitec LLC Paul May, AlterPoint Inc Giovanni Farris,

More information