Small Application Development Company uses Eiffel to Dominate Its Market



Objective

An independent software development company used Eiffel Software’s EiffelStudio™ development environment to create a library of reusable modules that contained a tremendous amount of their company’s database software experience and expertise. The contents of this library (what Eiffel Software refers to as an Eiffel Knowledge Repository) are easily reused by company developers to rapidly assemble client-specific applications with very high quality. The development company experienced an increase in productivity among its Eiffel programmers of about 4 times what productivity was with C++ projects, giving them tremendously lower costs and increased client responsiveness. The resulting competitive advantage helped the company to grow to a highest-ever average revenue of $30,000 per week despite a challenging economic climate.


Background

Fowler Software Design is an independent software development company located in Denver, Colorado. They focus on providing management software to small- to medium-sized companies that typically do not want to support their own software development team. They regularly write CRM and financial management software for their clients, and they provide data-flow consulting capabilities as well.

In the 1980’s Fowler used an enormous variety of software languages including COBOL, FORTRAN, BASIC, Magic PC, C, and DIBOL. In the 1990’s, Fowler specialized in writing client applications using C++, FoxPro, and Visual Basic. Growth was very gradual from two founders in 1984 to 15 staff members by December 1999.

On July 22, 1997, Rex Fowler, one of the two founders, read an article by Bertrand Meyer in a tech magazine and picked up a copy of Meyer’s famous book, Object-Oriented Software Construction, Second Edition, published that year by Prentice Hall. Since then, Fowler, who is now CEO of Fowler Software Design, has been pushing the company toward use of the Eiffel Language and the EiffelStudio™ development environment developed by Eiffel Software.

“We know computer languages,” says Fowler, “and Eiffel beats them all for building reliable, reusable, high-quality, efficient software.”

Fowler built an application Framework using Visual FoxPro, and it is still in use. “But we could not do with the FoxPro Framework what we have now been able to do with our new Eiffel framework.” Fowler explains the difference calling the software developed with the Eiffel framework “Self-Proving Software”.

“The difference is in embedded assertions that prove the software continuously while it is being developed. We tried to do the same thing with FoxPro, even inventing a pre-processor to help with the job. But it wasn’t programmer-friendly, so it wasn’t used. In contrast, our programmers love Eiffel and EiffelStudio. And we now have professional versions of the self-proving software we have been working so hard to create.”

FSD average revenue was about $10,000 per week at the beginning of 2000 and had tripled to over $30,000 per week by April 2002.

“Besides improving value to clients,” says Fowler, “one of the best business benefits in adopting Eiffel has been an end to programmer turnover.” Fowler notes that in the early 1990’s programmer turnover was a major problem. “We would hire them, train them, and then they would leave. But we haven’t had a programmer leave for over nine months now, and the one who left in the spring last year left for personal, not professional reasons. I’ve got a very loyal crew now and I’m very grateful to them for their persistence and good work.”

Figure 1. FSD’s reusable framework concept for client-specific software construction.

 

Fowler’s Development Goal and Challenge

Fowler Software Design wanted to deliver a better product and service to their clients (or potential ones), in the form of less expensive projects, or of faster creation of the systems that the client specified, and in terms of greater reliability and extendibility of the systems they created.


Fowler’s Solution

FSD created a design approach that would focus on 1) reuse of prior work for the bulk of any given application, plus 2) some level of client-specific customization to have their work completely conform to the client’s requirements.

There were thus two main design guidelines: That what they do in any project should be written once and then reused; and that they make it easy for both application designers and application programmers to write the unique parts of each software application.

The company decided to pursue a central company framework, written in Eiffel, that would contain the essence of the company’s experience in building database software. This framework would employ Eiffel’s native Design by Contract™ features to make the applications robust and flawless in operation, and also would allow everyone from brand new programmers to senior company developers to easily take advantage of and reuse whatever work had already been done by the company.

Figure 2. High level view of the architecture of the Multi-Tier Framework.

 

Fowler states that approximately 70% of their code is in their reusable framework (i.e., reusable, inherited, and involving no programming), and 30% is client- or application-specific. This results in a cost of new developments that is approximately 1/3 the cost of developing the same software with C++ and without the Fowler Eiffel framework.

Another argument for choosing Eiffel was to incorporate in the framework one of the basic tenets of object-oriented software design: that the easiest application design is one that maps directly from requirements. EiffelStudio is the only development environment that allows the programmer to create a clean, object-oriented model that maps directly to real-world requirements, and then seamlessly allows software text implementation directly from that model and vice-versa. The result is a model that directly mirrors requirements, code that directly mirrors the model, and automatically-generated documentation that mirrors the most recent version of both.

