Software Reuse l Objectives To explain the software

Software Reuse l Objectives – – To explain the software reuse, its benefits and some reuse problems To describe different types of software reuse and how they can be incorporated into the software development at various levels

Reuse-based software engineering l Application system reuse – l Component reuse – l The whole of an application system may be reused either by incorporating it without change into other systems or by developing application families Components of an application from sub-systems to single objects may be reused Function reuse – Software components that implement a single welldefined function may be reused

Types of Software Reuse l l l Ad-hoc reuse Intra-Project reuse Inter-Project reuse Enterprise-level reuse Horizontal Reuse Vertical Reuse

Component development for reuse l l Components for reuse may be specially constructed by generalising existing components Component reusability – – Should reflect stable domain abstractions Should hide state representation Should be as independent as possible The more general the interface, the greater the reusability

Reusable components l l l The development cost of reusable components is higher than the cost of specific equivalents. This extra reusability enhancement cost should be an organization rather than a project cost Generic components may be larger and slower than their specific equivalents

Reusability standards Name generalisation l Operation generalisation l Exception generalisation l Component certification l

Reusable Component Design

Application families l l An application family or product line is a related set of applications that has a common, domainspecific architecture The common core of the application family is reused each time a new application is required Each specific application is specialised in some way Application family architectures must be structured in a way that separates different subsystems and allows them to be modified

Application family specialisation l Platform specialisation – l Configuration specialisation – l Different versions of the application are developed for different platforms Different versions of the application are created to handle different peripheral devices Functional specialisation – Different versions of the application are created for different customers

Training and incentives for reuse l l Specialized training of the staff is very essential People should be convinced about the concept behind reuse and its benefits Providing incentives to the individuals who contribute to the reuse initiative Long term vs. short term benefits

Benefits of reuse l Increased reliability – l Reduced process risk – l l Less uncertainty in development costs Effective use of specialists – l Components already tested Reuse of components instead of people Standards compliance Accelerated development

Reuse problems l l l l l Lack of tool support Maintaining a component library Finding and adapting reusable components No planning for reuse Reuse confined to an individual or within one system Limited to code-level reuse No or negative reuse incentives Cost of reuse is too high Inability to recognize what has high potential for reuse No reuse activities defined as part of the software life cycle process
- Slides: 12