A Category of Systems

Exploring the consequences of Systems & Cybernetics in Engineering
Author Tom Westbury License Creative Commons Licence

Agile Systems Engineering and System Hierarchies

Date 2022-02-24
Tags

This post is not here to share a so­lu­tion to a prob­lem in the same way as my oth­ers. In­stead, I would like to pose a ques­tion around ag­ile and tra­di­tional sys­tems ar­chi­tec­ture and hope­fully spark a dis­cus­sion on a con­cept that is al­most fun­da­men­tal to mod­ern sys­tems think­ing—the sys­tems hi­er­ar­chy.

To frame my ques­tion, I would like to start by mak­ing a dis­tinc­tion be­tween ‘tall’ and ‘wide’ sys­tems. Tall sys­tems are those that you tend to en­counter in the de­fense in­dus­try. These sys­tems have sys­tems within sys­tems within sys­tems. Us­al­ly, the parts of a tall sys­tem be­come more spe­cialised as you go down the ab­strac­tion lay­ers re­quir­ing more spe­cialised en­gi­neers as you get into the lower lay­ers of techol­o­gy.

Wide sys­tems, con­verse­ly, are those that have many be­hav­iours—in other terms, a large in­ter­face. Large soft­ware apps are good ex­am­ples of wide sys­tems where the in­ter­face can be in­cred­i­bly large—­think of some­thing like a Mi­crosoft Of­fice ap­p—but only has a fron­tend and a back­end re­gard­ing ab­strac­tion lay­ers.

Com­plex wide sys­tems have many in­ter­act­ing be­hav­iours whereas tall com­plex sys­tems have many in­ter­act­ing parts. Many com­plex sys­tems are both tall and wide—­think of mod­ern au­to­mo­biles or air­craft.

Scal­ing Ag­ile and Sys­tems

The sort of com­plex sys­tems that we en­counter in the sys­tems en­gi­neer­ing world are too com­plex for a stan­dard ag­ile team of 10 en­gi­neers. Sys­tems en­gi­neer­ing can be thought of as the set of tech­niques re­quired to deal with prob­lems too great for one team. There­fore, most sys­tems en­gi­neer­ing projects re­quire some sort of scaled ag­ile frame­work if they don’t want to de­liver a so­lu­tion that’s out of date when it gets to the cus­tomer.

There are a num­ber of frame­works for scal­ing ag­ile. For ex­am­ple, LeSS and Scrum of Scrums. In these frame­works, mul­ti­ple scrum teams work from a sin­gle prod­uct back­log. In other words, one set of re­quire­ments.

Ide­al­ly, these teams are cross­func­tion­al—they should com­prise T-shaped en­gi­neers. T-shaped en­gi­neers are those who don’t just spe­cialise in one area, but hold enough knowl­edge out­side of their main dis­ci­pline to col­lab­o­rate on and scru­ti­nise all of the work be­ing done by the team.

This is at odds with the tra­di­tional hi­er­ar­chi­cal model where there are mul­ti­ple re­quire­ments doc­u­ments that act as com­mu­ni­ca­tions of need be­tween ab­strac­tion lay­ers. There is also a ten­dency for en­gi­neers at each layer to be heav­ily spe­cialised with sys­tems en­gi­neers and project man­agers high up go­ing down to more spe­cialised me­chan­i­cal, elec­tronic and soft­ware en­gi­neers as you work your way down the project tree.

Hu­man Hi­er­ar­chies and Sys­tem Hi­er­ar­chies

Con­way’s Law states that sys­tem ar­chi­tec­tures mir­ror the com­mu­ni­ca­tion struc­tures of the or­gan­i­sa­tions that de­velop them. The preva­lence of hi­er­ar­chi­cal or­gan­i­sa­tions in the mod­ern world—­driven by the norm of cap­i­tal­ism and mil­i­taries—­may ac­count for the preva­lence of tall com­plex sys­tems in the sys­tems en­gi­neer­ing world.

It is a given ne­ces­sity that com­plex sys­tems will have to be bro­ken into smaller prob­lems to be solved. How­ev­er, the way that we cut up prob­lems has an im­pact on the com­plex­ity of the so­lu­tion and may even add un­nec­es­sary com­plex­ity if done bad­ly.

One thing that I learned whilst at JLR was the im­pact in en­gi­neer­ing of the way that you per­form func­tional analy­sis. The cur­rent ‘text­book’ way of per­form­ing func­tional analy­sis is to ask what the sys­tem does and break that be­hav­iour down hi­er­ar­chi­cal­ly. This re­sults in func­tions with large amounts of in­for­ma­tion flow be­tween them.

Large amounts of in­for­ma­tion flow be­tween the boxes of your sys­tem hi­er­ar­chy are a good ex­am­ple of added un­nec­es­sary com­plex­i­ty. More in­for­ma­tion flow be­tween boxes equates not only to larger in­ter­faces in­side of the sys­tem but also larger in­ter­faces in­side of your or­gan­i­sa­tion. These larger in­ter­faces for re­quire­ments flow mean that there is more risk as­so­ci­ated with mis­com­mu­ni­ca­tions.

Cut­ting up your sys­tem in this way also makes for large de­pen­den­cies in­side of your sys­tem. The func­tions on the outer in­ter­face of your sys­tem are the only ones that can de­liver value to your cus­tomer. If, in an ag­ile pro­gram­me, you have cut your sys­tem up ‘ver­ti­cal­ly’—with func­tions like ‘sense’, ‘val­i­date’, ‘process’ and ‘ac­tu­ate’—you may find that your prod­uct back­log items have large in­ter­de­pen­den­cies that re­sult in an emer­gent wa­ter­fall de­liv­ery. If sprint one cov­ers ‘sense’ and sprint 2 ‘val­i­date’ e.t.c. you won’t de­liver un­til the last sprint in ex­actly the same way that a wa­ter­fall de­liv­ery works.

The MISO method (de­scribed in my last post on this blog) at­tempts to cut the func­tion­al­ity along the grain of in­for­ma­tion flow. This min­imises the flow of in­for­ma­tion be­tween func­tional blocks. Sur­pris­ing­ly, the func­tions that were pro­duced by this method were of­ten small enough to be solved by a sin­gle team—­most of the time a sin­gle per­son. The func­tions also cut the sys­tem ‘hor­i­zon­tal­ly’ mean­ing that it be­comes eas­ier to see func­tional chans that can be de­liv­ered early and give your cus­tomer val­ue.

Con­clu­sion

Tra­di­tional hi­er­ar­chi­cal struc­tures in busi­nesses of highly spe­cialised en­gi­neers cause large in­ter­de­pen­den­cies in­side or­gan­i­sa­tions. Through Con­way’s law, these in­ter­de­pen­den­cies leak into our com­plex sys­tems mak­ing them un­nec­es­sar­ily tall. Un­for­tu­nate­ly, this cre­ates some­thing akin to a feed­back loop, re­mak­ing the or­gan­i­sa­tion in its im­age by forc­ing ef­forts of ag­ile en­gi­neer­ing back into a wa­ter­fall ca­dence. For these rea­sons, I be­lieve that the tra­di­tional sys­tems en­gi­neer­ing way of work­ing in cre­at­ing ‘tall’ ar­bores­cent hi­er­ar­chi­cal sys­tems is an an­tipat­tern that is caus­ing un­nece­sary com­plex­ity and costs to pro­jects.