home   |  resume  |  publications  |  links  |  contact              

p

u

b

l

i

c

a

t

i

o

n

s

 

 

 

Papers, Articles & Talks:

Unit testing with mock objects in ActionScript 3.0, Paulo Caroli and Jason Peters, Adobe Developer Connection, January 2009, on the web

When you perform unit tests, it is not always possible to verify that an object does what you expect by examining that object directly. Instead, you may need to examine the collaborations between objects. Mock object frameworks simplify behavior verification—the process of verifying the interaction between dependent components.

This article is intended for developers interested in adding behavior verification to their unit tests. It discusses the role of behavior verification in unit testing and introduce the basics of Mock4AS, a lightweight mock object framework for ActionScript 3.0.

Mock Objects in action, Paulo Caroli and Sneha Jha, IndicThreads.com Conference On Java, Pune, India, November 2008. slides

This session provides the participants with understanding of Mock Objects need and concept, as well as with hands-on-experience of JMock, EasyMock and Mockito--java based Mock Objects frameworks. Applying Mock objects effectively is a key factor when following the Unit Testing practice (testing units of work in isolation). This session will introduce the reasoning for Mock Objects as well as the basics of the most popular Java Mock Object frameworks –JMock, EasyMock and Mockito. This session starts with a presentation, followed by a hands-on sample unit test code analysis. At the end of this 90 minutes hands-on session, the participants will get familiarity in using Mock Objects effectively. This session is intended for developers familiar with Java and JUnit and are interested in learning Mock Objects. The samples used in this session have been selected to demonstrate various functionalities and applications of Mock Object frameworks.

XP and Design; where did the design phase go?, Paulo Caroli and Sudhindra Rao, IndicThreads.com Conference On Java, Pune, India, November 2008. slides

Where did the Design phase go? There is a misconception that XP does not promote design. In fact, it is quite the opposite. In this session I will cover XP design, putting it in context with more traditional development approaches. I will also explain how XP promotes continuous design improvement through Simple Design, Continuous Integration, Test Driven Development (TDD) and Refactoring. By following the XP practices developers evolve their code (and design) using incremental proven steps. Moreover this is done without waste (over-design).

Testing private methods, TDD and Test-Driven Refactoring, Paulo Caroli, AgileTips.com, TheServerSide.com, November 2008

While being a TDD--Test Driven Development--coach, Paulo Caroli always asked about testing private methods. He finally decided to write about his experience on testing private methods.

When really doing TDD (i.e. writing the test code before writing the functional code, and then refactoring the code) private methods are guaranteed to be test covered. When driving the functional code design and implementation from the unit test (aka Test Driven Development), no method is created private. Instead, the private methods are extracted—extract method refactoring step--from a public or package level method. The Example 1 below presents a scenario on applying TDD and how the private method is created

Agile Bridge Analogy, Paulo Caroli, AgileTips.com, TheServerSide.com, July 2008

It is quite common to make analogies between the IT industry and Civil engineering. Developers often compare software development and design with construction projects; for example, the importance of having a blueprint and following known successful practices. I have some hesitations about using analogies between these industries. I find the resources used by both industries fairly different and for that reason the analogies can create false expectations and reasoning. Nevertheless, I have been successfully using the analogy of building a bridge for explaining Agile development

Agile Evolutionary Design, Paulo Caroli, Agile China Conference, Beijing, China, June 2008. slides

In this session, I explore Agile Evolutionary Design, which concentrates on the continuous design improvement through Continuous Integration, Test Driven Development (TDD) and Refactoring. Agile Evolutionary Design allows developers to transform simple code (Keep It Simple) into a well-structured design by constantly transforming code smells into better designed solutions. Best practices and real-world examples will be highlighted in this presentation.

Writing and running functional tests for Flash with Selenium RC, Paulo Caroli and Henrik Lindahl, Adobe Developer Connection, June 2008, on the web

