In today's rapidly changing business environment, customized software applications are one of the primary vehicles for translating business needs into actionable business processes. However, this transformation can occur only if the development process stays on track with the core business need as it evolves, incorporating the appropriate processes and intellectual capital along the way. If done properly, software can create strategic benefits for companies both in the near term and into the future.
If not done properly, software projects drain time and budgets, and they undermine the strategic role of IT within the organization.
Unfortunately, software projects fail at a catastrophic rate. According to The Standish Group's Chaos Report 2004, more than 80% are delivered late, more than half do not include needed features, and cost overruns of 15% or higher are commonplace.
For IT to accurately and effectively translate ideas into reality, project teams must rethink their approach.
Requirements gathering: A costly and frustrating endless loop
The first step in delivering effective software is for IT to accurately
IT has traditionally used complex requirements-gathering approaches -- with lots of text and static drawings -- that are virtually impossible for the average business user to grasp and take a long time to complete.
That means business requirements are not typically captured completely or accurately. This also adds time to this phase, with requirements gathering stretching into weeks and months, as neither party can fully come to agreement due to this mismatch, even when working on small projects.So project requirements are negotiated over several months, during which time the original business needs often change. These changes are then not incorporated, resulting in an end product that no longer meets the need for which it was created.
Evolving prototypes: A more natural way to gather requirements
New prototyping tools from companies such as Serena Software, iRise and Skyway Software provide simulation capability and are helping companies overcome the challenge of gathering requirements.
These tools dramatically reduce the prototype-creation time by providing a pallet of Web, logic and data controls, along with a UI page editor to quickly create interactive walkthroughs.
The tools enable modeling of both the user interface as well as the business logic of the planned software, so that teams can understand what is behind the interface. These modeling tools build a bridge between business users and IT, helping teams quickly construct more complete prototypes.
For example, a well-known utility company was able to quickly gather and analyze requirements for a cash management system using prototyping. Business users and the IT architect discussed requirements in the morning, and the architect created the prototype to reflect the requirements over a day or two. The team then iterated through and evolved the requirements and prototype over the course of a few weeks.
Deciding whether the prototype can be used as the basis for the subsequent build is vital. Unfortunately, most tools available today do not allow the prototype to be used as the baseline application for ongoing work; instead the created prototype is a throw away. This introduces problems when trying to carry the prototyped features into the software itself. In other words, the problems of transforming the gathered requirements to real implementation still exist. The development team must translate and map the functionality of the visual prototype into the technology that will support the actual running application.
IT departments should look for a tool that enables the prototype to be used on top of actual development tooling. If teams choose to have the prototype serve as the launch pad for the project, up to 50% of development can be completed during this initial phase, resulting in a shorter end-to-end software delivery cycle that delivers the necessary business functionality at significantly lower costs.
In the case of the utility company that used prototyping to gather and analyze requirements for a cash management system, they were already 50% development complete as they moved into the build phase of the project.
The need for speed: Modeling overcomes deficiencies of "traditional" development approaches
Accurately mapping application capabilities to customer requirements is only one piece of the puzzle. The amount of time it takes to deliver an application is also critical. IT needs to develop and deliver applications much more quickly to keep up with the business needs in today's global and Web-based economy.
Business has changed dramatically since the advent of development tools. The Internet has increased the pace of business with applications needed to support the modern enterprise working across multiple time zones, via outsourced teams and mobile workers. The huge proliferation of mobile devices is driving the need for more -- and more capable -- mobile applications. Open source and collaborative work environments are now commonplace. And today's customer is king, as opposed to the days when end users did not have the multiple choices and had to buy whatever software a company used.
Many organizations still use development tools that have remained essentially unchanged for more than a decade yet are still at the core of today's most popular development platforms, such as Eclipse and Visual Studio. These developers typically waste ample time and budget because these traditional tools require hand coding and debugging of their applications in a primarily text-based manner.
Model-driven development (MDD) should be part of any organization's software development strategy. This approach allows modeling of the service or application's business logic to be created, and it subsequently generates accompanying industry-standard code. Software that would take weeks to hand code takes only days or hours to create using MDD. The speed up comes from visually abstracting the key programming elements.
In other words, the development team visually models the Web, logic and data access layers of their application. This includes modeling the user interfaces and user events in the Web layer and the business logic in the logic layer, as well as providing design constructs to abstract the data access layer for use by the logic in the Web and logic layer.
Maintaining modeled solutions is also a far more efficient process. Developers look at graphical models rather then digging into to massive amounts of code to fix a defect or change a feature. New developers have faster ramp up times, which makes maintenance costs for model-driven software much lower than software delivered purely via hand coding.
Although MDD still has a reputation of being simply a case tool, modern MDD can rapidly generate highly scalable, human-readable, high-quality code. In fact, current MDD tools generate better code than all but the most skilled developers can create by hand.
The power comes from the fact that the code generators have been defined by highly skilled architects and optimized for the target environments. With this basis, the organization knows that regardless of the skill of the developer using the tool, the generated code will always be the same high-quality code. This is especially useful for maintenance of applications.
So, combine MDD with evolving prototyping tools that are intuitive and form the launch pad of the project, and you'll see the benefits immediately. Business users will be engaged, projects will be delivered on time, and budgets will remain intact. Rethinking the approach to software development reflects the hard fact that today's fast-moving business conditions demand innovative methods and tools to ensure successful software delivery.
About the author: Mike Evans is director of customer and partner enablement at Skyway Software.