Alexander Zitzewitz
Focus on architecture management, meta models.
hello2morrow, founded 2005, located in Boston
Divide and conquer, ensure you don't have cyclic dependencies; learned lesson from fixed-price contract.
Manage complexity; structure not easy to decipher on medium/large systems, especially for new people.
Erosion of architecture (Robert Martin)
Why?
Solution, Six Sigma for software:
BMW: worked on static analysis tool that assessed software compliance to architectural layers, among other things; required all projects to comply (including the static analysis tool :-)
Definition of "logical architecture" -- example: layers of UI, Business Logic, Data Access. Then create vertical slices of functional aspects. Grid of layers + slices forms "natural subsystems."
Cyclic dependencies are evil
One way to break: Inversion of Control
Spring has 0 cyclic dependencies; Hibernate has ~50 packages, only 4 were not in cyclic dependency chain; very high coupling metric -- but they avoid catastrophy by lots of unit tests
Our goal: create software that can be maintained by normal humans.
Golden rules for successful project; follow and you'll be better than 95% of projects out there.
CMW: Idea is to limit effects of change + make it possible for human to keep different sections in head.
Architectural rules whitepaper: hello2morrow.com
Demo of projects... pretty neat. I think AN does ok with many of these metrics, but there are suspects (.type) and not terribly effective/consistent package names.
Integrates via plugin with Sonar (open source), generates dashboard with nightly build,