Component based software engineering (CBSE Week7) Flashcards
What can be reused in software engineering?
Application Systems
- Whole application can be reused
Component Reuse
- Parts (‘components’) of an application may be reused
Object/Function reuse
- Single, well defined object or function can be reused
What are the benefits of reuse?
Dependability
- Software has been already tested
Time
- Reuse speeds up development
Reduced risk
- Costs are more accurately known. Developing software from scratch involves cost estimation
What are the problems with reuse?
Maintenance costs
- Source code might not be available, system changes might create incompatibilities
NIMBY
- People want to write their own software. Could be due to trust, or they think they can do a better job
What are views? (CBSE)
Interface components for displaying information
What are models? (CBSE)
Models handle requests or events
What are Controllers? (CBSE)
Controller decides which components to call for a particular request
What are Data Access Objects? (CBSE)
Provides abstract interfaces for databases
What are plugins? (CBSE)
Plugins extend functionality of an app
What are APIs? (CBSE)
APIs are a set of functions or procedures that allow the creation of applications which access the features or data of an operating system, application or other service
What are component identification issues?
Trust
- You need to be able to trust a component
- Have a level of confidence on it working
Requirements
- Different groups of components will satisfy different requirements
Validation
- The component specification might not give enough information to allow for adequate testing
- Components could have undesired functionality
Describe the process of component composition
Process of assembling components to create a system
May have to write ‘glue code’ or develop ‘adaptor components’to fit components together (Addresses problems of incompatibility between components)
What are the benefits of CBSE?
Increased dependability
- Components that have been tried and tested in working systems are usually more dependable than new software
Effective use of specialists
- Instead of reusing domain specific specialists on reoccurring project problems, reusable components can be developed, encapsulating their knowledge.
Accelerated development
- Bringing a system to market as early as possible is often more important than overall development costs
- Reusing software can speed up system production because both development and validation time should be reduced
What are the downsides of CBSE?
Increased maintenance cost
- if the source code of a reused software system or component is not available maintenance costs may increase as the reused elements of the system may become increasingly incompatible with system changes
Creating and maintaining a component library
- Populating a reusable component library ensuring the software developers can use this library can be expensive
Finding, understanding and adapting reusable components
- Software components have to be discovered in a library, understood and sometimes adapted to work in a new environment. - A component search is part of the normal development process