Non-functional elements in enterprise-architecture
This one starts with a note from Belgian enterprise-architect Kris Meukens:
I couldn’t agree more with your post last month on “Architecture is non-functional“, and appreciated it very much.
However, the case is most often made for “system” architecture. With the right arguments – as also my experience has proven – that case can be made convincing to business people. But as soon as one tries to translate the same case to the less tangible “enterprise” architecture, I have been experiencing a lot more difficulty, although I am convinced it translates well.
I was wondering if you have any thoughts on this and/or you could help me on this one, which I consider pretty fundamental to enterprise architecture.
There are at least two different ways you could use to tackle this, depending on the context and who you’re talking with.
One is to take the same approach as Richard Veryard describes in his blog-post on ‘So-Called Non-Functional Requirements‘. In IT architecture, the functions are often relatively straightforward, and wouldn’t change all that much between different implementations. But some of the ‘non-functional’ requirements can demand huge differences in system-design, and will themselves demand different supporting-functionality: consider a system for a low-security context (store-directory for a shopping-mall) compared to a high-security-context (funds-transfer in ATM in a shopping-mall), or a low-bandwidth informational system versus high-bandwidth transactional system versus medical-imaging system for use in remote conditions with unreliable power-supplies. As Richard says:
The architect needs to worry about those [‘non-functional’] requirements that have major structural implications, and can mostly leave the functional requirements to the business analysts and developers.
So the same applies to an organisation: it’s relatively easy to plug in new functionality or features into organisation-level systems (which is why projects so often suffer from ‘scope-creep’ or even rampant ‘feature-itis’), but changes to ‘non-functional’ themes such as safety, quality, environmental management and interpersonal communication may well demand a fundamental re-think right the way through the entire organisation. In effect, the ‘non-functional’ determines much if not most of the ‘functional’ – especially when we take it right up to the whole-of-enterprise level and view the overall vision and values of the extended-enterprise as the foundational ‘non-functional requirements’ for the business as a whole.
Hence the second approach to this, which is to draw a distinction between organisation and enterprise.
The crucial distinction is that an organisation is bounded by rules and responsibilities, whereas an enterprise is bounded by shared commitment – in effect, by principles and values.
Each organisation exists within the scope of a broader ‘extended-enterprise’: its suppliers, partners, customers, prospects, overall environment and so on. (For more on that, see ‘What is an enterprise?‘) Without that relationship between organisation and enterprise, the organisation literally has no purpose: or, to put it the other way round, the enterprise is the organisation’s purpose. Which, in terms of what we’re discussing here, means that the foundational ‘non-functional requirements’ for an organisation are defined by its enclosing enterprise.
We then link that back to Richard Veryard’s point, that the ‘non-functional’ requirements create more fundamental demands than the ‘functional’ ones.
To do this, we first need to note that organisations form natural hierarchies, and likewise enterprises also form their own natural hierarchies. (Enterprises actually form intersecting ‘communities of interest’, or ‘communities of commitment’, and occasionally organisations do so too; but for these purposes it’s easier to think of them as simple nested hierarchies.) For example, ‘the business’ is often viewed as a single ‘the organisation’, encompassing a structure of business-units consisting of departments made up of sub-departments which consist of work-teams and so on, each with their own explicit rules and responsibilities. And sometimes the boundaries of an enterprise will coincide with an organisation-boundary: for example, each of those ‘sub-organisations’ is also an enterprise in its own right – a ‘community of commitment’.
Hence the somewhat misleading notion that ‘the organisation’ is also ‘the enterprise’. It’s misleading because of that point above: the foundational requirements for an organisation (whole-organisation, business-unit, department, work-team etc – whatever its level in the business-hierarchy) are defined by the enclosing enterprise for the respective organisation – not by the organisation itself. If ‘the enterprise’ has the same boundaries as ‘the organisation’, the foundational requirements in effect become self-referential – literally detached from the outside world. Which is not a good idea…
[Update: the term ‘Step’ below may be misleading, especially for some non-native English speakers – my apologies. Here it’s not a step within a process, for example, but means a pace or step outward from the boundary of the organisation. If in doubt, use ‘Layer’ as an alternative to ‘Step’.]
In practice the foundational requirements need to be drawn from an enterprise at least three steps larger than the organisation in scope:
- Step 1: partners and suppliers, including outsource and contract relationships
- Step 2: clients and prospects, including ex-clients and anti-clients
- Step 3: non-clients and community, including government and broader environment
Again, these are nested – so for an IT department, for example, Step 1 might include HR, equipment providers and outsourced help-desk, Step 2 would be the business-contacts, project-managers and general users of the department’s services, and Step 3 would include overall business policy and governance. In a production environment, Step 1 is the incoming side of the immediate supply-chain, Step 2 is the outgoing side and the schedulers, and Step 3 is production policy. At the whole-organisation level, the steps are as described above: partners and suppliers, clients and prospects, and non-clients and community.
Step 1 largely defines your costs; Step 2 largely defines your income. The relationships between them are relatively simple to model – such as with the Business Model Canvas. Hence many business-planners stop there, because those transactions do make straightforward business sense: but that’s a dangerous mistake, because as you’ll see from each of the examples above, governing policy is primarily derived from the commitments and values of Step 3 – not Steps 1 or 2.
In ISO-9000 terms, policy is derived from ‘vision’ – the guiding commitments, principles and values of the enclosing enterprise. In effect, policy is ‘non-functional requirements’ that determine response to change. And as ISO-9000 explains, it is indeed possible to run an organisation for a while without high-level guiding policy: but as soon as there’s any significant change, you’ll run that organisation straight into the ground – which, again, is not a good idea. So as enterprise architects, we need to understand and model all the way out to Step 3, in order to identify the overall requirements for the ‘system’ of any type of ‘organisation’ at any level within the organisational hierarchy.
To summarise in perhaps over-simplified form:
- Step 0 (‘the organisation’) is the boundary of the ‘system’ in scope
- Step 1 (‘partners and suppliers’) describes functional requirements for input-side for that system
- Step 2 (‘clients and prospects’) describes functional requirements for output-side for that system
- Step 3 (‘non-clients and community’) describes non-functional requirements for overall governance for that system
To paraphrase Richard Veryard again, we can mostly leave the functional requirements in Step 1 and Step 2 to the business analysts and developers; the architect needs to worry most about “those [‘non-functional’] requirements that have major structural implications” that arise from Step 3.
So perhaps use this as a way to explain to others the criticality of ‘non-functional’ requirements at “the less tangible ‘enterprise’ level” – in other words, how far out we need to model ‘enterprise’ in order to identify the real requirements for ‘the enterprise’ that is the organisation as a whole.
Hope this is useful, anyway – and as usual, constructive comments / suggestions etc would be gratefully received! 🙂