Chapter 3 Flashcards
Name two roles software architecture plays in component based software development
- In development for reuse, it provides the skeleton for integrating reusable components.
- In development with reuse, it provides the context for which reusable components are developed.
What is software architecture?
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.
Explain Architectural view
An architectural view focuses on specific properties of the architecture or looks at the architecture from a certain perspective.
Highlight the four software architecture views according to Christine Hofmeister et al
- The conceptual view: describes the system in terms of its major design elements and the relationship among them. (Also called logical view)
- The module interconnection view: it encompasses two orthogonal structures: functional decomposition and layers.
- The execution view: describes the dynamic structure of a system.
- The code view describes how the source code, binaries, and libraries are organised in the development environment.
What does service oriented development have in common with component based software development?
Both provide functionality as “services” that are specified in an implementation-independent way.
What is the main focus of service oriented development?
The focus of service oriented development is on providing services to clients.
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?
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.
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.
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.
What does component adaptation means?
It means modifying functional, non-functional, or technical properties of a component such that the adapted component fits the needs of the composition context.
Explain the three adaptation techniques discussed in the chapter and how they differ
- 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.
- 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
- Black-box adaptation takes the old component as given and implements a new component, which uses and possibly encapsulates the old component.
What are the differences between product line engineering and CBSD?
- 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
Component-based software development is a development discipline based on three fundamental software engineering principles namely:
- Divide and Conquer
- Information hiding and encapsulation
- Reuse
The strict structuring of CBSD allows separating the development and maintenance of a system into five different roles namely?
- Component provider/vendor
- Framework provider
- Application provider
- Application deployer
- System administrator
In the domain of embedded systems, the task of component selection might
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.
What does adaptation mean in component selection?
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.