Everything can be reused

Introduction

The development of human civilization does not express that we are smarter than the ancients. The reason is human can constantly study and copy the available knowledge and the previous experience. In the same way, an outstanding software company needs to reuse the successful experience and technology. However, software reuse does not singly include reuse of technical aspects. The reuse scope can be expanded. Actually, during the software development process, almost everything can be reused, such as technology, management, knowledge, estimating and testing.

Technology reuse

Technology reuse can reduce the total project duration. Currently, the business trend of IT industry is to improve the update speed and the development efficiency rather than to study the technology in every detail. Moreover, the reuse of technology mainly includes the design reuse, component reuse, library reuse, code reuse, etc. [1]

In particular, it can be divided into three parts. Firstly, the reuse can happen within a single project. Reducing the duplicate code is the basic coding ability, and it also is the simplest reuse rule. Secondly, developers have to reuse the open source resources and the shared components. Nowadays, numerous shared resources are available, such as code, components, and softwares. However, developers must consider the copyright issues and test these resources carefully before reuse them. Thirdly, although neither two projects are extremely similar, the reuse can across different projects. No matter what the project is, there exists a lot of content that can be reused.

For example, Microsoft has an Enterprise Library, which provides a set of Blocks. Their projects can directly use these Blocks and obtain the corresponding service. For example, the Data Access Application Block provides the API of data access. Based on this Block, programmers can avoid developing the database access code again.

Management reuse

Microsoft always summarizes its successful experiences based on numerous large projects. The Microsoft Solution Framework (MSF) referenced some of these experiences, which has been recommended to the whole Microsoft and even the software companies around the world. Both the MSF eight principles and its team model are playing an immeasurable role in the current project management area. In addition, for IT industry, there is various development methods can be referenced and used. Such as the Rational Unified Process (RUP), the Agile, the Extreme Programming (XP), etc.

Nevertheless, the project management reuses cannot totally copy the available theoretical models. The reuses that related to their own business characteristics are much more useful than the reuses based on other software companies’ successful experience. Different companies have to summarize the experiences by practice, then specify the best experience into the corresponding process model, which will benefit to their future projects.

Knowledge reuse

Professional knowledge is the basis of customers’ requirements. The aim of technology improvement is to serve these requirements. Business software is a kind of software products that focus on a particular area and required high-level professional knowledge. Such as the financial software, the stock trading software, the construction budget software and the hospital system software. Hence, the developers who response to these kind of projects must have a corresponding professional knowledge. During the development process, poor knowledge will significantly increase the complexity of requirement analysis. Within this situation, developers tend to miss the project direction and only passively respond the customer’s demands.

In addition, customers might not only focus on the company’s technical level, but also play attention on whether the company helps them to reorganize the operational process or not, and whether the software improve their business benefits or not. In order to keep the knowledge superiority, most companies try to hire more employees who are familiar with the special industry. In fact, the best way of solving this problem is to reuse the professional knowledge. For example, arranging the business experts to implement the knowledge documentation, namely, the requirements specifications and the usage manuals. Training is another benefit method that can help all development members to have the appropriate knowledge.

Estimating reuse

In general, project estimation is inaccurate. An accurate estimation requires a deep and comprehensive consideration based on a variety of issues. Currently, there are many estimation methods, such as function point method and KLOC method. These methods are not faulty, but most developers might not be familiar with them and cannot give the full play on their actual effect [3]. In fact, project estimation cannot be handled effortlessly. It depends on the wisdom, the experience and the judgment ability of the employee who will estimate the corresponding value. Hence, the most effective way of improving project estimation is to copy and reuse their outstanding ability.

Testing reuse

Testing reuse [4] is essential and fundamental because it can improve the testing efficiency, increase the software quality and reduce the workload. The test engineers need to frequently reuse the test cases which have already found defects. Moreover, during the new feature testing, testers should reuse the previous test cases based on the available features, in order to make sure that the new feature will not break the original structure.

However, many testers cannot achieve to reuse these test cases. The critical reasons are shown as follows. Firstly, the project manager often compresses the testing duration, so only a part of the available test cases can be run. Secondly, many software companies do not attach importance to the testers. Thirdly, the automatic testing tools are still imperfect. Finally, the testing engineers have to continuously carry on the manual testing.

In my opinion, there are two possible methods of improving the testing reuse:
1. Specify the testing process. Testers need to accurately record all the defects and the corresponding test cases.
2. For each testing process, testers should summarize the experiences and lessons that may be reused in the future.

Conclusion

In summary, there exists a lot of methods that can be reused, such as the efficient coding method, the risk identification method, the project management method, the defect detecting method, etc. Certainly, the basic idea of reuse is to summarize the previous experience and use them in the future. That is why the reuse library provides a lot of useful help, which can improve the development speed and the product quality. Moreover, there is not a software company can obtain all the excellent developers and nobody will promise that he can work for one company forever. Therefore, the software companies not only have to pay attention to recruiting the outstanding employees, but also need to keep expanding their reuse library.

References

[1] Sommerville, I. (2004), Software Reuse. Software Engineering, 7th edition. Chapter 18.
[2] Guideline: Software Reuse.
[3] Software Management – Estimating Reuse Feasibility, AcqNotes.
[4] Lonngren, D.D. (2012), Reducing the Cost of Test Through Reuse.