Despite the reports to the contrary from such industry intellects as IDG, Linux has made quite a big splash in all areas of computing and not just "limited inroads" in the data center in terms of Web servers. Notice I said, "computing". Not desktop applications, Web servers, or clusters, but computing. Computing is something that transcends the mundane and goes to the heart of the nature of what it is that computers do and how we get them to do it.
We often see articles and other material written about Linux in high-end database servers, DNA sequencing software, geologic research, and embedded Linux. What we don't usually see is the depth to which open source software and Linux are influencing the way software is created.
Beyond the lone programmer toiling away over a hot keyboard with way too much caffeine at his or her disposal, there are some very serious software engineering efforts happening in the Linux universe. This article will talk about some aspects of this part of the Linux world and how they can help shape and control software-engineering costs at your firm.
CASE, or Computer-Aided Software Engineering is a term that's been around for decades. It can generally be applied to any system or collection of tools that helps automate the software-design and development process. Compilers, structured editors, source-code control systems, and modeling tools are all, strictly speaking, CASE tools. They keep programmers from having to deal with the naked hardware and allow them to work in higher-level abstraction in defining a software system that then will be built.
In the last 15 years or so CASE has become associated with some very specific families of tools that help define and validate the specification of a system or automate the build process for that software. The current generations of CASE tools are whole systems of software unto themselves that comprise many, many tools to help software teams design software much in the way an architect would plan a building or a downtown area.
CASE systems, because of the large number of tools they provide, and the massive amounts of data they typically manipulate have well-deserved reputations as CPU and disk-space hogs. As a consultant I have worked at some firms where they would throw several Sun E10K servers with multiterabyte disk arrays at a project using Rational's ClearCase. Within a few short months, they were often buying more disk arrays. With appetites for resources like these, how could Linux even get into this game?
A few years ago, it would have been impossible for a Linux system to play in this sandbox: the limitations of the file systems alone would have squelched the idea. Fortunately, the Linux world moves very quickly. The availability of larger SMP systems, in fact whole IBM 390 Mainframes running Linux, and fast, journaling file systems like ext3 or ReiserFS without the old 2GB limit, and logical volume management, all mean that there are few limitations beyond cultural inertia and bias that are stopping Linux from becoming a player in this space.
Since we have the horsepower and the storage issues behind us, what exactly can Linux do in the CASE world?
There are generally three kinds of CASE systems: Design Tools, Build Environments, and Hybrids. If you are a casual programmer or even a professional one, you might be thinking to yourself: Oh yeah, so what? Don't these tools come with most Unixes by default? The answer is 'yes' and 'no.' Yes in that most Unixes come with all the tools and utilities needed to edit and compile/build software. No in that the tools that most programmers use are good for relatively small groups and relatively small projects.
The kinds of tools (make, cvs/rcs, gcc, Text/groff) that come with Unix are indeed core development tools, but what CASE systems generally focus on are not the coding/writing/compiling itself, but rather the process of the design, refinement, documentation, coding, and build- and release-management processes needed to develop and manage a software package or system. In a large-team or large package environment where you might have three to five versions of a large package in various states of development and/or deployment on two to five hardware platforms, supporting three to four versions of four operating systems, the processes that work for a one-to-five-person team just doesn't cut it.
CASE design tools aid large teams of engineers in the specification of a software system and then helps automate the writing of frameworks, code stubs, documentation, and so forth, and integrates these automatically generated pieces into the developers' IDE.
Most CASE tools speak the Unified Modeling Language (UML) championed by Grady Booch, Jim Rumbaugh, and Ivar Jacobsen. Their company, Rational Software is one of the best known names in CASE systems. Rational makes a soup-to-nuts system that covers almost every aspect of the software-design and specification process. The availability of UML has revolutionized the ability of software engineers to create system specifications that can be relatively easily translated into working and maintainable code.
There are CASE tools for almost any kind of specialization one can think of, from database design to data warehousing, from documentation generation to the development of embedded systems like cell phones and set-top boxes.
CASE build tools aid large teams in building and managing the release of software packages. This might sound like small potatoes compared to writing and debugging a software package, but if we look at the straw man (three to five versions, two to five hardware platforms, and so on) mentioned above, it becomes quickly obvious that if you're releasing something as complicated as, say, a word processor that must be built and run on all of these systems you had better be able to track all of the possible combinations of sources, objects, executables, and so forth that comprise your system or you'll have a real distribution and support nightmare on your hands.
Hybrid tools are a new phenomenon; they take off-the-shelf tools and apply Web services to create a distributed system that can handle multiple styles of development and the flexibility to add new tools and services without a lot of work. Great examples of this kind of system include SourceForge, Collab.NET, and all of their variants.
What these tools and systems have in common is the tight integration of process (design) and practice (implementation), along with the ability to analyze the what, when, and where of the development process in terms of the metrics that describe all the activities taking place in a given project.
In terms of traditional commercial products, it's a mixed bag. Forward-thinking companies (like Rational) have ported their tools to Linux. For other companies, where Java was the development environment for their tools, they often offer their tools on an as-is basis (for example, the tools may work because of Java's portability, but some functions that depend on native interfaces might not work at all). Some companies have not heeded the message and supply their tools only on a Windows platform. If you really need such a tool, you can always run it under a Windows emulator such as VMWare. Companies like Oracle and Computer Associates offer a large number of their CASE and development tools under Linux.
Of course, the open source community tends to evolve systems to fill voids in its capabilities. There are dozens, if not hundreds of tools available to implement parts of, or occasionally, complete CASE toolkits that emulate many of the best features of commercial CASE tools.
Some of the best known CASE tools and related development systems available to the Linux world include:
If you are running (or trying to convince your management to run) a large software development effort using Linux, you may be able to save your firm a lot of money. Most forward-thinking tool vendors have made the leap to Linux and you can learn more and get started with any of the many open source tools available for download on the Internet.
David HM Spector is President & CEO of Really Fast Systems, LLC, an infrastructure consulting and product development company based in New York
Read more Linux in the Enterprise columns.
Return to the Linux DevCenter.
Copyright © 2009 O'Reilly Media, Inc.