Templates. It is good to find a useful pattern, which can be successfully repeated. Template design should come after some experience in using the pattern you wish to copy. It is often desired to make templates out of durable material. Laminated sheets, metal versions of wood fabrications and saved (on a read only disk) files are such examples.
Macros are a special example of template. In preparing text-based systems, there is a program that will do pattern replacement. One can then make special words which are abbreviations of longer phrases or concepts. Some macros are modifiable, so that if you provide the abbreviation and some special text, the resulting substitution contains the special text.
Macro design and usage is nontrivial. One needs to see if the pattern occurs often enough that it is worth creating a macro for it. One also has to consider if the pattern will be useful in all the places it presently occurs.
Power tools. Once one has experience designing systems one can start using/making tools to design systems faster/better. When one has used/made some tools, one looks for power tools.
Power tools relieve one of the drudgery and tedium associated with certain tasks. Pneumatic hammers, drill presses, mold making machines, tunnel builders are some progressively complex power tools for physical manufacture. Include files, abstract data types, object classes, automated design tools, are some similar examples in the software domain.
Power tools often need training and discipline to use. Because they do so much so fast, it is easy to use them in the wrong way, sometimes with harmful consequences. One can build more complex systems with power tools, but a lack of understanding of how the tool (and the system it helps to create) will affect the environment, such a lack can lead to failure, even death.
Thus, power tools, and even tools, (and even systems) should not be used willy-nilly. Experience and guidance are suggested in learning and using even the simplest of systems.
Connections. Usually a system is designed as a collection of components which bear some relations to one another. Often this relation is called a connection. It represents a point of contact, or something being shared.
In many cases, the connections deserve as much design considerations as the components. Care must be taken in specifying the connection as it will often determine bottlenecks in future performance of the system.
Connections often indicate flow of material or information. The flow can be multi- or single-directional. If there is need for more of a commodity to flow, the connection is sometimes drawn at a size roughly proportional to the size of the flow.
THe flow can be highly specialized. Thus components will be designed with certain specifications in regard to the “shape” of the connection. Interface files in C programming are one such example.
Connections can also be physical as in forces on members of a truss.