One of the most important but least used techniques in software development
is proper design before implementation. Everyone knows this, but it seems
that no one does it. Insane development schedules, pointy-haired manager
types who believe that the only "real" artifact produced by a developer is
source code, and a host of other events conspire to keep development as a
nonengineering pursuit. However, those who have used good design (in the form
of use cases, sequence diagrams, class diagrams, and so on) find that it
reduces the number of required changes late in the project, calls for fewer
design changes after coding has started, and shortens development schedules.
The tool that's generally considered the Rolls Royce of CASE (Computer
Assisted Software Engineering) is ... (more)
Let's start by getting the naming business out of the way! First there was a
company named Borland. Then, for apparently no good reason, they changed
their name to Inprise. The Inprise name was supposed to encompass the
Enterprise products (such as VisiBroker, Entera, etc.) and the Borland name
was kept for the tools (JBuilder, Delphi, C++Builder, etc.). Well, all the
name change did was... (more)
In the beginning there were servlets, and it was good. They were much better
than the alternatives, and allowed for scalable, robust Web development. But
there was trouble in paradise.
Web development partitioned itself into two camps: art school dropouts
(invariably Macintosh users) who could create the beautiful look and feel for
the Web application, and the Java developers who made it ... (more)
Remember the old axiom, Be careful what you ask for, you just might get it?
That's what happened with the Abstract Windowing Toolkit (AWT), GUI controls,
and threading. Developers were tired of always worrying about multithreaded
access to GUI elements, so it sounded like a good idea to create an
application framework that was always thread-safe.
What do we mean by thread-safe? Two separa... (more)
An unfortunate consequence of the pace of technological advancement is the
lack of knowledge among new developers concerning the lore and tools of
previous generations. While much of old technology is quaint and should be
left behind (how many programmers do you know that miss PDP 11 Assembly
language?), some good ideas were there as well.
One of the not-so-old and not-completely-forgotte... (more)