While code size is not a great measure for software, the sizes of the core and intralogistics kernel code modules (with some other explanations and measures), are presented below.
Files and lines are the number of C# files and raw code lines in the package source. “Maintain” is the Visual Studio maintainability index, which the article explains better than I even care to. Complexity likewise is a Visual Studio metric based on “amount of decisioning logic in a source code function”, summed up over each code class and package. Higher numbers means more things are decided (more branching on conditions and therefore more potential code paths that can be taken on any call). The “class coupling” numbers are rather abysmal by performance metric standards (even if I drill into the class and functions units themselves), which is why I often don’t care for those metrics.
| Package | Files | Lines | Maintain | Complexity | Coupling |
|---|---|---|---|---|---|
| Core | 34 | 824 | 90 | 193 | 72 |
| Interface | 46 | 1139 | 91 | 240 | 80 |
| Users.Model | 13 | 226 | 96 | 129 | 40 |
| Users.Interface | 21 | 209 | 99 | 116 | 18 |
| Users.Services | 21 | 1158 | 70 | 188 | 113 |
| Operations.Model | 38 | 1276 | 97 | 760 | 77 |
| Operations.Interface | 51 | 817 | 98 | 498 | 56 |
| Operations.Services | 65 | 4019 | 73 | 637 | 174 |
| Inventory.Model | 72 | 1919 | 97 | 1087 | 97 |
| Inventory.Interface | 98 | 1874 | 96 | 926 | 98 |
| Inventory.Services | 86 | 11236 | 75 | 1801 | 243 |
| Fulfillment.Model | 44 | 1121 | 96 | 592 | 79 |
| Fulfillment.Interface | 62 | 907 | 100 | 489 | 41 |
| Fulfillment.Services | 86 | 5767 | 82 | 847 | 179 |
| StockFlow.Model | 28 | 1107 | 97 | 412 | 67 |
| StockFlow.Interface | 68 | 1543 | 98 | 425 | 46 |
| StockFlow.Services | 81 | 7383 | 76 | 1144 | 222 |
| StockFlow.StockPumps | 30 | 3535 | 80 | 465 | 106 |
Since maintainability is calculated from the other metrics , the high complexity and coupling numbers seem to show that overall the maintainability numbers are pretty good, being “least maintainable” in the services packages. These integrate other packages and perform the most useful intra-logistic and kernel-specific “work”, so that shouldn’t be surprising.
Overall, the size and complexity increases from the core through users, operations, and inventory. Each builds to a degree on the others, so the less dependent ones has less complexity. Fulfillment and stockflow are relatively complex, but rely heavily on the inventory management packages, so do not reach the same heights of complexity.