|
Home
Contact us
Tools
|
I will use whatever tools you specify to develop your code for you.
However, if you don't specify any, these are the ones I will use.
They aren't the latest, greatest, "silver-bullet that will solve all the problems
of software engineering and also cure the common cold" development environment,
but they work well together and final result can be imported to any development
environment you wish.
-
Aegis is my configuration manager.
It allows me to keep different projects completely separate,
it keeps concurrent development streams within a project separate,
requires that I create a regression test for every change I make to the
project and ensures that the baseline, the deliverable, passes
all those tests. The regression tests are part of the deliverable.
Here is the official
Aegis site.
-
Jam is my build tool. It is rule-based, like Make,
but the rules are named rather than deduced from patterns on file names.
It is simpler to use than Make, partly because it does not require dependencies
for the intermediate files of a build and partly because it doesn't
need include dependencies, it can work those out for itself. It fits in
very well with Aegis.
You can find out more about jam from
here.
-
Literate Programming is my programming style. Using literate programming means
that I write the documentation of the detailed design. The
deliverable source code is generated automatically from the documentation,
with cross-references
in the code back to the documentation. This means that
the documentation is always up-to-date
and always refers to the delivered code. A copy of the documentation
(in PDF) is part of the delivery. Hyperlinks in the PDF
allow for efficient on-line navigation.
The Wikipedia article on Literate Programming is
here.
And here is an essay on Literate Programming in
which I give a short example.
-
Z is the specification language I use. You will want me to use this in
projects where due diligence is required, such as safety critical software.
Even if you do not require it, I often use it to make sure I understand your
requirements and to guide the development and testing.
For more see here.
- LaTeX is the documentation tool I use.
It is a structured document processor
which allows me to concentrate on the content of documents as
distinct from a WYSIWYG
word processor that requires me to concentrate on the appearance.
This is especially advantantageous where the documentation of a project
may run into many hundreds of pages.
The final documents produced are in the industry standard PDF
format.
There is an enormous amount of material about LaTeX. Start with
the Wikipedia here.
- Linux is the operating system I use on my own machine.
Of course, but which distribution. LFS. That's Linux From Scratch. I build my
entire system from the sources.
My machine is a DEC (sorry, Compaq) (sorry, HP) Alpha and commecial distributions
are few and ones imported into Australia are even fewer.
I've done it three times. It's about three
days work every couple of years, but it's worth it. I end up with a clean
system that has everything I want, nothing I don't want and I can't be
left in the lurch by a distributer (as has already happened).
And updating individual bits between upgrades is a doddle.
For more information see
LFS.
-
I don't normally use Object Oriented methods. They work well if you have
a complete solution to your problem before you start the implementation.
However, in research projects the job is to find a solution, so you don't have
the information you need until the end of the project. Of course, once you have that
information, Object Oriented methods are valuable for the second version.
|