Iterative Application Development: An Evolutionary Strategy for the '90s (Migration,Network Compatibility,Operating System Compatibility)
Created at 22 NOV 1996 03:07PM
Introduction: The Need to Manage Business Change
Today, there is only one constant spanning every business sector … change. Businesses are no longer static and their complexities continue to grow exponentially. One day you're fighting a competitor, the next day, you buy them. The board of directors insists that you add low-priced products to your line for short-term revenue gains. You adopt just-in-time inventory methods to eliminate obsolescence costs. Your customers demand that you adopt ISO9000 quality standards.
Companies unveil new products and services at an unprecedented rate, create and exploit new sales and marketing channels overnight, and markets increasingly splinter into smaller niches. Product and service positioning and differentiation have become an ongoing exercise within organizations that wish to establish and maintain market leadership.
Perhaps the most dramatic event to impact business is the revolution in information technology. This revolution has not occurred overnight. Computers fueled business change in the 1970s and early 1980s by automating business functions, such as accounting and inventory management.
Today, businesses are just beginning to take advantage of the enormous performance improvements in the areas of desktop computing, networking, electronic mail, and telecommunications. More recently, high technology has delivered newer technologies, such as client/server architecture and graphical user interfaces whose promise is yet unfulfilled.
Modern companies need flexible information systems that can grow, expand, and adapt to changing business realities, now and in the future. Currently, there is a wide chasm between the traditional, procedural methods of developing software applications and the realities of business needs.
Traditional development approaches, featuring prolonged analysis and design phases based on structured methodologies, were appropriate when applications had long and definite life cycles. The early, monolithic payroll and accounts receivable systems written in procedural languages, such as COBOL, exemplify the traditional approach to business software systems development. However, today's software applications need to evolve at a much faster rate to keep pace with business change.
The late 1980's saw the appearance of several strategies that attempted to deal with the escalating rate of change by expanding the traditional systems development model. Rapid Application Development (RAD) employies prototyping with user participation as a means of accelerating the development process. However, RAD continues to derive much of final design from the formal analysis of system requirements. System Development Life Cycle (SDLC) "waterfalls" stress that maintenance must include planned cycles of analysis, design and construction to address new business requirements. Unfortunately, in practice both approaches fell short of their objective.
The inherent flaw in these strategies is their failure to acknowledge that business requirements continue to evolve during the systems analysis and design phase. By adhering to the traditional systems model, application development and enhancement can become fixated on the analysis of constantly changing requirements. This has resulted in what development analyst Christine Comaford calls "analysis paralysis". Failing to move into actual development, the application is never created and enhancements are never implemented.
The failure of these strategies holds lessons for today's developers. The dynamics and economics of the business systems environment have substantially shifted, rendering the traditional systems development model ineffective.
A Gartner Group study concluded that approximately 85 percent of the cost of a business application is allocated to the labor involved in developing and maintaining that application. These findings serve to reinforce the objective of adopting a more responsive process for the development of flexible applications that can evolve as the business evolves.
In evaluating a new strategy for business application development, it is important to maintain a clear perspective. Academic debates championing one application development theory over another have a useful role in creating and proposing new strategies. However, these technical "Bake-offs" are irrelevant unless due consideration is given to attainable improvements.
To be successful, the new strategy must meet the business imperative of a substantial, measurable return on investment (ROI). The relevant business application development discussion must focus on pragmatic, achievable bottom line results.
An effective business application development strategy must leverage the benefits of the new technologies to optimize the ROI. Many of the new application development approaches employ object-oriented techniques in support of an event-driven model. Object-oriented application design and construction utilize component engineering and provide system extensibility. Object-oriented languages, such as C++, are ideal for designing event-driven graphical user interface (GUI) applications. However, without the support of a sound application development strategy, a project employing these techniques can be disastrous.
In order to accommodate the rapidly changing needs of modern business, a new application development strategy incorporating the event-driven model must emerge. To define the requirements of a new strategy, a closer examination of the forces shaping today's application development environment will be necessary.
The Forces Driving Application Development
Today, there are four primary forces shaping the business application development debate. These forces are interrelated, but each has a decided impact on how a business automates its operations through its applications.
1. The Rapid Evolution of Technology
While the information processing environment of the 1980s was shaped by the dominance of the minicomputer and the emergence of the personal computer, the current environment consists of a broad range of proliferating platforms and standards.
Newer, more efficient hardware architectures using RISC, Pentium and Power PC processors have brought power to the desktop that was unimaginable ten years
ago.
Faster networks now integrate voice, data and video images across the hall or across the ocean. With the explosion of LANs and WANs, data communications has
evolved from a high-end, complex to a commonplace feature and essential requirement.
A new generation of software technology provides graphical interfaces to data, sophisticated relational database management and complex analytical capabilities …
all promising greater personal productivity.
These technical currents have converged to shift the application development model.
The Results:
An opportunity to change the manner in which we develop business applications
Increased application power, sophistication and ROI potential
2. The Changing Nature of the Business Organization
One of the most profound effects of the new technology has been corporate restructuring … decentralization, down-sizing and right-sizing. Harvard Professor, Michael Hammer, coined the buzzword, "re-engineering", to describe this phenomenon. Re-engineering involves the use of technology to maximize employee productivity, while minimizing head count.
Companies are now largely abandoning the traditional hierarchical management structure in which a vice president supervises middle managers, who in turn oversee small departments. Caught between the hammer and anvil of high technology, middle management is squeezed out as hierarchies are flattened and organizations seek to streamline operations, information flow and the systems that support decision making.
The Results:
The structure of application development departments, MIS organizations and data centers has shifted toward a leaner model that requires greater efficiency.
The focus of applications has changed to meet the needs of the leaner, flatter organization.
Partnerships and collaboration are now mandatory requirements to meet objectives.
3. The Emerging Global Enterprise
As companies seek to maximize revenue potential by entering international markets, the complexity of conducting business increases significantly. The end of the "Cold War", The General Agreement on Trade and Tariffs (GATT) and the North American Free Trade Agreement (NAFTA) have dismantled many of the old trade barriers, resulting in an explosion of newly accessible markets.
The business marketplace is now global and is measured in multiple time zones. To be competitive, business must learn to grapple with new export regulations, local laws and customs, cultural differences, an array of languages, foreign exchange and currency conversions. More often than not, companies operate 24 hours a day
The impact of the global marketplace on business application development is comprehensive. From a hardware perspective, it involves implementing remote and distributed computing architectures, including communications with mobile laptop users and "telecommuters". For software, it means building foreign language versions of applications, accommodating local usability requirements, supporting multi-byte characters and changing time and date formats. And because companies rely upon these applications 24 hours a day …there is no "down-time".
The Results:
Applications must be modular and flexible to accommodate local use in remote locations.
Applications must be scalable and accommodate distributed architectures.
Coordination and communication among developers are essential. Development teams must be able to communicate with each other from remote locations.
4. The Increasing Importance and Complexity of Applications
Management information systems (MIS) has matured from automating routine organizational functions to providing "mission critical" support for organizational planning, forecasting and marketing. Today, MIS is charged with much more than increasing productivity. Its challenge is to leverage data as a competitive weapon.
MIS must now create and maintain highly sophisticated, strategic applications. Examples are applications that "mine" data for trends analysis, develop "what-if" scenarios for business projections and create highly targeted marketing programs. Not surprisingly, there is a strong correlation between the importance of the application and its complexity. The manner in which MIS responds to these demands will determine its success:
Client-centered design must become the focus of application design. Rapid prototyping cycles that center on the client's needs, rather than on abstract analysis, result in better applications and faster user acceptance.
Faster application development is a requirement of client-centered design. If development and review cycles do not occur quickly, a development project can easily lose focus.
Objects…Objects…and more Objects drive today's component development, resulting in more reliable, faster code. Reusable objects ensure consistency and faster development.
The Results:
The corporate challenge of delivering strategic value has significantly "raised the bar" of acceptance to MIS efforts. Application tools and processes must meet this challenge.
The need for an application to evolve to support changing business requirements grows in direct proportion to its strategic importance. Application evolution is now just as mission critical as the application itself.
These four driving forces have converged in the 1990s to shift the focus of the applications development discussion from features to implementation. The dialog no longer revolves around GUIs and gateways, or DDE and DLLs. The focus is now on applying these tools to improve developer and end user productivity, increase business application reliability, reduce costs and shorten the time to market.
Information systems developers are now "under the gun" to deliver robust client/server applications. However, their path is not clear. It is blocked by a preponderance of tools, each of which claims to offer a straightforward, cost-effective path to client/server paradise.
The sobering reality is that it usually takes a combination of tools and different types of expertise to develop a truly effective solution for an organization. And many of these tools are not compatible with each other. The challenge becomes even greater with the realization that the users will need training and a comprehensive support program.
Lurking in the shadows is the greater challenge of extending and evolving the client/server application after it has been implemented. Organizations are now coming to terms with the fact that maintenance is a very different proposition with client/server applications than it was in the centralized world of traditional application development.
In light of this new challenge, "maintenance" is no longer an appropriate term to describe the process of application enhancement. Companies must now rapidly redesign applications to adapt to constantly shifting business circumstances … new offices … new products … new computers. Cycles pass so quickly that the application never seems finished. An application is now more analogous to a "journey" than a "destination".
Two areas must be considered to arrive at a viable solution to the application development dilemma:
What application development strategy will exploit the driving forces?
What underlying technology will support that strategy?
The Strategy: Iterative Application Development
Iterative Application Development (IAD) holds tremendous promise as a strategy that will allow systems development to keep pace with changing business requirements. IAD combines the rapid design, construction and implementation of critical business systems with the means to incrementally improve and evolve those systems through rapid, iterative cycles.
The Primary Characteristics of Iterative Application Development
Concurrent Design and Construction
Application design and construction occur simultaneously in multiple cycles that maximize communications and cooperation between user and developer.
User Centered Design
During the iterative design cycles developers focus on the needs of the end user. Fast, frequent prototyping builds on the concepts of Rapid Application Development to a degree that one might term "RAD+", due to an even greater emphasis on end user acceptance.
Object-oriented Construction
IAD builds applications through component engineering. Component reusability, inheritance and other tenets of Object-oriented Programming (OOP) support rapid, iterative application design cycles.
Component Reuse
All software developed through IAD should be modular and completely reusable. Development teams must have access to previously created and proven code modules, objects and other components. Documentation should be consistently updated.
Cooperative Development
Cooperative development is a hallmark of effective IAD. Development workflow and team coordination must be carefully managed to gain the benefits of this approach. Since several developers will work simultaneously on the same set of application components, team members must communicate and coordinate their efforts.
Developer Specialization
IAD seeks to optimize development team effort by assigning developers to tasks that make use of their strongest talents. Each developer assigned to the project works primarily in his or her area of expertise, such as interface design or communications. This model fosters developer morale and team motivation, and yields higher quality results.
A Focus on Continuous Improvement
When a software component is upgraded, all applications that share that component benefit. Not only does IAD help create better applications now, it lays the foundation for better applications in the future.
As stated earlier, IAD recognizes that information systems are dynamic and must change to meet new business requirements. IAD places greater emphasis on application evolution and preservation than on analytical design. As a pragmatic development strategy, IAD does not consider "maintenance" to be outside the development life cycle. This approach accommodates unforeseen changes in business and technology by facilitating application evolution from the onset of the development project.
IAD Benefits Summary
Faster delivery of more applications through component engineering improves development productivity.
Reusability enhances application quality and reliability through the sharing of proven application components.
Prototyping and component engineering and reuse shorten development time and lower costs.
Developer specialization provides increased efficiency. The cooperative development team approach reduces risk through the sharing of project knowledge.
Applications built using component engineering techniques are scalable from workgroup to department to enterprise.
The Technology: The Active Repository
After outlining the principles of IAD, the logical question to raise is, "How is Iterative Application Development actually implemented?" The underlying technology required to support IAD is the active application development repository.
The active application development repository acts as a central software
"bill-of-materials," storing and tracking the use of components in an application's assembly and sub-assemblies. Just as a DBMS manages the data used by an application, the active repository manages the application itself. A full-featured, active repository maps directly to the requirements of IAD.
The Basic Characteristics of the Active Repository
Component Engineering
This is the primary function of the active application development repository. At its most basic level, an active repository is a database application that stores, tracks and manages the definitions, relationships and use of application components. These components may include forms, table definitions, images and code which are joined to produce applications.
Component Reuse
The active repository assists developers through the automated tracking and management of application components. Without the ability to readily locate components, reuse remains only a theory, since "You can't reuse, what you can't find". While this seems obvious, it should be observed that software library systems and passive "repositories" do not support this function.
Check-in/Check-out
Check-in/Check-out is a requirement for managing workflow during cooperative development. When a developer works on an application component, that component must be "checked-out" from the repository. During "check-out", other developers are denied access to that component for purposes of modification. When work is completed, the component is "checked-in" the repository and again becomes available to other developers.
Net Change and Impact Analysis
When modification to an application component is proposed, the active repository provides an impact analysis of the changes for all occurrences of the component prior to implementation. Once the component is modified, the repository executes a global change, updating each code module in which the component appears. The repository maintains a complete change log of all modifications made to each component.
Application Inheritance
The active repository can assign the functionality of an existing application to a new application, when the existing application is specified as the "ancestor." Applications that are derived from a generic ancestor can be evolved in new directions, while the integrity of the ancestor is preserved.
Open Architecture
The repository must be based on an open architecture to support the integration of third party tools and executables and not lock developers into a commitment with a specific toolset or vendor.
Scalable, Distributed Architecture
The repository should be scalable from notebook computers to network file servers. It should not require a dedicated database server, or minicomputer or mainframe host as a platform. But it should easily accommodate one, if desired.
Conclusion
Iterative Application Development supported by an active repository provides application developers with a strategy and supporting technology to:
Create higher quality applications by exploiting existing and emerging technologies.
Maintain and improve the business mission focus of applications by rapidly evolving them to accommodate changes in the business model.
Improve productivity through faster, more reliable development that provides greater value at less cost than traditional methods.
Successfully develop and manage increasingly strategic and complex applications.