140 likes | 257 Vues
Explore advantages and disadvantages of software reuse, components from other projects, and maintenance motivations. Learn about different approaches to reuse, generation, and transformation. Understand the essence of reusable components and the importance of a reuse process model in software maintenance.
E N D
Image from http://www.lancashire.gov.uk/environment/waste/reduction/reuse.asp?print=yes. Reuse and Reusability(Chapter 8 of maintenance text) Steve Chenoweth CSSE 375, Rose-Hulman Based on Don Bagert’s 2006 Lecture
Today • Your feedback on HW2 • Armadillo Run & requirements discussion • Lab time – Help on project design & coding • Reuse & reusability – this
Using “Reuse Maintenance Process Model” (from Chapter 5) • Advantages • Can use components, etc. from other projects • Code is modular • Disadvantages • Overhead in designing for reuse
A prime example of reuse strategy – Product lines • Enhance & maintain a base platform • Enhance & maintain multiple products on top of that base • Where’s the reuse advantage? Image from www.hobbsamerica.com/ .
Product lines – and where’s the overhead? A typical ongoing activity – extract commonalities for upcoming releases: Image from www.jot.fm/issues/issue_2004_03/column6/ .
Targets for Reuse • Process • Specific – like “how we adapted the last system to work with Oracle” • Personnel • No such thing as a “technical head count year” • Product • More of a business strategy, maybe – adapt software to a new target market
Targets for Reuse, cntd • Data • Especially reusing test data • Design • Higher level = more useful • Why isn’t this done more? • Why is it done in compilers? • Program • This is the one you’d expect
Maintenance Motivations • Reduction in time and effort • Higher quality • Improve maintainability • Code “transportation” • PC to Mac • Stand-alone to server-based • US to Japan Image from jcmc.indiana.edu/vol9/issue1/nishimura.html .
Approaches to Reuse – Composition • Essence of the “Reuse model” – Fig 5.18 • Components • Black box • White box • Classes • Keep spawning children,intelligently! Image from www.ppsv.net/WeProvide.htm .
Approaches to Reuse – Generation • Parameterized systems • Application generators
Approaches to Reuse – Transformation • Input the requirements… • Output a new system! • Two kinds: • Stepwise refinement • Linguistic transformation
Intro to Components • Two strategies: • Horizontal – use in lots of domains • Vertical – use to solve common problems in a domain • Require domain analyses • “Essence of OO”
Intro to Components – cntd • Characteristics of reusable components: • Generality • Cohesion vs coupling • Interaction – with user, utility fns • Uniformity and standardization • Data & control abstractions • More on these – Read Sec 8.7