Functional tests are intended to help you verify that a system, as a whole, functions as intended. Such tests verify that everything is wired together correctly. Selenium is an open-source testing tool for web applications. Selenium tests run directly in the web browser itself, mimicking what real users do. Furthermore, it supports a large variety of browsers and platforms. It is especially useful for executing tests to verify web application functionality and user acceptance. We used Selenium in our last project to verify that a web application (which contains one or more Flash components) worked the way we wanted.

Flash-AS3 Test Certified development experience report, Paulo Caroli, Henrik Lindahl and  Martin Ohman, Google TestaPalooza, March 2008.

In this session we talk about our experience on developing and testing Trendalyser, a flash-AS3 based application. We will cover our experience with flash and AS3 in regards of: Continuous Build, Unit test, Mock Objects and End-to-end Test.

Complementing Unit Test with Dependency Injection and Mock Objects, Paulo Caroli and Peter Epstein, Google TestaPalooza, March 2008.

A briefly introduction to Dependency Injection and Mock Objects concepts, followed by case studies and sample scenario of how those concepts complementing Unit Test and testing development practices.

Evolutionary Design through TDD and Refactoring practices Presenters: Paulo Caroli, Kurman Karabukaev , Google TestaPalooza, March 2008. (Certificate of Excellence)

An exploration on Agile development practices such as Simple and Evolutionary Design and the link to the test practices and the fundamental aspects being the ability to emerge elaborated – and well funded (tested) - applications.

Complementing Unit Test with Dependency Injection and Mock Objects, Paulo Caroli, IndicThreads.com Conference On Java, Pune, India, October 2007. on the web, video, slides

In this session, I explain how Dependency Injection and Mock Objects complement Unit Tests and TDD – Test Driven Development.

Session Agenda: Unit Test and TDD, Testing Dependent Components, Dependency Injection, Mock Objects, Case Study, Conclusion, Q&A.

Continuous Integration and Agile Software Development Q & A, Paulo Caroli, IndicThreads.com Conference On Java, Pune, India, October 2007. on the web, video,  slides

Traditionally, different modules are developed by different teams/developers and these are integrated at late state of project. Continuous Integration takes a different approach.

"Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible…" by Martin Fowler

Refactoring to Patterns – a practical look into the Agile approach on Evolutionary Design, Paulo Caroli, IndicThreads.com Conference On Java, Pune, India, October 2007. video, slides

In this session, I will introduce Refactoring and TDD (Test Driven Development) as the foundation for Agile Evolutionary Design; I will explain how the practice of Refactoring to Patterns permits code simplicity to turn into well-know design patterns. I will use real world experiences and selected case studies to illustrate this concept.

Session agenda: Refactoring and TDD, Refactoring and Functional Requirements, Refactoring and Agile Techniques, Simple Design and Code Smells, Refactoring to Patterns, Case Studies, Conclusion, Q&A.

Countdown to DST 2007, Paulo Caroli, TheServerSide, February 2007. on the web - dwd class file

“Most of the United States has observed Daylight Saving Time (DST) from the first Sunday of April to the last Sunday of October since 1966. In August 2005, these long-standing rules changed when the Energy Policy Act of 2005 was signed by President George W. Bush and approved by the Congress. Beginning in 2007, most of the U.S. will observe DST on the second Sunday in March and revert to standard time on the first Sunday in November. In case you have not yet acted on the U.S. DST change for 2007 you should definitely read this article. However, if you have already updated the Java Runtime Environment (JRE) on which your Java application runs, this article will provide you with a simple mechanism that will validate the JRE correctness regarding the DST transition dates.” (TheServerSide newsletter)

Using JMock with Test Driven Development, Paulo Caroli, TheServerSide, December 2006. on the web - dwd src code

“In this article, Paulo Caroli introduces the basics of using JMock, a Mock object framework, in conjunction with Test-Driven Development. To illustrate the technique, he works through a case study, the creation of a cache component by means of test-first development with JMock.” (introduction)

 

A TimeZone Patch, Paulo Caroli, Java Developers Journal, January 2005. on the web - dwd src code

