Today's enterprise software development leaders need to incorporate agility not just into their software development processes, but also into their entire software delivery supply chain. In his new book, Enterprise Software Delivery: Bringing Agility and Efficiency to the Global Software Supply Chain, Alan W. Brown uses case studies to illustrate the importance of achieving balance between agility and efficiency in enterprise software delivery. In chapter four, Brown addresses collaborative software delivery. In this article, we look at the importance of software development collaboration and how enterprise leaders are using collaborative delivery environments and collaborative application lifecycle management to address challenges.
Trends that highlight the need for effective software development collaboration
Several important industry trends have helped create the need for more effective collaboration in the enterprise software delivery cycle. They include the following:
- Flexible working practices
- Faster time to market
- Agile development practices
- End-user demands for transparency and self-service
These trends are changing the way organizations deliver software, creating more complicated organizational structures and making it more difficult for groups to communicate and collaborate. To succeed, globally distributed development efforts must manage internal partnerships, supplier partnerships and outsourced partnerships effectively. And, they must provide procedures and tools to ensure effective communication among all of the stakeholders.
Collaborative delivery environments
Brown defines the collaborative delivery environment (CDE) this way:
A CDE is a virtual space wherein all the stakeholders of an enterprise software delivery organization -- even if distributed by time or distance -- may negotiate, brainstorm, discuss, share knowledge, and generally work together to carry out some task (most often to create an executable deliverable and its supporting artifacts.
A CDE is designed to address the challenges of effective group communication. The ability to negotiate and manage ambiguity is crucial to effective communication. Yet neither is easy to manage, particularly when large groups of people are distributed across various locations and time zones. A CDE provides an explicit, targeted approach to deliver coordinated collaboration capabilities.
One way in which a CDE addresses the challenge of effective collaboration is the creation of a virtual project environment, which lets the team manage its own artifacts rather than requiring the services of a dedicated support team. Other features of a CDE include integrated change management and the storage of metaknowledge, which keep the team informed as the project changes. CDEs also provide mechanisms for discussions, virtual meetings and project dashboards.
CDEs allow for the automation of repeatable processes or tasks using script and automated workflows. They also enable collaborating members of an extended community of developers to share experiences and help one another resolve issues.
CDEs are critical for more than effective communication. They can also help eliminate costs by reducing the need for travel. And, they enable the distributed team to gel, reducing feelings of isolation and the lack of visibility common among remote or mobile employees. CDEs also provide greater accountability, particularly when tiger teams swarm to address specific problems.
What exactly is a CDE? Are there specific CDE products or is it a set of features? Here's how Brown answers that question:
There are two different ways that CDEs are being delivered today. One is that there are specific CDE toolsets being delivered where the collaboration features are deeply embedded in the toolset as first class elements of the development experience. Examples are the IBM Rational jazz-based tools such as Rational Team Concert, and CollabNet's TeamForge. The other is that existing products for software development have been hosted on collaborative, cloud-based platforms to make them usable by distributed teams. Examples include CloudOne's solutions that deliver IBM Rational products via a cloud infrastructure, and GitHub offers a collaborative cloud-based version of the open source Git code management solution.
Collaborative application lifecycle management
A crucial point in enterprise software delivery is the synchronization of and hand-offs between major delivery activities. For example, requirements must be tracked to tests and updates to code must be reflected in design documents and build scripts. Collaborative application lifecycle management (CALM) focuses on synchronization and hand-streamlined development processes and preventing chaos among team members. Success in communicating with the wide array of partners and stakeholders is dependent on a collaborative approach.
Some of the capabilities provided by CALM include the following:
- Providing visibility into who is online and able to participate in a discussion;
- Instant messaging for real-time communication regardless of physical location;
- Event notification and subscription to alerts for key events;
- User-defined metadata to augment knowledge about artifacts; and
- Tagging to allow for categorization of resources
Many of these capabilities can be found in configuration management systems designed to manage source code. These systems have evolved to support collaboration across multiple locations and different organizational structures. Using Internet-based integration mechanisms, CALM solutions support distributed supply chain coordination and communication.
Brown notes three usage patterns for the adoption of CALM:
- The vertically aligned pattern, where team members are closely aligned with their activities and intercommunication is frequent, interactive and often informal. This pattern is typical in teams using Scrum, XP and DSDM.
- The functionally divided pattern, in which delivery teams cluster around functional areas such as requirements management, design, code, test, etc. There is interaction around artifacts and processes. Many large-scale enterprise software delivery teams organize around a functionally divided model.
- The outsourced teams pattern, in which individuals and teams work remotely from the main delivery resources.
All three patterns may exist simultaneously in a large-scale enterprise software delivery organization. In all cases, CALM acts as a mechanism to facilitate interaction and communication, but the categorization allows organizations to apply distinct CALM approaches dependent on their specific needs.
As globalization, outsourcing, mobile development and the use of Agile methodologies grow, enterprise organizations need to adopt approaches that will facilitate collaboration for the delivery cycle. By using CDEs and CALM, organizations will build collaboration into their workflows, which is critical to success.
Enterprise Software Delivery: Bringing Agility and Efficiency to the Global Software Supply Chain by Alan Brown is published by Pearson/Addison-Wesley Professional, July 2012, ISBN 0321803019 copyright 2013 Pearson Education, Inc.; for more info please visit the publisher's website.
Barry Burd, an expert in Java, discusses Greenfoot programming