Skip to main content

skip to main content

developerWorks  >  WebSphere  >

Team Development with WebSphere Studio Application Developer 4.0: Part 1 -- Overview

developerWorks
Document options

Document options requiring JavaScript are not displayed


My developerWorks needs you!

Connect to your technical community


Rate this page

Help us improve this content


Level: Intermediate

Colin Yu (coliny@ca.ibm.com), Software Engineer, IBM Toronto Lab

18 Feb 2002

This article, Part 1, introduces the team development environment and describes common team development scenarios with WebSphere Studio Application Developer 4.0.

Introduction

One of the great features of WebSphereTM Studio Application Developer (hereafter called Application Developer) 4.0 is its team development environment. It adds version and configuration management capabilities to workspace projects, and gives you multiple views of team features.

Application Developer 4.0 supports three software configuration management (SCM) products -- the open-source version control system known as Concurrent Versions System (CVS), Rational ClearCase LT, and the full version of Rational ClearCase. ClearCase LT is packaged with Application Developer 4.0, and upgrades to the full version of ClearCase are available from Rational. Future releases of Application Developer will support additional SCM products, with direct connection between their repository clients and the workspace.

This series of articles shows you how to do team development with Application Developer. This article (Part 1) introduces the team development environment and describes common team development scenarios. Part 2 shows you how to install and configure CVS as an SCM repository with Application Developer.



Back to top


Team terminology in Application Developer

Workspace

The Application Developer workspace is a private work area for the individual developer. It contains the folder structure of the projects you're working on, which reside in the file system. It also contains the logs and the plugin metadata.

Application Developer can store a history of locally made changes to files in the file system. You specify this option in the Workbench preferences. The files are stored in a non-editable format in the directory workspace/.metadata/.plugins/org.eclipse.core.resources/.history.


Figure 1.

To view the history of a file, select Compare with or Replace with => Local history from the files context menu.


Figure 2.

Unlike with VisualAgeTM for JavaTM, when you delete files from the workspace, you cannot recover them from the local history.

The default location of the workspace is Program Files\IBM\Application Developer\workspace. You may wish to configure multiple workspaces to handle different development projects. Each workspace is created as a folder in the file system where the source code will reside. To start the IDE with a different workspace, execute this command: wsappdev -data myworkspacedir where myworkspacedir is the absolute path to the workspace folder.

If you have enough memory, you can open multiple IDEs simultaneously against different workspaces. If a workspace is not defined when you start an IDE, it uses the default workspace in the installation directory.

Repository

A repository is a persistent store that coordinates multi-user access to projects and team streams. VisualAge for Java users are probably familiar with repositories. The only difference in Application Developer is that repositories are managed by SCM products such as CVS or Rational ClearCase LT. SCM vendors provide plugins that enable Application Developer to communicate with their repository client. Communication between Application Developer and the repository server is via TCP/IP. In ClearCase terminology, a repository is a VOB.

Stream

A stream is a shared work area that lets team member release their work and use code updates from others. The stream represents the current state of a shared project. A repository can contain multiple streams for different projects or different development stages, such as one stream for new development and another stream for maintenance. In CVS terminology, a stream is a branch.

Synchronizing

When you make changes in the workbench, resources are saved in the local workspace. You need to release resources in order for other team members to access them. At the same time, other team members may have released updates to the stream, which you can access with Application Developer. Conflicts arise when you modify a resource and try to release it when there is a more recent version in the stream. In this situation, you can either catch up the resource from the stream, release your version of the resource to the stream, or merge your work and the stream resource.

Branching

A repository can branch into multiple streams, which are distinguished by name. In a CVS repository, for example, a stream maps to the main trunk HEAD or to a branch. When the same project appears in different streams, the resources evolve independently. Changes released in one stream have no effect on other streams until they are merged.

Versions

A version of a file resource captures the content of the file. A version of a project captures the configuration of folders and files as well as their specific versions. You can create new project versions as a snapshot of the current configuration of a project either in a stream, or in the workspace. In the team environment, you cannot explicitly version resources other than projects, such as files or folders. However, they are automatically and implicitly versioned when they are released to the stream.



