11:09

Dan Sturtevant on software architecture

focused on software

Only 7% of projects are successful

on schedule, budget, good functionality, not abandoned

code has structure, but it’s not three dimensional

this makes it harder to understand the structural problems in code

code is like taking knowledge and encapsulating it into functionality

emergent properties

usually bad

usually result in emergencies

define and enforce design rules

there’s often a difference between how the engineers think the code is structured and how it actually is

engineers disagree and code scanning shows a different result

Entropy happens to codebases to make them undesigned, less modular

if you have a technical system that’s highly modular is like creating an evolutionary system

similar to organs

DSM and network view can be isomorphic

DSM allows you to compress a lot of information a network view would be too complicated to view

can see API, shared code, hierarchy, complexity

dependencies across modules both above and below the diagonal shows bad hierarchy

see Joel Moses for work on network representations MIT

Question

Do you find that codebases that lean harder on Functional Programming concepts (like immutability, reduced side effects) produce more modular?

Systems want to be more tightly integrated if there are parts performing multiple functions

Hardware systems it’s more common to tightly integrate for operational efficiency

I suspect interfaces have more energy loss in hardware systems than in software systems

It’s not enough to say the baby is ugly, eventually you need to tell them how to get the baby a nose job.

modules could be mapped to files / functions

like type safety for architecture

restrict use of modules to the API

Apparently distributed organizations build more modular systems…

can consider this for thesis, Dan Sturtevant would consider advising

Takeaways

architecture is meant to promote understandability and evolvability

architecture health is holistic, code health is reductive

both valuable

Dan Sturtevant wrote an article on Modular Design is required for Agile development