Friday, February 8, 2008

Ingredients for Reuse Introduction: Make your Mix

In several talks which I have given, different attendants have asked me about how to introduce reuse in companies. At the RiSE, we have many papers and seminars about reuse introduction, reuse maturity models, frameworks, tools, etc. But, the main question often is: what are the ingredients to perform it?

During the First RiSE Summer School on Software Reuse (RiSS), we had some interviews with the keynotes speakers about this aspect too. In this post, I will not concentrate in academic references or papers. You can read some of them here or with other researchers such as Bill Frakes, Maurizio Morisio, Jeff Poulin, Ruben Prieto, Martin Griss, Wayne Lim, Will Tracz, etc.

First of all, your CEO or Top Manager should be convinced that reuse can be a good way for your organization to improve the time-to-marketing, quality and reduce costs. It is necessary because they will send this message for all the organization. It happens often in quality programs, for example. In addition, I believe that all the organization should understand and believe in this idea, i.e., the culture should be spread from project managers until software engineers. Otherwise, this effort cannot work properly. But just understand and accept the idea is not enough. We need to train the necessary staff to introduce reuse. In some cases, the people need to know what can help, what are the available techniques, tools and metrics. With people convinced/motivated and trained, I think that is also important to have a reuse plan. It is necessary for the reuse team as well as for the CEO because you should show clearly the steps to introduce reuse, the milestones, the risks, the costs, the benefits, i.e., you should show that the approach is systematic with a defined begin-end cycle.

So, in this path, a pilot project based on a specific domain or not should be considered to show it. For this pilot, the plan can address to analyze applications in the organization [what is common and variable, profile of the developed software], change or adapt the current process, collect other data, define some [specific] tools and track the pilot. It working well is time to analyze the pilot, understand the problems and strong points, learn with the process, present the results for the sponsors, and spread it for more areas in the organization.

4 comments:

Vinicius Garcia said...

I agree with Eduardo. Introduce reuse is more than pick up a guideline, read, understand and put the activities and tasks in practice. In my point of view, the human (a reuse engineer expert) interference is necessary to take key business decisions.

When we analyzed the Brazilian software organizations, for example, we found some situations that do not allow an approach with some general guidelines.

For some of these organizations, systematic reuse is not a good choice.

In this context, our main efforts towards a reuse introduction framework collect these different aspects related to the business and organizational concerns.

Moreover, I think that the beginning of a reuse introduction program starts with the main activities that Eduardo described: broke the cultural "walls", train the staff, convince/motivate the main interested and involved parties in the program (ceo, engineers, managers, ...) and specify the strategy based on the business goals and organizational strong and weak points.

Anonymous said...

So far, so good. But how is your experience in introducing reuse in companies, apart from academic? Have you got some cases?

Eduardo Almeida said...

Hi, my experience is academic as well as based on industry. Academic because I have 7 years investigating the reuse area. Practical because we are at RiSE a start-up company focused on reuse where I have worked by 3-4years at C.E.S.A.R.

mapusoft said...

Hello,

I came across your post on software reuse and found it to be inline with our company’s goals. MapuSoft’s is founded on the goal to provide software reuse tools to the embedded industry, all of our products are designed to help developers reuse their software.

Our product OS Changer allows legacy software to be reused on a different OS platform. Our product OS Abstractor allows for the development of portable code and provides both BASE common commercial APIs and POSIX APIs for development. Our product OS PAL (OS Porting and Abstraction Lab) integrates OS Changer and OS Abstractor in an Eclipse-based IDE for host development, porting and optimization and provides code generation for multiple target operating systems to run the same code on different OS platforms. We also provide a product called AdaMagic, which converts Ada code to C/C++ to accomplish software reuse. We offer WinDriver for the development of drivers across multiple operating systems.

More information about our products and company can be found here: http://www.mapusoft.com/

Thanks,

Marianne Crowe