iceoryx icon indicating copy to clipboard operation
iceoryx copied to clipboard

Improve modularity by creating architecure guidelines

Open mossmaurice opened this issue 4 years ago • 5 comments

Brief feature description

iceoryx is developed in several CMake packages that aim to be independent. Current state is there are cross dependencies between each of them and no architecture guidelines have been created so far.

Detailed information

Analysed iceoryx repository with Lattix Architect. Attached are the the dependecy structure matrix and the architecture metrixs of Lattix (commit b929aa8d5022471a318cdc8e6994f1cdd6aa3850).

General

  • [x] Analyse Lattix
    • [x] Dependecy structure matrix (DSM)
    • [x] Architectual metrics
    • [x] Conceptual architecture
  • [x] Namespaces & CMake package/library refactoring
  • [x] Add CMake target for quality level 5/playground features and move "maybe obsolote" constructs there
    • [x] Add script to compare used namespaces to a whitelist in binary (nm -C myBinary -f posix with C++filt for demangling) to make sure no experimental/playground code is baked into releases
  • [x] ~~RouDi modularisation #539~~
  • [x] Create architecture documentation
    • [x] PlantUML or plain ASCII art?
    • [x] Package view
    • [x] Layer view
  • [x] ~~Summarise guidelines and write a CI checker~~
    • [ ] Remove iox::helper namespace
  • [ ] Create iceoryx_posh_core CMake target and address the @todo #590 in the CMake files
  • [x] Remove unused files and move quality level 2 files to a separate CMake package

Lattix Architect findings

  • [x] ~~Move POSH specific errors from iceoryx_utils to iceoryx_posh~~ Moved to #1099
  • [x] roudi_gtest.hpp includes iceoryx_posh/internal/roudi_environment/roudi_environment.hpp
  • [x] Move RouDiEnvironment to test folder & namespace
  • [x] ~~iceoryx_hoofs does not have a clear architecture and shall be better structured~~ Move to #1391

mossmaurice avatar Mar 02 '21 22:03 mossmaurice

FYI @dlo-86 Structure101 would be another option besides Lattix to analyse the architecture. However, I've had a glimpse at Lattix last Friday and found the DSM and its metrics quite helpful.

mossmaurice avatar Mar 03 '21 13:03 mossmaurice

@mossmaurice do you think this is related to iceoryx_hoofs?

elBoberido avatar Jun 09 '22 17:06 elBoberido

do you think this is related to iceoryx_hoofs?

@elBoberido

Nope, I think this issue is mainly iceoryx_posh related. As discussed today, any architecture guidelines and their respective CI checkers should be implemented for a complete basic example like icedelivery and not just for iceoryx_hoofs. The only thing I can think about is to split up the iceoryx_hoofs modules / namspaces into several CMake targets. But that should probably go into a new issue. Shall I create one?

mossmaurice avatar Jun 09 '22 17:06 mossmaurice

@mossmaurice yes, please create the issue.

elBoberido avatar Jun 09 '22 17:06 elBoberido

yes, please create the issue.

Done :heavy_check_mark:

mossmaurice avatar Jun 10 '22 08:06 mossmaurice