15.10: The reuse of software raises a number of copyright and intellectual property issues. If a customer pays a software contractor to develop a system, who has the right to reuse the developed code? Does the software contractor have the right to use that code as a basis for a generic component? What payment mechanisms might be used to reimburse providers of reusable components? Discuss these issues and other ethical issues associated with the reuse of software.
I think that many of the issues raised with software reuse could be solved with contracts. If a customer pays the contractor to develop the system, the contractor who is developing it will create a contract regarding reuse for the specific system being developed. If they want to include no-reuse policies, reuse for a fee policies, or specific parts that can be reused for free vs. paid, they are able to do so. Contracts are important to many different aspects of our every day lives because they can protect our rights in so many different situations. Without a contract, the reuse of software becomes really confusing and difficult to manage. I think that if a customer pays a software contractor to develop a system, and no contract is in place to have an agreed upon plan for its reuse, then both parties should be able to reuse the system. The contractor should be able to because they wrote/created the software in the first place. It is “theirs” to reuse in the future. The customer should also be able to reuse the software since they commissioned it, it is “theirs” as well.
The providers of reusable components could possible be paid a one-time fee for the reusable components. It could also be possible that the payment could be figured on a rental type of payment plan. For as long as the software is being used, the team or company who developed the software will be continuously paid.
It is important for software to be able to be reused. Costs of software development can be significantly reduced and its speed and rate of development is greatly increased as well. Considering the complexity of today’s software, it is only expected that in the future, that complexity will grow. With the ability to reuse, we can eliminate wasted time, money, and overall efforts while increasing quality and time for products to be user ready. Although there are many ethical issues that will undoubtedly arise surrounding the topic, with the increased use of contracts, and actively discussing the issue before the development of the software, both sides can agree in writing to a plan. Whether to reuse the software and who has the rights to do so, can be tackled in the beginning of the engineering rather than be an issue in the end.