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

Size: px
Start display at page:

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

Transcription

1 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 Automatic Documentation Managing Testing Debugging IDEs Version Control If C gives you enough rope to hang yourself with, think of Subversion as a sort of rope storage facility Brian W. Fitzpatrick, one of the authors of Subversion; Multiple iterations What is Version Control Software emerges in many stages and iterations. This might be from agile development, discovery of bugs, extensions, and keeping up with changing environments. Version control is one of the key tools of group software development: it enables developers to keep track of releases, share code among themselves, and archive code and any other text files (e.g. documentation, LaTeX...) It is very very useful

2 Flavours of version control Models of version control Microsfot Word track changes Keeping multiple copies CVS (Concurrent Version System) Subversion (not an acronym). Visual SourceSafe...and others lock-modify-unlock copy-modify-merge 7 8 File system File sharing In a simple file system where anyone reads and writes it is not possible to keep track of versions, despite the best of intentions. A situation to avoid! With this model, developers can undo each other s work Lock-Modify-Unlock Copy-Modify-Merge 1 Developers lock files, make changes, then commit them. This can be slow, unnecessary (if both developers are working on different parts of the file) and misleading: dependencies can be violated (if one person uses a file someone else is changing). Two developers check out the same file & make changes. Once one commits the changes, the other is out of date

3 Copy-Modify-Merge 2 Consistency through VC The versions are compared and merged by a developer; Then it is published for all. Some installations of version control can force coding styles JStyle is an automated tool for following conventions such as (but costs money) unit testing but you shouldn t need these. Should you? CVS or SVN? Further benefits CVS = Concurrent Version System SVN = Subversion Both have advantages but SVN is preferred (by me): plain text archives (as of version 1.2) can move folders/directories slightly nicer more esoteric features like branching (not detailed here). Version Control also enables roll-backs to earlier versions when something really goes wrong! You can use it for your text files too! handy places to look CVS: homepage manual Automatic Documentation SVN: Javadoc and Doxygen homepage book

4 When you remember about documentation What to automatically document Automatic documentation is very useful for saving time. You put comments in your code; you should use them. /** Javadoc comments look like this. (And so do Doxygen comments.) */ /// one-liner comments can be handy Not everything! But anything that is needed by a client (programmer) who is calling the public methods in your explain the meaning of arguments and return conditions are essential pieces of knowledge, not just for collaborative projects Commenting practise Commenting practise Comments should clarify and explain. Scalability needs to be calculated for method calls: it's easier when they're all documented. It is not true that good code should need no comments! It is not true that everything should be commented. int putpowers(double x, int n, double[] result) /** Put positive powers of the input number n into x is positive or zero, n is positive, result is of length result[i] contains x^(i+1), for i = 0..(n-1). */ { double current = x; // assign current to value x for (int i = 0; i < n; i++) { result[i] = current; current = current * x; // now current = x^(i+1) Automatic documentation example: Powers.java Using Javadoc import java.util.*; public class Powers { public Powers() { int putpowers(double x, int n, double[] result) /** Put positive powers of the input number n into x is positive or zero, n is positive, result is of length result[i] contains x^(i+1), for i = 0..(n-1). */ { double current = x; // assign current to value x for (int i = 0; i < n; i++) { result[i] = current; current = current * x; // now current = x^(i+1) 23 ~> emacs Powers.java ~> javadoc Powers.java Loading source file Powers.java... Constructing Javadoc information... Standard Doclet version 1.5.0_06 Building tree for all the packages and classes... Generating Powers.html... Generating package-frame.html... Generating package-summary.html... Generating package-tree.html... Generating constant-values.html... Building index for all the packages and classes... Generating overview-tree.html... Generating index-all.html... Generating deprecated-list.html... Building index for all classes... Generating allclasses-frame.html... Generating allclasses-noframe.html... Generating index.html... Generating help-doc.html... Generating stylesheet.css... ~> 24 4

5 hierarchy graphs Javadoc creates html pages describing your whole program, with all inheritance, methods, variables, and comments... This is a file hierarchy for some C++ code hierarchy graphs This is a class hierarchy for some C++ code Doxygen also handles pre- and post- conditions LaTeX Managing Testing because you can't prove the nonexistence of bugs Doxygen can produce LaTeX and rtf documents too

