The structure of many current systems is independent of related responsibility borders. It comes from the fact that they are designed by programmers that as a rule give more importance to efficient data moving than to reflecting existing business and control processes and to precise personal or organizational responsibility.
It results in non-trivial issues when looking for reasons and responsibility for improper system behaviour and its overall quality. Another serious issue is that the requirements on the systems are changing during their development and use.
Accommodation to the changes often introduces new serious issues to the systems. Proper support for responsibility and flexibility is a necessary precondition for solving the issues or for recovery from them.
We cope with those issues by proposing software architecture simplifying alignment of software with responsibility domains. The solution is enabled by a proper application of specific software service types described here.
The proposed solution significantly improves system and organizational flexibility and openness and brings many other interesting engineering advantages. The proposed solution is based on observations from human behaviour and roles within organizations and their cooperating groups.