Software Development Tools
Software Development Tools<@VM>Programming environments nurture custom applications<@VM>One of these 10 Ada compilers can help customize on most platforms, even Linux
The right programming environment gives you power to create custom applications
By Martin Heller
Special to GCN
Federal agencies are constantly finding ways to make commercial software work for them, but that hasn't eliminated the need to create applications from scratch.
In government, custom applications abound because agencies often have unique or specialized missions and requirements. A program to model the infrared signature emitted by a re-entry vehicle, for instance, is critical to the Pentagon's Ballistic Missile Defense Organization but is hardly the sort of thing that would be needed anywhere else.
When off-the-shelf software isn't sufficient, an agency can either hire a contractor or assign agency staff to develop a custom application. If you choose the latter, where do you start?
This Buyers Guide focuses on full-fledged programming environments and major compilers. Choosing these is usually the first step in a software development effort, once the target platform has been defined. After an agency has settled on a programming language and environment, it can identify third-party design tools, libraries, repositories, configuration management and version control systems, debugging tools, testing aids, and deployment systems.
Programming environments and other software development tools help programmers design, build, test, debug and deploy custom applications. Evaluating them is sometimes complicated, sometimes not.Keep it simple
The simplest possible evaluation process, appropriate for experienced development shops doing small projects without critical requirements, is to use whatever the programmers have, like and can use productively.
The most complicated evaluations for large projects with critical needs require painstaking analysis of how each product does or does not meet each project requirement. They also require a careful forecast of the training, development and long-term costs associated with each toolset, made according to the skills of the project staff. In addition, it can be useful to build small prototypes with each tool under evaluation to understand some of the benefits and drawbacks of each system.
The choice of an appropriate language often is critical to a custom development project. The 1996 Aerospace Industry Association Position Statement on Ada, the high-level programming language developed by the Defense Department, recommended that each project staff conduct a language selection trade study to consider lifecycle costs, interoperability, and the critical needs of safety or flight systems and large-scale systems.
A language and environment designed for rapid development, such as Visual Basic, can be extremely productive for building small to midsized desktop PC and database applications for Windows platforms. At the same time, Visual Basic is not portable, not particularly object-oriented and lacks the robustness of Ada or even C++.
Borland Delphi, which has some of the same strengths and weaknesses as Visual Basic, uses a more object-oriented language'Object Pascal'and tends to work better in large projects.
Ada, the required language for most DOD projects from 1991 through 1993, is still strongly recommended for embedded systems and other defense work. The Information Technology Standards Guidance V3.1, which is still in effect, deprecates the use of C: 'The intrinsically low-level nature of C and lack of direct support for modern software engineering approaches and discipline make it an undesirable language for the development of large, general-purpose DOD software applications,' the guidance states.
The same document recommends against C++, stating: 'Because the mechanics of the C language are embedded in C++, it is susceptible to many of the above noted difficulties with C, despite the introduction of object-oriented programming software engineering into the language. ' Use of C++ for the development of critical systems applications is not recommended.'Go for the Joe
Java would be a strong candidate for a development language when portability is key and the highest possible performance is not. Java programs are normally compiled into portable byte code, which is then either interpreted or compiled to native code by the Java Virtual Machine running on the client machine.
The performance of JVMs is improving, although their memory requirements tend to be on the high side. Work is progressing on embedded and real-time Java, but it has a long way to go before Java can replace Ada in safety and flight-critical systems.
When an application requires a central database or distributed functionality, the choice of language can be less of a factor in the total cost and development time than the choice of programming environment.
Environments that make it easy to access databases with Structured Query Language (SQL) query builders, database designers, and data-aware controls can cut the cost of some projects significantly, more than justifying the premium price attached to client-server and enterprise software tools.
Recently, enterprise Java development environments have become strong on database access. Other candidates for quickly building database applications include Delphi and C++ Builder, Visual Basic and Visual FoxPro, and Sybase PowerBuilder.
Distributed applications built primarily for Windows platforms often interact using the Component Object Model architecture and its distributed extension, Distributed Component Object Model. With Unix platforms, Common Object Request Broker Architecture with Internet Inter-ORB Protocol is often the distributed programming mechanism of choice. Java distributed applications sometimes rely on Sun Microsystems' Remote Machine Interface.
Distributed programming and distributed debugging are more difficult than single-machine programming and debugging. An environment that supports the distributed programming mechanism in use with automatic interface generation, component deployment, and end-to-end debugging will simplify a distributed application developer's job and reduce the cost of developing a distributed application.
Tips for buyers
- Choose a programming language that is appropriate for the application. A flight-critical embedded system might need to be written in Ada; a desktop PC application for a query to a department's database might be developed at much less expense in Visual Basic.
- Play to your strengths. If the environment you pick for developing an application is already familiar to your staff, the project will get off the ground much more quickly than if they have to retool and retrain.
- Use best-of-breed systems. A new project may be just the thing to justify jettisoning an outmoded programming toolset and adopting the best tools now available.
- Look at the big picture. A project with a 20-year lifecycle will have costs that are dominated overall by maintenance. A project with a one-year mission needs to be developed once, in a short period.
- Mix and match. It isn't necessary to buy into one-vendor programming suites, although they can sometimes be economically attractive. Consider acquiring third-party tools that work well with your core programming environment.
Web applications often are built using a combination of technologies that fall outside the scope of this guide.
The chart above notes tools that have explicit support for building Web applications, but it does not list all the tools useful for building Web sites.
In many cases, the availability of third-party tools and components tips the scales when comparing programming environments. For instance, there are hundreds of third-party ActiveX controls that work as components with Visual Basic and Delphi, as well as with several other environments.
More and more of a software developer's job can now be done visually. Visual object-oriented design tools let architects decompose applications into compound components, components, classes, methods and properties, and generate code frameworks that correspond exactly to their design.SQL free
Graphical user interface developers can draw dialogs, menus and forms on-screen, without having to write code. Database developers can design databases and create queries interactively using diagrams, without having to write SQL directly. Once a query works or a table exists, the design tools can generate whole data-aware forms automatically from the query.
Distributed applications, once too difficult for mere mortals, are becoming tractable, if not yet easy to develop. Programming environments now support browsing distributed resources on the network, importing interfaces, and automatically generating client and server proxy classes that let the programmer use the distributed resources by calling methods.
Some environments can also support end-to-end debugging of distributed applications from a single workstation, even on heterogeneous systems that are widely separated.
Programmers have become able to do more in less time, development projects have gotten bigger and more complex, and project development times have been compressed from two- or three-year cycles to six- to nine-month cycles. Any development shop working without power tools won't be able to compete in this kind of environment.Martin Heller is a software development consultant and writer in Andover, Mass.
|Vendor||Product||Languages||Platforms||Database support||Distributed support||Team support||Description||Price per seat|
| Franz Inc. |
| Allegro CL|| Common Lisp with CLOS|| Win9x, NT, Unix, Linux|| ODBC, AllegroStore|| CORBA, COM|| N/A|| Cross-platform Common Lisp development environment|| Personal $595, Windows Enterprise $6,000, Unix Enterprise $8,000, Unix server $16,000, site license $50,000|
| GCC/EGCS |
| GNU Compiler Collection|| C, C++, Fortran, Java, Objective C, Chill|| Unix and variants|| N/A|| N/A|| SCCS in OS|| High-quality, open-source compilers; no IDE|| Free|
| IBM Corp. |
| Visual Age for Java|| Java|| NT, AIX, OS/2 Warp|| DB2, JDBC, Data Access Builder|| CORBA, RMI|| Team repository|| Visual application generator, incremental compiler|| Entry Edition free, Professional $79, Enterprise $2,745|
| Visual Age C++ Professional|| C, C++|| NT, AIX, OS/2 Warp|| Data Access Builder|| N/A|| N/A|| Visual application generator, incremental compiler|| NT or OS/2 $899, AIX $2,499|
| Inprise Corp. |
Scotts Valley, Calif.
| Borland C++ Builder|| C, C++|| Win9x, NT|| MIDAS, BDE, ODBC, SQL Builder, InterBase|| CORBA, COM, Web|| PVCS|| RAD environment for C++|| Professional $799, Enterprise $2,499|
| Borland Delphi|| Object Pascal|| Win9x, NT|| MIDAS, BDE, ODBC, SQL Builder, InterBase, ADO, OLE DB|| CORBA, COM, Web|| TeamSource|| Object-oriented RAD tool|| Professional $799, Enterprise $2,499, Standard $99|
| Borland JBuilder|| Java|| Win9x, NT, Solaris|| InterBase, Data Modeler, SQL Builder, JDBC|| CORBA, RMI, EJB|| PVCS|| Java 2 RAD tool|| Professional $799, Enterprise $2,499, Standard $99|
| Metrowerks Inc. |
| CodeWarrior|| C, C++, Java|| Win9x, NT, Mac OS, Linux|| N/A|| N/A|| N/A|| Cross-platform C, C++, Java IDE|| Windows or Macintosh $449, Linux $99 |
| Microsoft Corp. |
| Visual Basic|| Basic|| Win9x, NT|| SQL Server, ODBC, ADO, OLE DB, RDO, DAO; database, query and report designers|| COM, Web|| Visual SourceSafe, SCC interface|| Easy-to-use RAD tool|| Standard $109, Professional $549, Enterprise $1,299|
| Visual C++|| C, C++|| Win9x, NT|| SQL Server, ODBC, ADO, OLE DB|| COM|| Visual SourceSafe, SCC interface|| Hard-core C and C++ environment|| Standard $109, Professional $549, Enterprise $1,299|
| Visual J++|| Java|| Win9x, NT|| ADO, WFC, query designers, form wizards|| COM, Web|| Visual SourceSafe, SCC interface|| Easy-to-use Java, sacrifices portability for ease and performance|| Standard $109, Professional $549|
| Visual FoxPro|| FoxPro (dBASE derivative)|| Win9x, NT|| FoxPro database format; database, query and report designers|| COM, Web|| Visual SourceSafe, SCC interface|| Database-oriented application design environment|| Professional $549|
| Visual Studio|| All of the above|| Win9x, NT|| SQL Server, ODBC, ADO, OLE DB; database and query designers|| COM|| Visual SourceSafe, SCC interface|| Cross-language bundle|| Professional $1,079, Enterprise $1,619 |
| Sun Microsystems Inc. |
Palo Alto, Calif.
| Visual Workshop C++ Performance Workshop|| C, C++ Fortran|| Solaris Solaris|| N/A N/A|| N/A N/A|| TeamWare TeamWare|| High-performance C and C++ High-performance Fortran|| Single RTU $1,995, Floating $3,495 Single RTU $1,995, Floating $3,495|
| Sybase Inc. |
| PowerBuilder|| PowerBuilder|| Win9x, NT, Unix|| DataWindow, OLE DB, ODBC, Sybase Adaptive Server|| COM, EAServer, IIOP, Web|| SCC interface|| Database-oriented RAD tool|| Enterprise Windows $2,995, Unix $4,995, Desktop $295, Professional $1,295|
| PowerJ|| Java|| Win9x, NT|| JDBC, Sybase Adaptive Server, DataWindow|| RMI, EAServer, CORBA|| SCC interface|| Database-oriented Java environment|| Windows $595|
| Enterprise Application Studio|| PowerBuilder, Java|| Win9x, NT, Solaris|| DataWindow, OLE DB, ODBC, Sybase Adaptive Server, JDBC|| COM, EAServer, IIOP, RMI, Web, CORBA|| SCC interface|| Bundle with server license|| Windows $3,445|
| Symantec Corp. |
| Visual Caf'|| Java|| Win9x, NT|| Oracle Lite, JDBC, dbAnywhere|| CORBA, RMI, EJB|| Two version control interfaces: plug-in and SCC|| Java 1.1 and Java 2 RAD environment|| Database $799, Enterprise $2,795, Professional $299, Standard $99|
|Vendor||Product||Languages||Platforms||Description||Price per seat|
| Ada Core Technologies Inc. |
| GNAT|| Ada 95|| Unix, Linux, Windows, Real-time, Mac OS|| Ada compiler, integrates with GCC|| Product free, paid support |
| Aonix |
| ObjectAda|| Ada 95|| Unix, Windows, Real-time|| Ada compiler and cross-compiler system|| $595 for Professional, bundles to $6,850|
| AverStar |
| AdaMagic|| Ada 95|| Unix, Real-time|| Ada compiler and cross-compiler system|| $5,000 up for native, $15,000 up for embedded and Unix-embedded|
| Concurrent Computer Corp. |
Fort Lauderdale, Fla.
| MAXAda|| Ada 95|| Real-time|| Ada compiler and cross-compiler system with integrated development tools|| $8,500 for single user, $7,000 for each additional user|
| Green Hills Software Inc. |
Palm Harbor, Fla.
| Green Hills Optimizing Ada 95|| Ada 95|| Real-time, Unix, NT|| Ada compiler and cross-compiler system|| $2,900 |
| Irvine Compiler Corp. |
| ICC Ada|| Ada 95|| Unix, Real-time, VMS, Linux|| Ada compiler and cross-compiler system|| $5,000 for native, $25,000 for Unix-embedded, $100,000 for multiuser embedded|
| OC Systems Inc. |
| PowerAda Aprobe|| Ada 95 Ada 83, 95, C++, Fortran|| AIX, Unix, Real-time AIX, NT, Solaris|| Ada compiler Integrated developer environment|| $6,000, $1,200 for maintenance $36,975 up for project license|
| R.R. Software Inc. |
| Janus/Ada 95|| Ada 95|| 32-bit DOS extender, Win9x, NT, Unix|| Ada compiler|| $495 for Professional|
| Rational Software Corp. |
| Apex/Ada|| Ada 95|| NT, Unix, Real-time|| Integrated Ada development environment with modeling and testing tools|| $5,000 for native, $22,000 for Unix-embedded with embedded run-time system|