hmpps-architecture-as-code icon indicating copy to clipboard operation
hmpps-architecture-as-code copied to clipboard

Is the HMPPSSoftwareSystem interface good for our purposes?

Open sldblog opened this issue 5 years ago • 2 comments

It's used for defining systems:

https://github.com/ministryofjustice/hmpps-architecture-as-code/blob/57703d542bf2a605785917c15083e9d570bafd51/src/main/kotlin/model/NOMIS.kt#L9-L14

And it's used for defining a grouping for related teams:

https://github.com/ministryofjustice/hmpps-architecture-as-code/blob/57703d542bf2a605785917c15083e9d570bafd51/src/main/kotlin/model/InterventionTeams.kt#L7-L13

I've just realised we might have made HMPPSSoftwareSystem overly specific, as CourtUsers [...]

Note In the example, InterventionTeams

[...] wants to conform to the same interface but isn't a software system. That's not a criticism of this PR, and shouldn't block merge, but we may want to rename the interface or create a more appropriate one – I'm guessing that would have model entities and relationships, but not views?

Originally posted by @spikeheap in https://github.com/ministryofjustice/hmpps-architecture-as-code/pull/50

sldblog avatar Aug 13 '20 10:08 sldblog

I like the current interface and the flexibility it gives me. People are (in my mind) at the same level and importance of software systems, and it reinforces this.

I can't say if we will ever create views for people. The overhead of adding an empty function is probably lower than keeping in mind which interface to use (we could have one for model items, relationships and views and compose them based on need).

The way it is can also help with contributions: it's explicit where parts have to go without having to build a mental model of what interface/class to use.

Should we rename it but keep the functions as-is? (For now?)

sldblog avatar Aug 13 '20 10:08 sldblog

Should we rename it but keep the functions as-is? (For now?)

I think that's the most sensible (read quickest, least impact) change. I agree that it's nice to treat people in the same way as systems, and we may end up wanting to generate views that revolve around them (?).

The cost of changing that later, or introducing a new interface, is pretty low too, so let's go with whatever feels right :)

spikeheap avatar Aug 13 '20 11:08 spikeheap