6 Contents Terminology Terminology: Black box, White box (e.g., unit testing), Test coverage Unit testing Assertion (v useful) Testing harness Test cases should be easy to re-use (Advanced Topic 10.1 in Big Java (2nd ed)) Numeric class example (pg 374) Oracles The test suite Regression testing Testing Tools: JUnit (free from built in to BlueJ and Eclipse) Black box testing: don't look inside the code akin to beta-release White box: look inside and use program structure includes Unit Testing (if you actually look inside!) Test coverage: the proportion of a program's code that has been tested Unit Testing Verifying the output A unit test is test of a single method or closely related group of methods. Unit tests typically have a wrapper called a "harness". When you write a method you may as well write your unit test at the same time. JUnit can help you here by providing a simple and convenient interface to your testing methods. How to test your method is working? Suppose you are solving an equation (for x): then just substitute the value of x into that equation and see if it's true: testing mysqrt(2.0), equation is x 2 = 2. x = = mysqrt fails the test Oracles Rounding error An alternative is to find an oracle: another method that works, which is more reliable (though may be slower). E.g., compare mysqrt(2.0) with Java built-in pow(2.0, 0.5) (= ). Oracles are not always easy to find! Rounding error can suggest spurious bugs: don't be too hasty claiming things are not equal! You can use approximation where appropriate. BigJava provides a Numeric class you may find useful

