About
Rhino Research is a consulting and training company focusing on software architecture. Our primary consultant and instructor is Dr. George Fairbanks, who has a Ph.D. in Software Engineering from Carnegie Mellon University and has been teaching software architecture and object oriented design since 1998. More…
Just Enough Software Architecture book
Just Enough Software Architecture: A Risk-Driven Approach by George Fairbanks.
Buy the hardback from Amazon for $34.50 or the e-book for $19.50.
Public Talks
- 9 Feb 2010: Boulder Java User Group – Design Fragments.
- 4 Mar 2010: CU Boulder Colloquium – Design Fragments.
- 6 May 2010: IASA Denver ITARC — Architecture Haiku
- 21 May 2010: SEI SATURN conference – Risk Driven Architecture.
- 14-15 June 2010: AgileRoots 2010 — Architecturally Evident Coding Style in Salt Lake City
- 21 July 2010: Northern Colorado Architects Group — Architecture Haiku in Ft. Collins
- 3 Aug 2010: Denver Open Source User Group — Architecture Haiku
- 7 Sept 2010: Boulder Java User Group — Architecture Haiku
- 17-21 Oct 2010: SPLASH / OOPSLA — tutorial on Architecturally Evident Coding Style
Recent blog posts
- Architecture Hoisting - video of Atlanta talk
- Speaking at Atlanta IASA, Weds 14th, 2012
- Book on sale: Now just $19.50 with free shipping (limited time)
- More book citations: Muddy architecture
- New review of my book
- Talk on expressing architecture in code: AgileRoots 2010
- CompArch/WICSA 2011 - Panel discussion and Haiku tutorial
- Much good news: Second printing, Amazon top-10
- Another great Amazon review of my book
- Interview in InfoQ -- and in Japan




Architecture and conceptual, logical, and physical data modeling
Again, I am not a database expert. The Wikipedia page on data modeling describes the three levels above, so I’m proceeding from their definitions, which are roughly:
I’m not sure I completely understand the set of commitments made in the logical model vs. physical model, because the parent post says that commitments to varchar vs. string(20) would not be made in the logical model. Or perhaps the definition of logical model varies.
We build models for a purpose. It is not fair to build a model for one purpose and judge it by its suitability to another purpose. If I build an architecture model to design a secure, fast system then the model might stink for helping be build a modifiable system or a testable system.
In my experience, I have always used a conceptual model when building an architecture model. Depending on the specific quality attribute needs of the architecture, either or both of the logical or physical models could be helpful. On most IT projects I would suggest that you avoid making specific data representation commitments, like the varchar vs. char(20) commitments. However, if this were an app for an embedded device with limited storage, such commitments would be pretty important, so I would include them.
In a way, I think our desire to have a single, easy to understand definition for “architecture” is leading us in the wrong direction. If we asked a related question like “What models would be helpful to for designing a system to do X?” then I think we would realize that the answer is “It depends on what X is”. There is increasing consensus that architecture is more about quality attributes (latency, security, usability, deployability, …) than it is about functionality. It’s not that functionality isn’t important, but that I could build a 3-tier system or a monolithic system or a peer-to-peer system or a SOA system that all achieved the same functions, but had quite different quality attributes. If you tell me what quality attributes the system should have, it’s easier to decide what models to build, i.e., what parts of data modeling to include in its architecture.
Regards,
-George