Chris Sparks wrote: > > I need some help in getting some information on the projects that have > used GNAT for real-time embedded applications. My lead is concerned > that GNAT will not be suitable, however, I need proof to dispel his > concerns. The situation we are coming across here at work is that we > are going to use another compiler vendor. We currently have a > dependence on VADS. My lead wants as minimal an impact, however, I > don't see this happening. I suggested using some of Ada 95's new > library support for tasking and he felt that it was not stable enough > to use. Any help is always appreciated. > Why do you have a desire to use GNAT for this project rather than the other vendor? If the other vendor is not providing Ada 95, then your job is to present the advantages of moving to Ada 95 as a motivator to the use of GNAT. If the other vendor is providing Ada 95, then you need to know which is the best compiler for your needs; if you believe this is GNAT, then you have to present these reasons to your lead. If it's a choice between GNAT and a different Ada 95 product and you want your project to use GNAT, you should re-direct your question to the GNAT chat list -- I'm sure the other vendors on the Team-Ada list are not going to present reasons why GNAT should be chosen for your project! If your goal is to get your Ada 83 code to work under an Ada 95 compiler (later we'll talk about using the Ada 95 features, but first things first), then it is up to you to demonstrate that this will cause no major impact to the project. Project management is generally horrified by the prospect of changing out any of the substrate technology on the project (the OS, the compiler, the database vendor), even if it's just going from one Ada 83 compiler to another. And depending on the project, this attitude is quite justifiable. If your project code is extremely dependent on VADS-specific features and implementation quirks, then you've got a tough row to hoe. One project in my company tried to migrate from VADS to GNAT and found it nearly impossible to do so; another project in my company doing the same thing had few problems. The first project was doing a *lot* of VADS-specific stuff (also, they were using one of the earlier versions of GNAT which was not mature enough for the job); the second had consciously limited dependency on VADS features. I'm sure you'll hear the same kinds of reports (both successes and failures) from people who've moved from any Ada 83 compiler X to any Ada 95 compiler Y. My understanding is that Ada 95's designers had this goal for upward compatibility with Ada 83: that moving from an Ada 83 compiler to an Ada 95 compiler should be about the same effort as moving from one Ada 83 compiler to another. This has proved true in a number of cases I know of personally. Note that all of the above discussion relates to the situation in which your main goal is to move your Ada 83 code to an Ada 95 compiler without making any design changes. This is absolutely the first step; if you can't do this with small impact, you will not persuade your management. I suggest a pilot project to try compiling your current Ada 83 code under an Ada 95 compiler. The goal of this would be to come up with a set of "lessons learned" notes and a go/no-go recommendation. In order to convince your lead that Ada 95 features should be used, you are better off (1) doing this in a very project-specific way and (2) recommending only incremental design changes to make use of specific Ada 95 features. Project-specific means that you must take a close look at your project and take detailed notes about the Ada 95 features that can supply advantages to the project. General arguments about the superior nature of Ada 95 are not enough. If there is a weakness in the current system that can be improved by the use of an Ada 95 feature, note that. If there is some external interface that can be used to good effect in your system, and that interface is in Ada 95 (for instance CORBA), then that can be noted. If portability is an issue in your project and there is some part of your system that is currently non-portable because Ada 83 did not provide a portable way to get the job done, it is possible that Ada 95 has provided a portable way to do that job. (When the Ada 95 guys where I work put together a list the ways in which Ada 95 could help our project, this aspect was a big factor. A great many things that used to be compiler-specific in Ada 83 are now standard in Ada 95). If your project is very performance-sensitive, then note any Ada 95 features which might improve performance (like protected objects to replace some tasks). Our group made a six-page discussion of Ada 95 features that might be of benefit to our project; the entire discussion was tied to project goals. It is very important to recommend only incremental design changes in the early stages of using Ada 95. There's no reason to throw out all of your current Ada 83-based design which, even if your project is only medium-sized, represents a large invest by your company. The prospect of redesigning a current system (at any time, not just when a new technology like Ada 95 is available) is fun for engineers but a nightmare for project managers. The engineers see redesign as a great opportunity to start with a blank slate and "do it right this time", as well as an opportunity to use fun new features of the underlying technology (be it the OS or the implementation language). Project managers are generally concerned with the schedule and the budget; a vigorous redesign is a good way to blow both. So to start off on the right foot, you must not talk of using Ada 95 to make major changes to the old design. This might be your eventual goal. It may or may not ever happen. But it will never happen if you don't get past the first step, which is to get Ada 95's foot in the door. You can't do that if people are convinced that this will cause a massive re-write of everything done so far. Have a list of design changes you would like to see implemented, describe how these will be beneficial to the project, and draw up a schedule for prototyping these changes to determine the cost/benefits of each, and another schedule which shows how these changes can ever-so-gradually be introduced into the system. New projects in Ada 95 do not need so tentative an approach. Go ahead, stretch those compilers! I've noticed that the current crop of Ada 95 compilers is much better than last season's, especially in those areas that did not see much use in the early days (like tagged types and the new generics features), but which now are starting to be used in new projects. Stanley Allen mailto:[log in to unmask]