Monday, August 24, 2009

Software design or code design

Software design

Generally high level, a.k.a.
  • architecture
  • infrastructure
    e.g. 3-tiers or client server, ejb or not

Code design

  • domain design
  • flow design
  • good code design means clean, maintainable code
  • code design issues are easier to fix than software design
The following extract from Domain Driven Design applies regardless the type of project (waterfall or agile).
Any technical person contributing to the model must spend some
time touching the code, whatever primary role he or she plays on
the project. Anyone responsible for changing code must learn to
express a model through the code. Every developer must be
involved in some level of discussion about the model and have
contact with domain experts. Those who contribute in different
ways must consciously engage those who touch the code in a
dynamic exchange of model ideas through the Ubiquitous
Language.
A solution consultant should touch the code (or at least know the code if they don't want to touch it).

No comments: