Reuse provides many benefits to the systems engineer, but it requires a creative mindset that can see how to incorporate existing components into a new whole.
What is Reuse?
In systems engineering, reuse is the practice of incorporating components that have been used in other products into a new design. We can reuse components acquired from other organizations. We can also reuse components that our organization has developed for previously released products.
Reuse Has Many Benefits
- Your design team can develop a new product more quickly if you don’t have to design everything from scratch.
- The team that designed the component you are reusing may have had specialized knowledge that you don’t have. By re-using their component, you are taking advantage of their expertise.
- Reuse frees you to put your efforts where the payoff is greatest. Effort that you put into designing a new component instead of reusing an existing component is effort that you are NOT putting into those aspects of the design that require expertise unique to your organization.
- Your test team need only test the interface to the reused component. The organization that designed the component has already tested its inner workings.
- Your organization can support families of similar products more easily by sharing components. If you make an improvement to a shared component, all products that use the component benefit from the improvement.
Why Are Engineers Reluctant to Reuse?
A component that you are considering for reuse may not provide all of the functionality you desire. You may be tempted to design a new component that exactly meets your needs. However, before embarking on designing a new component, take a little bit of time to re-evaluate your system design. Can you do without the functionality that the component lacks? Can you make simple tweaks to the system to provide the missing functionality? You may be able to save yourself a lot of time and effort by tweaking the system design instead of redesigning the component.
Some engineers look down on components designed by someone else. And some organizations look down on components designed by other organizations. We may think we can design a better component. Perhaps we can, but it is easy to overestimate our own expertise and very easy to underestimate the time it takes to design, develop and test a new component. Or we may be reluctant to give up control over the design of the component. But this is just one of the many design tradeoffs that engineers face. Is complete control over the design of the component worth the extra time and effort required to develop the component from scratch? Perhaps not.
The design of the component is old fashioned. Perhaps it was designed years ago and uses less-than state of the art technology. Being fashionable may be a legitimate user need. (See my post: Is Fashion a User Need?) On the other hand, a component that has been around a long time may be more reliable than something newer. If a component meets our needs, why spend the time and effort to design a new one?
How We Might Look at Reuse
Reuse is a Highly Creative Activity
We can take inspiration from Picasso. In his sculpture of a bull’s head, he has reused parts from an old bicycle. If a creative genius like Picasso can make a great design from reused parts, so can we!
Reuse Requires Systems Thinking
When we are considering whether to reuse a component, we ask ourselves how it will fit in the system we are designing. If it doesn’t quite fit, can we tweak the system design so that it will fit? This is exactly what systems engineers do when we develop a system architecture – Analysis (understanding the component) then Synthesis (combining with other components into a coherent design). Repeat until done.
Reuse Shares Knowledge
The designers of the component that we are reusing put a lot of their knowledge into the design of the component. When we reuse their component, we gain the benefit of their knowledge.
If a subcontractor originally developed the component for a competitor, we are in fact taking advantage of knowledge that the subcontractor gained from the competitor! We are indulging in a form of industrial espionage that is perfectly ethical and legal (as long as the component is a black box that doesn’t give away the competitor’s trade secrets).
It seems counterintuitive, but this sort of reuse benefits all parties. The original company gets exactly what they wanted. The subcontractor gets additional income by selling the component to more people and can improve later iterations of the component based on feedback from more customers. Subsequent purchasers of the component get a proven design for less cost than it would take by designing it from scratch.
Reuse Fosters Robust Designs
If we suspect (or know) that a component we are designing may (or will) be reused, we will design it a little differently. We will put more thought and care into designing the component’s interface. We won’t over-constrain the design, making it so specialized that it we can never us it for anything else.
Reuse is Good for our Customers
Reuse reduces design costs and shortens development time. Reduced cost means that more people can afford to use our product. Shortened development time means that our customers can benefit from our product sooner.
Reuse is Good for Us
We can indulge in constructive laziness. Less work for us allows us to meet schedules, deliver products and benefit people sooner. We can also get more satisfaction from our job, knowing that we are not spending our effort designing things that have already been designed elsewhere.
I once saved myself six months of pointless work by spending a few hours looking for software I could reuse. I recount this story in the post The Handbook Software I Didn’t Write.
Electrical and Mechanical Engineers have always embraced reuse. Before the internet, they would have several shelves of catalogs of in their offices (in those days, engineers worked in actual offices). When designing a custom circuit board or a mechanical device, they would look up parts to use in the catalogs. Now they look up parts on the internet or use inventories of parts incorporated into their CAD tools, but they still design using purchased parts – perhaps now more than ever. They see reused parts as very useful building blocks for their designs.
Reuse is not Just for Physical Objects
Scientists Reuse Ideas
Sir Isaac Newton famously acknowledged that “If I have seen further, it is by standing on the shoulders of giants.” Scientists reuse the ideas of other scientists to come up with new theories. Scientists have developed the system of peer review to determine which ideas are worthy of reuse. Systems engineers rely on specifications and unit testing to determine which components are worthy of reuse.
Social Organizations Succeed by Reuse
Latin American sociologist Manfred Max-Neef developed the theory of Human Scale Development. This theory identifies and categorizes a comprehensive list of human needs that organizations in a developed society should satisfy. One of the key insights of the theory is that a social or governmental program that meets multiple human needs will be more effective and robust than a program that addresses just one human need. To make a program more effective, structure it so that it can be used to address multiple user needs – a form of reuse. For example, if you are setting up a soup kitchen, it will be more successful if it also provides people with a sense of community and opportunities for service in addition to the soup.
Note that this theory sheds light on why the homeless shelters in my city and many others are such a spectacular failure. They only meet one user need: the need for shelter. They do not meet any other needs: safety, social interaction, opportunities for learning or self-expression or community. No wonder their intended users avoid them if at all possible.
The complex systems that systems engineers are called upon to design always include interaction with social organizations. We can design better systems if we take into account lessons about multiuse from effective social organizations.
Putting Reuse to Good Use
A Washing Machine for Quinoa
Brigham Young University offers a wonderful interdisciplinary program titled Global Engineering Outreach (GEO). In this program, engineering students travel to a developing country, identify a need, and develop an engineering solution.
Recently Professor Terri Bateman took her class to rural Bolivia to meet with quinoa farmers. The farmers showed the students the process of harvesting quinoa and preparing it for market. One of the most tedious parts of the process is washing the quinoa seeds after harvesting to remove the bitter tasting coating that deters birds from eating the seeds. It takes an hour to wash 5 kg of seeds by hand. The students designed a machine that can wash quinoa seeds in as little as 5 minutes using parts that are inexpensive and readily available. For a detailed description and photos of the machine, see Quinoa Washing.
Although this is not a systems engineering class, the students used several good systems engineering practices for this project. They interviewed actual users – the quinoa farmers – in their own environment. After analyzing the user needs, the students identified suitable components and synthesized them into a good design. They tested the design. And they returned to Bolivia to validate the design, making sure the machine met their users’ needs and getting feedback for the next design iteration.
As with any engineering project, they had to make design tradeoffs. While the farmers loved the convenience of a switch that would turn on the machine allowing them to go off and do something else while the machine washed their quinoa, this created a safety hazard. If someone stuck their hand into the machine while it was running, the blades of the stirrer could injure it. So the students replaced the on/off switch with a dead man’s switch. This is less convenient for the farmers, but safer.