What are leading development organizations doing to increase innovation, agility and embrace new technologies? The answer: Distributed multi-source development
Large software projects that are late. Missed schedules. Budget over-runs.
These aren’t pleasant challenges to manage, yet they are hallmarks of traditional waterfall software development methodologies. This common approach to creating software is yielding to two powerful approaches to development: distributed development using Agile methodologies, and multi-source development, combining closed source with free and open source components.
The IT industry has moved from silo’d and location-centric teams building applications to web-centric, globally distributed teams collaborating on applications. At the same time the increased use of free and open source software, virtualization, outsourcing, mobile development, and cloud computing are changing market dynamics in a way that many would determine “game-changing.” And the pressure on ISVs and enterprise IT organizations’ development cycles, costs, and the need to innovate has never been greater.
Acquisitions have also changed the face of IT. For example, no one would have imagined five years ago that Oracle would acquire Sun to get into the server and storage business. Or that relatively new players like VMware would be able to go after Microsoft via virtually unknown, small players like SpringSource.
The level and velocity of change brings challenges. Developers and their development managers need more tools, more automation, and more policy and process to manage through the application lifecycle to stay ahead of the competition while managing cost, complexity and compressed development cycles. Let’s look at today’s development challenges and explore how free and open source and Agile application lifecycle management (ALM) methodologies work hand in hand to drive change and increasing quality, reduce time to solution and create new opportunities for collaboration.
Development Process Challenges
From a business agility perspective, waterfall development cycles took (and still take) much too long -- from quarters to even years -- to bring new software to market. Worse, the practice is unresponsive to changing user requirements, leaving development managers with software products that fail to meet user and market needs.Whether these users are internal IT users or external customers the result is the same - loss of competitive advantage. This is especially true if competitors are using more modern and responsive development techniques to achieve faster development cycles and higher quality software.
Even with solid requirements and structured development management practices, it’s difficult to trace requirements accurately through the application development lifecycle - and to further tie those requirements to each of the downstream software development data, tools, and team members.This traceability is further compromised by geographically distributed teams. In addition, code is increasingly finding its way into the development process through a variety of internal and external sources – including partner-developed code, free and open source, and third-party software from other development teams.
The result is that without the use of appropriate tools, mixed code use risks can include security violations, license rights and restrictions issues, loss of intellectual property, and injunctions.In the software development lifecycle, geographically-dispersed team members may work with different tools as a function of their tasks, creating a lack of collaboration. Add a lack of user involvement in the development process, and the result is a mismatch of user expectations and the product that ultimately gets released.
Clearly, lack of business agility, lifecycle traceability, and team collaboration results in a lack of productivity and organizational competiveness.
At same time, componentization, service-based architectures, and code-specific search capabilities associated with the use of open source have made rapid prototyping and application assembly feasible. The combination of the use of advanced distributed and cloud-based Agile ALM tools plus multi-source development using open source software can result in reduced product cycles, increased productivity and higher quality software releases.
The role of open source
The economics of OSS use/re-use are compelling. With open source developers can:
- Accelerate innovation, even in a tough budget cycle, by focusing scarce development resources on value-added features
- Make use of a large pool of proven, re-usable software
- Take advantage of ~300,000 projects with the equivalent of two million person-person years of development time, roughly translating to $400B of aggregate value.
Open source has its challenges - licensing issues, provenance, and spotty documentation come to mind - and one huge advantage: an abundance of available code. Managing the abundance of open source requires robust governance policies to ensure compliance, process to ensure selection of appropriate code, and collaboration.
A growing list of enterprises, including SAP, is deploying tools to ensure open source re-use is managed and complies with policy and procedure. While SAP and companies like it are in the vanguard, more organizations are looking for tools to automate and manage their OSS processes.
Once companies are ready to accept multi-source and Agile development methods, they must deal with complexity: how to make good code choices from external sources, how to manage collaboration in distributed development teams, and how to adhere to Agile methods - all at enterprise scale.
Challenges: Multi-Source Development at-Scale
Instituting multisource development with a geographically distributed team presents challenges, particularly if the process isn’t managed well.
What can go wrong? Individual developers may maintain different versions of the same component within the organization (code creep).They may be incorporating software with conflicting licenses into the code base. It may be unclear where the original code came from. As many a developer knows, it’s not always easy to find the right code.
Interdependencies between code elements can also present challenges, especially when you, as the software integrator, are responsible for ensuring support. But you’ve got to have an idea of what the support model is behind components that were sourced externally, so making good choices early in the development process is important.
Add to the list of challenges governance processes, which may involve many approval boards and legal overhead. This can be both time consuming, slow and bureaucratic.
Redefining Software Development:Agile ALM
As a result of the market trends, ALM has moved from the waterfall model to a distributed Agile development methodology. Distributed teams are collaborating around a shared set of tools and data, utilizing shorter, iterative development cycles to incorporate user feedback into the development process.
As it stands today, according to a recent Forrester study[1], approximately 45 percent of development organizations are using Agile methodologies. Of the many Agile methodologies, Scrum is still the most adopted, while 35 percent of development teams mix Agile with other methodologies. Regardless, waterfall and iterative approaches are becoming less popular as Agile use increases.
Agile development, by definition, uses an iterative cycle employing commonly used techniques and continuous integration. For example, it’s not uncommon for CollabNet (a leading SaaS-based Agile ALM tool provider and a Black Duck customer) servers to get millions of transactions a day as more and more teams adopt the use of advanced Agile ALM tools.
The use of Agile ALM is driving a developer centric viewpoint with complete lifecycle awareness that scales from workgroups to the enterprise. .
Integrating Agile ALM with Multi-Source
In today’s multi-location, multi-partner, and community development model, code comes from various sources outside of your own project team. As part of this development process, virtually every company:
- Uses captive offshore and partner outsourced development
- Engages and collaborates with commercial ISVs and development partners
- Integrates FOSS code
- Has implemented a component re-use and code search strategy.
The pros of this multi-source strategy are that it’s:
- Flexible –a team can choose the best component for the task
- Innovative – the best talent and resources can be utilized from a vast pool of choices
- Works well with Agile methods –large portions of code can be rapidly integrated into a typical Agile sprint.
Development managers in this scenario benefit from the combined characteristics of Agile methods and Open Source: both are modular and fast. Agile breaks the workflow up into digestible tasks. Open source optimizes code access and transparency. In addition, the best open source projects are also component-based and geared for community access and re-use by others.
And finally, both Agile and open source are collaborative, providing all stakeholders with an opportunity to communicate throughout the lifecycle.
Enterprise Barriers to Agile ALM in the Cloud: What are the challenges?
Many traditional workgroup SCM tools do not support Agile team-based development, which is driving project teams to transition to SCM tools which can support all types of development methods.As development teams transition to Agile, for example, they may begin using Subversion and other open source revision control systems, in addition to traditional SCMs.
Another challenge is the use of tools optimized for workgroups and not the enterprise.Today, Agile teams can quickly get up and running using a loose combination of easily-available tools and architectures combining home grown, open source, and vendor-supplied point tools.Unfortunately, this results in incompatible databases and data formats, inconsistent processes and tool configurations, and the need for costly ongoing support – rendering leverage and re-use by other project teams tools very difficult.
Also, a lack of enterprise collaboration, a result of distributed teams and incompatible tool stacks and processes, results in limited visibility, hinders IP and code governance, and creates an inability to implement common processes to improve a company's development efficiency across the organization.
Because of these organizational and technical barriers to Agile ALM and multi-source management, the software development industry is driving towards enterprise solutions that support a range of development processes and technologies, and also support integration for tools unique to specific development processes.
An Agile ALM solution needs to scale from the workgroup to the enterprise to enable global development and re-use.This connected and common platform allows development to scale from ten to tens of thousands of users, both inside and external to a company, and provides access to the best developers in the world, regardless of location.
With a connected community, companies can implement leveraged IP re-use strategies as well as common development processes to improve development efficiency and innovation throughout the organization.
In addition, a centralized architecture enables organizational governance in the form of project and content access rights, e.g. in the oversight and re-use of source code IP.
The benefits of distributed Agile development are significant. As an example, according to a survey of CollabNet hosted customers, cloud-based ALM solutions can be implemented at 20 percent of the cost of other solutions (including the reduction in tool licensing, ongoing support, infrastructure, and admin personnel.) These solutions have been shown to yield 10-75 percent design cycle reductions depending upon the amount of re-use and leverage across the organization, which leads to acceleratedinnovation and revenue generation.
Integrating Scrum with Distributed ALM
Implementing Agile practices to manage distributed teams with multiple code sources is possible today. Let’s look at a couple of examples.
Profiled by CollabNet in a case study, the first company is a leading Information systems provider selling into a highly regulated industry. Because this firm’s market is regulated, there are strict governance issues around the use of IP and the implementation of any changes to the ISV’s software. Regulatory issues were compounded by a set of hodgepodge tools and processes used by development teams which weakened management’s ability to assure compliance. In addition, development cycles were taking over two years because the firm struggled to tie the needs of the market to its various distributed development teams.The company was concerned that it was not going to be able to compete with more nimble players in its market.
As this firm puts it, they went from “chaos to Agile.” The company implemented a Scrum project management process and integrated it with the underlying ALM software design data among its distributed teams. In this way, the firm connected the market needs of its customers more tightly with its Agile development iterations, yielding a measurable improvement in market responsiveness.
Because of the simplicity and the openness of the tools chosen, the rollout and integration into legacy development tools was quick and flexible. It was critical for the company to have business continuity, driving the implementation of a solution that supported Hybrid processes and code bases - allowing development and business strategies to change over time as a function of the business needs of the various project teams.
Within a short period of time, development cycles were reduced by 75 percent - from 24 months to 6 months - and overall team productivity was improved 20 percent, which enabled further organizational improvement.
Tools for Distributed Agile Development
A second CollabNet profile describes the case of a leading financial services provider. As with the previous example, this firm also develops and produces services in a regulated industry.
Customer Two had a developer population of over 4,500 with many unique tools and processes, multiple code sources (both commercial and open source), and with 70 percent of the development in its lines of business outsourced to contractors and major system integrators. The result: development chaos.
Over the course of a couple of years, this company took a phased approach to getting its IT development under control.
First, it adopted many of the collaborative best practices used in open source development to enable centralized code management for the entire enterprise.Code centralization brought the firm into IP compliance, and drove consistency throughout its source code development practices.
Once code was centralized, the firm standardized on company-wide ALM processes across the entire software development lifecycle with a specific emphasis on building and testing applications. Using lab management provisioning, it built and tested applications all the way to limited production. The firm estimates that it’s saving $3M/year and reducing build cycles by 75 percent for every 100 build and test servers in use. In addition, by coordinating its global development team, the firm was able to implement SOA and code re-use strategies to further reduce redundancies, improve quality and accelerate time to market.
Following this success, the company is now taking it to the next level. Now that its development is organized into one managed and centralized “Developer Operations” group, the company’s development ‘cloud’ can be integrated with its production operations to create an end-to-end view, streamlining application development and deployment. Company Two has now created predefined stacks to which its developers develop and its IT data center deploys.The firm has a goal to eliminate 90 percent of its supported IT stacks, which will drive 100s of millions in costs out of its global IT development and deployment costs.
This customer “trusts but verifies”- it requires suppliers to declare the components of their software, and uses a code scanning tool to check that it’s in compliance. A central catalog of approved supplier code is maintained.Other customers actually require their suppliers to use the same tool and submit the results of the analysis along with the code submission.
This solution provides an unprecedented level of visibility into the software supply chain, including code provenance and history, and avoids inherited IP risks.
Conclusion
With a coordinated global development team, the combination of the use of new Agile ALM development methodologies and the managed use of free and open source software enable companies to realize their potential -- increasing innovation, fueling developer passion, and reducing redundancies - all with improved quality and faster time to market. With Agile methods, multi-source development using open source and appropriate policy and process, development organizations can increase innovation and agility, and embrace new technologies.
[1] Agile Development: Mainstream Adoption Has Changed Agility, Dave West and Tom Grant, Ph.D. Forrester January 20, 2010