Chapter 1 Flashcards

1
Q

Why is component based development widely used in information systems than embedded systems?

A

It is often harder to satisfy the tighter resource constraints in embedded systems.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What do you understand by component based software development?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What is a software component?

A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Describe software components

A

Software components have well-defined interfaces and behaviours that can be described independent of the context in which they are used.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

what are the main motivations and goals of component based software development?

A
  • 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What does it mean when we say that software systems implementation realises the components?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is the difference in the logical view of the autonomous driving system and the architectural logical view?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What do you understand by component based development in a bottom-up process?

A

In a bottom-up process, we can use existing software components, adapt some of them, and compose a system out of them.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What do you understand by component based development in a top-down process?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Does CBSD favour bottom-up process over top-down process and vice versa?

A

No, the important thing is having an architectural design based on well-defined components that can be tracked to the implementation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are software components implementation related requirements?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Summary of software components

A

Software components are unit of abstraction that relate design, implementation, deployment, and maintenance activities.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Highlight the views of software components on different phases

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What does qualification mean in the context of Component Software Based Development?

A

It is the process of selecting components and determining their suitability within the system under development.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is the difference between the logical components and software components of a system?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are the reasons the two component structures may deviate?

A

The structures might deviate during the design, some design decisions might be taken which may lead to a different breakdown into software components that does not match the structure of the logical components.

17
Q

What is the difference between a software component and a program component according to the explanation of chapter one?

A

Software components are more abstract than programs because we require them to have implementation-independent specification of interfaces and behaviour.

18
Q

What do we expect from a software component that is missing if we only consider program module?

A

Software components should meet these requirements
- The program parts implementing a software component have to satisfy the component specifications.
- A software component should be a unit of deployment.
- Building the deployment unit from the program parts should be possible independent of other components.

19
Q

Name the three different views of software components mentioned in the text

A

There are
- Design
- Implementation and deployment
- Administration and maintenance

20
Q

Name five roles available in component frameworks

A
  1. Component provider
  2. Framework provider
  3. Application provider ( constructs an application from a number of components)
  4. Application deployer (installs an application on a platform)
  5. System administrator
21
Q

What are the benefits of role separation in component-based software development?

A

They are important for
1. Division of labour,
2. Specialisation
3. Improved tooling and
4. Better competition in the market

22
Q

Highlight the mutual dependence between the technical and economical oriented goals for using component-based software development

A

Component technologies are needed to enable relevant component reuse and to establish a component market, on the other hand, component technologies will only be successful if the additional costs and care it takes to develop reusable components is justified by the gains of CBSD

23
Q

To describe and analyse the behavioural requirements of a complex system, the system is structured into parts

A

These parts are called the logical components.

NOTE: Behaviour is usually related to logical view of a system

24
Q

Design decisions to be considered in CBSD

A
  1. Specification of software components, i.e specification of their interfaces and behaviour.
  2. Specification of the schemata and formats of the data that is interchanged between components.
  3. Selection of available software components.
  4. Configuration and adaptation of selected software components
  5. Selection of the implementation languages, frameworks, development and maintenance tools.
  6. Selection of physical and virtual platforms
  7. Design of the structure of the software components realising the functional behaviour of the system together with the communication techniques used.
25
Q

What is the difference between the logical view of components and the architectural view of components?

A

In logical view of components, the components and their structure simply meant some abstractions used to explain the overall system behaviour whereas in architectural view, the components and their structures reflects the implementation of the system (i.e each component in the architecture corresponds to a part of the program code realising this component)
A component of the architecture is an abstraction of some part of the program code.

26
Q

What does implementation in CBSD mean?

A

It means developing the programs that realise the components.

Software components are mediators between design and implementation.
Implementation may include building and deployment aspects.

27
Q

Relationship between CBSD and other topics in software engineering

A
  1. Software modeling
  2. Software specification
  3. Implementation support
  4. Quality assurance
  5. Development processes