Effective Software Architecture for Command Line Tools
Software projects often need command line tools that automate specific tasks, such as code generation, evaluations, packaging, etc. All too frequently, these tools are developed ad hoc and unstructured, implemented, quickly finished, and then forgotten. Unfortunately, this makes them difficult to understand and maintenance-intensive later on. Good software documentation can help circumvent this problem. This article proposes a supplementary measure: a simple software architecture for command line tools, designed to facilitate understanding and further development of the same. ...
The Bridge Between UML and C++: Relationships in Class Diagrams and Their Implementation
A UML class diagram visualizes the different classes of a system, their attributes, operations, and relationships to one another. When applied correctly, UML illustrates exactly how class diagrams can be translated into code. The core problem - and often the most difficult part - is interpreting the diverse class relationships correctly. In the following, I explain the most important relationship types in UML class diagrams. Each relationship is briefly explained, an everyday example illustrates it, and a section with a C++ code example concludes the section. ...
Git Subtree in Action: Practical Scenarios and Guides for Developers
The internet is full of articles explaining why you shouldn’t use Git submodules. But what alternatives are there? One option is Git Subtree, which I’d like to take a closer look at in this article. Git Subtree connects an external repository with the main repository, as if it were a simple folder. The history of the external repository is preserved in the process. Developers can make changes in the external repository and transfer them to the main repository with ease. Likewise, they can pull changes from the main repository into the external repository. ...