0

This is kind of related to my previous post, but I believe it is rather a separate problem/question. I am seeking to improve the process of project development & system design at work. The way I see it, at one specific level, the architecture model serve as the "how" the requirements (what) can be achieved. However, when breaking down the requirements on the next lower level, that serves also as a "how" the upper requirement can be fulfilled. Thus, both architecture model of level N as well as requirements of level N+1 can really overlap in their roles.

When writing the requirements of lower levels, one might need to look not only at the requirements above but also to the existing architecture model, to understand what requirements the modules should have. On the other hand, if we say he should only derive his requirements from the requirements above (thus not looking at the existing architecture model), he might write something that contradicts the existing model from the level above, as he is also providing details on how to fulfill the system requirement.

The main decomposition flow can be depicted as below:

main_flow

where the Requirements are usually needed in the end for documentation & validation/tracing purposes (besides of course helping the understanding & development of the model/system). And the Architect Model is very useful for the understanding of the whole model as one piece in multiple levels, that contain time diagrams, block diagrams, behavior diagrams and so on. Within on model, one can go from very upper levels into deeper levels by navigating into the blocks and seeing its inside implementation.

Now the question would be what is the best practice to make this break down. For example, to achieve Architecture model of level 1, there are these two ways:

flows

where red flow means one could create a design model from the upper requirements and give further this model to the architect of the level below and this architect would then define further the black boxes from the upper level, i.e. how their insides can be developed to it achieves the I/O black box behavior from the upper layer. However, one could also decompose the requirements into the Level 1 Requirements and even derive some other requirements from the already existing model from the upper level. This input would then tell the architect how to develop the model further in this level.

Now comes the problem: if one focus more on the architectural model, most requirements can be modelled (thus satisfied by model specification) and given further to next layers, so they refine the diagrams, and only a few of the requirements (that cannot be modelled) would then be decomposed further or would be tested (verified), leading to this path:

arch

On the other hand, one could focus on the requirements and mostly decompose the requirements further and modelling just a few diagrams in a higher level, making the models between layers kind of independent:

model

which I personally find a bad approach since I would prefer one big concise complete model instead of layer-independent models

A mixed solution is also possible, like the second picture, where Level 1 model and requirements are both derived from above, which I suppose is the best approach, where the architect/modeler from Level 1 takes both the "black boxes" from upper layer model as well as Level 0 requirements as input to model its layer. The question then becomes, how strong each "flow" should be. For example, if the blue flow is very small (not deriving many Level 1 requirements from existing Level 0 Model), then the input for Level 1 model/architecture is mostly existing Level 1 Requirements and Level 0 Model, which can lead to inconsistency, depending how Level 0 requirements were decomposed and how Level 0 Architecture was designed. If this blue flow is however strong (many Level 1constraints/requirements are derived from Level 0 model), then the Level 1 architect becomes more independent from Level 0 model when designing Level 1 model with consistency, but you create somehow redundancy of information (what is already at the Level 0 model will be translated into text form to the Level 1 requirements). I personally prefer this approach but it has being criticized due to this redundancy at my company.

So are there any kind of best practice on how to weight these flows on the best form with consistency but also not big overhead? Or any rule of thumb on how much should I derive Level 1 requirements from existing Level 0 model? Any help or even other suggestions of design flow is much appreciated.

8
  • I don't understand the "refine" relationship between the Level 0 and Level 1. Perhaps it's because I don't understand what "Level 0" and "Level 1" are. In my experience, I would call Level 0 "System" and Level 1 (and lower) would be "Subsystem" or "Component". The relationship would not necessarily be "refine", but requirement would be allocated to subsystems or components and have various types of decomposition and refinement performed.
    – Thomas Owens
    Commented Aug 14 at 15:55
  • yeah, you need to put your level 0 etc in the context of some system of architecture planning for it to make sense. Level 1 requirements?
    – Ewan
    Commented Aug 14 at 17:32
  • @ThomasOwens, If it works for your understanding, you can map Level 0 and Level 1 respectively to System and Subsystem/Component. The numbered levels start to get an advantage when you are building a system-of-systems and there are three or four levels of requirements before you can even start to make the distinction between hardware and software requirements. Commented Aug 15 at 7:08
  • You could have a look at MIL-STD-498 or its successors. The essence of this methodology is that requirements at level n are developped into a design at level n + 1 (which contains more than just an architecture model) for which requirements can be written at level n + 2, etc. This was once considered best practice.
    – JosF
    Commented Aug 15 at 12:08
  • 1
    @ThomasOwens as mentioned by Bart van Ingen Schenau, the levels are generically represented because we have at least 10 levels, since the system is big enough and has mechanics, electronics, SW, FPGA and so on. The "refine" relationship is just because it comes from SysUML (Enterprise Architecture) but it normally should be the relationship of "decomposes to"
    – felipe
    Commented Aug 19 at 7:15

1 Answer 1

0

I don't know about "best practice", but I can tell you from experience.

Unless you are in an environment which requires such an explicit mapping, I would be tempted not to bother - or, to find a method that is as light-weight and fit-for-purpose as possible. You'll find you run an extremely high-risk of spending your life updating models to reflect constantly changing requirements, and less time doing actual practical architecture work that provides benefit.

A constant challenge with analysis processes is that they risk taking over people's minds - work becomes more about following "the process" instead of achieving meaningful outcomes.

I'm not saying process is "bad" but I am saying it needs to be fit for purpose, and should never overshadow the actual work.

If you can provide more details about why you think such mapping is needed, or an outcome you are after then I can update my answer to reflect.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.