Services : Development Practices
[General Info]
Corner Software uses several best practice methodologies in our development work,
without being completely pinned down to any single methodology. Software development
is constantly improving and each new technique adds its own refinements and point of
view.
We stay up to date on new practices like Interaction Design, the Unified Modeling
Language, and Extreme Programming, without throwing away our trusty toolbox from
years past. This leads to an evolutionary style that is always pragmatic, always
improving, and eager to experiment and learn.
Of course some techniques are more influential than others, and Extreme Programming
has provided a batch of good ideas. For example the emphasis on complete and up to date
regression testing for all objects, and testing before building, is really powerful.
We deliver complete regression test suites with all of our projects, and partly as a
result of this, our post delivery fixes have fallen off dramatically. Delivered code
tends to work pretty much as expected.
Just in case you aren't familiar with the term 'regression testing', it means a
set of tests you run after every change to ensure that nothing got broken. The way
Extreme Programming recommends using it is to design test routines that your code
'should' pass. Then write the code that will pass those routines, then run the
tests and fix the code until the code passes. Finally, every time you change anything
at all, even if it REALLY couldn't possibly break anything, run the tests again.
Coding and testing this way allows us to modify, improve, and extend code with
more confidence. If we do forget something, or cause an unintended side effect, it
will get noticed before it causes a problem for our customers. So not only do we
deliver better code, but we are delivering it faster and with more functionality
than before. Thanks Extreme Programming!
Of course Extreme Programming isn't the only arrow in our quiver. UML, or Unified
Modeling Language, is also a big hit here at Corner Software. Interestingly enough,
that sort of contradicts our interest in Extreme Programming. UML is usually thought
of as a modeling tool that implies a heavy up front design process that Extreme
Programming sees as just being a bottleneck to getting real work done.
However, software projects are a tremendous communication challenge, and what
UML provides is a great communication tool. It defines a language, both textual
and visual, that programmers and customers can use to communicate about the problem
they are trying to solve. Having that language has clarified and improved our
communication with customers, and, we think it also improves how we think about
problems.
That's just a peek into our current practices, we haven't touched on documentation,
which is finally improving thanks to some simple but profound ideas like JavaDoc, or
a number of other topics like refactoring, Interace design, contract programming, etc.
But those are topics for another day.
If you'd like to discuss anything here please drop us a line, nothing we like
better than chatting about software design ;-).
|