Software Process and Development
(Tools: TogetherSoft Independent Consultant information)
Recently we've run into quite a few situations (specifically in the area of Biotechnologies) where the Science expressed
in the software is quite good, but since much of the software development was organic (features developed as the science
discovered they were needed), the software needs certain structural changes and documentation to reduce the cost of support
and to make it easy to introduce new features.
There is a book
(Developing Enterprise Java Applications with J2EE(TM) and UML)
that calls this the "Just-Develop-It Approach.":
overall design of the software
exists as part of the software. In other words, there is a on-to-one bidirectional mapping between the architecture, design,
and implementation. The overall quality of the software is largely dependent on the developers involved in the project.
Documentation, in general, is relatively unimportant. Instead, the project relies on the continued availability of the same
or equally skilled developers, so they can continue to evolve or maintain the software.
"Overall, this means that the software may range from an excellent piece of work that is highly flexible and
evolvable to very poor quality software that is inflexible and unable to accommodate even the simplest changes in
requirements. In a nutshell, the overall success rate is unpredictable at best and repeatability from one project to the
next (or even from one project phase to the next) is mostly dependent on luck."
We're working on changing luck into a repeatable deterministic process. Although we've been
working in the
area of BioInformatics most recently, we can apply the same principles of structured software engineering to most any
TogetherSoft Independent Consultant
Greg Kluthe is one of TogetherSoft's Idependent Consultants.
He's using TogetherSoft's Control Center
to help introduce software engineering process to teams currently using the "Just-Develop-It" Approach.
Since TogetherSoft offers the best round trip engineering between source code and UML. You can introduce UML slowly continuing to develop
using the "Just-Develop-It" Approach using an analysis tool to produce a representation of your "on the fly design."
As small independent feature enhancements are required,
you can introduce a small iterative design process centered around simple UML learned by example.