660 likes | 2.16k Views
Software Reuse. 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. Application system reuse
E N D
Software Reuse • 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 • Application system reuse • The whole of an application system may be reused either by incorporating it without change into other systems or by developing application families • Component reuse • Components of an application from sub-systems to single objects may be reused • Function reuse • Software components that implement a single well-defined function may be reused
Types of Software Reuse • Ad-hoc reuse • Intra-Project reuse • Inter-Project reuse • Enterprise-level reuse • Horizontal Reuse • Vertical Reuse
Component development for reuse • 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 • 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 • Operation generalisation • Exception generalisation • Component certification
Application families • An application family or product line is a related set of applications that has a common, domain-specific 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 sub-systems and allows them to be modified
Application family specialisation • Platform specialisation • Different versions of the application are developed for different platforms • Configuration specialisation • 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 • 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 • Increased reliability • Components already tested • Reduced process risk • Less uncertainty in development costs • Effective use of specialists • Reuse of components instead of people • Standards compliance • Accelerated development
Reuse problems • 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