|Author : DAOUDI Samir | Context : MSc Software Engineering – Software Engineering|
In the first 35 years of computer history the most important concern and emphasis was on hardware and material improvement, but now the emphasis has more shifted to human concerns (Rada, 1995).
Companies and people trust closely to software solutions for business, personal and entertainment purposes. The software engineering as a field became very important in computing and new approaches, methods and disciplines are continually designed and developed in this field.
One of the new approaches in software engineering and which has been recently adopted to respond to thegap between the demande of complex solutions and the supply is the software reusing.
Software reusing became widely adopted due to the fact that many software contain similar or identical parts that might be developed each time from scratch. The idea of developing and structuring programs in an independent components has many advantages.
Different definitions of software and components reuse exist as :
– The use by software developer of any information that is needed in the creation and development process.
– The use of software that was designed for reuse.
– The use of existing sofware component in new context (Sametinger, 1997).
Different studies have shown that reusing software can provide great advantages and improve software productivity and quality. It is clear that reusing components and parts previously developed for other project increases significantly the productivity. The quality can be increased by reusing components and parts that have been frequently used, tested, reviewed and debugged (Rada, 1995).
Nowadays, we not only reuse components to build new systems, but we use for certain needs entire software-solutions that can be directly deployed or sometimes a little bit modified with small custom code integration.
Important advantages of reusing software systems exist as:
– Reducing costs.
– Quality, productivity, performance and reliability improvement.
– Reducing efforts.
– Avoiding software project risk.
– Minimizing test and debbugging efforts.
– Avoiding to hire new skills especially for small companies…etc.
In general, teamleaders and managers focus more in the reducing cost advantage especially in small companies. In fact, reusing existing solution can provide great benefits and the cost reduced from the planing, development, testing and deployment phases can be used in training and optimizing the solution (Frakes, 2000).
Costs can be significantly reduced with the use of existing systems; Depending on the size of components or software savings might vary. For example costs saved by the reuse of database engine (as a software component) are considerable compared with the file system access component (that can be used to build a database engine). However, the size of the component is not the only factor that can affect the costs. In fact, other might be considered when thinking costs as:
– The level of complexity of components.
– The in-house skills for deploying and maintaining the software or component.
– The integration limitation (Constraints).
– The independability of the component…etc.
In fact additional costs can be required in specific situation for :
– Staff training.
– Specific customization.
– Additional hardware/software requirements.
– Licensing fees…etc.
Finally, the software reusing can provide a great advantages especially for cost and efforts reducing; However, the integration process needs some pre-analyze and studies before being applied.
– Roy Rada (1995). Software reuse. Ablex Publishing, ISBN:1-871516-53-6.
– William B.Frakes (2000).Software Reuse: Advances in Software Reusability. 6th international conference, ICSR-6 Vienna, Austria. ISBN: 3-540-67696-1.
– Johannes Sametinger (1997). Software Engineering with reusable components. ISBN: 3-540-62695-6.