Implementing a Software Factory at Bellcore Joseph Eng Bell Communications Research 444 Hoes Lane, RRC 1S227 Piscataway, NJ 08854 Tel: (908) 699-2559 Fax: (908) 336-2245 email: jeng@base.bellcore.com Abstract Bellcore is faced with increasing complexities in the development of software systems. Rapid advances in hardware and software technology, increasing demand of customers for lower costs and faster introduction of systems, and the need to highly integrate systems has made software development an increasingly challenging and difficult task. In an effort to improve the software development process and the ability to manage these complexities, a software factory is being defined and implemented at Bellcore. Fundamental to the software factory is the ability to reuse the various components (e.g. designs, architectures, software components, tools, experience/expertise) produced and utilized during a software development lifecycle [1]. The software factory's ability to team across organizational, project, and/or domain boundaries is critical to achieving reuse of lifecycle components. Through the reuse of lifecycle components, within a software factory that fosters teaming, improvements in software development productivity, software quality, and interoperability among software systems can be achieved. Keywords: software factory, software development lifecycle, reuse agents, resource teams, service teams, standard development environment, object-oriented, integrators 1 Introduction Bellcore is a major developer of telecommunications software systems for Bell Operating Companies and several independent telecommunications companies. Bellcore's software systems provide a wide variety of functions that support the day to day business of managing and operating a telecommunications network. These systems range in size (tens of thousands to millions of lines), language (e.g. c, c++, PL1), and platform (e.g. mini, mainframe). These systems also range in lifecycle stage. There are several new development efforts and also many efforts to evolve existing systems, through enhancements and maintenance. Because of rapid advances in hardware and software technology, increasing demand of customers for lower costs and faster introduction of systems, and the need to highly integrate systems to support the telecommunications business, Bellcore is working on improving the software development process to improve its ability to develop software systems. 2 Workstation Software Factory The introduction of the workstation as a computing environment is having a profound effect on software development efforts at Bellcore. The ability to present a graphical user interface (GUI) and an inexpensive computing environment has directed many Bellcore development efforts into the area of workstations. Workstation based systems development at Bellcore can be characterized as follows: * Few deployed systems but many emerging efforts * Workstation experience among a small group of technical staff spread across organizations * Interoperability and consistency are critical. Users will likely need to use several Bellcore and other vendor systems together to complete job tasks * Extensive use of object-oriented (OO) approaches Because of the important strategic direction that workstation based systems play, the minimal embedded base of workstation lifecycle components, and the initial efforts in OO technology and its potential in realizing easier and higher yields of reuse, the initial definition and implementation of the software factory will target workstation based systems development. The Workstation Software Factory (WSF) will be the framework to support and realize the benefits of reuse across multiple workstation development efforts. 3 Workstation Software Factory Model In defining the WSF, a factory model is being developed and refined [2,3]. An essential component of the WSF is high-performance teaming interactions between the WSF and workstation project teams. The following is a description of the components that make up the WSF. Refer to figure 1. Figure 1: Workstation Software Factory 3.1 Reuse Agents Reuse agents are staff with broad knowledge and experience in workstation development and technology. They are chartered to make reuse happen within a project team. This is done by placing a reuse agent into the project team early in the analysis/design phases of the project. The reuse agent actively participates in helping to design the system, bringing with him/her knowledge of reusable components, tools, methods, and processes. Through this role, the reuse agent can discover opportunities for reuse of lifecycle components and for teaming with other projects or components of the WSF. The reuse agent acts as the interface to the WSF. 3.2 Resource Teams Resource teams are staff with expertise and experience in specific areas of workstation development and technology. They are typically the gurus of their area and will work with the project team in integrating and utilizing new technologies and/or methodologies into the project team. The resource teams are short lived teams, which come together to address specific issues or solve specific problems relating to technology and/or development aspects of the project. It is the mechanism to facilitate technology transfer into project teams. 3.3 Service Teams Service teams are staff with expertise in areas of workstation development and technology that are common to all workstation projects. The service they provide is typically in areas that require a great deal of expertise and thus are more effective and economical if provided by a centralized team of experts. The service teams provide consultation service in assisting the project team in understanding and implementing common areas. 3.4 Standard Development Environment In order to foster conformity across multiple projects, a Standard Development Environment (SDE) is being defined. The SDE defines the software development processes, methods, tools, and components that are to be utilized by project teams in the development of a workstation based system. Processes and methods define the software development lifecycle. Tools and components support a project team in utilizing the processes and methods of the lifecycle. 3.5. Object Oriented Technology With many of the workstation development efforts also applying OO technology, the WSF will leverage OO technologies to improve software productivity, quality, and reusability. OO characteristics such as inheritance have potential in helping to make software reuse a reality. Through the WSF, we want to consolidate and accelerate the use of OO technology in order to realize the benefits of this technology. 3.6 Workstation Integrator The Workstation Integrator is responsible for integrating the tools and components of the SDE so they can be easily utilized by project teams. The tools and components of the SDE are certified by the Workstation Integrator and are then provided to project teams through an integrated software development environment that supports the use of the SDE. 3.7 Vendors In making new tools and software components available through the WSF, it is recognized that vendors will play a significant role. In many cases vendors will be suppliers of new tools and software components. 3.8 Software Component Builders In the case where there is no vendor to supply a tool or software component, internal component builders will be chartered to build the necessary tool or software component. 3.9 Workstation Factory Forum In order for the WSF to be successful, there must be management commitment behind the WSF approach. The Workstation Factory Forum (WFF) consists of management representatives of each of the software development organizations in Bellcore. Through the WFF, management representatives have the opportunity to direct the WSF so as to meet the needs of their respective development organizations. 4. The WSF Today The WSF is currently being applied to 5 workstation projects encompassing approximately 60 Bellcore staff associated with either a workstation project (e.g. analysts, designers, developers, testers, and line management) or the WSF (e.g. reuse agents, component builders, component integrators). Several aspects of the WSF have been implemented and are operating today to effectively stimulate reuse among the workstation projects. Reuse agents have been introduced into several project teams. They have been able to provide a single point of contact into the WSF. The reuse agents are able to work with the project teams to identify, early on, existing lifecycle components that can be reused. Also for system requirements in which no tool or software component currently exists, reuse agents are able to work with vendors and component builders to provide the tool or software component. The concept of service teams has also been well received. Service teams have been organized to provide services in distributed computing environment architecture, design, and performance. These service teams have been able to provide a team of experts in helping to solve the above areas that are common to all workstation development efforts. A SDE has been defined. The SDE definition specifies the standard tools and reusable software components to be used in workstation development. In specifying development processes and methods, current waterfall and spiral development models [4] have been augmented with a reuse analysis phase, where a reuse agent is placed into the project team to promote and look for reuse. Armed with a SDE and a good understanding of the problem domain being solved, the reuse agent recommends the parts of the SDE to be utilized within the project. The introduction of a reuse analysis phase has made looking for reuse a formal stage of the software development lifecycle. Efforts by the Workstation Integrator, to develop an integrated development environment, have been ongoing. A major aspect of this effort is the use of Broadcast Message Server (BMS) as the underpinning for an integrated development environment. BMS provides a message service which allows applications to communicate with each other and/or invoke each other. BMS is soon becoming an industry standard, and its use will allow a variety of vendor and Bellcore developed tools to be integrated to provide a consistent and cohesive development environment. One aspect of the WSF under development but not yet in operation is the use of information retrieval technologies in the implementation of an automated reuse repository. The reuse repository will house all the lifecycle components of the WSF. It will provide an access method in which users of the repository will pose queries in which they will specify their system requirements. The information retrieval mechanisms of the repository will respond with a list of lifecycle components and associated descriptions that best fit the query. It will also indicate how to go about retrieving the lifecycle components from the repository. Prototypes of a reuse repository utilizing latent semantic indexing technologies [5] have shown promising results. A reuse repository has not been put into operation at this point in the time because of the effectiveness of reuse agents and the Workstation Integrator. Reuse agents have been acting in the capacity of information retrieval and the Workstation Integrator has been able to bundle several reusable tools and software components into a deliverable software package. Although a very human intensive approach, reuse agents have been able to provide more personalized reuse consultation service, and thus has helped project teams understand the reusable lifecycle component and its use within the project. 5 Moving Forward with the WSF Until now, most of the efforts of the WSF have focused around creating an environment in which successful teaming can occur. Reuse agents, resource teams, and service teams have been geared toward breaking down the organizational, project, and domain boundaries that inhibit reuse across these boundaries. These teams and services will continue and expand as the WSF moves forward. As the WSF evolves, the application of OO technology will play a role in achieving larger scales of reuse. Work is underway to introduce OO methodologies and technologies to support the entire development lifecycle. Larger scale reuse through the definition of application frameworks is being investigated and as the technology matures will be introduced to project teams. Application frameworks are software frameworks in which a large percentage of the infrastructure and application of a particular problem domain can be easily defined and integrated. Once an application framework has been defined for a particular problem domain, only application specific details will need to be developed and integrated with the framework to produce an application. As OO methodologies and technologies are more pervasively introduced to project teams, through reuse agents and resource teams, both the SDE and roles of the Workstation Integrator will need to be refined to support OO approaches. Reuse repository and information retrieval technology prototyping will continue. Along with the prototyping effort will be the need to define formalized methods of collection and inventory of information for storage in the repository. It is hoped that within the year a reuse repository with an information retrieval mechanism will be made available to the general software development body. Finally, investigation of organization changes, such as software component build ers whose purpose is to produce reusable components, and development of new incentives and policies are planned. These will be put into place to support and promote adherence to the WSF. 6 Conclusion The WSF is the definition and implementation of a factory approach to software development of workstation based systems at Bellcore. An important recognition is that reuse must be a planned phase of the overall software development lifecycle. The reuse analysis phase must be supported through a set of reusable lifecycle components (i.e. SDE) that is supported by an organization(s) focused on making reuse a fundamental aspect of software development. In Bellcore's implementation of a software factory, several components of the WSF have been realized. Through the WSF that fosters high-performance teaming between the WSF and workstation project teams, higher degrees of reuse of lifecycle components are being achieved. The WSF's ability to team with workstation project teams is beginning to make reuse a fundamental aspect of developing a workstation based software system. 7 References [1] Wong, W., "A Management Overview of Software Reuse", NBS Special Publication 500-142, September 1986. [2] Basili, V.R., Caldiera, G., and Cantone, G., "A Reference Architecture for the Component Factory", ACM Transactions on Software Engineering and Methodology, Vol. 1, No. 1, January 1992, pages 53-80. [3] Cusumano, M.A., Japan's Software Factories, Oxford University Press, New York, 1991. [4] Bellcore Software Development & Service Policies, Special Report SR-STS-001748 Issue 2, Bell Communications Research, April 1991. [5] Lachbaum, K.E. and Streeter, L.A., "The Bellcore Advisor: An Expert/Expert Locating System Based on Automatic Representation of Semantic Structure", Bellcore 1990 Artificial Intelligence Conference, pages 71-76. 8 Biography Joseph Eng is a member of technical staff in the Software Technology Systems Area of Bellcore. He has worked on a wide variety of software projects. These include the development of several telecommunications operations support system s and the development of graphical user interface, workstation based systems. He is actively involved in defining and implementing Bellcore's Workstation Software Factory as an approach to improve software development processes and to facilitate higher scales of reuse. Joe has a M.S. in Computer Science from New York University and a B.A. in Computer Science from Rutgers University.