|
|
ADVISOR VIEW
Justify Your Application Development Framework Investment
Framework investments are difficult to justify. Read this article to better understand their value.
By Shahir A. Daya, Senior IT Architect, IBM Global Services
As companies continue to undertake e-business projects, the demand for custom application development is surging. J2EE application servers have clearly emerged as the platform of choice for mission-critical e-business applications. However, J2EE applications are complex, and building them from scratch each time is costly, requires highly skilled developers and architects, involves inherently risky development, takes longer to get to market, and results in inconsistent applications. The need for a J2EE framework is obvious.
J2EE applications almost always require some common "plumbing," often referred to as application infrastructure. A J2EE application development framework provides reusable code to solve many of these common Web application infrastructure issues, letting the development team focus on the business logic. The purpose of this article is to demonstrate the value such a framework offers and how to calculate a return on investment (ROI) on your framework investment. I'll provide the pros and cons of buying a framework, building your own framework, and using an open source framework. I'll also outline a framework development and management process that can improve your ROI.
What is a framework?
The following are two commonly used definitions of a framework:
- "A framework is a partially complete software system that is intended to be instantiated. It defines the architecture for a family of systems and provides the basic building blocks to create them. It also defines the places were adaptations for specific functionality should be made." (Buschmann 1996)
- "A framework is a set of classes that embodies an abstract design for solutions to a family of related problems." (Johnson and Foote 1988)
Basically, a framework is a semi-complete application. It's different from a class library in that control is inverted. When you use class libraries, the main control flow is in the application code that makes calls to methods in the class library. In the case of a framework, the main control flow is in the framework code that makes calls to the application code. This inversion of control is typically referred to as the Hollywood Principle: "Don't call us. We'll call you."
The developer builds a complete application by inheriting from and instantiating components in the framework.
Framework benefits
The following are some of the key benefits of using an application development framework:
- Shorter development schedule/shorter time to market: Development projects no longer have to solve the many problems related to Web applications. They simply reuse the code provided by the framework. Project developers don't have to design, develop, or test these framework services; they take them for granted.
- Reduced development risk: With a complex programming model like J2EE, the risk of project failure is high to begin with. An application development framework can significantly reduce the risk by serving as a reliable proven base.
- Consistent application architectures: Using a framework results in all applications having similar application architectures, which makes them easier to learn, support, and maintain.
The benefits come down to design savings, code savings, and test savings.
| Table 1: Different approaches -- The pros and cons of buying a framework, building it, or adopting an open source framework. |
 | Pros | Cons |
| Buy | 1. Good documentation available
2. Hardened
3. High quality
4. Good support available
5. You save time | 1. It's rare to find a framework that meets all your framework requirements
2. Many commercially available frameworks are too heavy and are overkill for many situations
3. Steep learning curve
4. Require vendor resources to mentor developers
5. Depend on vendor for upgrades/new features
6. Expensive
7. Upgrades typically costly, increasing total cost of ownership (TCO) |
| Build | 1. Build to your exact requirements -- i.e. you get exactly what you need | 1. More time and high skill resources required to design, develop, test, support, and maintain
2. Requires repeated use to harden and fine-tune
3. Requires significant testing and quality assurance activities
4. Documentation usually first to suffer if schedule slips |
| Open source | 1. Cheap
2. Low TCO
3. Typically reliable and stable because of large contributor and user base | 1. Typically lightweight framework
2. High learning curve
3. Requires you to evaluate quality before selecting a particular open source software component
4. Depending on release, may not be hardened |
Buy vs. build vs. open source
The single most effective way to shorten a software development project's schedule, reduce development cost, and reduce project risk is to reuse existing hardened software components or buy these components instead of building them from scratch. This represents a typical buy/reuse vs. build decision.
However, as quantitative measures start to show the value of open source software, it can no longer be ignored as an alternative. Open source software continues to gain acceptance. Even traditionally risk-adverse industries, such as the financial industry, are considering open source alternatives. It's now a buy vs. build vs. open source decision.
Table 1 lists the pros and cons of buying a framework, building it, or adopting an open source application development framework.
Most companies don't undertake the build option; rather, they'll either buy a framework or use an open source framework. More and more, companies are overcoming the unnecessary fears of open source software and are more seriously considering these alternatives.
The Jakarta Struts Framework is a popular open source framework for building Web applications. I've used Struts to build Web applications for a customer in the financial services industry. Another good open source framework is JCorporate's Expresso Framework. See the References and links section below for more information.
Framework development process
If you plan to develop your own framework or assemble one using various open source components, you should have a framework development and maintenance process in place to ensure the framework has all necessary functionality and the ROI is constantly improving.
Your framework development and maintenance process should consist of the following phases:
- Initial development: This is your upfront development effort to get to the first release of your framework.
- First use: The first application you build with the framework.
- Harvesting framework candidates: When you build an application, there will be elements you expect to be part of the framework that aren't there; you'll end up building these. It makes sense to move these into the framework so applications that follow can benefit. At the end of every application development effort, you should undertake a formal process to harvest framework candidates. You'll have to make sure the component candidate isn't business-specific; these generally aren't reusable.
- Second use: The next application you build will use the framework plus any components harvested from the previous application.
- Harvesting framework candidates: Again, a formal process for harvesting framework component candidates keeps the framework in a good position to meet the needs of future application development efforts.
- Next use: And so on ...
Figure 1 illustrates the framework development and maintenance process.
You can use any J2EE integrated development environment (IDE) to design a framework. Some IDEs, such as WebSphere Studio Application Developer, have good refactoring support that lets you extract code and place it into a method. You can also easily move code around, which helps in harvesting framework candidates.
Even if you buy a framework, it's important to harvest framework candidates from your applications and add them to the framework so it's a better fit for the type of development you do. It's rare to find a framework that meets all your company's requirements.
 |
