You can't get through the day without reading or hearing about "outsourcing." A trend that began in manufacturing and retail production, outsourcing is now gaining momentum in IT and everyone is talking about it. It's even become one of the hot topics in the US 2004 presidential election. The intent of this article is not to solve all the issues that outsourcing -- also termed geographically distributed development (GDD) -- has created, but to take a look at some of the business requirements that GDD addresses, and to show how these requirements are driving innovative business change.
In this article, we'll look at some of these business requirements, why they are important to your business strategy, how GDD can impact these business drivers, and how to effectively address the risks and tools for a successful GDD strategy.
Agility. Globalization. Cost containment. Tightening competition. These are just some of the fundamental business requirements currently challenging many organizations. Each of these requirements are complex, and in larger corporations these economic factors are forcing CIOs to re-evaluate their IT strategy. The question is, are software development projects well aligned with the organization's business needs?
Let's consider each of these in turn.
Agility. These days, when anyone uses the word agility in the context of software development, most people think of a flexible system architecture based on component-based development. Although agility is still a benefit of component-based development, the scope of "agility" has expanded. Increasingly, many believe businesses need agility to adapt quickly to volatile market conditions and economic fluctuations; that is, to accommodate changes in staffing structure, programming, system architecture, software development processes, and in how systems conform to business governance and budgeting structure. As a common denominator in these areas, agility also allows an organization to adapt to never-ending local, state, and federal mandates requiring compliance, even to cope in the aftermath of a terrorist attack. The entire organization has to be ready to adapt to all of these changes at a moment's notice.
Globalization. Globalization is the new frontier in business growth. The need to build or manage business concerns across international boundaries arises from many conditions of the modern age, and successful businesses adapt to its many requirements. For instance, a company may face a pending merger or acquisition that leads to teams being dispersed throughout the world. Or a business many need to expand by establishing a market presence in a foreign country, and afterward, it may need to localize a product offering (i.e., reengineer the product for the local language and customs). In all cases, the key to success is an ability to understand and work within different cultures.
Cost containment. Learning how to "do more with less" becomes necessary for all businesses at some point in their history. The state of the economy will always affect the health of any organization. Gone are high-rolling days of the dot com era. The world as we know it today must not only conform to tighter and more stringent budgets, but organizations must also learn how to do more with fewer people. They must increase staff productivity to implement a greater number of processes, systems, and products that are more effective, more efficient, and more profitable.
Tightening competition. A market leader in any industry must have the mindshare of the customer and prospect base and be known as an innovator who offers high-quality products and services. A leader's products must be available at all times, and its support teams must offer the highest levels of customer service. Most of these features require specialized, and highly differentiated software systems that surpass capabilities of the competition. These may include systems to expedite internal processes -- e.g., sales processing, inventory tracking, and product development -- as well as systems to enhance customer experience -- e.g., Websites that promote and advertise products and services, and e-commerce features that allow customers to order product and execute transactions online.
To address these four business requirements, many companies are turning to a geographically distributed development (GDD) model as part of their IT strategy for software development projects. For the purpose of this article, geographically distributed development refers to the practice of managing software development projects beyond the traditional bounds of a single building or office structure where the development staff is singularly located. In a GDD model, the development staffing may be distributed across town, across a state or provincial border, or overseas. Some companies are engaged in distributed development within their geographically distributed corporate boundaries, which may involve multiple sites in a single software development project, as well as service suppliers (outsource companies) that assume part of the software development lifecycle.
GDD allows companies not only to augment their operations world-wide, but also to benefit from reduced labor rates and variable staffing, reduced time to market using a development staff available around the clock, along with providing a diverse and agile organization that is characterized by the capacity and the capability to act on a moment's notice. Benefits such as these are the rewards of GDD.
But GDD is not an easy model to adopt. As great as this solution may sound to address your business needs, the keys to success lie in the execution and implementation of the strategy.
The risks of geographical distribution
As companies move to GDD, they face certain inherent risks that must be attacked head-on. The greatest risk centers on communication: a dispersed project team needs to communicate accurately, precisely, and unambiguously in an environment where not every team member speaks the same language. Yet frequently, communication is hampered by the barriers of distance and time zones, cultural differences, knowledge- and work-transfer issues, conflicting in-house processes, and ownership of software artifacts. All these barriers are further complicated by the need to manage change and assets across geographic boundaries in a secure environment.
Affecting all dimensions of the GDD lifecycle, language and cultural differences challenge a project manager's ability to clearly state project requirements and system functionality. Managers need to communicate architectural design and process flow so that all team members understand project requirements, thereby ensuring that the right application is developed.
Knowledge- and work-transfer methods may be routine in a co-located work environment. But in a GDD environment, they cannot be taken for granted. Does each GDD team member clearly understand the scope of the project? Are individual responsibilities clear? And do all team members know how to communicate work status and detailed data relating to the next task? Is there a standard unified process that provides best practices and consistent process guidelines? Managing change and assets so that teams can develop and integrate software changes across all locations seamlessly becomes equally complicated.
To address these challenges, companies are turning to software development tools that provide the infrastructure for a unified approach to process, communication, software development, and project metrics.
A solution that knows no boundaries
The IBM Software Development Platform provides a lifecycle solution that knows no boundaries. It can help distributed teams communicate, develop, and manage software projects effectively by optimizing the internal infrastructure. And it helps ensure project success because it is based on industry-proven best practices and tools. The IBM Software Development Platform provides best-of-breed support for individual practitioners performing requirements management, visual modeling, analysis and design, testing, project management, configuration management, and change management, all based on a proven process.
Additionally, IBM Rational has integrated the products within this solution to automate workflow, team communications, information reuse, lifecycle traceability, and information sharing. These integrations unite a team and contribute to project success. This automation leads to project predictability, improved communication, higher quality, and reduced time to market.
Deployment considerations for distributed teams
But to realize the benefits of an integrated product set such as the IBM Software Development Platform, new implementation strategies may need to be considered and combined. One such strategy is to incorporate Citrix™ technology into the business plan. This provides an application server environment that centralizes the execution and administration of applications on a server and allows multiple users to access them over a network. This model essentially turns a device into a thin client that only needs the ability to display and manipulate the user interface.
Additional techniques to consider in your distributed strategy include providing Web-based access to shared repositories and reliably replicating and synchronizing repositories across geographies.
A unified process is critical to a distributed team's success, because it helps establish a highly repeatable procedure, a set of software development best practices, and standard methods of execution. Such a process provides a common vocabulary and clear definitions of responsibilities that unite dispersed teams promoting a common vision and culture. Once the process is established, tools can be used to automate each discipline.
Team-based tools that support a unified process, tools that rely on shared information repositories, can be adversely affected by physical distances, limited communications bandwidth, and inconsistent WAN reliability and performance. Additional factors that can complicate the deployment of tools are the company's network structure and security policies. To establish the ways in which your organization can effectively implement a GDD structure, you must first understand and define your development infrastructure and tool usage model for each discipline throughout the development lifecycle. For example, you should consider these questions:
- Where is your central intelligence located for each software development discipline -- e.g., requirements, testing, project administration and management?
- Who creates project requirements, and who on the team needs to have access to these requirements? Who needs to be able to modify the requirements?
- How do team members access the network? Are they limited by firewall issues? Is VPN technology an option?
- Are your developers working with models and code?
- What members on your development team need access to defect records submitted by your testing team? Where are these artifacts located on the network? And will they need read/write access to the defect records so they can record when the defect was fixed, or will they only need the ability to read where the defect was found?
- Is Citrix currently a part of your infrastructure? If so, what members on your team could benefit from tool usage through Citrix?
- What is your existing network configuration?
- How will your organization's security policy affect the GDD tool usage?
- How do you measure the status of your project when your team spans the globe? How do you effectively measure the number of outstanding Priority One defects? And have your critical requirements been addressed and developed as part of the application?
As you begin to access the structure and location of your team members, the layout of your networking infrastructure, and the current process that defines your development workflow, you will begin to establish the foundation for how process and tools need to be implemented or augmented to accommodate your specific needs.
Let's take a closer look at some of these questions to see why they are so important. And let's pay particular attention to how they will affect process and tool deployment, and how they will impact your development lifecycle.
We begin with process. Critical to a distributed team's success throughout the development lifecycle are highly repeatable processes and standard ways of execution that provide a common vocabulary and clear definition of responsibilities. Because of the critical need to understand and follow the process through each discipline in the development workflow, ease of use and accessibility to the process is paramount.
To address this need we turn to the IBM Rational® Unified Process framework, or RUP®. RUP is a software development process framework based on proven best practices. It offers valuable guidance and common processes throughout the development lifecycle. By combining best practices from many disciplines -- such as project management, business modeling, requirements management, analysis, design, testing, and change management -- into one consistent, comprehensive process, RUP promotes a common vision and culture throughout the development organization. This approach helps to strengthen the relationship between dispersed sites by providing online documentation of project specific process information. This shared process also improves communication, enabling development teams to collaborate effectively, work more efficiently, and decrease time to market.
As a Web-based solution, RUP extends easily to support your development team at all locations. The Website is created using dynamically generated HTML pages, which RUP enables you to publish in the form of multiple RUP Websites, each representing a configured and tailored process definition. The RUP browser applets enable the RUP Website to be dynamically accessed through a number of standard Web browsers. For easy navigation through the site, additional navigation applets are executed.
To address your specific project needs, the RUP platform provides a flexible process framework with powerful configuration tools that help you select and deploy a set of process components precisely tailored for your project. As a project is initiated, your project lead can configure the base process framework using RUP Builder and process plug-ins that are relevant for your project. These assets can be customized for the project size, the specific technology, tool, or domain. Once you have tailored your process, RUP Builder helps you quickly and easily deploy to the team as a Web-based project view. Team members install the custom process from a central location directly onto their own machine. Each team member then may use a shared view of the entire project, which details workflow diagrams, process docs, and specification docs relevant to your industry. Furthermore, team members can individually refine their project view using MyRUP, so that only the activities, artifacts, and documents relevant to their work are displayed.
Poorly established and poorly defined requirements are often the primary reasons for project failure in a distributed environment. Verbal communication or loosely defined requirements used as a foundation for project development can lead to bad assumptions, errors, and ultimately the wrong solution. The diverse cultures that are usually represented in large-scale, global GDD scenarios present communication challenges; therefore, anything other than concise and clearly defined and documented requirements will likely lead to unexpected and costly results.
IBM Rational RequisitePro® software, a powerful and easy-to-use requirements management solution, provides an effective requirements management process based on the combined power of a database and the ease-of-use of Microsoft® Word.
Word documents used for recording requirements provide context or supplementary requirement information. Rational RequisitePro uses a database to assign attributes, such as priority, difficulty, and status, as well as to organize and track requirements. Related requirements can be linked, which helps the analysis team establish and analyze the impact of change; in other words, as a given requirement changes over time, it is easy to see the impact of the change on other related requirements becomes obvious. Having this sort of realtime visibility regarding change lets you pinpoint its effect across the project, which helps you make quick, informed decisions for scope management or resource reallocation. This requirements solution promotes better team communication, enhances collaboration, and reduces project risk.
RequisitePro offers several configuration options for the distributed team. The best configuration for your team will depend on your team infrastructure. For instance, the location of central intelligence in your group for requirements definition will determine where best to set up the host server for RequistePro; generally, the host server housing RequisitePro should be local to your central intelligence, or "core users." Next you must also determine what other members of your team need access to project requirements. Will they be updating requirements? Or will they simply need to review requirements? Once you've mapped out your requirements usage model, you can evaluate the options available for tool deployment.
The native Windows user interface provides access to RequisitePro, which allows full-feature functionality, including project administrator functionality. Remote users benefit from RequisiteWeb, which allows users to create, display, and delete documents, edit requirement properties, engage in discussion groups, and create requirements directly in the RequisitePro project database. To mark requirements, delete existing requirements, and edit requirements documents, RequisiteWeb users can take the documents offline from RequisiteWeb, edit them in Word, and bring them back online from RequisiteWeb. Once the document is back online, their changes are synchronized with the repository and made visible to other project members.
RequisitePro supports Citrix/Windows Terminal Support technology. You should consider this option if your existing infrastructure already supports Citrix technology or if it's being considered as part of your distributed deployment plan. Given the resource requirement, this option should be considered only for a reasonably small distributed team. It can also be used to benefit select members of a larger team who require the capabilities of the full native RequisitePro interface, including access to tool-to-tool integrations.
Diversity of languages, cultures, and time zones demands that we very clearly communicate a vision of the application -- from usage models to class and activity models so that application functionality can be understood without ambiguity. You need to be sure each team member is envisioning the same workflow, that key points or words used in every conference call are understood, and that no cultural or language differences cause misinterpretation of the goals. Key question: How can you be sure that all members on your team are thinking the same overall design at inception rather than finding out the design is wrong at deployment?
The Unified Modeling Language (UML) has become the software development industry's standard notation for software architecture and design. With UML, software professionals can visually model their analysis and design artifacts in a uniform and consistent manner, so teams have a common approach for communication and project documentation. To make UML easy to work with, IBM Rational created the industry-leading and award-winning Rational Rose® XDE™ family of visual modeling and development tools. Rational Rose XDE software provides tools for creating and maintaining UML models that depict project architecture, process flow, logical component relationships, and database design. This software can also generate code directly from your models and generate models from your code, which gives you full control over when and how models are synchronized with your code.
Rose and XDE use a file-based method for storing UML models and associated information. To provide repository and team development support you need to use an underlying configuration management (CM) system, like IBM Rational ClearCase® MultiSite, so that distributed teams can add, update, and view models and merge all updates on a tightly coordinated schedule.
For team members who only need to view models, Rational Rose/XDE offers a Web publishing feature that allows users to share architecture and designs with all stakeholders, whether or not they have Rational Rose/XDE installed. Models are converted to HTML and published on your intranet, where anyone with a Web browser can view the model.
Multiple teams, locations, languages, and disciplines can cause mass confusion when work is transferred between disciplines within the software development lifecycle. Any number of questions arise: Has the development team fixed the defect? Has it been passed to quality assurance (QA) for testing? Who has been assigned the latest change request introduced in the triage meeting?
Left unanswered, these types of questions can lead to delays in project delivery and poor quality.
IBM Rational ClearQuest® MultiSite software meets the needs of most organizations with a proven change request management process. It also can be customized for your specific needs. Its robust, flexible workflow support includes e-mail notification and submission options, so your team members can be informed as change requests are updated. You can define unique workflows for any type of change request. To address team members at all locations, automatic synchronization provides up-to-date access to replicated defect and change tracking information so the entire team stays in synch.
Tool deployment considerations are contingent on your usage model. As described in the "A unified process" section earlier, your initial assessment should determine: Which users will need access to change requests such as defects? What's the workflow of the change requests and what users will be involved throughout the workflow? Where will the administration of the tool be executed?
ClearQuest utilizes a two-tier, client-server architecture. Enhancements, defects, and other change request records managed by ClearQuest are stored in a relational database called the "user database." ClearQuest stores information about a project's change management policies and practices (records, field definitions, valid states and transitions, data entry forms, hooks and triggers) in a separate relational database referred to as the schema repository. ClearQuest MultiSite enables the replication and synchronization of schema repositories and user databases across multiple locations. As is the case with ClearCase MultiSite, this is a good solution for teams that consist of discrete sub-teams, each of which may host team members on a central LAN. Like ClearCase MultiSite, ClearQuest MultiSite and replication provides a failsafe mechanism in the event of a server outage.
As is the case with ClearCase MultiSite, replication and synchronization capabilities support primary users at dispersed geographies. So whether the user in question is a developer needing to update defects or change requests with bug fix information, or a tester who needs to create new defect records, each user can use the native interface to access the local copy of data.
For remote users who don't have an extremely reliable and fast connection to the servers, a Web interface is available to allow users to add, update, and query change request records. Alternatively, ClearQuest does support Citrix/Window Terminal Server for remote users along with administrators who might be located remotely, requiring access to ClearQuest administrative tools not supported through the Web interface.
Application Testing and Continuous Quality involve collaboration and communication across the entire development team. You need a test plan that covers all dimensions of your application to ensure 100 percent application coverage. Especially critical in a geographically distributed environment is full communication among the team that's defining requirements, the testing team, and the development team that's fixing application failures detected through the test plan. This process needs to be closely followed.
To assist teams with this collaborative discipline, IBM Rational provides a comprehensive system testing family. This includes IBM Rational TestManager to help you administer a complete test plan including manual testing workflows, test logs, and automated reports of test execution, as well as IBM Rational Performance Tester and Rational Functional Tester.
At the core of test planning is the TestManager product. TestManager utilizes a two-tier, client/server architecture. Information about the test artifacts and test execution results are stored in a series of associated files known as a "test datastore." An associated relational database stores pointers and promotes easy data access to and through the datastore. For distributed teams, familiar Internet protocols facilitate inter-team communications for day-to-day testing.
A system for managing assets serves as the backbone of distributed development. An effective infrastructure must scale with team size and number of locations; it must provide automatic, reliable replication of software assets between sites, which provides local access to all software assets within a round-the-clock (24 x 7) software development work cycle.
Distributed development teams may consist of multiple office environments in different geographic locations, each capable of hosting a repository and multiple database servers. IBM Rational ClearCase MultiSite offers an effective asset management solution in this situation. As an add-on product for ClearCase, ClearCase MultiSite provides reliable replication -- across geographies -- of repositories storing any file system object, whether binary or textual. Each central sub-team location works with a local copy of the repository for optimal performance and thus can bypass any issues related to temporal WAN or Internet performance. MultiSite leverages ClearCase's support for branching and merging, so any changes made at one location can be synchronized and merged with changes at other locations. Synchronization and replication intervals are controlled by the SCM project administrator. During synchronization, only the changes are moved between locations, not entire VOB 1 copies. Having multiple replicas also provides the project a failsafe mechanism to minimize project down-time and rework in the event of a server outage.
If your topology includes a substantial number of remote developers working at home or at small satellite offices, ClearCase offers a Web interface that supports many of the standard ClearCase features; for those requiring full ClearCase functionality, Citrix/Windows Terminal Server is available.
Project status and measurement
Determining project status can be an especially daunting task for distributed teams. Cultural differences tend to add complexities; for example, the norm in some regions is always to assert success, even when a project has fallen weeks behind schedule. It's best to have all project-related data quickly available, so you can accurately measure all factors contributing to the success or failure of your project; for instance, the number of top priority defects or the number of requirements that have not yet been addressed in the development cycle. These types of detailed statistics can enable you to objectively measure project status and progress without requiring you to decipher what your team 10,000 miles away really meant by "Yes, we're almost on target."
In addition to having your finger on the pulse of project status it is equally important to determine if expected returns were recognized during a GDD project. Were the project requirements all met? If not, will the whole project need to be scrapped or require major rework? At the time of deployment, were there a significant number of priority bugs that remained unresolved? Did the need for development resources rise dramatically at the end of the project, or did it level off? Questions like these will help you evaluate the success of the project and pinpoint how you can make the next distributed project more successful.
The IBM Rational ProjectConsole™ tool, a capability within the Rational Team Unifying Platform™, collects actual development data from products within the IBM Software Development Platform along with third-party products, presenting the results graphically so that you can easily and quickly assess project progress and quality. This allows you to objectively measure and better predict those areas that will require special attention. Rational ProjectConsole helps answer various types of questions: Where should I focus scarce resources in order to stay on schedule? What trends could affect my cost? Is the project stable and ready for deployment? ProjectConsole can help keep your projects on schedule and on budget so that you can recognize the benefits available with a distributed team.
Project managers and all designated team members can easily access the Project Website Dashboard via a browser. Visibility of reports and views can be limited to certain team members based on access control lists. Project managers can view pertinent data to objectively measure project progress and quality. Only project administrators or users who need to design or modify ProjectConsole templates require a local client to be installed. To collect data from all development sites so that the dashboard reflects comprehensive project status, you can collect the data from remote site(s) and send it to the ProjectConsole server site, or you can collect data from the central location (server site).
Product integrations in a distributed environment
Product integration within the IBM Software Development Platform provides the power to automate and integrate the business process of software development, so organizations can become more focused, responsive, and resilient. This integration begins with project requirements traced through application design, functionality testing, defect tracking, and change management. As the topography of your development team extends to a distributed environment, the integration points will require attention. Of course, your more robust data repositories and interfaces will require less attention than those which were formerly designed and deployed for limited, local access.
The integrations between the products discussed in this article occur at the client level. The clients exchange information and create links between data in their respective repositories, resulting in data in one product repository being referenced by a different repository. Consequently, integrations will perform better when the repositories are co-located. In addition to product dependencies, the Rational Administrator -- the tool used to define the set of product repositories for a particular project -- must be considered when establishing an infrastructure to support products within a distributed environment.
It is therefore important to define integration points within the lifecycle that you would like to utilize. Understanding your complete usage model as defined in your initial lifecycle assessment will help you weigh integration options. Factors affecting integration usability include:
- Where the product repositories will be hosted
- Data access through Web interfaces
- Use of terminal server technology
- Data replication of product artifacts.
Today, many companies are turning to geographically distributed development to achieve better agility and cost containment, while improving their competitive position in an increasingly globalized marketplace. However, introducing a GDD model into your IT strategy poses substantial risks: namely, the uncertainty surrounding a project team's ability to communicate accurately, precisely, and unambiguously among all members. Communication is difficult in an environment where not every team member has the same primary language; people are unable to communicate in real-time due to the barriers of distance and time-zones; there are conflicting in-house processes, knowledge- and work-transfer issues, and issues with ownership of project artifacts. Common process, tools, and reporting are keys to overcoming this risk.
Achieving expected results with a GDD model requires an up-front investment in people, process, and tools. Initially companies must thoroughly assess their development community and supporting infrastructure in order to implement a development process and tools that will support a distributed team. The IBM Software Development Platform offers a lifecycle solution that helps in all areas critical to GDD success. With it, distributed teams communicate, develop, and manage software projects more effectively and efficiently.
1 Versioned Object Base -- an IBM Rational ClearCase database repository for storing multiple, sequential versions of project artifacts under development.

As a market manager at IBM Rational, Brenda Cammarano is responsible for the Enterprise Modernization solution within the Rational brand. Currently, she is developing a complete strategy to bring this solution to market that reflects a deep understanding of clients' needs and how IBM products can best work together to serve them. In this effort, she draws upon her experience as a former senior technical evangelist for the Rational Enterprise Suite, a programmer/analyst in object-oriented engineering, and a key player in product management and technical marketing organizations for several high-tech companies in the Greater Boston area.
Comments (Undergoing maintenance)





