Software Tools of the Future
An anonymous reader writes "What are the sofware tools of the future going to be? It's an interesting question, with many facets. Here are some important trends in design and construction tool strategy, which will effect the kinds of software tools that will be delivered in the future. It looks at how to improve software development efficiency through visual modeling, generating code from abstract models, and systematic reuse."
My employer is working on an Eclipse-based development environment for their Cascade product, instead of developing yet another custom environment from scratch with all the incompatibility and test overhead that that entails.
Jon.
Eclipse is not just for Java. You can use it for C and C++, python, COBOL, among others.
Some links to check out on these topics:
Semantic Designs (makers of a very powerful, generic transformational environment) http://semdesigns.com/
Link to Nic Rouquettes slides from a talk on MDA at the UML 2003 conference) http://ase.arc.nasa.gov/uml03/rouquette.pdf
Link to an article from ACM Computer magazine (last january I think) about MDS, and project at JPL which aims to incorporate some of these ideas into the design of a robust, re-usable flight software platform http://www.computer.org/computer/homepage/0104/Reg an/r1059.pdf
Refactoring Browsers were a radical change 2 years ago, and improved coding immensely.
But the claim that they "aren't commonly used" is bunk. They are in very common use today. Eclipse, IDEA, JBuilder, etc. Java IDES have made a huge leap in the last 2 years, and they rock.
They succeeded because they weren't trying to reinvent programming. They just aim to make coding easier and better.
Why non-Java IDEs haven't caught up, I don't know. The worst part by far of having to deal with C++ is that these days the tool support just isn't up to the standard of Eclipse or IDEA. emacs does great stuff with syntax, but it can't replace an IDE that is tracking the codes semantics and making clever use of that knowledge.
sean
AmigaVision it was called. It came with my A500, but without a HDD and 2 megs ram it was pretty useless.
I saw some pretty impressive presentations done with it.
I've spent the last two years in a OOD project with a team of 5 - 15 SW Engineers. I can't speak for the Rational XDE tools, or Rose RT, but Rational Rose really really sucks bad. It's the kind of tool that will make you claw your eyes out.
/some/really/long/pa, really helpful.)
Any company that can sell a tool like this and claim to be in the buisness of "improving" your software process and productivity has absolutely no credibility with me.
Rose has Modal, non-resizable, dialog boxes that display paths. If the path doesn't fit in the box it is truncated. You can't resize the box. So.. You can't see the end of the path.. ( Error could not write to
Rose has modal, non-resizable, scrolling boxes. With these it is at least possible to see the path if you need too. But you'll still go mad as the box is only big enough to hold about three 30 character lines. Of course I'm looking through a list of 200 files, and all the paths are 100 characters long.
Rose has sequence diagrams that forget their sequence, and can't be rebuilt.
Rose has a bug that makes it just go insane if a version 0 of a file gets created in UCM/Clear case. And it can't tell that it has gone insane.
Rose can't keep track of files that have changed underneath it. It has a bad habit of hijacking files and not telling you.
Rose has no good way to merge many parts of models.
Rose has a bad habit of "disappearing" modeled objects during a reverse engineer step, and not telling you. If you accidently screw up a path to a file, and reverse engineer, your modeled object will disappear. And all of the other artifacts that depend on it will get corrupted. And god help you if you check everything back in that way.
I'll take my coffee black. I'll take tcsh and vi as my integrated development environment and OOD tool over Rose any day of the week.
Kevin
"They that give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety"-B.Franklin
(here, Lisp = Common Lisp)
:unsigned-char)) :int)) :returning :int)
:)
) . However, how much and how often does it matter?
Depending on the implementation, you can get some type checking (CMUCL and SBCL do type inference a lot, iirc).
While ML has type checking, it also needs a different operator for each type of argument. It probably affects refactoring a little and is sort of annoying, but nothing serious.
Just consider the Lisp "system" as a library. Depending on the smartness of the compiler, it can be shaken down to a smaller size.
FFI isn't exactly hard to do. From UFFI's (LGPL) manual:
def-function name args &key module returning
(def-function "gethostname"
((name (*
(len
Bah syntax. Both our opinions are probably extremely well anchored
How's Lisp harder to use imperatively? Just about every control operator has an implicit progn.
Faster. Often true, but how much so? Lisp, with annotations and compiled for speed instead of safety, is pretty to close to C. (Here's the last troll-induced response I can remember: http://home.comcast.net/~bc19191/blog/040308.html
Better metaprogramming support.
Try Corewar @ www.koth.org - rec.games.corewar
Good list. Refactoring and method references are in VS.NET 2005, so your complaint is valid there. However, I rarely experience crashes (maybe once every few months), including at home, school, at my internship, and even with the beta.
Regarding method search dropdown (which I'm interpreting as IntelliSense in VS.NET), are you trying to use it with C++? It's always been crappy with Visual C++, so Eclipse might be better in that regard, but it works wonderfully with C#, and comes up in even more situations with 2005.
As for navigation and the UI, you can customize menus, toolbars, and keyboard shortcuts. I customize the toolbars but the rest of the UI is fine with me, so it's likely a subjective thing.
You specify a set of rules that pattern match sub-graphs of the current state graph, and transform that sub-graph into a new one. You then specify a program as a series of these transformation rules, any valid program can be applied either once or until it can be applied no more. Give it an input graph and you get a new graph as output.
If you want more information go ask Detlef Plump at the University of York - it's his research that I'm getting this from.
Bob