Back to top


Team perspective views in Application Developer

Here are the default team perspective views in Application Developer:

Navigator

The Navigator view shows all files in the workspace except those defined by the assigned filters. The default filter removes all .class files from the view. To turn this off, choose Filters from the drop-down menu in the Navigator toolbar.


Figure 3.

Properties

The Properties view shows properties of the currently selected file in the workspace, including the time it was last modified and its size. If an item in a repository is selected, this view shows the author, version number, and comments.

Repositories

The Repositories view shows all repository connections and their contained streams and versions.

Synchronize

The Synchronize view performs release and catch-up operations and lets you view differences between files.

Tasks

The Tasks view displays the standard task window.

Resource history

The Resource history view displays the version history of the selected item.

By Default, Class files are excluded from version control. You can add or remove filters using the Workbench Preferences.


Figure 4.



Back to top


Team development scenarios

This section explains typical team development scenarios with Application Developer. You can choose the one best suited to your team, project, and development process.

Sequential development

Sequential development is the simplest scenario. It assumes only one developer working on a file at one time:


Figure 5.

In Figure 5 above, Developer 1 creates a file, FILEA, and releases it to the stream. Developer 2 catches up the new version of FILEA in his workspace from the stream, modifies the file, and releases it to the stream. Now Developer 1 catches up the change of FILEA by developer 2, modifies it and again releases to the stream. This cycle continues until FILEA is finalized.

Parallel development in a single stream

Sequential development is not realistic for most projects. Usually, more than one developer works on a file in a single stream at the same time, which is called parallel development. See Figure 6 below.


Figure 6.

Both Developer 1 and Developer 2 catch up version 1.3 of FILEA from the stream. Developer 1 modifies it and releases it to the stream. At the same time, Developer 2 modifies the file and is ready to release it, but first must merge the changes by Developer 1 with his changes before he can release it. Application Developer can automatically detect the conflict, compare the files, and merge the changes.

Branching using multiple streams

If you're building and maintaining an application at the same time, you don't want to release changes back into the main stream immediately. The solution is to create a branch in the development process. The following example shows how two developers create a branch.

Developer 1 maintains the current version of the project, while Developer 2 is working on new function. Developer 1 creates a new stream (Stream 2) and copies Version 1 of the project into it from Stream 1. Developer 1 catches up version 1.5 of FILEA from Stream 2 into his workspace, fixes the bugs, and releases Version 1.5.2.1 of FILEA to Stream 2. At the same time, he versions the project as 1.1. Developer 2 catches up Version 1.5 of FILEA from Stream 1, adds new function, and releases it to Stream 1 as Version 1.6. Now Developer 2 should merge the change by Developer 1 in Stream 2 between Version 1 and Version 2 to Stream 1, and create Version 1.7 of FILEA. After the merge, Developer 1 can delete Stream 2. See Figure 7 below.


Figure 7.



Back to top


Acknowledgment

The author wishes to thank Ying Zhao and Leying Zhu, Software Development Analysts, IBM Toronto Lab, for reviewing this article.



Back to top


Conclusion

The Application Developer IDE includes a convenient team development environment that can communicate with different SCM systems and support various team development scenarios. I hope you have found this article helpful and I welcome all feedback.



Resources



About the author

Photo: Colin Yu

Colin Yu is currently working with the IBM VisualAge for Java Technical Support group. He earned a Master's of Applied Science degree at the University of Waterloo, Ontario, and is Sun Java 2 Certified Programmer. He is also IBM Certified Specialist of WebSphere Application Server, VisualAge for Java, and IBM Certified Solutions Expert of WebSphere Studio. You can reach Colin at coliny@ca.ibm.com .




Rate this page


Please take a moment to complete this form to help us better serve you.



 


 


Not
useful
Extremely
useful
 


Share this....

digg Digg this story del.icio.us del.icio.us Slashdot Slashdot it!



Back to top