7 Numeric class Testing suite and regression public class Numeric { /** From Big Java pg 374 */ public static boolean approxequal(double x, double y) { final double EPSILON=1E-12; return Math.abs(x-y) <= EPSILON; Never throw anything away. When you create a (unit) test, keep it! Often when you fix something else, an old bug may creep back... You can accumulate a suite of tests. Re-running previous tests after changes is called regression testing Make it easy on yourself JUnit Tests need to be easily repeatable. Manual testing of many cases is slow and difficult to repeat. You can hard-code test cases in your testing classes, or read a set of test cases from an input file: java MyProgram < testdata.txt JUnit is free from and is built in to BlueJ and Eclipse. For each class you build, you also build a tester that extends TestCase from the junit.framework package. For each test case define a method beginning with test, like testsimpleinput JUnit example JUnit output import junit.framework.testcase; JUnit runs all the tests and returns a summary. public class RootApproximatorTest extends TestCase { public void testsimplecase() { double x = 4; RootApproximator a = new RootApproximator(x); double r = a.getroot(); asserttrue(numeric.approxequal(r, 2)); public testboundarycase() { // more testing here... // more test cases... source:

8 Contents Debugging you and your Mortein General advice: consider boundary (also called 'corner') cases Trace through problem areas Output messages Log messages: use Logger class Use a debugger! Eclipse, JSwat Basic tools Breakpoints, steps, inspection Flashy tricks: Conditional breaks Change variables on the fly Change code on the fly General Advice Tracing It is much easier to prove bugs exist than that they don't! It is in general not possible to write bug-free code (first time). One of commonest techniques you will use is tracing through your code. (Yes, there's a reason we teach you to trace code!) You can often find errors quickly this way but you need to pay close attention! Step through your code slowly and make sure every part is correct Judicious use of println Logger Another simple debugging method is printing out interim results and data. Put println("...") statements where you suspect there to be errors. Disadvantages: you have to take out the printlns later it slows down the program and can flood you with unnecessary verbiage. You can keep a log file with Logger.global.info("message");...which prints by default. Alternatively set Logger.global.setLevel(Level.OFF); at the beginning of main(). Don't forget to turn off logging prior to release!

9 assert assert Java provides an assert keyword: int putpowers(double x, int n, double[] result) /** Put positive powers of the input number n into x is positive or zero, n is positive, result is of length result[i] contains x^(i+1), for i = 0..(n-1). */ { assert x >= 0; // we expect x to be non-negative assert n >= 0; // n must not be negative either. double current = x; // assign current to value x for (int i = 0; i < n; i++) { result[i] = current; current = current * x; // now current = x^(i+1) The assert keyword will cause a runtime error if the following statement is false. assert is enabled with java -enableassertions MyProg java -ea MyProg otherwise the default is not to check assertions Debuggers Standard debugging features For bigger projects it's good to use a dedicated debugger. Some IDEs have debuggers built-in; there are other debugger-only applications. Debuggers give a broad view of your code and enable to you stop wherever you want. breakpoint: a position in code where execution will halt. You can continue on after inspecting the state of variables; step into: go into methods (the smallest step possible); step over: go to the next line, over method calls; step out: go back up the program stack (via the completion of the current method) Flashy debugging tricks conditional breakpoints: set a condition such that if the condition is met, execution pauses. watch points: watch a location in memory (such as for a particular variable) and stop if it changes. SLOW! change variables: change the value of a variable (dangerous!) Building Big Projects when vi(m) and emacs aren't enough

10 ant ant build file ant is the make of Java. This sentence makes sense. ant is a tool for the creation of big projects: create an XML description of the project with all dependencies <project name="myproject" default="dist" basedir="."> <description> simple example build file </description> <property name="src" location="src"/> <!-- set global properties for this build --> <property name="build" location="build"/> <property name="dist" location="dist"/> <target name="init"> <tstamp/> <!-- Create the time stamp --> <mkdir dir="${build"/> <!-- Create the build directory structure used by compile --> </target> <target name="compile" depends="init" description="compile the source " > <javac srcdir="${src" destdir="${build"/> <!-- Compile the java code from ${src into ${build --> </target> <target name="dist" depends="compile description="generate the distribution" > <mkdir dir="${dist/lib"/> <!-- Create the distribution directory --> <jar jarfile="${dist/lib/myproject-${dstamp.jar" basedir="${build"/> <!-- Put everything in ${build into the MyProject-${DSTAMP.jar file --> </target> <target name="clean description="clean up" > <delete dir="${build"/> <!-- Delete the ${build and ${dist directory trees --> <delete dir="${dist"/> </target> </project> define dependencies among logical components (compile depends on init); define targets to compile larger components (including the complete project) using ant BlueJ Once your build file is correct with all dependencies, type ant <target> e.g. ant clean ant compile...and sit back. Available from: Platforms: Windows, Mac OS X,.jar Features: free, simple to use, can and run bare methods BlueJ summary BlueJ was conceived at U. Syd, developed at Monash, and is now maintained from Kent and Deakin Universities. It is specifically for teaching Object Oriented Programming with Java to novices. It s not as sophisticated as Eclipse but is easy to use

11 Eclipse Eclipse is a powerful open-source development environment. Available from (current version 3.2) Platforms: just about everything Features very nice for Java! quite nice for C/C++ uses external compilers built-in debugger Javadoc refactoring plug-ins for Subversion, other languages Good for multiple large projects Summary Version Control Essential for collaborative projects; SVN is good, use it! Automatic Documentation Good for APIs Managing Testing Test, test, test.. Unit Testing (as in JUnit) Debugging takes up lots of time Big Projects: ant, BlueJ, Eclipse And for next week... Monday: GUIs Thursday: SOFT1902 Quiz! Yay! on all that stuff up to last week 65 11

CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions

CS 2112 Spring 2014. 0 Instructions. Assignment 3 Data Structures and Web Filtering. 0.1 Grading. 0.2 Partners. 0.3 Restrictions CS 2112 Spring 2014 Assignment 3 Data Structures and Web Filtering Due: March 4, 2014 11:59 PM Implementing spam blacklists and web filters requires matching candidate domain names and URLs very rapidly

More information

Eclipse Help

Eclipse Help Software configuration management We ll start with the nitty gritty and then get more abstract. Configuration and build Perdita Stevens School of Informatics University of Edinburgh 1. Version control

More information

Automatic promotion and versioning with Oracle Data Integrator 12c

Automatic promotion and versioning with Oracle Data Integrator 12c Automatic promotion and versioning with Oracle Data Integrator 12c Jérôme FRANÇOISSE Rittman Mead United Kingdom Keywords: Oracle Data Integrator, ODI, Lifecycle, export, import, smart export, smart import,

More information

Test Driven Development

Test Driven Development Test Driven Development Introduction Test Driven development (TDD) is a fairly recent (post 2000) design approach that originated from the Extreme Programming / Agile Methodologies design communities.

More information

Unit Testing & JUnit

Unit Testing & JUnit Unit Testing & JUnit Lecture Outline Communicating your Classes Introduction to JUnit4 Selecting test cases UML Class Diagrams Rectangle height : int width : int resize(double,double) getarea(): int getperimeter():int

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

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

Designing with Exceptions. CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219

Designing with Exceptions. CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 Designing with Exceptions CSE219, Computer Science III Stony Brook University http://www.cs.stonybrook.edu/~cse219 Testing vs. Debugging Testing Coding Does the code work properly YES NO 2 Debugging Testing

More information

Coding in Industry. David Berry Director of Engineering Qualcomm Cambridge Ltd

Coding in Industry. David Berry Director of Engineering Qualcomm Cambridge Ltd Coding in Industry David Berry Director of Engineering Qualcomm Cambridge Ltd Agenda Potted history Basic Tools of the Trade Test Driven Development Code Quality Performance Open Source 2 Potted History

More information

Software Construction

Software Construction Software Construction Documentation and Logging Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target You can use Mock Objects

More information

Content. Development Tools 2(63)

Content. Development Tools 2(63) Development Tools Content Project management and build, Maven Version control, Git Code coverage, JaCoCo Profiling, NetBeans Static Analyzer, NetBeans Continuous integration, Hudson Development Tools 2(63)

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

agile, open source, distributed, and on-time inside the eclipse development process

agile, open source, distributed, and on-time inside the eclipse development process agile, open source, distributed, and on-time inside the eclipse development process Erich Gamma IBM Distinguished Engineer Eclipse Project Management Committee erich_gamma@ch.ibm.com what is eclipse (www.eclipse.org)?

More information

Approach of Unit testing with the help of JUnit

Approach of Unit testing with the help of JUnit Approach of Unit testing with the help of JUnit Satish Mishra mishra@informatik.hu-berlin.de About me! Satish Mishra! Master of Electronics Science from India! Worked as Software Engineer,Project Manager,Quality

More information

Java CPD (I) Frans Coenen Department of Computer Science

Java CPD (I) Frans Coenen Department of Computer Science Java CPD (I) Frans Coenen Department of Computer Science Content Session 1, 12:45-14:30 (First Java Programme, Inheritance, Arithmetic) Session 2, 14:45-16:45 (Input and Programme Constructs) Materials

More information

JavaScript Testing. Beginner's Guide. Liang Yuxian Eugene. Test and debug JavaScript the easy way PUBLISHING MUMBAI BIRMINGHAM. k I I.

JavaScript Testing. Beginner's Guide. Liang Yuxian Eugene. Test and debug JavaScript the easy way PUBLISHING MUMBAI BIRMINGHAM. k I I. JavaScript Testing Beginner's Guide Test and debug JavaScript the easy way Liang Yuxian Eugene [ rwtmm k I I PUBLISHING I BIRMINGHAM MUMBAI loading loading runtime Preface 1 Chapter 1: What is JavaScript

More information

Tutorial 5: Developing Java applications

Tutorial 5: Developing Java applications Tutorial 5: Developing Java applications p. 1 Tutorial 5: Developing Java applications Georgios Gousios gousiosg@aueb.gr Department of Management Science and Technology Athens University of Economics and

More information

Outline. 1 Denitions. 2 Principles. 4 Implementation and Evaluation. 5 Debugging. 6 References

Outline. 1 Denitions. 2 Principles. 4 Implementation and Evaluation. 5 Debugging. 6 References Outline Computer Science 331 Introduction to Testing of Programs Mike Jacobson Department of Computer Science University of Calgary Lecture #3-4 1 Denitions 2 3 4 Implementation and Evaluation 5 Debugging

More information

Effective unit testing with JUnit

Effective unit testing with JUnit Effective unit testing with JUnit written by Eric M. Burke burke_e@ociweb.com Copyright 2000, Eric M. Burke and All rights reserved last revised 12 Oct 2000 extreme Testing 1 What is extreme Programming

More information

Extreme Programming and Embedded Software Development

Extreme Programming and Embedded Software Development Extreme Programming and Embedded Software Development By James Grenning Every time I do a project, it seems we don t get the hardware until late in the project. This limits the progress the team can make.

More information

Monitoring, Tracing, Debugging (Under Construction)

Monitoring, Tracing, Debugging (Under Construction) Monitoring, Tracing, Debugging (Under Construction) I was already tempted to drop this topic from my lecture on operating systems when I found Stephan Siemen's article "Top Speed" in Linux World 10/2003.

More information

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number.

Version control. HEAD is the name of the latest revision in the repository. It can be used in subversion rather than the latest revision number. Version control Version control is a powerful tool for many kinds of work done over a period of time, including writing papers and theses as well as writing code. This session gives a introduction to a

More information

1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders

1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders 1.00 Lecture 1 Course Overview Introduction to Java Reading for next time: Big Java: 1.1-1.7 Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders

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

Chapter 3. Input and output. 3.1 The System class

Chapter 3. Input and output. 3.1 The System class Chapter 3 Input and output The programs we ve looked at so far just display messages, which doesn t involve a lot of real computation. This chapter will show you how to read input from the keyboard, use

More information

Modern Software Development Tools on OpenVMS

Modern Software Development Tools on OpenVMS Modern Software Development Tools on OpenVMS Meg Watson Principal Software Engineer 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Topics

More information

Software Construction

Software Construction Software Construction Debugging and Exceptions Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target You know the proper usage

More information

First Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science

First Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science First Java Programs V. Paúl Pauca Department of Computer Science Wake Forest University CSC 111D Fall, 2015 Hello World revisited / 8/23/15 The f i r s t o b l i g a t o r y Java program @author Paul Pauca

More information

Introduction to Programming System Design. CSCI 455x (4 Units)

Introduction to Programming System Design. CSCI 455x (4 Units) Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,

More information

JUnit Howto. Blaine Simpson

JUnit Howto. Blaine Simpson JUnit Howto Blaine Simpson JUnit Howto Blaine Simpson Published $Date: 2005/09/19 15:15:02 $ Table of Contents 1. Introduction... 1 Available formats for this document... 1 Purpose... 1 Support... 2 What

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

Research Data Management CODING

Research Data Management CODING CODING Coding When writing software or analytical code it is important that others and your future self can understand what the code is doing. published 10 steps that they regard as the Best Practices

More information

CSE 403. Performance Profiling Marty Stepp

CSE 403. Performance Profiling Marty Stepp CSE 403 Performance Profiling Marty Stepp 1 How can we optimize it? public static String makestring() { String str = ""; for (int n = 0; n < REPS; n++) { str += "more"; } return str; } 2 How can we optimize

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

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012 Jenkins Continuous Build System Jesse Bowes CSCI-5828 Spring 2012 Executive summary Continuous integration systems are a vital part of any Agile team because they help enforce the ideals of Agile development

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

Java course - IAG0040. Unit testing & Agile Software Development

Java course - IAG0040. Unit testing & Agile Software Development Java course - IAG0040 Unit testing & Agile Software Development 2011 Unit tests How to be confident that your code works? Why wait for somebody else to test your code? How to provide up-to-date examples

More information

Software documentation systems

Software documentation systems Software documentation systems Basic introduction to various user-oriented and developer-oriented software documentation systems. Ondrej Holotnak Ondrej Jombik Software documentation systems: Basic introduction

More information

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories

XP & Scrum. extreme Programming. XP Roles, cont!d. XP Roles. Functional Tests. project stays on course. about the stories XP & Scrum Beatrice Åkerblom beatrice@dsv.su.se extreme Programming XP Roles XP Roles, cont!d! Customer ~ Writes User Stories and specifies Functional Tests ~ Sets priorities, explains stories ~ May or

More information

Continuous Integration and Bamboo. Ryan Cutter CSCI 5828 2012 Spring Semester

Continuous Integration and Bamboo. Ryan Cutter CSCI 5828 2012 Spring Semester Continuous Integration and Bamboo Ryan Cutter CSCI 5828 2012 Spring Semester Agenda What is CI and how can it help me? Fundamentals of CI Fundamentals of Bamboo Configuration / Price Quick example Features

More information

Source Control Systems

Source Control Systems Source Control Systems SVN, Git, GitHub SoftUni Team Technical Trainers Software University http://softuni.bg Table of Contents 1. Software Configuration Management (SCM) 2. Version Control Systems: Philosophy

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

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I)

ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) ANDROID APPS DEVELOPMENT FOR MOBILE AND TABLET DEVICE (LEVEL I) Who am I? Lo Chi Wing, Peter Lecture 1: Introduction to Android Development Email: Peter@Peter-Lo.com Facebook: http://www.facebook.com/peterlo111

More information

Professional. SlickEdif. John Hurst IC..T...L. i 1 8 О 7» \ WILEY \ Wiley Publishing, Inc.

Professional. SlickEdif. John Hurst IC..T...L. i 1 8 О 7» \ WILEY \ Wiley Publishing, Inc. Professional SlickEdif John Hurst IC..T...L i 1 8 О 7» \ WILEY \! 2 0 0 7 " > Wiley Publishing, Inc. Acknowledgments Introduction xiii xxv Part I: Getting Started with SiickEdit Chapter 1: Introducing

More information

Programming by Contract. Programming by Contract: Motivation. Programming by Contract: Preconditions and Postconditions

Programming by Contract. Programming by Contract: Motivation. Programming by Contract: Preconditions and Postconditions COMP209 Object Oriented Programming Designing Classes 2 Mark Hall Programming by Contract (adapted from slides by Mark Utting) Preconditions Postconditions Class invariants Programming by Contract An agreement

More information

Development Environment and Tools for Java. Brian Hughes IBM

Development Environment and Tools for Java. Brian Hughes IBM Development Environment and Tools for Java Brian Hughes IBM 1 Acknowledgements and Disclaimers Availability. References in this presentation to IBM products, programs, or services do not imply that they

More information

Hypercosm. Studio. www.hypercosm.com

Hypercosm. Studio. www.hypercosm.com Hypercosm Studio www.hypercosm.com Hypercosm Studio Guide 3 Revision: November 2005 Copyright 2005 Hypercosm LLC All rights reserved. Hypercosm, OMAR, Hypercosm 3D Player, and Hypercosm Studio are trademarks

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

Software Engineering for LabVIEW Applications. Elijah Kerry LabVIEW Product Manager

Software Engineering for LabVIEW Applications. Elijah Kerry LabVIEW Product Manager Software Engineering for LabVIEW Applications Elijah Kerry LabVIEW Product Manager 1 Ensuring Software Quality and Reliability Goals 1. Deliver a working product 2. Prove it works right 3. Mitigate risk

More information

Jos Warmer, Independent jos.warmer@openmodeling.nl www.openmodeling.nl

Jos Warmer, Independent jos.warmer@openmodeling.nl www.openmodeling.nl Domain Specific Languages for Business Users Jos Warmer, Independent jos.warmer@openmodeling.nl www.openmodeling.nl Sheet 2 Background Experience Business DSLs Insurance Product Modeling (structure) Pattern

More information

Visual Basic Programming. An Introduction

Visual Basic Programming. An Introduction Visual Basic Programming An Introduction Why Visual Basic? Programming for the Windows User Interface is extremely complicated. Other Graphical User Interfaces (GUI) are no better. Visual Basic provides

More information

Rails Cookbook. Rob Orsini. O'REILLY 8 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo

Rails Cookbook. Rob Orsini. O'REILLY 8 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo Rails Cookbook Rob Orsini O'REILLY 8 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo Table of Contents Foreword : ; xi Preface ; ;... xiii 1. Getting Started 1 1.1 Joining the Rails Community

More information

GDB Tutorial. A Walkthrough with Examples. CMSC 212 - Spring 2009. Last modified March 22, 2009. GDB Tutorial

GDB Tutorial. A Walkthrough with Examples. CMSC 212 - Spring 2009. Last modified March 22, 2009. GDB Tutorial A Walkthrough with Examples CMSC 212 - Spring 2009 Last modified March 22, 2009 What is gdb? GNU Debugger A debugger for several languages, including C and C++ It allows you to inspect what the program

More information

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden

Beginning POJOs. From Novice to Professional. Brian Sam-Bodden Beginning POJOs From Novice to Professional Brian Sam-Bodden Contents About the Author Acknowledgments Introduction.XIII xv XVII CHAPTER1 Introduction The Java EE Market Case Study: The TechConf Website...

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

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8 dt08ps5]@student.lth.

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8 dt08ps5]@student.lth. 1 Continuous Integration with Jenkins Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8 dt08ps5]@student.lth.se Faculty of Engineering, Lund Univeristy (LTH) March 5, 2013 Abstract

More information

Some Scanner Class Methods

Some Scanner Class Methods Keyboard Input Scanner, Documentation, Style Java 5.0 has reasonable facilities for handling keyboard input. These facilities are provided by the Scanner class in the java.util package. A package is a

More information

Best Practices For PL/SQL Development in Oracle Application Express

Best Practices For PL/SQL Development in Oracle Application Express Oracle PL/SQL and APEX Best Practices For PL/SQL Development in Oracle Application Express Steven Feuerstein steven@stevenfeuerstein.com PL/SQL Evangelist Quest Software Resources for PL/SQL Developers

More information

SOFTWARE TESTING TRAINING COURSES CONTENTS

SOFTWARE TESTING TRAINING COURSES CONTENTS SOFTWARE TESTING TRAINING COURSES CONTENTS 1 Unit I Description Objectves Duration Contents Software Testing Fundamentals and Best Practices This training course will give basic understanding on software

More information

Version Control with Subversion

Version Control with Subversion Version Control with Subversion Introduction Wouldn t you like to have a time machine? Software developers already have one! it is called version control Version control (aka Revision Control System or

More information

Lab work Software Testing

Lab work Software Testing Lab work Software Testing 1 Introduction 1.1 Objectives The objective of the lab work of the Software Testing course is to help you learn how you can apply the various testing techniques and test design

More information

CS 451 Software Engineering Winter 2009

CS 451 Software Engineering Winter 2009 CS 451 Software Engineering Winter 2009 Yuanfang Cai Room 104, University Crossings 215.895.0298 yfcai@cs.drexel.edu 1 Testing Process Testing Testing only reveals the presence of defects Does not identify

More information

Creating a Free, Dependable Software Engineering Environment for Building Java Applications

Creating a Free, Dependable Software Engineering Environment for Building Java Applications Creating a Free, Dependable Software Engineering Environment for Building Java Applications Marcus Bittman 814-332-3629 bittmam@allegheny.edu Robert Roos 814-332-2883 rroos@allegheny.edu Gregory M. Kapfhammer

More information

Capabilities of a Java Test Execution Framework by Erick Griffin

Capabilities of a Java Test Execution Framework by Erick Griffin Capabilities of a Java Test Execution Framework by Erick Griffin Here we discuss key properties and capabilities of a Java Test Execution Framework for writing and executing discrete Java tests for testing

More information

Documentation and Project Organization

Documentation and Project Organization Documentation and Project Organization Software Engineering Workshop, December 5-6, 2005 Jan Beutel ETH Zürich, Institut TIK December 5, 2005 Overview Project Organization Specification Bug tracking/milestones

More information

Database Migration Plugin - Reference Documentation

Database Migration Plugin - Reference Documentation Grails Database Migration Plugin Database Migration Plugin - Reference Documentation Authors: Burt Beckwith Version: 1.4.0 Table of Contents 1 Introduction to the Database Migration Plugin 1.1 History

More information

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011

CISC 275: Introduction to Software Engineering. Lab 5: Introduction to Revision Control with. Charlie Greenbacker University of Delaware Fall 2011 CISC 275: Introduction to Software Engineering Lab 5: Introduction to Revision Control with Charlie Greenbacker University of Delaware Fall 2011 Overview Revision Control Systems in general Subversion

More information

Two Best Practices for Scientific Computing

Two Best Practices for Scientific Computing Two Best Practices for Scientific Computing Version Control Systems & Automated Code Testing David Love Software Interest Group University of Arizona February 18, 2013 How This Talk Happened Applied alumnus,

More information

Introduction to Automated Testing

Introduction to Automated Testing Introduction to Automated Testing What is Software testing? Examination of a software unit, several integrated software units or an entire software package by running it. execution based on test cases

More information

Continuous Integration. CSC 440: Software Engineering Slide #1

Continuous Integration. CSC 440: Software Engineering Slide #1 Continuous Integration CSC 440: Software Engineering Slide #1 Topics 1. Continuous integration 2. Configuration management 3. Types of version control 1. None 2. Lock-Modify-Unlock 3. Copy-Modify-Merge

More information

GLOBAL CONSULTING SERVICES TOOLS FOR WEBMETHODS. 2015 Software AG. All rights reserved. For internal use only

GLOBAL CONSULTING SERVICES TOOLS FOR WEBMETHODS. 2015 Software AG. All rights reserved. For internal use only GLOBAL CONSULTING SERVICES TOOLS FOR WEBMETHODS CONSULTING TOOLS VALUE CREATING ADD-ONS REDUCE manual effort time effort risk 6 READY-TO- USE TOOLS MORE COMING SOON SIMPLE PRICING & INSTALLATION INCREASE

More information

Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic

Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic The challenge When building distributed, large-scale applications, quality assurance (QA) gets increasingly

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

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

Revision control systems (RCS) and

Revision control systems (RCS) and Revision control systems (RCS) and Subversion Problem area Software projects with multiple developers need to coordinate and synchronize the source code Approaches to version control Work on same computer

More information

What Is Specific in Load Testing?

What Is Specific in Load Testing? What Is Specific in Load Testing? Testing of multi-user applications under realistic and stress loads is really the only way to ensure appropriate performance and reliability in production. Load testing

More information

Debugging Java Applications

Debugging Java Applications Debugging Java Applications Table of Contents Starting a Debugging Session...2 Debugger Windows...4 Attaching the Debugger to a Running Application...5 Starting the Debugger Outside of the Project's Main

More information

Version Control Systems (Part 2)

Version Control Systems (Part 2) i i Systems and Internet Infrastructure Security Institute for Networking and Security Research Department of Computer Science and Engineering Pennsylvania State University, University Park, PA Version

More information

Integrated Error-Detection Techniques: Find More Bugs in Java Applications

Integrated Error-Detection Techniques: Find More Bugs in Java Applications Integrated Error-Detection Techniques: Find More Bugs in Java Applications Software verification techniques such as pattern-based static code analysis, runtime error detection, unit testing, and flow analysis

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

Unit Testing and JUnit

Unit Testing and JUnit Unit Testing and JUnit Testing Objectives Tests intended to find errors Errors should be found quickly Good test cases have high p for finding a yet undiscovered error Successful tests cause program failure,

More information

Plugin JUnit. Contents. Mikaël Marche. November 18, 2005

Plugin JUnit. Contents. Mikaël Marche. November 18, 2005 Plugin JUnit Mikaël Marche November 18, 2005 JUnit is a Java API enabling to describe unit tests for a Java application. The JUnit plugin inside Salomé-TMF enables one to execute automatically JUnit tests

More information

No no-argument constructor. No default constructor found

No no-argument constructor. No default constructor found Every software developer deals with bugs. The really tough bugs aren t detected by the compiler. Nasty bugs manifest themselves only when executed at runtime. Here is a list of the top ten difficult and

More information

The ROI of Test Automation

The ROI of Test Automation The ROI of Test Automation by Michael Kelly www.michaeldkelly.com Introduction With the exception of my first project team out of college, in every project team since, I ve had to explain either what automated

More information

Java Power Tools. John Ferguson Smart. ULB Darmstadt 1 PI. O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo

Java Power Tools. John Ferguson Smart. ULB Darmstadt 1 PI. O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo Java Power Tools John Ferguson Smart ULB Darmstadt 1 PI O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo Table of Contents Foreword Preface Introduction xvii xix xxxiii Parti. Build

More information

Lab 0 (Setting up your Development Environment) Week 1

Lab 0 (Setting up your Development Environment) Week 1 ECE155: Engineering Design with Embedded Systems Winter 2013 Lab 0 (Setting up your Development Environment) Week 1 Prepared by Kirill Morozov version 1.2 1 Objectives In this lab, you ll familiarize yourself

More information

Build management & Continuous integration. with Maven & Hudson

Build management & Continuous integration. with Maven & Hudson Build management & Continuous integration with Maven & Hudson About me Tim te Beek tim.te.beek@nbic.nl Computer science student Bioinformatics Research Support Overview Build automation with Maven Repository

More information

RUnit - A Unit Test Framework for R

RUnit - A Unit Test Framework for R RUnit - A Unit Test Framework for R Thomas König, Klaus Jünemann, and Matthias Burger Epigenomics AG November 5, 2015 Contents 1 Introduction 2 2 The RUnit package 4 2.1 Test case execution........................

More information

Visual Logic Instructions and Assignments

Visual Logic Instructions and Assignments Visual Logic Instructions and Assignments Visual Logic can be installed from the CD that accompanies our textbook. It is a nifty tool for creating program flowcharts, but that is only half of the story.

More information

CSE 308. Coding Conventions. Reference

CSE 308. Coding Conventions. Reference CSE 308 Coding Conventions Reference Java Coding Conventions googlestyleguide.googlecode.com/svn/trunk/javaguide.html Java Naming Conventions www.ibm.com/developerworks/library/ws-tipnamingconv.html 2

More information

[PRAKTISCHE ASPEKTE DER INFORMATIK WS 13/14]

[PRAKTISCHE ASPEKTE DER INFORMATIK WS 13/14] 2013/14 Institut für Computergraphik, TU Braunschweig Pablo Bauszat [PRAKTISCHE ASPEKTE DER INFORMATIK WS 13/14] All elemental steps that will get you started for your new life as a computer science programmer.

More information

<Insert Picture Here> What's New in NetBeans IDE 7.2

<Insert Picture Here> What's New in NetBeans IDE 7.2 Slide 1 What's New in NetBeans IDE 7.2 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated

More information

Advanced Software Testing

Advanced Software Testing Johan Seland Advanced Software Testing Geilo Winter School 2013 1 Solution Example for the Bowling Game Kata Solution is in the final branch on Github git clone git://github.com/johanseland/bowlinggamekatapy.git

More information

TESTING WITH JUNIT. Lab 3 : Testing

TESTING WITH JUNIT. Lab 3 : Testing TESTING WITH JUNIT Lab 3 : Testing Overview Testing with JUnit JUnit Basics Sample Test Case How To Write a Test Case Running Tests with JUnit JUnit plug-in for NetBeans Running Tests in NetBeans Testing

More information

Outlook Today. Microsoft Outlook a different way to look at E-MailE. By Microsoft.com

Outlook Today. Microsoft Outlook a different way to look at E-MailE. By Microsoft.com Outlook Today Microsoft Outlook a different way to look at E-MailE By Microsoft.com What to do, What to do How many times have you received a message from your system administrator telling you that you're

More information

Team Name : PRX Team Members : Liang Yu, Parvathy Unnikrishnan Nair, Reto Kleeb, Xinyi Wang

Team Name : PRX Team Members : Liang Yu, Parvathy Unnikrishnan Nair, Reto Kleeb, Xinyi Wang Test Design Document Authors Team Name : PRX Team Members : Liang Yu, Parvathy Unnikrishnan Nair, Reto Kleeb, Xinyi Wang Purpose of this Document This document explains the general idea of the continuous

More information

CSCI E 98: Managed Environments for the Execution of Programs

CSCI E 98: Managed Environments for the Execution of Programs CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office

More information

The Benefits of Modular Programming

The Benefits of Modular Programming CHAPTER TWO The Benefits of Modular Programming Copyright Sun Microsystems, 2007 2.1 Distributed Development Nobody writes software entirely in-house anymore. Outside the world of embedded systems, almost

More information

Week G Versioning with svn

Week G Versioning with svn Week G Versioning with svn What is Versioning? Naïve vs. smart approaches Subversion (svn) workflow Basic svn commands http://subversion.tigris.org/ Assignments: Check in your proposals Week G Versioning

More information

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects TORRY HARRIS BUSINESS SOLUTIONS Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects Ganapathi Nanjappa 4/28/2010 2010 Torry Harris Business Solutions. All rights reserved Page

More information