Too Detailed, Too Fast
One of the dangers system designers continually face is diving into too much detail, too fast. Given a system problem statement, the tendency is to jump right into fine-grained function (feature)...
View ArticleNot Either, But Both?
I recently dug up an old DDS tutorial pitch by distributed system middleware expert extraordinaire, Doug Schmidt. The last slide in the pitch shows a side-by-side, high-level feature comparison of...
View ArticleCode First And Discover Later
In my travels through the whacky world of software development, I’ve found that bottom up design (a.k.a code first and “discover” the real design later) can lead to lots of unessential complexity...
View ArticleThree Degrees Of Distribution
Behold the un-credentialed and un-esteemed BD00′s taxonomy of software-intensive system complexity: How many “M”s does the system you’re working on have? If the answer is three, should it really be...
View ArticleBoulders And Pebbles
When embarking on a Software Product Line (SPL) development, one of the first, far-reaching cost decisions to be tackled is the level of “granularity” of the component set. Obviously, you don’t want to...
View ArticleAsynchronous Flows And Synchronous Transactions
The figure below shows a pair of BD00 concocted models for two classes of systems; peer-to-peer and client-server: The primary mission of an AFCS is to progressively transform a high rate stream of...
View ArticleThe Gall Of That Man!
A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have...
View ArticleWorking Code Over Comprehensive Documentation
Comprehensiveness is the enemy of comprehensibility – Martin Fowler Martin’s quote may be the main reason why this preference was written into the Agile Manifesto… Working software over comprehensive...
View ArticleOur Stack
The figure below shows a layered view of the latest distributed system product that I’m working on. Customer teams compose their applications by writing their own system-specific Crumbs and linking...
View ArticleIntimately Bound
Out of the bazillions of definitions of “software architecture” out in the wild, my favorite is: “the initial set of decisions that are costly to change downstream“. It’s my fave because it encompasses...
View ArticleAlternative Considerations
Before you unquestioningly accept the gospel of the “evolutionary architecture” and “emergent design” priesthood, please at least pause to consider these admonitions: Give me six hours to chop down a...
View ArticleComponents, Namespaces, Libraries
Regardless of which methodology you use to develop software, the following technical allocation chain must occur to arrive at working source code from some form of requirements: The figure below shows...
View ArticleClean And Jagged
Suppose you’re developing a software-intensive product and you have to choose to write your app code on top of two competing infrastructure platforms: Well, duh. I think I’ll take the candidate on the...
View ArticleNot So Nice And Tidy
Assume we have a valuable, revenue-critical software system in operation. The figure below shows one nice and tidy, powerpoint-worthy way to model the system; as a static, enumerated set of executables...
View ArticleLet the Design Emerge, But Not The Architecture
I’m not a fan of “emergent global architecture“, but I AM a fan of “emergent local design“. To mitigate downstream technical and financial risk, I believe that one has to generate and formally document...
View ArticleWhere To Start?
The purpose of abstraction is not to be vague, but to create a new semantic level in which one can be absolutely precise. — Edsger Dijkstra With Edsger’s delicious quote in mind, let’s explore seven...
View ArticleRegardless Of Agile Or Waterfall
The figure below depicts an architectural view of a real-time embedded sub-system that I and a team of 8 others built and delivered 10 (freakin!) years ago. At revision number 9, the diagram ended up...
View ArticleGilbitecture
Plucked from his deliciously titled “Real Architecture: Engineering or Pompous Bullshit?” slide deck, I give you Tom Gilb‘s personal principles of software architecture engineering: Tom’s proactive...
View Article
More Pages to Explore .....