Using Testing and JUnit Across The Curriculum

Size: px
Start display at page:

Download "Using Testing and JUnit Across The Curriculum"

Transcription

1 Using Testing and JUnit Across The Curriculum Michael Wick, Daniel Stevenson and Paul Wagner Department of Computer Science University of Wisconsin-Eau Claire Eau Claire, WI {wickmr, stevende, ABSTRACT While the usage of unit-testing frameworks such as JUnit has greatly increased over the last several years, it is not immediately apparent to students and instructors how to best use tools like JUnit and how to integrate testing across a computer science curriculum. We have worked over the last four semesters to infuse testing and JUnit across our curriculum, building from having students use JUnit to having them write their own test cases to building larger integration and use case testing systems to studying JUnit as an example of good application of design patterns. We have found that, based on this increased presentation and structuring of the usage of JUnit and testing, students have an increased understanding and appreciation of the overall value of testing in software development. Categories and Subject Descriptions K.3 [Computers & Education]: Computer & Information Science Education - Computer Science Education. General Terms Measurement, Design, Reliability, Verification. Keywords JUnit, Testing, Unit Testing, Unit Testing Frameworks. 1 INTRODUCTION Unit testing has achieved significant prominence in the computer science curriculum over the past several years. This has been driven by several factors: the test first mentality of the agile programming community, the available of good unit testing frameworks such as JUnit [6] in the Java software development world, increased interest in knowledge of and experience with testing by industry, and computer science faculty s interest in integrating this into the curriculum. JUnit has a number of fundamental concepts. A test case is a Java class that tests some particular usage of the class in question. A test case consists of one or more test methods, which in turn test some component of the class. Multiple test cases can be combined into a test suite. Common test data can be organized into a fixture, which then can be used with setup and teardown methods to isolate activity done across multiple test methods within a test case. Students quickly see the benefits of a unit testing framework, and indeed they enthusiastically run the tests we provide in our first programming class in Java. However, we originally did not see a reasonable path in our curriculum to help students progress from using unit tests to writing unit tests to developing and understanding more sophisticated testing systems for tasks such as integration testing and use case testing. As we see software development moving increasingly in a test-driven direction, we have worked to structure our presentation of testing with JUnit and infuse testing and JUnit into a variety of courses at various levels in our curriculum. We have begun using JUnit across our curriculum over the past two years. We start in our first programming course by providing JUnit test cases and suites for our students and trying to instill good testing discipline within them. In our second programming course we move onto asking students to write their own test cases and suites, once they are familiar with concepts such as inheritance and interfaces and they have had more experience with JUnit. In the first software engineering course they use design patterns to build larger testing frameworks that cover integration testing as well as unit testing. Finally, in a senior level/capstone design course, the students study how JUnit makes use of a variety of design patterns. This leads our students to better understand and appreciate the value of testing as part of software development. 2 BACKGROUND JUnit was created by Erich Gamma and Kent Beck in the mid- to late-1990s in order to provide an easy-to-use framework that encouraged unit testing. JUnit has since become very popular, and can now be considered the flagship of a much larger xunit family of testing frameworks. There are a number of books [7, 8, 11] that discuss the use of JUnit, both the technical details of using it and to some extent good practice issues. Similarly, there are a variety of articles on the world-wide web (e.g. [3, 4, 5]) that address various aspects of JUnit. Discussion of JUnit has begun to increase in the computer science education literature as well (e.g. [9, 10]). While many of these books and articles cover technical details associated with using JUnit, relatively few focus on best practices

2 (though see [4,11]) especially as they relate to instruction. This has led us to focus our attention on developing a more methodical approach to the use of JUnit and the teaching of testing from our first course through our capstone courses, so that we can help our students become more skilled in this increasingly significant and important area. 3 UNIT TESTING AND JUNIT IN A FIRST PROGRAMMING COURSE In our first programming course we try to impress upon the students the value of testing generally and unit testing specifically. We now view this as developing a testing foundation that they will carry through the curriculum, building on this by writing their own unit tests, moving on to integration and other testing, and seeing how testing frameworks can be an example of good software design. As such, we have become more careful to make sure that we provide good test cases and suites for the students. We start out by providing the students with a lab exercise on JUnit early in the first programming course, and provide JUnit tests for the programming assignments that we assign. As we don t introduce inheritance and interfaces until later in the semester, our focus regarding testing in this course is on having the students directly experience the value of unit testing their code as they develop. At this level we introduce test suites as well as test cases. While many of the references above focus on test cases and test methods, we are finding that the use of test suites allow us to encourage modular development early, as well as providing a tool by which to evaluate various subsets of functionality or even to evaluate assignments to different levels of quality. For example, we can now give an assignment where we develop an A test suite, a B test suite, etc., so that students can see that increased levels of unit testing provide additional quality to their work. We teach the students to place their unit tests in a separate source tree within the same package. For example, under Eclipse, we can have a project JUnitExample that contains a Java folder with the package edu.university.cs.popmachine that contains the domain classes for a Pop Machine system (e.g.popmachine.java, PopMachineException.java, etc.), and this project also includes a JUnit folder with the same package edu.university.cs.popmachine with the test classes (e.g. TestPopMachineDropPop.java, etc.). We find that this separate source tree organization allows package access for the test classes but doesn t clutter the source tree. It also supports a more modular view of the development of a software system. We follow a simplified subset of the test case design rules in this first course that we later ask them to use in designing and writing their own test cases in the second programming course (see Section 4). Providing good and consistent examples early encourages the students to follow our model as they move on to designing their own test cases. 4 UNIT TESTING AND JUNIT IN A SECOND PROGRAMMING COURSE Building on the testing experiences students have in their first programming course, our second programming course explicitly teaches students how to design JUnit test cases for themselves. Obviously, this isn t the focus of the entire course (we focus on algorithms, data structures and their applications), however it does provide a nice opportunity to help students refresh on the concepts from the previous course while learning more about the proper design of JUnit test cases. From their earlier experience, students appreciate the important role of unit testing in software development and have a firm understanding of the appropriate file organization in which to store JUnit test cases. What they lack is the ability to effectively write their own test cases. We have developed a set of JUnit design rules that help students develop a structured and relatively impressive set of testing code. The following section presents our JUnit design rules and illustrates their meaning by applying them to the testing of the following simple source code. public class PopMachine { protected List cans; protected int costperpop; protected int deposit; public PopMachine(int cost) { costperpop = cost; deposit = 0; scans = new LinkedList(); public void add(pop p) { supply.add(p);... public int droppop() throws PopMachineException { int result = 0; try { cans.removefirst(); if (deposit >= costperpop ){ result.change = deposit costperpop; deposit = 0; else { throw new NSFException(); catch (NonexistentElementException e){ throw new SoldOutException(); return result; This class is meant to simulate the operation of a simple pop machine. Obviously this is a simple example, but the class does illustrate several features intrinsic in more interesting code. 4.1 JUnit Design Rules For A Second Course Derive one TestClass class from junit.testcase for each target class. To modularize the test cases, we teach our students to implement an abstract class which extends junit.testcase for each class they wish to test. The name of each such class should be TestClass where Class is the name of the given target class (see the example combined with the next design rule). Define one nested class inside the TestClass for each collaborator of the target class. This nested class is an example of a mock class [8]. The idea is that we want to make sure that our test cases test only the target class and not any of the related collaborator classes. By using mock classes we can replace the collaborators

3 with special purpose objects that have hard-coded behavior consistent with our needs. The name of the nested mock class should be MockClass where Class is the name of the actual collaborator class. The following code segment illustrates the TestPopMachine class and includes the definition of a mock class to replace the Pop collaborator of our PopMachine class. public class TestPopMachine extends TestCase { public class MockPop extends Pop {... public void setup(){... public void teardown(){... Derive one TestClassMethod class from TestClass for each method of each target class. Again, to help control complexity and to create modularity within the test cases, we teach our students to define a test case (subclass of TestClass) for each method of each target class. The name of each such class should be TestClassMethod() where Class is the name of the target class and Method is the name of the specific target method within that class. For example, the following code segment illustrates the TestPopMachineDropPop class that would be responsible for testing the droppop() method of the PopMachine class. public class TestPopMachineDropPop extends TestPopMachine { public void testexactchange(){ public void testunderdeposit(){ public void testoverdeposit(){ Implement one testscenario() method in the TestClassMethod class for each possible scenario of the target method. Typically, there are several paths through a method that must be tested. For example, the method should be tested when it should produce an exception, the method should be tested when it shouldn t produce an exception, and so on. Such tests should be modularized and defined in a common location and thus we group these tests in the TestClassMethod class. Notice how this organizational structure isolates to one class all tests that validate the behavior of a single method. One of the key advantages to this design is that students are forced to explicitly think about the various scenarios for each method. For example, the following code segment illustrates the implementation of the testexactchange scenario for the droppop() method of the PopMachine class. public void testexactchange(){ popmachine.deposit = COST; try { changereturned = popmachine.droppop(); catch (NSFException unexpected){ fail("..."); asserttrue(popmachine.deposit==0); asserttrue(popmachine.cans.size()== originalpopcount - 1); asserttrue(changereturned == 0); The variable originalpopcount used in the above code is initialized by the setup() method of the TestPopMachine class to be equal to the size of the list cans prior to the actual test code (code not show due to space considerations). The next code segment illustrates the use of the MockPop mock class in our testing design. In particular, the code segment illustrates the implication of the testaddnotfull() method of the TestPopMachineAdd test case class. public void testaddnotfull(){ popmachine.add( new MockPop() ); == originalpopcount + 1); Notice that by using the hard-coded MockPop class, we can avoid inter-mixing the tests of the PopMachine class and the Pop class. If instead we had actually used the Pop class and an error was encountered, we would not know whether the error was caused by the add( ) method of PopMachine or by some behavior of the actual instance of the Pop class that was given to the add( ) method. Using a hard-coded mock class greatly reduces the chance that the parameter of the add( ) method will be responsible for any errors in the testing of the add( ) method. Derive one TestClassSuite class from junit.testsuite for each target class. This class will serve as the focal point for all tests associated with the target class. The constructor for this class should use the static addtest(...) method of the junit.testsuite class to add an instance of each individual TestClassMethod class to the TestClassSuite. public class TestPopMachineSuite extends TestSuite { public TestPopMachineSuite(){ suite.add(new TestPopMachineDropPop()); suite.add(new TestPopMachineDeposit()); Advantages and Disadvantages The main advantage to our JUnit design rules is that they create a modularized library of test cases for each class under construction. Further, the organization of this library directly reflects the separation of concerns found in the testing problem all tests associated with a given method are stored together, all collections of tests associated with a given class are defined under a common ancestor are stored together in a given test suite. The main disadvantage to our JUnit design rules is that they tend to lead to a massive number of test classes. While this is true, we believe that current development environments combined with the hierarchical nature of the test classes in our result provides a sufficiently powerful abstraction that the volume and numbers of test cases is not a significant burden for the developer. 5 TESTING AND JUNIT IN A SOFTWARE ENGINEERING COURSE The design rules presented in the previous section not only encourage a coherent set of unit test cases, but also lay the foundation on which we can build other types of test cases including integration tests and use case tests.

4 5.1 Integration Testing In our software engineering course, we introduce students to the concept of integration testing. Here the focus is not on the behavior of each isolated class, but rather on the behavior of progressively larger and larger collections of classes working together. Given the design rules discussed in section 4, the students are in a wonderful position to learn an effective technique for performing integration testing. By using a factory method design pattern [2] to create the instances of all mock classes in our test cases, we can get a fairly effective means of integration testing by simply deriving new test cases from our existing test cases. In these new test cases the factory method of the original test case (which produces instances of the mock object) is replaced with a new factory method that returns the actual object with which we wish to test integration. Consider the example shown in the following code segment. protected Pop createpop() { return new MockPop(); public void testaddnotfull(){ popmachine.add( createpop() ); == originalpopcount + 1); public class TestPopMachineAddWithPop extends TestPopMachineAdd { protected Pop createpop(){ return new Pop(); For first section of code illustrates the use of a factory method within the original TestPopMachineAdd class. Notice that the construction of a concrete Pop instance is isolated to the createpop() method. The second section of code illustrates how the definition of createpop() can be overridden in the new test case so that it integrates with the actual Pop class (not the mock class) Advantages and Disadvantages Notice how we essentially get the integration test between PopMachine s add(...) method and the Pop class for free. All we need to do is derive a new test case that simply overrides the factory method so that all the inherited methods of the TestPopMachineAdd class are now performed using an instance of the actual Pop class. One obvious disadvantage to this approach is that it is difficult to test all possible combinations of a target class with its collaborators. For example, if a class A collaborates with both classes B and C, then to test the integration of A with B would simply derive new test cases that replace the factory of each of our test cases with a factory that creates instances of B. Now to test A, B, and C together, we just derive new classes from our new test cases. These new test cases replace the factory method that produces mock C instances with methods that produce actual C instances. However, if you also want to test the integration of class A with class C alone (not including the actual class B), this requires that we derive new tests directly from the tests for A, replacing the factory of mock Cs but leaving the factory of mock Bs alone. This can lead to a combinational explosion on the number of possible tests cases. We are currently researching ways of removing this combinatorial problem. However, for our current purposes, we simply encourage students to develop tests for A with B, then A+B with C, and so on. 5.2 Use Case Testing We also teach students how to develop use case tests. Unlike the unit and integration tests, use case tests are not motivated by the implementation classes, but rather by the functional requirements of the system (i.e., the use cases). However, our basic approach to testing still applies. The following use case testing design rules are analogous to the design rules presented in section 4 but they apply to use cases rather than individual classes. Derive one TestUseCasePackage class from junit.testcase for each use case package in the system. Derive one TestUseCase class from TestUseCasePackages for each use case of each target use case package. Implement one testscenario() method in the TestUseCase class for each possible scenario of the target use case. Derive one TestUseCasePackageSuite class from TestSuite for each target use case package. This set of design rules teaches our students to derive a new class from junit.testsuite for each target use case package (collection of related use cases). Next, students derive new classes from that class, one for each specific use case in the package. Then, each specific scenario (normal flow, alternative flows, exception flows) of each use case is tested in its own method of this class. Finally, test suites are used to create a hierarchical representation of the use case tests. We have found the symmetry of this approach to use case testing to that of unit testing to be comfortable and familiar to the students 6 DESIGN PATTERNS AND JUNIT IN A SENIOR-LEVEL DESIGN COURSE In their senior year our students take a course which focuses on design through the use of architectural and design patterns. We have found that a straight catalog approach to this course tends to bore the students. Thus, we spend a lot of time focusing on how to apply patterns to given projects. Some of this work is done through the use of refactoring an existing design to use patterns and some is based on finding patterns from the start. We have found that the JUnit framework is a great example of a system where the types of problems encountered in its design provide nice matches to particular design patterns. In addition, since they have been using JUnit throughout the curriculum they are comfortable with using the framework which provides extra motivation to learn how it is designed. Instead of tacking the entire design of JUnit at one time and trying cull out the design patterns used, we instead follow the work in

5 [3]. We start with a blank slate and build up the framework incrementally by applying one pattern at a time, each one solving a particular problem. A short summary of the process and patterns involved follows. Those who are interested in more details should refer to [3]. The first thing we need to do is capture the idea of a test as an object. Developers have different styles of tests in mind and we do not want our framework to be concerned with the types of tests being run just that there are tests that need to be executed. This is an example of the Command pattern. Thus we make a class called TestCase that captures the test operation as an object. This class will have a run() (acting as the execute() method in Gang of Four pattern terminology [2]) to hold the actual test. Now that we have tests can be manipulated as objects, we can take a look at the development of the tests themselves (i.e. the run() methods). When a developer needs to write a specific test case they will subclass TestCase and override the run() method to implement the concrete behavior of their test. However, all tests contain the same basic steps performed in the same order. Those steps are setup a fixture, run the test using the fixture, then tear down the fixture. This is a classic example of the Template Method pattern where run() becomes the Template Method and setup(), runtest(), and teardown() become the Hooks. Another issue to be solved with tests is that we must collect the results somewhere. We really only care about collecting information on the failures of our tests, thus an efficient way to do this is with the Collection Parameter idiom. This basically states that we want to create a collecting object and pass it to each test where the failure results can be registered with it. In order to invoke a particular TestCase, we need our invoker to call the generic run() method because of how TestCases were setup as Commands. This in turn calls the runtest() hook method because run() was setup as a Template Method. The issue that this creates is that when the test writer is creating concrete TestCases they need to create a new subclass for each test and put all the testing code in a method called runtest(). This produces a proliferation of classes. One would much rather allow them to create several related testing methods in a single class, as we described earlier in this paper. An Adapter pattern (class version) can be used to solve this problem. It adapts the interface that the test writer wants to use (e.g. testexactchange()) to the interface that the framework needs for polymorphism to work correctly (i.e. runtest()). The best way of providing these adapters in Java is to use anonymous inner classes to subclass the concrete TestCase. Of course this still means all the required anonymous inner classes, one for each testx method the user writes, need to be coded. Here is where reflection comes to the rescue. JUnit provides a default implementation of runtest() that looks for all testx() methods. It creates an adapter specific to each of these methods by creating an instance of a dynamically tailored adapting anonymous inner class. Lastly we want to be able to abstractly run a single test or a suite of tests. That is, we do not want the invoker of the tests to care if it is running one test or many. This is an example of the Composite pattern where TestCase becomes the Leaf node and TestSuites become the Composite nodes. We have now built up the guts of the JUnit framework using Command, Template Method, Adapter and Composite patterns, along with the Collection Parameter idiom and reflection. This not only makes a powerful example of how to design with patterns, but it shows the students the inner workings of the testing framework they have been using for years. And for some of the better students it encourages them to dive into the framework and start extending it in an attempt to create a more personalized testing environment. 7 CONCLUSION We feel that the integration of testing into the curriculum is one of the most important trends in CS today. It enables students to produce cleaner code faster than ever before by catching bugs early in the development cycle. It also facilitates group projects by giving all group members the confidence that each other s code is correct. Early coverage of unit testing allows students be taught how to write good test cases. Just because your tests pass does not mean your code is correct. The tests are only as good as the test cases themselves. Thus we have developed our methodology for writing good test cases and when to present this information to the students. We have a gradual progression from providing test cases to the students, to students writing their own simple test cases, to the inclusion of mock object and design patterns, to the development of more complex integration testing and use case testing systems. Finally we use the JUnit framework as an example of good design and give students the necessary understand of it allow for possible extension. 8 REFERENCES [1] Bertolino, A. and Gnesi, S., Use Case-based Testing of Product Lines,, Poster Session from the Proceedings of the 9th European software engineering conference held jointly with 10th ACM SIGSOFT international symposium on Foundations of software engineering, Helsinki, Finland, 2003, pp [2] Gamma, Erich, Helm, Richard, Johnson, Ralph, Vlissides, John, Design Patterns: Elements of Reusable Object- Oriented Software, Addison-Wesley, [3] JUnit: A Cook s Tour, [4] JUnit Best Practices, ju it.html [5] JUnit Cookbook, [6] JUnit Home Page, [7] Link, Johannes; Unit Testing in Java: How Tests Drive the Code, Morgan Kaufman, [8] Massol, Vincent, with Husted, Ted; JUnit in Action, Manning Press, [9] Olan, Michael, Unit Testing: Test Early, Test Often, Journal of Computing in Small Colleges, v. 19, n. 2, Dec 2003, pp [10] Patterson, Andrew, Kolling, Michael, Roseberg, John, Introducing Unit Testing with BlueJ ; SIGCSE Bulletin: Proc. 8 th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education, v.35, n.3, September 2003, pp [11] Rainsberger, J.B., Sterling, Scott; JUnit Recipes: Practical Methods for Programmer Testing, Manning Press, 2004.

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

Author: Sascha Wolski Sebastian Hennebrueder http://www.laliluna.de/tutorials.html Tutorials for Struts, EJB, xdoclet and eclipse.

Author: Sascha Wolski Sebastian Hennebrueder http://www.laliluna.de/tutorials.html Tutorials for Struts, EJB, xdoclet and eclipse. JUnit Testing JUnit is a simple Java testing framework to write tests for you Java application. This tutorial gives you an overview of the features of JUnit and shows a little example how you can write

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

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

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

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

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

Structural Design Patterns Used in Data Structures Implementation

Structural Design Patterns Used in Data Structures Implementation Structural Design Patterns Used in Data Structures Implementation Niculescu Virginia Department of Computer Science Babeş-Bolyai University, Cluj-Napoca email address: vniculescu@cs.ubbcluj.ro November,

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

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

Test Driven Development

Test Driven Development Software Development Best Practices Test Driven Development http://www.construx.com 1999, 2006 Software Builders Inc. All Rights Reserved. Software Development Best Practices Test Driven Development, What

More information

Hybrid and Custom Data Structures: Evolution of the Data Structures Course

Hybrid and Custom Data Structures: Evolution of the Data Structures Course Hybrid and Custom Data Structures: Evolution of the Data Structures Course Daniel J. Ernst, Daniel E. Stevenson, and Paul Wagner Department of Computer Science University of Wisconsin Eau Claire Eau Claire,

More information

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 2 GoF Design Patterns Creational 1 GoF Design Patterns Principles Emphasis on flexibility and reuse through decoupling of classes. The underlying

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

+ Introduction to JUnit. IT323 Software Engineering II By: Mashael Al-Duwais

+ Introduction to JUnit. IT323 Software Engineering II By: Mashael Al-Duwais 1 + Introduction to JUnit IT323 Software Engineering II By: Mashael Al-Duwais + What is Unit Testing? 2 A procedure to validate individual units of Source Code Example: A procedure, method or class Validating

More information

Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6

Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6 The Researches on Unified Pattern of Information System Deng Zhonghua,Guo Liang,Xia Yanping School of Information Management, Wuhan University Wuhan, Hubei, China 430072 Abstract: This paper discusses

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

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

Introduction to unit testing with Java, Eclipse and Subversion

Introduction to unit testing with Java, Eclipse and Subversion Introduction to unit testing with Java, Eclipse and Subversion Table of Contents 1. About Unit Tests... 2 1.1. Introduction... 2 1.2. Unit tests frameworks... 3 2. A first test class... 4 2.1. Problem

More information

Unit testing with JUnit and CPPUnit. Krzysztof Pietroszek kmpietro@swen.uwaterloo.ca

Unit testing with JUnit and CPPUnit. Krzysztof Pietroszek kmpietro@swen.uwaterloo.ca Unit testing with JUnit and CPPUnit Krzysztof Pietroszek kmpietro@swen.uwaterloo.ca Old-fashioned low-level testing Stepping through a debugger drawbacks: 1. not automatic 2. time-consuming Littering code

More information

Experiences with Online Programming Examinations

Experiences with Online Programming Examinations Experiences with Online Programming Examinations Monica Farrow and Peter King School of Mathematical and Computer Sciences, Heriot-Watt University, Edinburgh EH14 4AS Abstract An online programming examination

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

Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective

Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective Orit Hazzan's Column Abstraction in Computer Science & Software Engineering: A Pedagogical Perspective This column is coauthored with Jeff Kramer, Department of Computing, Imperial College, London ABSTRACT

More information

Code Qualities and Coding Practices

Code Qualities and Coding Practices Code Qualities and Coding Practices Practices to Achieve Quality Scott L. Bain and the Net Objectives Agile Practice 13 December 2007 Contents Overview... 3 The Code Quality Practices... 5 Write Tests

More information

ABSTRACT FACTORY AND SINGLETON DESIGN PATTERNS TO CREATE DECORATOR PATTERN OBJECTS IN WEB APPLICATION

ABSTRACT FACTORY AND SINGLETON DESIGN PATTERNS TO CREATE DECORATOR PATTERN OBJECTS IN WEB APPLICATION ABSTRACT FACTORY AND SINGLETON DESIGN PATTERNS TO CREATE DECORATOR PATTERN OBJECTS IN WEB APPLICATION Vijay K Kerji Department of Computer Science and Engineering, PDA College of Engineering,Gulbarga,

More information

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

CSE 4415 / SWE 5415 Software Testing 2 Fall 2004 Olin Engineering Building, Room 128 Credits: 3.00

CSE 4415 / SWE 5415 Software Testing 2 Fall 2004 Olin Engineering Building, Room 128 Credits: 3.00 CSE 4415 / SWE 5415 Software Testing 2 Fall 2004 Olin Engineering Building, Room 128 Credits: 3.00 SOFTWARE TESTING 2. (Catalog description) Explores structural (glass box) methods for testing software.

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

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

Eugene Wallingford Department of Computer Science University of Northern Iowa Cedar Falls, Iowa 50614-0507 wallingf@cs.uni.edu

Eugene Wallingford Department of Computer Science University of Northern Iowa Cedar Falls, Iowa 50614-0507 wallingf@cs.uni.edu TOWARD A FIRST COURSE BASED ON OBJECT-ORIENTED PATTERNS Eugene Wallingford Department of Computer Science University of Northern Iowa Cedar Falls, Iowa 50614-0507 wallingf@cs.uni.edu 1 INTRODUCTION Many

More information

A Survey of Evidence for Test Driven Development in Academia

A Survey of Evidence for Test Driven Development in Academia A of Evidence for Test Driven Development in Academia Chetan Desai, David Janzen, Kyle Savage Computer Science California Polytechnic State University San Luis Obispo, California USA {cdesai, djanzen}@calpoly.edu

More information

Glossary of Object Oriented Terms

Glossary of Object Oriented Terms Appendix E Glossary of Object Oriented Terms abstract class: A class primarily intended to define an instance, but can not be instantiated without additional methods. abstract data type: An abstraction

More information

Unit-testing with JML

Unit-testing with JML Métodos Formais em Engenharia de Software Unit-testing with JML José Carlos Bacelar Almeida Departamento de Informática Universidade do Minho MI/MEI 2008/2009 1 Talk Outline Unit Testing - software testing

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

Computing Concepts with Java Essentials

Computing Concepts with Java Essentials 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann

More information

Win at Life. with Unit Testing. by Mark Story

Win at Life. with Unit Testing. by Mark Story Win at Life with Unit Testing. by Mark Story Who is this goofball Art college graduate that needed to make money. CakePHP core contributor for 2.5 years. Developer of DebugKit, ApiGenerator and several

More information

AppendixA1A1. Java Language Coding Guidelines. A1.1 Introduction

AppendixA1A1. Java Language Coding Guidelines. A1.1 Introduction AppendixA1A1 Java Language Coding Guidelines A1.1 Introduction This coding style guide is a simplified version of one that has been used with good success both in industrial practice and for college courses.

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

Evaluating the Efficacy of Test-Driven Development: Industrial Case Studies

Evaluating the Efficacy of Test-Driven Development: Industrial Case Studies Evaluating the Efficacy of Test-Driven Development: Industrial Case Studies Thirumalesh Bhat Center for Software Excellence One Microsoft Way Redmond, WA 98052 thirub@microsoft.com ABSTRACT This paper

More information

Java Unit testing with JUnit 4.x in Eclipse

Java Unit testing with JUnit 4.x in Eclipse Lars Vogel Version 0.2 Copyright 2007 Lars Vogel 30.06.2007 Abstract This article gives a short overview of JUnit 4.x and its usage within Eclipse. You should be able to run tests

More information

The WebShop E-Commerce Framework

The WebShop E-Commerce Framework The WebShop E-Commerce Framework Marcus Fontoura IBM Almaden Research Center 650 Harry Road, San Jose, CA 95120, U.S.A. e-mail: fontouraalmaden.ibm.com Wolfgang Pree Professor of Computer Science Software

More information

Quality Ensuring Development of Software Processes

Quality Ensuring Development of Software Processes Quality Ensuring Development of Software Processes ALEXANDER FÖRSTER,GREGOR ENGELS Department of Computer Science University of Paderborn D-33095 Paderborn, Germany {alfo engels}@upb.de ABSTRACT: Software

More information

Chapter 5. Regression Testing of Web-Components

Chapter 5. Regression Testing of Web-Components Chapter 5 Regression Testing of Web-Components With emergence of services and information over the internet and intranet, Web sites have become complex. Web components and their underlying parts are evolving

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

Evaluating the Efficacy of Test-Driven Development: Industrial Case Studies

Evaluating the Efficacy of Test-Driven Development: Industrial Case Studies Evaluating the Efficacy of Test-Driven Development: Industrial Case Studies Thirumalesh Bhat Center for Software Excellence One Microsoft Way Redmond, WA 98052 thirub@microsoft.com Nachiappan Nagappan

More information

EXPERIENCES WITH A REAL PROJECTS FOR REAL CLIENTS COURSE ON SOFTWARE ENGINEERING AT A LIBERAL ARTS INSTITUTION *

EXPERIENCES WITH A REAL PROJECTS FOR REAL CLIENTS COURSE ON SOFTWARE ENGINEERING AT A LIBERAL ARTS INSTITUTION * EXPERIENCES WITH A REAL PROJECTS FOR REAL CLIENTS COURSE ON SOFTWARE ENGINEERING AT A LIBERAL ARTS INSTITUTION * Vincent A. Cicirello Richard Stockton College 101 Vera King Farris Drive Galloway, NJ 08205

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

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

Test Driven Development of Embedded Systems Using Existing Software Test Infrastructure

Test Driven Development of Embedded Systems Using Existing Software Test Infrastructure Test Driven Development of Embedded Systems Using Existing Software Test Infrastructure Micah Dowty University of Colorado at Boulder micah@navi.cx March 26, 2004 Abstract Traditional software development

More information

How To Test In Bluej

How To Test In Bluej Unit Testing in BlueJ Version 1.0 for BlueJ Version 1.3.0 Michael Kölling Mærsk Institute University of Southern Denmark Copyright M. Kölling 1 INTRODUCTION.........................................................................

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

Building a test harness is. an effort that often takes. on a life of its own. But it. doesn t have to get wildly out of control.

Building a test harness is. an effort that often takes. on a life of its own. But it. doesn t have to get wildly out of control. Building a test harness is an effort that often takes on a life of its own. But it doesn t have to get wildly out of control. Take a tip from Agile development and cultivate your harness, test by test,

More information

GUIs with Swing. Principles of Software Construction: Objects, Design, and Concurrency. Jonathan Aldrich and Charlie Garrod Fall 2012

GUIs with Swing. Principles of Software Construction: Objects, Design, and Concurrency. Jonathan Aldrich and Charlie Garrod Fall 2012 GUIs with Swing Principles of Software Construction: Objects, Design, and Concurrency Jonathan Aldrich and Charlie Garrod Fall 2012 Slides copyright 2012 by Jeffrey Eppinger, Jonathan Aldrich, William

More information

Building a Flexible Software Factory Using Partial Domain Specific Models

Building a Flexible Software Factory Using Partial Domain Specific Models Building a Flexible Software Factory Using Partial Domain Specific Models Jos Warmer 1, Anneke Kleppe 2 3 1 Ordina SI&D, The Netherlands Jos.Warmer@ordina.nl 2 University Twente, Netherlands a.kleppe@utwente.nl

More information

What is a life cycle model?

What is a life cycle model? What is a life cycle model? Framework under which a software product is going to be developed. Defines the phases that the product under development will go through. Identifies activities involved in each

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 Tools Content (Manual with Selenium) Levels of Testing

Testing Tools Content (Manual with Selenium) Levels of Testing Course Objectives: This course is designed to train the fresher's, intermediate and professionals on testing with the concepts of manual testing and Automation with Selenium. The main focus is, once the

More information

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda Xtreme RUP by Ne t BJECTIVES Lightening Up the Rational Unified Process 2/9/2001 Copyright 2001 Net Objectives 1 RUP Overview Agenda Typical RUP Challenges Xtreme Programming Paradigm Document driven or

More information

GAME: A Generic Automated Marking Environment for Programming Assessment

GAME: A Generic Automated Marking Environment for Programming Assessment GAME: A Generic Automated Marking Environment for Programming Assessment Michael Blumenstein, Steve Green, Ann Nguyen and Vallipuram Muthukkumarasamy School of Information Technology, Griffith University

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

Intro to scientific programming (with Python) Pietro Berkes, Brandeis University

Intro to scientific programming (with Python) Pietro Berkes, Brandeis University Intro to scientific programming (with Python) Pietro Berkes, Brandeis University Next 4 lessons: Outline Scientific programming: best practices Classical learning (Hoepfield network) Probabilistic learning

More information

AP Computer Science Java Subset

AP Computer Science Java Subset APPENDIX A AP Computer Science Java Subset The AP Java subset is intended to outline the features of Java that may appear on the AP Computer Science A Exam. The AP Java subset is NOT intended as an overall

More information

Structured Testing in VDM

Structured Testing in VDM Structured Testing in VDM Kenneth Lausdahl and Peter Gorm Larsen May 2011 1 Introduction The Vienna Development Method was initially developed with proof of property in mind. However a number of test principles

More information

Dinopolis Java Coding Convention

Dinopolis Java Coding Convention Dinopolis Java Coding Convention Revision : 1.1 January 11, 2001 Abstract Please note that this version of the Coding convention is very much based on IICM s internal Dino coding convention that was used

More information

Unit Testing with zunit

Unit Testing with zunit IBM Software Group Rational Developer for System z Unit Testing with zunit Jon Sayles / IBM - jsayles@us.ibm.com IBM Corporation IBM Trademarks and Copyrights Copyright IBM Corporation 2013, 2014. All

More information

Endo-Testing: Unit Testing with Mock Objects

Endo-Testing: Unit Testing with Mock Objects Endo-Testing: Unit Testing with Mock Objects Tim Mackinnon, Steve Freeman, Philip Craig (tim.mackinnon@pobox.com, steve@m3p.co.uk, philip@pobox.com) ABSTRACT Unit testing is a fundamental practice in Extreme

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

An Internet Course in Software Development with C++ for Engineering Students

An Internet Course in Software Development with C++ for Engineering Students An Internet Course in Software Development with C++ for Engineering Students Yosef Gavriel, Robert Broadwater Department of Electrical and Computer Engineering Virginia Tech Session 3232 Abstract This

More information

EVALUATING METRICS AT CLASS AND METHOD LEVEL FOR JAVA PROGRAMS USING KNOWLEDGE BASED SYSTEMS

EVALUATING METRICS AT CLASS AND METHOD LEVEL FOR JAVA PROGRAMS USING KNOWLEDGE BASED SYSTEMS EVALUATING METRICS AT CLASS AND METHOD LEVEL FOR JAVA PROGRAMS USING KNOWLEDGE BASED SYSTEMS Umamaheswari E. 1, N. Bhalaji 2 and D. K. Ghosh 3 1 SCSE, VIT Chennai Campus, Chennai, India 2 SSN College of

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

The Oregon Software Development Process

The Oregon Software Development Process The Oregon Software Development Process Till Schümmer 1 and Robert Slagter 2 1 Computer Science Department, FernUniversität in Hagen, Universitätsstrasse 1, 58084 Hagen, Germany Till.Schuemmer@fernuni-hagen.de

More information

Integrating Formal Models into the Programming Languages Course

Integrating Formal Models into the Programming Languages Course Integrating Formal Models into the Programming Languages Course Allen B. Tucker Robert E. Noonan Computer Science Department Computer Science Department Bowdoin College College of William and Mary Brunswick,

More information

Organization. Introduction to Software Engineering

Organization. Introduction to Software Engineering Dr. Michael Eichberg Software Technology Group Department of Computer Science Technische Universität Darmstadt Introduction to Software Engineering Organization Teaser Background Information 3 As long

More information

Singletons. The Singleton Design Pattern using Rhapsody in,c

Singletons. The Singleton Design Pattern using Rhapsody in,c Singletons Techletter Nr 3 Content What are Design Patterns? What is a Singleton? Singletons in Rhapsody in,c Singleton Classes Singleton Objects Class Functions Class Variables Extra Functions More Information

More information

A PRELIMINARY REPORT ON ADAPTING SOFTWARE DEVELOPMENT INDUSTRY BEST PRACTICES FOR UNDERGRADUATE CLASSROOM USE

A PRELIMINARY REPORT ON ADAPTING SOFTWARE DEVELOPMENT INDUSTRY BEST PRACTICES FOR UNDERGRADUATE CLASSROOM USE 1 Abstract A PRELIMINARY REPORT ON ADAPTING SOFTWARE DEVELOPMENT INDUSTRY BEST PRACTICES FOR UNDERGRADUATE CLASSROOM USE Rajendran Swamidurai, David Umphress Alabama State University/Auburn University

More information

A Reusability Concept for Process Automation Software

A Reusability Concept for Process Automation Software A Reusability Concept for Process Automation Software Wolfgang Narzt, Josef Pichler, Klaus Pirklbauer, Martin Zwinz Business Information Systems C. Doppler Laboratory for Software Engineering University

More information

The justified user model: A viewable explained user model

The justified user model: A viewable explained user model The justified user model: A viewable explained user model Technical Report Number 483 June 1994 Ronny Cook and Judy Kay ISBN 0 86758 922 1 Basser Department of Computer Science University of Sydney NSW

More information

The Role of Agile Methodology in Project Management

The Role of Agile Methodology in Project Management Edith Cowan University Research Online Australian Information Warfare and Security Conference Security Research Institute Conferences 2010 Success of Agile Environment in Complex Projects Abbass Ghanbary

More information

Masters of Science in Software & Information Systems

Masters of Science in Software & Information Systems Masters of Science in Software & Information Systems To be developed and delivered in conjunction with Regis University, School for Professional Studies Object Oriented Design Table of Contents January

More information

Chapter 8 Software Testing

Chapter 8 Software Testing Chapter 8 Software Testing Summary 1 Topics covered Development testing Test-driven development Release testing User testing 2 Program testing Testing is intended to show that a program does what it is

More information

Java. Java. e=mc 2. composition

Java. Java. e=mc 2. composition 2 Java Java e=mc 2 composition 17 18 method Extreme Programming Bo Diddley 2-1 2-1 50 1998 19 π ª º pattern XML XML hash table key/value XML 20 EJB CMP SQL ASP VBScript Microsoft ASP ASP.NET JavaScript

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

UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW

UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW John C. Knight, Jane C. Prey, & Wm. A. Wulf Department of Computer Science University of Virginia Charlottesville, VA 22903

More information

Syntax Check of Embedded SQL in C++ with Proto

Syntax Check of Embedded SQL in C++ with Proto Proceedings of the 8 th International Conference on Applied Informatics Eger, Hungary, January 27 30, 2010. Vol. 2. pp. 383 390. Syntax Check of Embedded SQL in C++ with Proto Zalán Szűgyi, Zoltán Porkoláb

More information

TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION

TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION Theodore S. Norvell and Michael P. Bruce-Lockhart Electrical and Computer Engineering Faculty of Engineering and Applied Science Memorial University

More information

A LOOK BACK: UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW

A LOOK BACK: UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW A LOOK BACK: UNDERGRADUATE COMPUTER SCIENCE EDUCATION: A NEW CURRICULUM PHILOSOPHY & OVERVIEW John C. Knight, Jane C. Prey, & Wm. A. Wulf Department of Computer Science University of Virginia ABSTRACT

More information

Java Application Developer Certificate Program Competencies

Java Application Developer Certificate Program Competencies Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle

More information

Java Programming Language

Java Programming Language Lecture 1 Part II Java Programming Language Additional Features and Constructs Topics in Quantitative Finance: Numerical Solutions of Partial Differential Equations Instructor: Iraj Kani Subclasses and

More information

Designing and Writing a Program DESIGNING, CODING, AND DOCUMENTING. The Design-Code-Debug Cycle. Divide and Conquer! Documentation is Code

Designing and Writing a Program DESIGNING, CODING, AND DOCUMENTING. The Design-Code-Debug Cycle. Divide and Conquer! Documentation is Code Designing and Writing a Program DESIGNING, CODING, AND DOCUMENTING Lecture 16 CS2110 Spring 2013 2 Don't sit down at the terminal immediately and start hacking Design stage THINK first about the data you

More information

Rapid Application Development of a Decision Support System using Object Oriented Programming

Rapid Application Development of a Decision Support System using Object Oriented Programming Rapid Application Development of a Decision Support System using Object Oriented Programming Amy Roehrig, Trilogy Consulting Corporation, Pleasant Grove, UT Abstract Constantly changing business needs

More information

KITES TECHNOLOGY COURSE MODULE (C, C++, DS)

KITES TECHNOLOGY COURSE MODULE (C, C++, DS) KITES TECHNOLOGY 360 Degree Solution www.kitestechnology.com/academy.php info@kitestechnology.com technologykites@gmail.com Contact: - 8961334776 9433759247 9830639522.NET JAVA WEB DESIGN PHP SQL, PL/SQL

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

IMPROVING JAVA SOFTWARE THROUGH PACKAGE STRUCTURE ANALYSIS

IMPROVING JAVA SOFTWARE THROUGH PACKAGE STRUCTURE ANALYSIS IMPROVING JAVA SOFTWARE THROUGH PACKAGE STRUCTURE ANALYSIS Edwin Hautus Compuware Europe P.O. Box 12933 The Netherlands edwin.hautus@nl.compuware.com Abstract Packages are an important mechanism to decompose

More information

RUP. Development Process. Iterative Process (spiral) Waterfall Development Process. Agile Development Process. Well-known development processes

RUP. Development Process. Iterative Process (spiral) Waterfall Development Process. Agile Development Process. Well-known development processes Well-known development processes Development Process RUP (Rational Unified Process) (Capability Maturity Model Integration) Agile / XP (extreme Programming) Waterfall Development Process Iterative Process

More information

Chapter 1: Web Services Testing and soapui

Chapter 1: Web Services Testing and soapui Chapter 1: Web Services Testing and soapui SOA and web services Service-oriented solutions Case study Building blocks of SOA Simple Object Access Protocol Alternatives to SOAP REST Java Script Object Notation

More information

Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona

Progress Report Aspect Oriented Programming meets Design Patterns. Academic Programme MSc in Advanced Computer Science. Guillermo Antonio Toro Bayona Progress Report Aspect Oriented Programming meets Design Patterns Academic Programme MSc in Advanced Computer Science Guillermo Antonio Toro Bayona Supervisor Dr. John Sargeant The University of Manchester

More information

Automated Validation & Verification of Software Paper Presentation

Automated Validation & Verification of Software Paper Presentation Regression Test Selection for Java Software Salvador Valencia Rodríguez Automated Validation & Verification of Software Paper Presentation Paper authors Mary Jean Harrold James A. Jones Tongyu Li Donglin

More information

Software Testing with Python

Software Testing with Python Software Testing with Python Magnus Lyckå Thinkware AB www.thinkware.se EuroPython Conference 2004 Chalmers, Göteborg, Sweden 2004, Magnus Lyckå In the next 30 minutes you should... Learn about different

More information

Optimal Binary Search Trees Meet Object Oriented Programming

Optimal Binary Search Trees Meet Object Oriented Programming Optimal Binary Search Trees Meet Object Oriented Programming Stuart Hansen and Lester I. McCann Computer Science Department University of Wisconsin Parkside Kenosha, WI 53141 {hansen,mccann}@cs.uwp.edu

More information

Evaluating a new programming language

Evaluating a new programming language In G. Kadoda (Ed). Proc. PPIG 13 Pages 275-289 Evaluating a new programming language Steven Clarke Microsoft Corporation 1 Microsoft Way Redmond, WA 98052 USA +1 425 705 5978 stevencl@microsoft.com Keywords:

More information