Talking about the concept of automotive components from the perspectives of hardware, software, and system maintenance.

Author: Yin Wei

When we discuss the decomposition, integration, affiliation and mapping relationships of software, hardware and function, many concepts such as elements, components, middleware, modules, systems, etc. will be involved, confusing, right? If we cannot distinguish these concepts, there will be a lot of problems in the basic language of communication, which is not conducive to the full process of product work. The first step in the process is to have a clear understanding of various concepts, in order to find the context in the process of sorting out complex problems.

There are several points to note in advance:

Chinese is profound and versatile. One word may have different meanings in different dimensions, and many words have the same meaning in different dimensions. You need to identify them clearly.

When looking at something, there are always multiple perspectives to consider. The reason why the logic may be disorganized is that an angle is not locked first before discussing an issue. More importantly, you often need to switch between multiple angles to finally sort out a thing.

The component is the most useful and least understood concept, and its often a concept that arises from internal logic in a perspective, which is recursive and regardless of scale. Starting with a fixed perspective can often clarify the largest concept (such as assembly) and the smallest concept (such as parts) to lock in the scope of thinking from an angle. The middle part can be called a component and appears in a large number of perspectives. Therefore, it needs to be identified specifically and cannot be confused. It only has an internal meaning under any perspective, and has no external meaning.

Hardware Dimension

First of all, let’s start with the perspective of hardware. Hardware is simply visible and touchable things, which gives it many unique views (manufacturing, assembly, mechanical movement, electrical connection).

Part is the basic unit that makes up a machine, such as a nut is a part. Generally, parts that can be independently manufactured (such as stamping, casting, etc.) are called parts. The concept of assembly is similar. It is composed of two or more parts which are connected together by an irreversible connection method (such as riveting, welding, etc.), and can also be used as a basic unit from a higher level perspective.

From a mechanical movement perspective, there is often the concept of component

The component refers to various moving units assembled from various parts. The components of a mechanism can be divided into frame, driving member, driven member, etc. They are independent moving units, and can be regarded as the basic unit of mechanical movement. The mechanism is an important part of the machine, one of whose main functions is to transmit and transform motion.

From an assembly perspective, there are often concepts of components and parts (assembly)

The component is a concept between parts and assemblies, which can be understood as a combination of some parts, meeting a basic function.

The assembly is something composed of several components, assemblies and parts, which are assembled together to complete higher level assembly requirements. The assembly is the smallest unit in the assembly line assembly process, which is often called assembly by car manufacturers.

Software DimensionTranslate to English Markdown:

