Chapter 1 Flashcards
Why is component based development widely used in information systems than embedded systems?
It is often harder to satisfy the tighter resource constraints in embedded systems.
What do you understand by component based software development?
It is a sub-discipline of software engineering that emphasizes the composition of software systems from well-understood logical and functional parts.
It supports the design, implementation, deployment and maintenance of a software systems.
What is a software component?
A software component is part of a software system or an entity for composing software systems.
More precisely:
- Software components have well-defined interfaces and a behaviour that can be described independent of the contexts in which they are used.
- Software components have an implementation that can be independently composed and deployed.
- To be composable, software components follow a component model that determines the common computation, communication, and composition principles underlying a class of components.
Describe software components
Software components have well-defined interfaces and behaviours that can be described independent of the context in which they are used.
what are the main motivations and goals of component based software development?
- Improve the quality of software systems
- Support separate development
- Allow for role separation
- Improve reuse
- Shorten time to market
- Provide the basis for market of software components
- Improve flexibility and evolvability
What does it mean when we say that software systems implementation realises the components?
We mean that
- Each component corresponds to a module or part of the program code
- The program code provides the interfaces of the component and implements the behaviour
- The program code can be deployed independently
What is the difference in the logical view of the autonomous driving system and the architectural logical view?
In the logical view of the system, the components and their structure simply meant the abstractions used to explain the overall system behaviour whereas the architectural logical view reflects the implementation of the system.
What do you understand by component based development in a bottom-up process?
In a bottom-up process, we can use existing software components, adapt some of them, and compose a system out of them.
What do you understand by component based development in a top-down process?
In a top-down process, we can develop the architecture of the system from the requirements of the system, define the interfaces and behaviour of the system, implement them separately, and finally compose them.
Does CBSD favour bottom-up process over top-down process and vice versa?
No, the important thing is having an architectural design based on well-defined components that can be tracked to the implementation.
What are software components implementation related requirements?
- The program parts implementing a software component have to satisfy the component specification.
- A software component should be a unit of deployment.
- Building the deployment unit from the program parts should be possible independent of other components.
Summary of software components
Software components are unit of abstraction that relate design, implementation, deployment, and maintenance activities.
Highlight the views of software components on different phases
- Design considers them from the outside mainly as a black boxes with well-defined interfaces and independently described behaviours.
- Implementation considers them as units of programming and deployment with well-defined specification.
- Administration and maintenance consider them as units of integration, instantiation, startup, update, shutdown, disintegration.
What does qualification mean in the context of Component Software Based Development?
It is the process of selecting components and determining their suitability within the system under development.
What is the difference between the logical components and software components of a system?
Logical components are a means for providing a first structure of the system that allows stating and analysing the behavioural requirements whereas in software components the logical components through design and implementation can be fully realised to the corresponding software components.