The importance of integrating software reuse into corporate culture
Corporations must systematically reuse code rather than throw away the investment and start from scratch.
Software reuse is a critical strategy for all software development groups. By reusing code while moving to the next-generation platform, corporations can leverage their existing software investment and lessen time to market. However, many companies are struggling to fully implement code reuse throughout their organization. In order to achieve efficient and methodical code reuse, organizations must integrate this goal into their culture.
Reusing code provides the greatest benefits to an organization if it is done systematically, rather than sporadically and opportunistically. However, there are many issues that can prevent systematic code reuse, both technical and non-technical.
Software reuse - Technical issues
On the technical side there are many differences between operating systems, such as the levels of task priorities offered by each OS, which make modifying code for a different platform tedious and cumbersome. This has brought the need for COTS porting tools that will automatically account for differences in operating systems to make the porting work quicker and easier.
In order to avoid porting issues altogether, organizations see the need for an abstraction solution to protect their code against future platform changes. However, developing an abstraction interface using native OS APIs will not give the portability and performance needed in an embedded application. Instead, a lower-level approach needs to be taken to ensure that the fundamental OS resources such as threads, semaphores, and mutex will behave the same across platforms and that performance is not impacted. Also, building and maintaining an in-house abstraction for multiple operating systems requires considerable time, money, and resources.
The developers must have detailed knowledge of each operating system and perform a lot of testing to verify portability across different platforms, which results in high costs. This is why many companies are turning toward a COTS abstraction layer that is maintained, tested, and verified by a third party, rather than taking focus away from the organization's core competencies. Using common APIs (provided by the COTS OS abstraction) across platforms also lessens any potential learning curve when developing with new operating systems, thereby making code reuse easier to adopt.
Just as reusing code on different operating systems has its own challenges, reusing code when moving to a different language presents difficulties as well. For example, many companies are now moving away from Ada to the more modern C language, due to a lack of programmers and support for Ada. These organizations are utilizing COTS language conversion tools for automatic conversion to avoid a rewrite.
Software reuse - Industry issues
On the non-technical side, while top-level executives and government agencies might see the benefits of code reuse, there is a lack of goal congruence with engineering groups and subcontractors. Many times these groups have psychological barriers to reusing code. They might mistakenly think that code reuse will cause their talents to no longer be necessary. However, by reusing their legacy code quickly and efficiently with COTS code reuse solutions, they are able to contribute their talents to new projects and product development, rather than being bogged down by wearisome porting work.
Organizations might also need to change productivity policies and benchmarks to effectively integrate code reuse into their culture. Rather than focus on how many new lines of code the developer contributed, they might need to reward shorter times for project completion. This will motivate developers to use COTS porting tools so that they can reuse as much as possible quicker to meet an earlier deadline. This will lead to more project completions, more new products, and ultimately more opportunities to get a larger market share in the organization's industry.
Many corporations are finding systematic code reuse difficult to implement due to both technical and non-technical issues, some of which have been mentioned here. However, software reuse remains a critical strategy for a corporation to decrease product development time and costs. For this reason, organizations are turning to COTS code reuse products such as those offered by MapuSoft Technologies () to lessen the software reuse effort.