{"id":10006,"date":"2024-07-24T13:14:46","date_gmt":"2024-07-24T11:14:46","guid":{"rendered":"https:\/\/www.panter.ch\/?p=10006"},"modified":"2024-12-04T08:25:52","modified_gmt":"2024-12-04T07:25:52","slug":"aggregated-software-documentation","status":"publish","type":"post","link":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/","title":{"rendered":"Aggregated software documentation &#8211; A field report"},"content":{"rendered":"[vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; top_padding_phone=&#8221;12vw&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; gradient_type=&#8221;default&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;10px&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; column_padding_type=&#8221;default&#8221; gradient_type=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">In <a href=\"https:\/\/www.panter.ch\/en\/offer\/development\/\">software development<\/a>, software documentation is an essential building block for preserving knowledge and creating transparency.<br \/>\nIn contrast to source code, documentation can provide information on why certain architectural decisions were made, unlike the source code itself, which only answers the how. <\/span>[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;full_width_background&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; bg_color=&#8221;#000000&#8243; scene_position=&#8221;center&#8221; top_padding=&#8221;60&#8243; constrain_group_1=&#8221;yes&#8221; bottom_padding=&#8221;60&#8243; top_padding_phone=&#8221;12vw&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; gradient_type=&#8221;default&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;10px&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; column_padding_type=&#8221;default&#8221; gradient_type=&#8221;default&#8221;][nectar_single_testimonial testimonial_style=&#8221;bold&#8221; text_color=&#8221;#ffffff&#8221; color=&#8221;Default&#8221; quote=&#8221;Code tells you how, comments tell you why&#8221; name=&#8221;Jeff Atwood&#8221; subtitle=&#8221;Gr\u00fcnder von Stack Overflow&#8221;][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; top_padding=&#8221;60&#8243; top_padding_phone=&#8221;12vw&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; gradient_type=&#8221;default&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;10px&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; column_padding_type=&#8221;default&#8221; gradient_type=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">Furthermore, the focus and degree of abstraction as well as the perspective can be deliberately chosen in a documentation, which is not possible with source code. <\/span>[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; top_padding=&#8221;40px&#8221; top_padding_phone=&#8221;12vw&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; gradient_type=&#8221;default&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;10px&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221; column_padding_type=&#8221;default&#8221; gradient_type=&#8221;default&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h2>Software documentation as utopia<\/h2>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">However, software documentation is the poor relation of most developers.<br \/>\nFrom the developers&#8217; point of view, a rudimentary readme is often sufficient (GitHub best practices).<br \/>\nThe readme seems to be the ideal compromise between no software documentation and the user manual.<br \/>\nIt fulfills the following purposes: <\/span>[\/vc_column_text]<div class=\"nectar-fancy-ul\" data-list-icon=\"icon-salient-thin-line\" data-animation=\"true\" data-animation-delay=\"0\" data-color=\"accent-color\" data-spacing=\"default\" data-alignment=\"left\"> \n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Brief description with technology overview<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">(Local) set-up <\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Maintainability due to small scope<\/span><\/li>\n<\/ul>\n <\/div>[vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">One criticism that all software documentation has to put up with is that it quickly becomes outdated and is often poorly tested.<br \/>\nOne reason for this is that documentation is usually a static projection of a software system, and software is volatile.<br \/>\nThis means that since software is constantly changing, there is a gap between the actual state of the documentation and the target state of the software system at the moment.<br \/>\nDepending on the resolution and level of detail of the documentation, this gap can be too large, which can quickly render the documentation unusable without constant updating. <\/span>[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">In addition, it does not create any direct added value for developers who have already internalized everything relevant.<br \/>\nIn the heat of the moment, documentary reworking may seem like pointless busywork to many developers, the benefits of which only become apparent when an old project is dusted off again after a months-long break and needs to be restarted.<br \/>\nAll the <b>&#8220;<\/b>trivialities<b>&#8220;<\/b> that were not worth automating or documenting now have to be painstakingly reprocessed.<br \/>\nYou often hear the subsequent rationalization that the benefits of not documenting outweigh the costs. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, this perception may be wrong and if the correct detail resolution is selected, even more extensive software documentation can still be usable without constant reworking.<\/span>[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h2>Problem definition of the software documentation<\/h2>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">In a customer project, we had a similar problem, namely the subsequent software documentation of these trivialities, to document a historically grown system of different software components retrospectively.<br \/>\nIn this case, retrospectively means that most of the developers involved in building the system were no longer available.<br \/>\nWe were entering a system landscape that had grown over decades and the developer culture promoted specialization in a few projects rather than universalists.<br \/>\nThis led to the readmes mentioned above. <\/span>[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">So only use Git repositories and log archives as sources and apply the trained eye of decades of experience as a software developer.<br \/>\nThis restriction seems dramatic at first, but a surprising amount can be derived from the sources mentioned and presented in a suitable form, as will be demonstrated later. <\/span>[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">Our efforts were essentially aimed at two aspects: Documenting the system landscape and software components, called services.<br \/>\nThe customer expects the software documentation to simplify the onboarding of new employees and provide a better overview of the interrelationships, complexity and criticality of the systems. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Here is a brief excursion into the essential characteristics of the two perspectives.<\/span>[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>System landscape in the software documentation<\/h3>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]The software documentation of the system landscape provides a comprehensive overview of the technological infrastructure of a project or organization.<br \/>\nIt provides a useful framework for architects and managers to develop a common understanding of systemic dependencies and interrelationships.<br \/>\nThe level of abstraction here is relatively high and the level of technical detail is low.[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\"><strong>Interaction diagrams:<\/strong> Diagrams that show the interactions between the various system components, including external interfaces and services.<\/span>[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<strong>Architecture diagrams:<\/strong> Graphical representations of the system architecture that illustrate the components, their dependencies and their provision in the infrastructure.[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<strong>Dependencies and integrations:<\/strong> Descriptions of dependencies between different system components and integrations with external services or systems.[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<strong>Deployment architecture:<\/strong> Information about the deployment environment, including cloud platforms, server configurations and network topologies.[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Software components (services)<\/h3>\n<p><!-- notionvc: 650bb6eb-a6cc-4dee-af54-8de347bd67e6 -->[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]The documentation of software components focuses on the description of a specific component or module within a software project.<br \/>\nThis documentation provides detailed insights into the functionality, choice of technology, structure and interfaces of a single unit of the system.<br \/>\nTypical content is the readme mentioned above.<br \/>\nThe target group for this artifact is technically experienced persons, usually software developers.<br \/>\nThe documentation of the software component provides developers with a comprehensive understanding of the internal workings of a particular unit of the system, which facilitates development, maintenance and troubleshooting.[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h2>Theory of software documentation <!-- notionvc: b782eb0c-51c3-4ee2-8df1-d738bd297c47 --><\/h2>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]Fortunately, despite the large number of over 50 projects, a homogeneous structure of the Git repositories and the technologies used has been established.<br \/>\nThe aim was to generate as much documentation as possible automatically.<br \/>\nHowever, it quickly became clear that data had to be supplied manually in order to bring the semantics, service groupings and descriptions up to the desired standard.<br \/>\nThe following section outlines which information could be extracted automatically from which sources.[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Technology stack<\/h3>\n<p><!-- notionvc: 650bb6eb-a6cc-4dee-af54-8de347bd67e6 -->[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">Maven, Gradle, npm: The technology stack of a project provides insight into the tools and frameworks used for development and the build process.<\/span>[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Dependencies module<\/h3>\n<p><!-- notionvc: 650bb6eb-a6cc-4dee-af54-8de347bd67e6 -->[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">Maven, Gradle: These build management tools enable the definition and management of module dependencies that influence the structure and composition of the project.<\/span>[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Library dependencies<\/h3>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">Maven, Gradle, npm: Information about external and internal libraries and their dependencies is crucial to understanding the functionality and integration of the code.<\/span>[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Runtime\/Service dependencies<\/h3>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]The analysis of access logs, Spring Boot application properties and Kubernetes YAMLs provides insights into the runtime dependencies of the component.[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Releases<\/h3>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]Tags from Git, Maven, Nexus: The identification of releases and versions makes it possible to document important milestones and the progress of the project.[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Deployments<\/h3>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]Kubernetes and deploy scripts: Deploying applications to production environments requires the use of tools such as Kubernetes and specific deployment scripts.[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Runtimes<\/h3>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]Dockerfile and pipeline specification: Docker files and pipeline specifications are used to define and document the build and deployment process of a project.[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Contributors<\/h3>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]Git commits: The analysis of Git commits makes it possible to track the participation of developers in the project over time and to recognize their contributions.[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Project Status<\/h3>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]Git Activity, Jira: The activities in Git and in Jira tickets provide insights into the current status and progress of the project.[\/vc_column_text][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h2>Implementation of the software documentation<\/h2>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">The entire source code was available on GitLab. Using the <\/span><a href=\"https:\/\/docs.gitlab.com\/ee\/api\/projects.html\"><span style=\"font-weight: 400;\">GitLab API<\/span><\/a><span style=\"font-weight: 400;\"> all projects can be read out and cloned locally. GitLab also provides some metadata that was relevant for the service documentation. With Grafana Queries, the effective service dependencies could be resolved live, as outgoing and incoming requests were logged in Prometheus.<\/span>[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h3>Analysis of the software documentation<\/h3>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">The source code was analyzed using special scanners and the data stored in a Postgres database. These scanners are programs written in TypeScript to analyze the above information. These scanners run in a GitLab pipeline, as a cron job, and generate documentation that is as up-to-date as possible. The documentation is published in GitLab CI\/CD Pipelines.<\/span>[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">Once the analysis phase was complete, the service-dependent and logical groupings (see Figure 1) visualized and Markdown files (see figure 2) are generated. To do this, all data fragments had to be logically linked together. The visualizations were created with PlantUML in Markdown.<\/span>[\/vc_column_text][image_with_animation image_url=&#8221;10012&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; constrain_group_1=&#8221;yes&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221; gradient_type=&#8221;default&#8221; shape_type=&#8221;&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][divider line_type=&#8221;Full Width Line&#8221; line_thickness=&#8221;1&#8243; divider_color=&#8221;default&#8221;][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][image_with_animation image_url=&#8221;10014&#8243; image_size=&#8221;full&#8221; animation_type=&#8221;entrance&#8221; animation=&#8221;None&#8221; animation_movement_type=&#8221;transform_y&#8221; hover_animation=&#8221;none&#8221; alignment=&#8221;&#8221; border_radius=&#8221;none&#8221; box_shadow=&#8221;none&#8221; image_loading=&#8221;default&#8221; max_width=&#8221;100%&#8221; max_width_mobile=&#8221;default&#8221;][\/vc_column][\/vc_row][vc_row type=&#8221;in_container&#8221; full_screen_row_position=&#8221;middle&#8221; column_margin=&#8221;default&#8221; column_direction=&#8221;default&#8221; column_direction_tablet=&#8221;default&#8221; column_direction_phone=&#8221;default&#8221; scene_position=&#8221;center&#8221; text_color=&#8221;dark&#8221; text_align=&#8221;left&#8221; row_border_radius=&#8221;none&#8221; row_border_radius_applies=&#8221;bg&#8221; overflow=&#8221;visible&#8221; overlay_strength=&#8221;0.3&#8243; gradient_direction=&#8221;left_to_right&#8221; shape_divider_position=&#8221;bottom&#8221; bg_image_animation=&#8221;none&#8221;][vc_column column_padding=&#8221;no-extra-padding&#8221; column_padding_tablet=&#8221;inherit&#8221; column_padding_phone=&#8221;inherit&#8221; column_padding_position=&#8221;all&#8221; column_element_direction_desktop=&#8221;default&#8221; column_element_spacing=&#8221;default&#8221; desktop_text_alignment=&#8221;default&#8221; tablet_text_alignment=&#8221;default&#8221; phone_text_alignment=&#8221;default&#8221; background_color_opacity=&#8221;1&#8243; background_hover_color_opacity=&#8221;1&#8243; column_backdrop_filter=&#8221;none&#8221; column_shadow=&#8221;none&#8221; column_border_radius=&#8221;none&#8221; column_link_target=&#8221;_self&#8221; column_position=&#8221;default&#8221; gradient_direction=&#8221;left_to_right&#8221; overlay_strength=&#8221;0.3&#8243; width=&#8221;1\/1&#8243; tablet_width_inherit=&#8221;default&#8221; animation_type=&#8221;default&#8221; bg_image_animation=&#8221;none&#8221; border_type=&#8221;simple&#8221; column_border_width=&#8221;none&#8221; column_border_style=&#8221;solid&#8221;][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]\n<h2>Summary<\/h2>\n[\/vc_column_text][vc_column_text css=&#8221;&#8221; text_direction=&#8221;default&#8221;]<span style=\"font-weight: 400;\">Good documentation can make the lives of developers and managers much easier and ensure greater planning security. A lack of understanding of the system can act as a brake and like sand in the gears. Generated software documentation, as shown here, can counteract this. Through aggregation and automation, key points of criticism such as cost\/benefit and timeliness have been significantly mitigated.<\/span>[\/vc_column_text][\/vc_column][\/vc_row]\n","protected":false},"excerpt":{"rendered":"<p>Good software documentation can make the lives of developers and managers much easier and ensure greater planning security.<\/p>\n","protected":false},"author":3,"featured_media":10018,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"inline_featured_image":false,"footnotes":""},"categories":[274],"tags":[268,269,271,270,267],"class_list":{"0":"post-10006","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-blog-en","8":"tag-api-en","9":"tag-developer-manual","10":"tag-documentation","11":"tag-readme-en","12":"tag-software-documentation"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Aggregated software documentation - A field report<\/title>\n<meta name=\"description\" content=\"Our field report shows how aggregated software documentation creates transparency and facilitates onboarding processes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Aggregated software documentation - A field report\" \/>\n<meta property=\"og:description\" content=\"Our field report shows how aggregated software documentation creates transparency and facilitates onboarding processes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/\" \/>\n<meta property=\"og:site_name\" content=\"Panter AG\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/panterch\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-24T11:14:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-04T07:25:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.panter.ch\/wp-content\/uploads\/aggregierte_software_dokumentation_teaser.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1792\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Roberto\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@panterch\" \/>\n<meta name=\"twitter:site\" content=\"@panterch\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roberto\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/\"},\"author\":{\"name\":\"Roberto\",\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/#\\\/schema\\\/person\\\/17955a8092d4a5671347f2f158635479\"},\"headline\":\"Aggregated software documentation &#8211; A field report\",\"datePublished\":\"2024-07-24T11:14:46+00:00\",\"dateModified\":\"2024-12-04T07:25:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/\"},\"wordCount\":3828,\"publisher\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.panter.ch\\\/wp-content\\\/uploads\\\/aggregierte_software_dokumentation_teaser.webp\",\"keywords\":[\"API\",\"Developer manual\",\"Documentation\",\"Readme\",\"Software documentation\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/\",\"url\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/\",\"name\":\"Aggregated software documentation - A field report\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.panter.ch\\\/wp-content\\\/uploads\\\/aggregierte_software_dokumentation_teaser.webp\",\"datePublished\":\"2024-07-24T11:14:46+00:00\",\"dateModified\":\"2024-12-04T07:25:52+00:00\",\"description\":\"Our field report shows how aggregated software documentation creates transparency and facilitates onboarding processes.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.panter.ch\\\/wp-content\\\/uploads\\\/aggregierte_software_dokumentation_teaser.webp\",\"contentUrl\":\"https:\\\/\\\/www.panter.ch\\\/wp-content\\\/uploads\\\/aggregierte_software_dokumentation_teaser.webp\",\"width\":1792,\"height\":1024,\"caption\":\"A black metal box with a lid, slightly open to reveal a stack of index cards neatly organized like software documentation. The box rests on a smooth surface, soft lighting casting subtle shadows.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/stories\\\/aggregated-software-documentation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/salient-architect-landing\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aggregated software documentation &#8211; A field report\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/\",\"name\":\"Panter AG\",\"description\":\"Smarter, better, human.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/#organization\",\"name\":\"Panter AG\",\"alternateName\":\"Panter\",\"url\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.panter.ch\\\/wp-content\\\/uploads\\\/Panter_Favicon_696x696.jpg\",\"contentUrl\":\"https:\\\/\\\/www.panter.ch\\\/wp-content\\\/uploads\\\/Panter_Favicon_696x696.jpg\",\"width\":696,\"height\":696,\"caption\":\"Panter AG\"},\"image\":{\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/panterch\",\"https:\\\/\\\/x.com\\\/panterch\",\"https:\\\/\\\/ch.linkedin.com\\\/company\\\/panter-ch\",\"https:\\\/\\\/www.instagram.com\\\/panter.ch\\\/\",\"https:\\\/\\\/github.com\\\/panter\"],\"description\":\"Wir von Panter sind Macher und Techies mit interdisziplin\u00e4rem Know-how \u2013 von Softwareentwicklung \u00fcber Design bis zu AI-Expertise. Mit innovativen, nutzerzentrierten L\u00f6sungen, modernster Technologie und einem starken Netzwerk entwickeln wir Services, die Ihre Nutzer begeistern und Ihr Unternehmen voranbringen. Als Schweizer Software- und Beratungsunternehmen stehen wir f\u00fcr Qualit\u00e4t, Innovationskraft und partnerschaftliche Zusammenarbeit \u2013 mit Herz und Verstand.\",\"email\":\"hello@panter.ch\",\"telephone\":\"+41 44 500 29 04\",\"legalName\":\"Panter AG\",\"foundingDate\":\"2005-01-01\",\"vatID\":\"CHE-262.202.358\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.panter.ch\\\/en\\\/#\\\/schema\\\/person\\\/17955a8092d4a5671347f2f158635479\",\"name\":\"Roberto\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/63049a62ffa6445b337ce3fa0e7ad5dbf289f7541d5f9e0f10d871cc3b4241a8?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/63049a62ffa6445b337ce3fa0e7ad5dbf289f7541d5f9e0f10d871cc3b4241a8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/63049a62ffa6445b337ce3fa0e7ad5dbf289f7541d5f9e0f10d871cc3b4241a8?s=96&d=mm&r=g\",\"caption\":\"Roberto\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Aggregated software documentation - A field report","description":"Our field report shows how aggregated software documentation creates transparency and facilitates onboarding processes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/","og_locale":"en_US","og_type":"article","og_title":"Aggregated software documentation - A field report","og_description":"Our field report shows how aggregated software documentation creates transparency and facilitates onboarding processes.","og_url":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/","og_site_name":"Panter AG","article_publisher":"https:\/\/www.facebook.com\/panterch","article_published_time":"2024-07-24T11:14:46+00:00","article_modified_time":"2024-12-04T07:25:52+00:00","og_image":[{"width":1792,"height":1024,"url":"https:\/\/www.panter.ch\/wp-content\/uploads\/aggregierte_software_dokumentation_teaser.webp","type":"image\/webp"}],"author":"Roberto","twitter_card":"summary_large_image","twitter_creator":"@panterch","twitter_site":"@panterch","twitter_misc":{"Written by":"Roberto","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/#article","isPartOf":{"@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/"},"author":{"name":"Roberto","@id":"https:\/\/www.panter.ch\/en\/#\/schema\/person\/17955a8092d4a5671347f2f158635479"},"headline":"Aggregated software documentation &#8211; A field report","datePublished":"2024-07-24T11:14:46+00:00","dateModified":"2024-12-04T07:25:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/"},"wordCount":3828,"publisher":{"@id":"https:\/\/www.panter.ch\/en\/#organization"},"image":{"@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.panter.ch\/wp-content\/uploads\/aggregierte_software_dokumentation_teaser.webp","keywords":["API","Developer manual","Documentation","Readme","Software documentation"],"articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/","url":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/","name":"Aggregated software documentation - A field report","isPartOf":{"@id":"https:\/\/www.panter.ch\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/#primaryimage"},"image":{"@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.panter.ch\/wp-content\/uploads\/aggregierte_software_dokumentation_teaser.webp","datePublished":"2024-07-24T11:14:46+00:00","dateModified":"2024-12-04T07:25:52+00:00","description":"Our field report shows how aggregated software documentation creates transparency and facilitates onboarding processes.","breadcrumb":{"@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/#primaryimage","url":"https:\/\/www.panter.ch\/wp-content\/uploads\/aggregierte_software_dokumentation_teaser.webp","contentUrl":"https:\/\/www.panter.ch\/wp-content\/uploads\/aggregierte_software_dokumentation_teaser.webp","width":1792,"height":1024,"caption":"A black metal box with a lid, slightly open to reveal a stack of index cards neatly organized like software documentation. The box rests on a smooth surface, soft lighting casting subtle shadows."},{"@type":"BreadcrumbList","@id":"https:\/\/www.panter.ch\/en\/stories\/aggregated-software-documentation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.panter.ch\/en\/salient-architect-landing\/"},{"@type":"ListItem","position":2,"name":"Aggregated software documentation &#8211; A field report"}]},{"@type":"WebSite","@id":"https:\/\/www.panter.ch\/en\/#website","url":"https:\/\/www.panter.ch\/en\/","name":"Panter AG","description":"Smarter, better, human.","publisher":{"@id":"https:\/\/www.panter.ch\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.panter.ch\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.panter.ch\/en\/#organization","name":"Panter AG","alternateName":"Panter","url":"https:\/\/www.panter.ch\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.panter.ch\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.panter.ch\/wp-content\/uploads\/Panter_Favicon_696x696.jpg","contentUrl":"https:\/\/www.panter.ch\/wp-content\/uploads\/Panter_Favicon_696x696.jpg","width":696,"height":696,"caption":"Panter AG"},"image":{"@id":"https:\/\/www.panter.ch\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/panterch","https:\/\/x.com\/panterch","https:\/\/ch.linkedin.com\/company\/panter-ch","https:\/\/www.instagram.com\/panter.ch\/","https:\/\/github.com\/panter"],"description":"Wir von Panter sind Macher und Techies mit interdisziplin\u00e4rem Know-how \u2013 von Softwareentwicklung \u00fcber Design bis zu AI-Expertise. Mit innovativen, nutzerzentrierten L\u00f6sungen, modernster Technologie und einem starken Netzwerk entwickeln wir Services, die Ihre Nutzer begeistern und Ihr Unternehmen voranbringen. Als Schweizer Software- und Beratungsunternehmen stehen wir f\u00fcr Qualit\u00e4t, Innovationskraft und partnerschaftliche Zusammenarbeit \u2013 mit Herz und Verstand.","email":"hello@panter.ch","telephone":"+41 44 500 29 04","legalName":"Panter AG","foundingDate":"2005-01-01","vatID":"CHE-262.202.358","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}},{"@type":"Person","@id":"https:\/\/www.panter.ch\/en\/#\/schema\/person\/17955a8092d4a5671347f2f158635479","name":"Roberto","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/63049a62ffa6445b337ce3fa0e7ad5dbf289f7541d5f9e0f10d871cc3b4241a8?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/63049a62ffa6445b337ce3fa0e7ad5dbf289f7541d5f9e0f10d871cc3b4241a8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/63049a62ffa6445b337ce3fa0e7ad5dbf289f7541d5f9e0f10d871cc3b4241a8?s=96&d=mm&r=g","caption":"Roberto"}}]}},"_links":{"self":[{"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/posts\/10006","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/comments?post=10006"}],"version-history":[{"count":5,"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/posts\/10006\/revisions"}],"predecessor-version":[{"id":10060,"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/posts\/10006\/revisions\/10060"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/media\/10018"}],"wp:attachment":[{"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/media?parent=10006"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/categories?post=10006"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.panter.ch\/en\/wp-json\/wp\/v2\/tags?post=10006"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}