“The TimeZonePatch presented in this article provides a flexible solution for patching the java.util TimeZone against incorrect time zone data. A factory of TimeZone patches, TimeZonePatchListFactory, provides the ability to read correct time zone data from appropriate data sources or even create new time zones. Furthermore the presented solution patches only the time zones created by the factory, although it still works for the remaining SDK timezones.” (conclusion)

 

Organize applications' multiple environment configurations, Paulo Caroli, JavaWorld, November 2004. on the web

“This article introduces a mechanism for organizing application configuration parameters despite the number of runtime environments. This configuration mechanism is designed to systematize the arrangement and access of Java application configuration parameters. It is composed of interconnecting parts: configuration folder schema, configuration parameter reader, and launch command outline. After detailing each part of the configuration mechanism, author Paulo Caroli uses a comprehensive and illustrative Hello World application to demonstrate the mechanism.” (abstract)

 

Awaken the Service Locator, Paulo Caroli, JavaPro, April 2004. on the web

“What can you do in a typical J2EE application in which a server-side, service-initialization error detains the client application, yet it's critical that the client application remain available? Let's look at a service locator-based solution for avoiding this kind of undesirable client application start-up problem. The client application, which does not execute in an Enterprise JavaBeans (EJB) container, is composed of several clients that locate the EJB through the service locator as part of the client application initialization process.” (abstract)

 

Still parsing to generate your JavaBeans' XML representation?, Paulo Caroli, JavaWorld,  May 2003. on the web

“Empower your JavaBeans to handle data conversion to and from their XML document format without complicating the code. This tip shows you how to write and use a component to convert a JavaBean to its XML document representation and vice versa.” (abstract)

 

JSP course contents for Omni Pros “e-learning Solutions suite”. Omni Pros copyright, April 2003.

Table of Contents: An Introduction to JSP architecture, JSP Scripting elements, JSP Directives, JSP Action Tags and Custom tags and tag libraries.

 

Making your J2EE Application Web Services Ready, Paulo Caroli, The Server Side, December 2002. on the web

“The XML Business Delegate provides a solution to facilitate a mapping from an object-oriented system to a service-oriented one. This article shows you how you can combine J2EE Design Patterns, such as the Business Delegate, the Session Facade, and the DTO, with XML, to make your EJB application ready for Web services.” (abstract)

 

A Java-JSP Menu Builder for HierMenus, Paulo Caroli and Srimant Misra, WebReference, November 2002.on the web

“When a single static array of menus isn't a viable option, HM implementors often turn to server-side techniques. This case-in-point solution utilizes JSP technology to auto-generate HierMenu arrays on a page by page basis.” (abstract)

 

Letters to the Editor - discussions about the “Repair invalid cached services in the Service Locator pattern” article, JavaWorld, August 2002. on the web

“How do you handle an invalid service on the client side? Can TRMI (Transparent Remote Method Invocation) help with serializable objects? How does JAR work with third-party libraries? JavaWorld authors answer those questions and more in this month's Letters to the Editor.” (abstract)

 

Repair invalid cached services in the Service Locator pattern, Paulo Caroli, JavaWorld, July 2002. on the web

“The Service Locator pattern, commonly used in EJB (Enterprise JavaBean) development, reduces code complexity, gives a single point of control, and improves performance by providing a caching facility. Unfortunately, cached services cause unexpected error situations. This article introduces the Verified Service Locator pattern, which enhances the Service Locator pattern by ensuring the validity of its cached services.” (abstract)

 

An Architecture for the Evolution of Web Applications, P. Caroli, C. J. Lucena, and M. F. Fontoura, Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'2000), Minneapolis, USA, 2000 (Extended abstract, OOPSLA'2000 Companion, 83-84). Download

“This work presents a software architecture that is especially useful for managing the evolution of web applications. Web-based systems are a range of applications for which there are no technological standards and new concepts and tools are currently under evolution. Examples of this lack of standards include the transition from CGI scripts to Java Servlets and to Java Server Pages (JSP). Therefore, the maintenance and evolution of web applications is an important topic for software developers and the software research community. The proposed architecture combines the n-tier, broker, and blackboard architectural patterns.” (abstract)

 