“`markdown
Then, if we start from the software perspective, software is something that cannot be seen or touched. Although strictly speaking, code can also be considered as something, more importantly, it produces a specific perspective on software logic. Especially when designing, programming, and establishing on the basis of reusability. There is a big difference between the perspective of software and the perspective of hardware.

From the perspective of software code files (programming), there are these visible components

A module (compilation unit) is a collection of program statements that can be named and independently completed to perform a certain function (ie, a collection of program code and data structures). It has two basic characteristics: external features and internal features. The external feature refers to the interface between the module and the external environment; the internal feature refers to the characteristics of the internal environment of the module, that is, the local data and program code of the module. It can be simply understood as the smallest unit of software.

The concept of a component was explained before, and it is an intermediate concept. It is said to be a large module (component), and the concept of a sub-module (component) is recursive, and its nature is the same as that of a module. When different components are assembled to form larger components, this is actually software integration. There are some special variants, such as plug-ins, which also belong to one type of component (module), but they have very strong independent functional attributes.

When the code is actually handed over to people to write, it is often organized from this perspective.

From the perspective of software reusability, there are several design concepts

In this case, the component is an object (Object). It is called a component in C++, a component in Delphi, and a control in VB. The component is a simple encapsulation of data and methods, and can be logically assembled by generating instances (instances).

A component (Component) is a reusable software that can be used to construct other software. It can be an encapsulated object class, a class tree, some functional module software, etc. Components are divided into component classes and component instances. By giving the parameters of the component class, an instance is generated, and corresponding application software is constructed by assembling and controlling the instance. Similar to the logic of components, the component is more complex.

Design pattern (Pattern) is actually a method for solving a certain type of problem. You summarize and summarize the method of solving a certain type of problem to a theoretical height, which is pattern. Each pattern describes a problem that constantly appears in our environment, and then describes the core of the solution to the problem. In this way, you can use those existing solutions countless times without repeating the same work. Patterns are reused in design.

A framework (Framework) is a semi-finished product of a certain application, which can be selected to complete your own system. The framework is generally mature and continuously upgraded software, and at a deeper level, it also represents some constraints and has specific application scenarios.

Components are code reuse, design patterns are design reuse, and frameworks are in between, part code reuse, part design reuse. In thinking, the reusability of software is a kind of “hardware assembly”.From the perspective of software design, Architecture is the most important concept. It refers to the system organization of the software system, which encompasses the decision-making process about the interface, behavior patterns, collaborative relationships, and configuration of system components. Software architecture is a series of related abstract patterns used to guide the design of every aspect of large software systems. If you are familiar with the UML language, it defines 10 kinds of diagrams, including class, object, package, state, activity, sequence, communication, component, and deployment diagrams, each representing a more specific design perspective with subordinate and combined definitions dependent on the respective perspective. However, we won’t delve into it in detail here.

In the implementation phase, these abstract concepts are translated into code modules and components. For instance, the design of a certain class or object in a class diagram directly becomes the smallest software module. Of course, design and development may not always align in every dimension. The relation between design and development can be summarized as follows:

  • Structured data + algorithms = modules (or programs)
  • Adjustment of the logical relationships between modules = design patterns
  • Multiple design patterns combined with UML considerations = architecture

Between software and hardware, some important “components” have emerged, such as middleware, operating systems, and database systems, which are especially noteworthy. They unify the underlying complexity (including hardware and the operating system itself) and provide support for purely logical software reuse.

Finally, from the perspective of functional design or other abstract purposes (such as safety and performance) detached from software and hardware, concepts such as-related items, systems, subsystems, and elements exist, all of which arise from different user perspectives. Such perspectives generally incorporate two matching viewpoints: one is the purely system perspective, and the other is the division language that matches the purpose. To illustrate, from the perspective of functional safety, we can look into the specific logic behind it. Similarly, a system design from the product perspective is just as reasonable.

Starting from a Bare System Perspective

For example, the concept of a system (subsystem); the human body consists of eight systems, such as the muscular and nervous systems, and they can be seen as subsystems of the human body. Systems often have clear input (sensors), processing (controllers), and output (executors) components. However, it is essential to note that not all subsystems necessarily have a corresponding independent physical hardware or software component. Rather, it is usually a complex mapping relationship.

Hardware components or software unitsare the smallest units. But one should note that in the entire analysis process, the minimum size of hardware or software needs to be understood, which may not necessarily be a physical concept.Translate the following Chinese text in Markdown to English Markdown, keeping the HTML tags inside and only outputting the result:

A component, like other perspectives, is an intermediate concept that is neither foundational nor systemic, but a logical and technical separation.

From the perspective of functional safety description

An item is a scope of a safety issue that can be a single or multiple functions, or a single or multiple systems. It’s an input of hazard analysis and risk assessment (HARA) of functional safety, and ultimately generates functional safety goals and subsequent functional safety concepts. An element is a necessary functional safety requirement that needs to be described during the functional safety concept phase and assigns those safety requirements to functional elements of the system. It can be any subunit of an item.

Summary

Engineers developing autonomous vehicles often switch back and forth between several concepts during communication. Apart from expanding their knowledge, it’s essential to confirm the perspective of a concept, start thinking from that perspective, and get used to transform from one perspective to another regarding a thing.

This article is a translation by ChatGPT of a Chinese report from 42HOW. If you have any questions about it, please email bd@42how.com.