Once its framework had been created in Eiffel, Fowler Software could then also take advantage of EiffelStudio’s .NET compatibility to migrate the company knowledge repository over to the .NET framework. With this capability, FSD developers can Web-enable FSD client applications, share their reusable information much more freely, and assemble pieces from the FSD library into client-specific applications in a very short period of time, with an absolute minimum of code work.
 

Figure 3. Isolation of the reusable framework, the client-specific business-logic and the client-specific presentation logic.

 

Project Results

EiffelStudio allowed FSD to create a simple yet sophisticated multiple-level architecture that supports business logic, as well as the interfaces to the back end (database management) and the front end (presentation layer). (See figure 2.) FSD used EiffelStudio organize their framework so that it would allow them to create GUI code that was completely distinct or isolated from the business code. (Figure 3.)

Fowler Software was able to create their “Multi-Tier Framework” application in a relatively short time. Says Fowler, “In earlier years all we could afford to do was move from one client project to the next, each one entirely different. When we picked up Eiffel, we found we could work on several client projects at the same time, extract their commonalities, and write the framework concurrently. Summer 2001 we went to the summer trade conference with not much more than an ambitious idea. The next year we went to the same conference with a demo of our framework and with three client applications under our belt. 2001 was our best revenue year ever. Then we beat that again in 2002.”

Developers began using EiffelStudio and the Eiffel language. They found that Eiffel software was easy to test and easy to modify. Bugs are easy to find and fix.

Since many Fowler Software clients have recently been desiring to move to the popular Microsoft .NET framework, it has been a critical factor for Fowler that their Framework application is easily ported for use with .NET applications. By using EiffelStudio to retarget their main project to .NET, Fowler Software opened up their code (internally) to be able to be developed from either EiffelStudio (using Eiffel), or Microsoft’s Visual Studio .NET (using either Eiffel, or any other .NET-compatible language).


Company Results

Since going with Eiffel 4 years ago, revenue growth has been steady and dramatic every year. Fowler estimates that they take a 30%+ cost advantage (as well as a significant time-to-delivery advantage) into any competitive bidding situation where Eiffel software is matched toe-to-toe with C++ software.

Eiffel has also permitted Fowler Software Design to break into the packaged software market. For example, FSD is currently working on an Eiffel API for the popular NeoCore XMS native XML database. This would have been impossible in the earlier hand-to-mouth years.

A recent project created a full-featured application for the residential window tinting industry. The software is entirely written in Eiffel and is very robust and efficient. The software includes a very sophisticated mapping routine which, given several orders for tinting for windows, yields diagrams showing the best way to cut rectangles out of rolls of film to minimize waste and cutting costs.

Fowler Software employs Extreme Programming in its shop and has found that the Eiffel language lends itself marvelously to the process. Tests are written before the software is written. The self-proving characteristics of the Eiffel language lend great power to the test-first method and augment the Extreme Programming idea that tests are run continuously to prove the software while it is being developed. FSD programmers do pair while writing software and have found that this also improves quality while not costing more than the traditional code reviews and close technical supervision in heavy books on the subject.

“It’s amazing,” says Fowler, “that even the most obvious checks made inside the self-proving Eiffel software will often snag bugs that otherwise would have required hours or even days to find and fix. Our programmers love Eiffel because they honestly want to write really beautiful software for our clients. And Eiffel lets us do that.”


About Fowler Software Design, LLC


Fowler Software Design LLC is located in Denver, Colorado, USA. Founded in 1984 by Rex and Jan Fowler, the company’s goal is "To profitably provide flawless computer software service to able and productive clients –- thus making them more able and more productive." They take on a wide range of software projects for small- and medium-sized companies in any industry. FSD has done excellent work for some very large companies also. Sometimes a division in a very large company doesn’t want to wait for company programmers to come up with a solution, so Fowler Software is hired to get the job done fast! You can read more about Fowler Software Design at www.fowlersoftware.com.


About Eiffel Software

Eiffel Software (a division of ISE) is the world leader in Eiffel true object-oriented programming tools. Founded in 1985, Eiffel Software produces proven professional tools and component libraries for business-critical and enterprise software developments. Eiffel Software’s products enable their clients to output more and higher-quality software in less time than with any other development tools available. Its users span the globe, in industries ranging from large financial institutions and transaction houses, to technology manufacturing, to government and defense contractors, to health care providers and more.