## 2 Preliminaries
### Component-Based Development  
A system can be constructed based on the interaction of components and interfaces, which exposes the system's functionality [5]. These components are developed independently and can be reused in other software systems. The goal of component-based development is to simplify system development, maintenance, and extension while improving productivity through reuse [6].  
The component-based software development methodology has characteristics that can be applied to other existing software development process models. As shown in Figure 1, this methodology consists of two main processes, namely, the component development process and the component-based system development process, in which components are selected and assembled to suit the system under development. The component development process involves developing the components that make up the system and includes requirements analysis, design, implementation, testing, and maintenance. The components are identified and defined in the design phase [7].  
The component-based development methodology can also be effectively applied to embedded software development [8; 9; 10]. For example, Electronic Control Units (ECUs) in vehicles consist of multiple software components that perform various functions, and each component can be developed independently and replaced or updated as required. This allows automotive manufacturers to manage and maintain systems more efficiently, thereby reducing development costs and time through component reuse in resource-constrained environments. AUTomotive Open System Architecture (AUTOSTAR) promotes the reuse and independent development of software components by ensuring interoperability between various ECUs and software modules through a standardized software architecture [11]. AUTOSAR's architecture comprises Basic Software (BSW), a Runtime Environment (RTE), and application software consisting of independent components. This structure enables flexible and efficient system upgrades and new feature additions while integrating components from various suppliers to reduce development costs and improve quality [12; 13].  
The defined components are specified for reuse. Component specification is a technique used to ensure that others can reuse the component accurately and appropriately. Thus, component specifications should be structured efficiently to match the purpose of the component. Component specification following the software contract approach includes elements such as functionality (describing the component's functional specifications), environment (infrastructure required for the component to run as intended), interface (specifications for how the component is invoked and how it interacts with other components), and nonfunctional properties (quality attributes such as performance, security, and reliability) [14; 15].  
In component-based development, the components are designed and developed to construct the target system. This research focuses on the component development stage, and in particular on the component design phase, during which components are identified and the component-based software architecture (CSA) (referred to in this paper as component architecture) is constructed.