| Figure 1: The framework development process -- This includes the harvesting of framework candidates after each use. |
Return on investment
In tough economic climates, CIOs are asked hard questions about the return on investment from their e-business projects. CEOs, CFOs, and other executives are demanding that e-business projects have strong business cases accompanied by ROI analysis. ROI analysis has become common practice in companies trying to reduce costs, and the results of these studies are used to determine which projects deserve funding.
Because an application development framework is a semi-complete application, the ROI analysis for such a framework is dependent on the number and size (i.e., development effort) of applications you build with the framework. The more application you build, the better your ROI. In addition, the more complex the applications you build, the better the ROI.
There are many different ways of presenting an ROI calculation for a reusable software component (in our case, an application development framework). You can use estimates of percentage savings -- in other words, the percentage of an application development effort you can eliminate by using a framework. You can also estimate the development effort required to build custom plumbing for an application (which would be eliminated if you use a framework).
A simple ROI calculation is as follows:
S = N * (C1 + C2 - F2)
The symbols represent the following:
- S: Savings per year.
- N: The number of framework-based application development projects anticipated per year.
- C1: Estimated average cost to design, develop, and test custom framework-like plumbing per application (i.e., code you expect a framework to provide).
- C2: Yearly cost to support and maintain custom framework-like plumbing per application.
- F2: Yearly cost to support and maintain a framework per application that uses it.
Assuming F1 is the entry cost for the framework, the number of years it will take to have saved the cost of the framework will be F1 / S.
As you can determine from the formula, you have to develop a certain number of applications using the framework before you offset its cost and start to see a savings. This is typical of any reusable component: The more you use it, the bigger your savings.
The downloadable ROI calculator accompanying this article (see Download File in the upper right-hand corner) implements the formula; you can use it to do quick what-if scenarios.
Worth the cost
Application development frameworks have a lot to offer, including reduced risk of project failure. The benefits far outweigh the cost to buy or build a framework or adopt an open source implementation. Any enterprise considering e-business application development should consider investing in this important time-saving technology.
Shahir A. Daya is a senior IT architect in the Dynamic Workplaces, Portals, Content Management and e-Commerce practice with IBM Global Services in Toronto, Canada. He has expertise in the design, development, and implementation of Lotus Notes/Domino and WebSphere/J2EE solutions. He has experience with several key J2EE open source technologies including the Struts framework, Tiles, Castor JDO, Log4J, JUnit, and ANT, to mention a few. Shahir has been helping IBM and its customers with e-business application architecture for several years. sdaya@ca.ibm.com.
ARTICLE INFO
Web Edition: 2002.12.10, Doc #11571
FREE ACCESS
Keyword Tags: Application Development, CBD - Component-Based Development, Components, Development, E-Business, E-Business Management, Framework, IBM, IBM Lotus, IBM WebSphere, IBM WebSphere Studio Application Developer, Infrastructure, IT Strategy, J2EE - Java 2 Enterprise Edition, Java, Programming, Project Management, Software Components, Software Development, Tech: Development
ADVISORAMA Whatever you want, there's always a trade-off.
|
|