The term "mash up" is as vague as it is biased. It may easily be associated with unskilled manual labour thatlacks both precision and subtlety. To avoid prejudicing the reader, this essay will give a neutral and more precisedefinition of "mash up" in terms of software reuse. The amount of software reused in a new system can lie within awide spectrum. Programming from scratch and mashing up existing software may be seen as the two extremesdelimiting this spectrum. There is some flexibility in the terms however. For instance mashed up software may includesome new code and software that uses standard libraries may still be seen as having been programmed from scratch. For the purposes of this essay mashed up software is taken to mean any software reusing substantially more than standardlibrary functions.This essay will argue that software reuse, despite its many benefits, is not always the right choice. Criticallyappraising the consequences of software reuse will reveal to what extent the negative connotation of "mash up" is justified. The impact of reuse on requirement satisfaction and security will also be considered.
1. The benefits of software reuse
Before launching into a discussion about the scope for software reuse one must first understand the benefits ithas to offer. This section will explain why software reuse is popular and what incentives it offers software companies.Potential benefits of software reuse are "lower cost, better quality, a decrease in risk, and the potential for a lessstressful development process" [2, p.1]. By some, reuse has even been accepted more generally as a remedy for many of the challenges faced by software development companies[4, p.1]. The reasons for these high hopes are often based onconfidence in the reused code from which optimists derive the need for less testing and hence lower costs. Commercialoff-the-Shelf (COTS) software may offer an easy and quick way of satisfying many system requirements.The prospect of being able to market software more quickly is one of the key incentive for companies to reusesoftware. A shorter development time is likely to save money but the main advantage is that it can enable a company tomarket its software before its competitors. Professor Ross Anderson describes what he calls the "first-mover advantage"in his book [1, p.512]. The advantage results from the system's value increasing exponentially with the number of users[1, p.406]. This phenomenon is also known as Metcalfe’s law. A system that is marketed early and before an alternative product is available can easily attract a large user base. The system then becomes more valuable than that of thecompetition. Even if the alternative is better the costs of switching can become so large that customers are locked in.This effect can even be enhanced by reusing proprietary or patented software with the aim of imposing licensingrestrictions on competitors [1, p.513]. It has been observed that the advantages of marketing early can lead to amonopoly as was the case with Microsoft Word [1, p.406].
2. When is software reuse appropriate?
Having discovered the benefits of software reuse, the obvious next question is when and how they can bereaped. A look at the requirements that a piece of software must fulfil in order to be reusable will answer this questionand lead on to identifying when it is appropriate to do so.The first hurdle that must be overcome is finding and obtaining a piece of software that offers the desiredfunctionalities[5, pp.429-436]. Often the software or licenses must be purchased. Before buying software one shouldmake sure that it does not have dependencies that the targeted system does not fulfil. Dependencies may be hardware or software requirements. For example it would not be possible to reuse software written in Java on a system that isincapable of running the Java Virtual Machine. There must also be sufficient resources e.g. memory available. General