A Methodology for developing Object-Oriented Projects. Paulo Caroli, Master Dissertation in Software Engineer, Pontificial Catholic University of Rio de Janeiro (PUC-Rio) Computer Science Department, 1999. Download (in portuguese)

“In spite of the increasing utilization of the Object Oriented paradigm, there still exists reluctance on its application in the development of systems as, for example, Web Information Systems. In these type of applications, User Interfaces are in general event oriented and the majority of the Databases are Relational.

This work proposes a Three-Tier Architecture for the development of systems that can be naturally divided in User Interface, Business and Persistence layers. It also proposes a Methodology for the development of the Business layer.

The objectives of this work are:
-- to help management to keep up with the project development;
-- facilitate the maintenance of large systems subject to modification and evolution;
-- help communication among the persons in the development team;
-- provide Object Oriented development support coexisting with other paradigms;
-- serve as an effective project documentation.

Applying the concepts here put forth in real projects validated the work.” (abstract)

 

Open Source Projects:

Flash-Selenium – Selenium extension for testing Flash Applications, http://code.google.com/p/flash-selenium/. Paulo Caroli, as project admin and developer, 2008.

The flash-selenium project aims to extend the Selenium RC clients for adding Flash communication capabilities. The Flash/Selenium RC client extension is available for the following Selenium RC client drivers: Java, .Net, Ruby and Phyton.

Mock4AS – Mock Objects for ActionScript, http://code.google.com/p/mock4as/ . Paulo Caroli, as project admin and developer, 2007.  

Mock4AS is a simple Mock Object Library for ActionScript3. The current version of Mock4AS provides a minimalistic Mock Objects library fulfilling the basic Unit Tests mocking needs. To get started download the latest version of Mock.as and add it to your project.

Hello Open Source Web Site - www.helloopensource.org. Paulo Caroli, as the owner, creator and collaborator, 2007.

This collaborative Web Site  presents “Hello World” tutorials for Open Source technologies. The “Hello World” tutorials are concise and simple. Their main goal is to help you develop a Hello World for the given Open Source technology. Tutorial List: ActionScript, Ant, EasyMock, Flex Builder 2, FlexUnit, JDK, Guice, Hibernate, Java using Eclipse, JMock, JUnit, Maven, MySQL, MySQL GUI Tool, Ruby On Rails using EasyEclipse, Spring, Tomcat, Waffle, WTP.

Mock Objects Samples Web Site - www.mocksamples.org . Paulo Caroli, as the owner, creator and collaborator, 2007.

This site provides a few Mock Objects samples and its implementations in distinct technologies. ActionScript (AS3), Java, FlexUnit, JUnit, Mock4As, Mockasin, EasyMock, JMock.

MapPoint4J, Paulo Caroli, project admin and developer, www.sourceforge.net, May 2006. on the web

MapPoint4J is an open source java library built to facilitate the integration of java client applications to Microsoft MapPoint Web Service.

Tomcat/conf Reader, Paulo Caroli, project admin and developer, www.sourceforge.net, April 2006. on the web

The TomcatConfReader component provides a straightforward approach for reading your web application configuration information from TOMCAT/conf folder.

Simple XML / HTTP Web Service, Paulo Caroli, project admin and developer, www.sourceforge.net, February 2006. on the web

This project brings a XML over HTTP implementation of Web Services technology. In few minutes you will be able to deliver static and dynamic XML contents over HTTP.

BeanXML Mapping, Paulo Caroli, project admin and developer, www.sourceforge.net, October 2005. on the web

This project brings implementations of BeanXMLMapping interface based in existing Java/XML parser solutions. The offered BeanXMLMapping components provide straightforward ways to convert a JavaBean to its XML document representation and vice versa.

TimeZone Patch, Paulo Caroli, project admin and developer, www.sourceforge.net, March 2005. on the web

The TimeZonePatch is a flexible java based OS free solution for patching the java.util TimeZone against incorrect time zone data. A factory of patched TimeZones, provides the ability to read correct time zone data from appropriate data.

 

 

 

 

Hosted by www.Geocities.ws

1