Chapter 3 Flashcards

1
Q

Name two roles software architecture plays in component based software development

A
  1. In development for reuse, it provides the skeleton for integrating reusable components.
  2. In development with reuse, it provides the context for which reusable components are developed.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What is software architecture?

A

Software architecture of a program or computing system is the structure of structures of the system, which comprise software components, the externally visible properties of those components and the relationships among them.

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

Explain Architectural view

A

An architectural view focuses on specific properties of the architecture or looks at the architecture from a certain perspective.

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

Highlight the four software architecture views according to Christine Hofmeister et al

A
  1. The conceptual view: describes the system in terms of its major design elements and the relationship among them. (Also called logical view)
  2. The module interconnection view: it encompasses two orthogonal structures: functional decomposition and layers.
  3. The execution view: describes the dynamic structure of a system.
  4. The code view describes how the source code, binaries, and libraries are organised in the development environment.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What does service oriented development have in common with component based software development?

A

Both provide functionality as “services” that are specified in an implementation-independent way.

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

What is the main focus of service oriented development?

A

The focus of service oriented development is on providing services to clients.

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

CBSD is about design with reuse and design for reuse. Explain these terms and relate them to top-down and bottom-up software development methods.
What is the role of architecture in the two development scenarios?

A

In design with reuse, CBSD tries to bridge the gap between the requirements of a new systems and existing software components that can be possibly reused to implement the system.
Design with reuse addresses CBSD in top-down software development.

In development with reuse, software architecture provides the skeleton for integrating reusable components whereas in development with reuse, it provides the context for which reusable components are developed.

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

Name the three main reasons for software evolution and why CBDD can help to perform evolution steps. Name situations in which CBSD cannot be of help for evolution.

A

The three main reasons are
1. Code maintenance: typical reasons for maintenance are the elimination of bugs, improvement/refactoring of the components and their structure, and adaptation to new version of programming language used.
2. Platform evolution: Typical reasons are new versions of parts of the platform
3. Changing requirements: A change of requirements can refer to functional and non-functional aspects.

Why CBSD can help with evolution steps:
Code maintenance benefits from strict structuring of component-based systems; local changes can be verified directly against the component specifications.
In CBSD as all interfaces has to be described explicitly, it is clear from the specifications which components are affected by platform evolution.
CBSD is only helpful for reacting to changing requirements when components are to be added or only some components have to be modified, the clear separation into components in all levels is usually beneficial.

CBSD cannot be of help for evolution if the required change is of cross-cutting nature (adding a certain security policy to most of the components) or if the required performance cannot be achieved with an implementation consisting of loosely coupled components.

To solve cross-cutting changes, aspect oriented techniques may be helpful. To solve performance problems, it may be necessary to give up independent deployability of components.

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

What does component adaptation means?

A

It means modifying functional, non-functional, or technical properties of a component such that the adapted component fits the needs of the composition context.

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

Explain the three adaptation techniques discussed in the chapter and how they differ

A
  1. White-box adaptation assumes that the implementation of the component is available for developers and all tools. It is possible to modify the program code of the component to derive the adapted component.
  2. Gray-box adaptation assumes that developers only have access to code templates which development tools could use to generate complete source code. E.g AUTOSAR components
  3. Black-box adaptation takes the old component as given and implements a new component, which uses and possibly encapsulates the old component.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are the differences between product line engineering and CBSD?

A
  • Product line engineering is an approach for planned and effective reuse of software artifacts and components.
  • Product line engineering creates software artifacts when reuse can be predicted rather than developing software components for general use as the case in CBSD
  • Product line engineering uses component-based software technology, in particular for product derivation but also exploits other forms of generic and compostable software artifacts as well
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Component-based software development is a development discipline based on three fundamental software engineering principles namely:

A
  1. Divide and Conquer
  2. Information hiding and encapsulation
  3. Reuse
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

The strict structuring of CBSD allows separating the development and maintenance of a system into five different roles namely?

A
  1. Component provider/vendor
  2. Framework provider
  3. Application provider
  4. Application deployer
  5. System administrator
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

In the domain of embedded systems, the task of component selection might

A

be directly linked to the task of hardware-software component selection. A selection of a particular hardware part automatically leads to the selection of the corresponding driver component.

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

What does adaptation mean in component selection?

A

it means modifying the functional, non-functional, or technical properties of a component such that the adapted component fits the need of the composition context.

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

Name four types of architectural views according to Christine

A
  1. Conceptual view / Logical view
  2. module interconnection view
  3. the execution view
  4. the code view
17
Q

Other software development techniques that aims to improve reuse and software evolution are?

A
  1. Service-oriented development and service-oriented architecture
  2. Aspect-oriented software development
  3. Model-driven development and model-driven architecture
  4. Product line engineering
18
Q

Compare CBSD to model-based development

A

They both appear to be contradictory approaches. While CBSD builds systems bottom-up, model-driven development follows a top-down approach. The two development techniques are however orthogonal, CBSD emphasis structuring of systems into software components, Model-driven development focuses on structuring the development process into several refinement steps.
The combination of both leads to model-driven development of components.