L20: Software Reuse Flashcards

1
Q

What is software reuse?

A
  • Systems are designed using components from existing systems
  • Design processes based on systematic software reuse will produce better software more quickly and at a lower cost
  • There has a been a trend in software reuse over the past few years
  • There are many ways to reuse software - from the reuse of classes and methods in libraries to the reuse of complete application systems
  • There are many possibilities for software reuse including application frameworks, software product lines and application systems
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Discuss artefact reuse in software engineering

A

Non-software artefacts
- Architecture styles
- Software architecture
- Design patterns
- Design of components/systems, test suites

Software artefacts

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

What kinds of reuse is there in reuse-based software engineering?

A

In a descending scale:
- System reuse
- Application reuse
- Component reuse
- Object and function reuse

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

What are the benefits of reuse?

A
  • Faster development
  • Effective use of specialists (not repeating same work)
  • Increased dependability (tried and tested software)
  • Lower development costs (less software to write)
  • Reduced process risk (know costs of existing software)
  • Standards compliance (standards implemented as reusable components)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are the challenges of reuse?

A
  • Creating, maintaining and using a component library
  • Finding, understanding and adapting reusable components
  • Increased maintenance costs
  • Lack of tool support for reuse in some domains
  • Lack of trust in software written by others
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are some reuse planning factors to consider?

A
  • Development schedule for the software (more reuse, quicker build)
  • Expected software lifetime
  • Background, skills and experience of the development team
  • Criticality of the software and its non-functional requirements
  • Application domain
  • Execution platform for the software
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What are application frameworks?

A

Frameworks are moderately large entities that can be reused (between system and component reuse).
Collection of abstract and concrete classes and the interfaces between them.
Partial implementation of system- you need to fill in the gaps.
Application frameworks are language specific.

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

What is a software product line?

A
  • Set of applications with common architecture or shared components
  • Each application is specialised to reflect different requirements

Adaptation may involve:
- Component and system configuration
- Adding new components
- Selecting from a library of existing components
- Modifying components to meet new requirements.

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

What are the types of components in a software production line?

A

Core components
- Typically present in all instances of software product line and provide infrastructure support

Configurable application components
- Modified/configured to suit each instance

Specialised application components
- Domain-specific and may be replaced in each instance

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

Describe product line architectures.

A

Architectures must be structured so that different sub- systems are separate and can be modified.

The architecture should separate entities and their descriptions. Higher levels in the system access entities through descriptions rather than directly.

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

What are the types of product line specialisation?

A

Platform specialisation
- Different versions developed for different platforms

Environment specialisation
- Different versions developed for handling different operating environments

Functional specialisation
- Different versions for customers with different requirements

Process specialisation
- Different versions to support different business processes

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

What is application system reuse?

A

Built in customisable features, but the core functionality is the same. Can be tailored to different customers by providing configuration points

  • An application system is typically a software system that can be adapted for different customers without changing the source code of the system
  • Application systems have generic features and so can be used/reused in different environments
  • Application systems are adapted by using built-in configuration mechanisms that allow the functionality of the system to be tailored to specific customer needs
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What are the benefits of application system reuse?

A
  • More rapid development of a reliable system
  • Possible to see what functionality is provided by applications, easier to judge whether or not they are suitable
  • Some development risks avoided by using existing software
  • Businesses can focus on core activity rather than putting resources into IT systems development
  • As operating platforms evolve, technology updates may be simplified as these are the responsibility of the COTS product vendor rather than the customer

COTS : Commercial Off The Shelf

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

What are some challenges of application system reuse?

A
  • Cannot change the application, must adapt your needs to application
  • Difficult to choose the right COTS product for an enterprise
  • Need local expertise to support systems development
  • The COTS product vendor controls system support and evolution

COTS : Commercial Off The Shelf

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