Software Engineering Institute Carnegie Mellon

Salion, Inc.: A Software Product Line Case Study

3   How Salion Builds Its Software Product Line

A product line approach to software involves three essential activities: (1) development of core assets, (2) development of products, and (3) management of the product line operation at both technical and enterprise levels [Clements & Northrop 02]. The order in which core asset development and product development occurs is not fixed.1 

Many organizations begin a software product line by developing the core assets. These organizations take a proactive approach [Krueger 01]. They define their product line scope to define the set (more often, a space) of systems that will constitute their product line. This scope definition provides a kind of mission statement for designing the product line architecture, components, and other assets with the right built-in variation points to cover the scope. Producing any product within that scope becomes a matter of exercising the variation points of the components and architecture--that is, configuring--and then assembling and testing the system. Other organizations begin with one or a few existing products and use them to generate the product line core assets and future products. Such organizations take a reactive approach.

The proactive approach has obvious advantages--products come to market extremely quickly with a minimum of code writing. But that approach also has disadvantages. It requires a significant up-front investment to produce the architecture and components that are generic (and reliable) across the entire product space. And it also requires copious up-front predictive knowledge--something that is not always available. In organizations that have long been developing products in a particular application domain, this is not a tremendous disadvantage. For a "green field" effort like Salion's, where there is neither experience nor existing products, this is an enormous risk.

The reactive approach has the advantage of a much lower cost of entry to software product lines, because the asset base is not built up front. However, the quality of the architecture and components of the product(s) used as the basis for the asset base must be robust, extensible, and appropriate to future product line needs. This is not a trivial prerequisite.

Krueger describes a form of the reactive model that works by building the first system (or a number of small systems) and, when a new product is defined for a new customer, "reacting" to it by refactoring its design to define what is now common across all members of the emerging product line and what varies [Krueger 01]. Variability among systems is handled, if practical, by making the system configurable with respect to that variability. Otherwise, the special need is treated as a customization that the organization may or may not be willing to implement for that customer, depending on business criteria. According to Krueger's model, the difference between a configuration and a customization is that the customization requires new code.

Salion adopted Krueger's reactive model. It first produced a "standard" product as its entry into the market. That product formed the basis for Salion's software product line and the basis for each new customer-specific product it fielded. The standard product was more than an engineering model from which "real" systems were produced; it gave Salion a very enviable entrée capability into customer organizations (see Section 2.7).

The rest of this section describes in greater detail Salion's software product line approach in terms of the product line practice areas [Clements & Northrop 02] that are especially germane to it. Each practice area is categorized as software engineering, technical management, or organizational management. Rather than organizing the practice areas by category, we organize them as follows to better show the evolution of Salion's product line:

We begin by describing one of the most key aspects of the Salion story: how Salion's reactive model gave it a way to handle unforeseen variations through partially reactive product line scoping.  

 

3.1   Scoping

A product line's scope is a statement about which systems are in and out of the line's declared area of business. For organizations that take a proactive approach, their initial scope consists of the description of a set (more often, a space) of systems that will constitute their product line.

Salion was unwilling to a priori rule any system out of its product line's scope; a small company finding its legs cannot afford to turn down business. Moreover, in any "green field" approach, a firm scope definition would be very risky. Salion instead began with an informal scope definition based on the variabilities outlined in Section 2.4--a list that itself has grown over time. As customer products were added to Salion's repertoire, a de facto scope definition has emerged. As more products have been delivered, Salion's confidence in its original product space has grown. Now the scope revolves around the following variations that will cause the company to engage in customization work:

  • forms and screens

  • reports and exporting data

  • bulk load requirements

These variations represent the three ways in which Salion expects to customize products. On the other hand, workflows, for instance, also remain a point of variation, but do not require customization. Rather, Salion's software is configurable with respect to workflow. Salion does not regard workflow as a dimension of its product line scope, because practically no work is required to achieve that variation.

And now, Salion's reactive scope definition has come to play the same primary role as a proactive scope would--it defines the company's business area. For example, it provides the marketing department with cues about how to engage the customer (see Section 3.7). The marketers now ask customers what their requirements are in the three areas listed above, whereas before, the marketers were much more likely to engage in an open-ended discussion about requirements. The scope also gives strong hints about what's "out." For example, when an early customer wanted to have a new kind of domain object modeled, Salion was quick to accommodate the request. Now, however, Salion is more likely to push back and try to frame such a requirement in terms of the standard (OAG) business object model that it has adopted.  

 

3.2   Understanding Relevant Domains

In Salion's case, there was no long history of application domain expertise from which to precisely define anticipated products. In many ways, its products chart new territories. However, despite the newness, it did not proceed without domain investigation. Its founding organization, McKinsey & Company, turned over to Salion its extensive research into the manual management processes of custom and semi-custom manufacturing organizations that rely on bids and proposals to win business. This research provided not only the necessary market analysis for Salion's business proposition but also a domain knowledge base in acquisition management. Salion also drew on its own experience in related domains such as workflow and process enactment. In addition, several key people at McKinsey & Company had prior experience in ASP companies--a model that would come in handy at Salion.

Given this foundation, there is considerable evidence of the high degree of domain understanding that Salion accrued and modeled. In particular, it

  • developed a rich set of business use cases, which has become Salion's de facto domain model and has remained relatively stable

  • defined core schema that has remained exceedingly stable

  • developed a Customer Business Object Model--a spreadsheet of objects and attributes that includes such information as where the objects are located in the database, what they are called in the user interface, and in which screens they are used. This model enables the architect and database administrator to build what is necessary. It has become so mature that it is now an artifact they send out into the field to be "filled in."

  • embraced the OAG model, which has proven to be a very sound choice for its application market

The "Understanding Relevant Domains" practice area is likely to be a source of risk for new organizations, especially if they are venturing into new application areas. Salion seems to have successfully mitigated that risk.  

 

3.3   Process Definition

A strong software process played a role from the beginning. Salion knew that the complexity of an unknown number of customers requiring an unknown number of variations would threaten to spin out of control of the company's small staff. So it put some strong process safeguards in place.

First, Salion decided to adopt the Rational Unified Process® (RUP®) to guide its development activities [Kruchten 00]. It overlaid that with the VRAPS (vision, rhythm, anticipation, partnering, and simplification) approach [Dikel et al. 01]. VRAPS represents an approach to software development that transcends tactical issues (such as what objects to create) and instead emphasizes strategic concerns such as keeping everyone in the organization aligned, dealing with change events, making sure that the right people are involved, keeping the architecture simple, and establishing a regular pulse-like release schedule in concert with market conditions.

Into that mix Salion added some aspects of Extreme Programming [Beck 00]--namely, it carries out twice-daily builds, performs constant unit testing, and uses contracts as the interface among units. Also, every month it refactors its system's design to identify new commonality.

Keeping everyone aligned with the company's vision is a central theme of Salion's story. Salion applies RUP to write use cases not just for the company's software, but also for its business.

Figure 2 illustrates the Salion software solutions that realize the business use cases defined in the business use case model. Each product is represented as a package of functionality that provides extensions or modules that can be turned on or off, depending on the subscription level of each customer. This way of thinking permeates the business.

The business use case model sets the strategic direction of the company. Salion uses it to gauge the attractiveness of prospective clients. It keeps everyone on the same page in terms of knowing in which businesses the company is--and is not--engaged.

This capacity for keeping a group of people working synchronously toward a common goal is the essence of strong process definition and discipline.  

 

Figure 2: Salion's Business Use Case Model
Figure 2: Salion's Business Use Case Model  

 

3.4   Architecture Definition

Every successful software product line depends on the right architecture. For Salion, this means an architecture that blends general concerns about runtime efficiency and protection of confidential data with production concerns about taking advantage of product line commonalities.

Salion's system architecture, shown in Figure 3, provides three tiers: (1) a front-end tier on top, (2) a core platform in the middle, and (3) a persistence layer (database) on the bottom. The front-end tier consists of a pair of JavaServer pagesTM (JSPTM) servers, to provide redundancy for increased reliability. Hosted systems (e.g., Salion hardware running at Salion's site) share the core platform and persistence layer, but each customer gets a dedicated pair of front-end servers with a unique uniform resource locator (URL) for access. This is done to provide high availability and prevent data confidentiality breaches across customer systems.  

 

Figure 3: Salion's Product Line System Architecture
Figure 3: Salion's Product Line System Architecture  

 

Customized software runs only on the front-end servers; the other platforms run common software. The front-end servers are currently simple and inexpensive Solaris boxes. The other hardware consists of about 10 "really beefy" (in the words of the architect) application servers that are responsible for carrying out the systems' business logic and core (common) applications, as well as hosting Web servers, the network infrastructure, and the security authentication subsystem.

This system architecture, and the way that the software is allocated to it, makes upgrades and customizations straightforward. If customers want a small upgrade to their customized software, Salion can provide it easily. If customers want an upgrade that will tax the capabilities of the front end, Salion can scale up that area without affecting any other part of the architecture or any other customer. A major upgrade that has widespread functionality or performance requirements can be done in concert with an upgrade to the application servers.

The software architecture is decomposed to be compatible with the deployment scheme just described. Also, the availability and use of commercial off-the-shelf (COTS) components dictate additional decomposition criteria (see Section 3.5). Variation points are implemented using the Façade design pattern [Gamma et al. 95].

The architecture for the product line is a firm by-product of the VRAPS approach's simplification principle. The chief architect has adopted a set of strong, sensible principles to ensure that the architecture is no more complex than is necessary.

As mentioned previously, security and availability lead the list of required attributes. Seamless 24/7 operation is a requirement, as is the unconditional preservation of customers' data confidentiality. These mandates precipitated the following foundational architectural decisions:

  1. The architecture is stateless. The system can always recover no matter what it is doing when an upset occurs.

  2. There is no single point of failure in the architecture. Salion uses a redundant network and a replicated Oracle database running in hot standby mode. The system is by and large composed of a set of identical homogeneous servers, and each server is either in service or out of service.

  3. Salion uses COTS components when possible, but does not hesitate to build its own components when necessary or to mitigate risk (see Section 3.5). The Java 2 Platform, Enterprise Edition (J2EETM) and the Common Object Request Broker Architecture (CORBA®) provide the underlying platform, but Salion's architect imposes guidelines for using Enterprise JavaBeansTM (EJBTM) to enhance reliability. One job of the company's database administrator is to control the queries sent to the database--writing tight queries and monitoring the Structured Query Language (SQL) that developers write.

Optimizations such as the use of careful SQL provide the key to performance and are chosen carefully. The architect takes responsibility for targeting the optimizations that will bring about real improvement and avoiding those that do not address a demonstrated need. For example, early on, the architect gathered data about where cycles were being spent in the architecture, namely, in Java Naming and Directory InterfaceTM (JNDI) lookups, object invocations, and static hypertext markup language (HTML) traffic. Armed with this data, the architect implemented four minor optimizations that quadrupled the system's throughput and provided a performance cushion that still holds. This is in contrast to an "optimize everything" approach that consumes developer resources and may not provide a return in runtime benefits.

The result is a software architecture that consists of four logical layers:

  1. presentation layer that provides a unified interface for accessing all the product's applications. This layer is devoid of business logic and corresponds to the "view" part of the Model-View-Controller pattern [Krasner & Pope 88]. Clients access this layer through a Web browser from an intranet or the Internet via hypertext transfer protocol (HTTP) requests. The software in this layer is HTML and JavaBean driven. It channels user requests to the appropriate calls or servelet invocations in the lower layers.

  2. business applications layer that comprises EJB components with session facades from the J2EE framework. Business logic resides in this layer.

  3. core services layer that provides the reusable subsystems, such as those for document and workflow management. This layer contains software for connecting enterprise resource planning (ERP) and continuous risk management (CRM) systems, and for functionality for importing existing data on customers' systems. The OAG business object model also resides here.

  4. persistence layer, where the Oracle database and Borland's Java database connectivity (JDBCTM) database drivers reside

In addition to those four layers, a unifying security framework exists alongside them. It protects the applications and data at each level by providing authentication and security services.

A typical product consists of about 40 independently built submodules totaling some 150 thousand lines of code (KLOC).

The goal of a product line architect is to provide a development and runtime environment in which developers don't have to worry about debugging cache, SQL queries, or transaction protocols--in short, to let the developers concentrate on the application's business logic. The architect has tried to instill an architectural culture within Salion, based on the following principles that ground the nimble, flexible architecture:

  • Understand and capture the rationale behind every design decision. The goals are to know why you want to do something before you do it and to be able to look it up afterward. For example, why did we use a COTS component here, but not there?

  • Solutions are not needed when heuristics will do. This philosophy has manifested itself in a reluctance to implement a complex generic solution to something when it is easier to write a small bit of custom code to handle each situation as it occurs.

  • Instead of letting important information and experience slip away, Salion's culture encourages their capture in structured repositories that can be accessed later.

  • Provide scalability and eliminate complexity. For example, there is no cache in the architecture because it is unnecessary. CVS is the configuration management tool of choice because it's free, everyone knows how to use it, and it's far simpler than the gold-plated industrial-strength configuration management (CM) tools that many organizations use.

This attempt to instill an architectural philosophy throughout the company is another example of how Salion wants to make sure that the entire staff shares a unified vision. If architectural stakeholders hold the same vision as the architect, they will come to understand which kinds of changes are feasible, which are likely to be met with resistance, and (most importantly) why the decisions to make them support the organization's business model.  

 

3.5   COTS Utilization

Salion's philosophy about using COTS components reflects its deliberate commitment to simplicity, but not at the expense of quality. Salion's chief architect and vice president of engineering are both former employees of a major Web search engine site/content provider. In four years, they watched the site/provider's usage go from 45,000 to 45,000,000 page views per day. With millions of people using the system, they learned very quickly to do what it takes to avoid being awakened in the middle of the night with a business-threatening problem.

Salion's major concern about COTS products centers on its ability to provide the necessary quality attributes (i.e., performance, security, and reliability) and the product's ability to scale. When the product's ability is in doubt and no practical workarounds are available, Salion will not hesitate to build the necessary components in-house.

Salion's rule of thumb is that if the function is unimportant, COTS will do. If there's an actual or de facto standard for some aspect of the system, COTS will do (as there is likely to be a choice of more than one vendor that meets the standard). Otherwise, that component is a strong candidate for in-house implementation.2

An example is the commercial workflow system that Salion adopted initially. After discovering that the system didn't have the necessary flexibility, scalability, or reliability, and that it didn't obey any applicable standard, Salion jettisoned it in favor of a homegrown version.  

 

3.6   Tool Support

Tool support is an area where Salion has shown a willingness to be innovative. In addition to the usual array of software development tools, Salion employs two emerging product-line-specific tools: Gears (http://www.biglever.com) and CloneDR ( http://www.semanticdesigns.com).

Gears is designed to permit organizations to manage the commonality and variability present in its product line assets. Gears works by identifying artifacts (e.g., source code files) that are used in every member of the product line and artifacts that are used in some, but not all, members. Then it facilitates the build process for a particular product by retrieving the assets that belong to that member and making them available to the normal build tool.

The advantages of Gears are four-fold. First, it obviates the need for complicated layers of  #ifdef  statements in the code that quickly become impossible to read and understand in all but the simplest cases. Second, it allows a vastly simplified build process that can now be identical for every member of the product line. Third, because it is file based, it can work for non-code artifacts such as design documentation, user documentation, test cases, data files, work schedules, and so forth. And fourth, it reinforces a fundamental concept in product line development--that the entity being built is not a set of products but a single product line.

The last point is subtle but fundamental. Product line organizations with the most success view their endeavor not as building an ad hoc set of products that might have things in common, but rather as developing and nourishing a strong singular product line. Gears reinforces this by providing a single venue for building every product, by explicitly identifying common artifacts and product variants, and by mapping artifact variations to products.

Operationally, Gears lets Salion run two variants at the same time without having to worry about "breaking" Salion's standard product.

Currently, Gears helps Salion manage a total of 3,333 files, 88 (2.4%) of which represent variations. Put another way, 97.6% of the files are reused (i.e., do not change) across products.

CloneDR is a tool that provides clone detection--places where the code is almost similar and can be refactored to extract the commonality. CloneDR uses sophisticated algorithms that go far beyond simple syntactic comparison. Salion found that some 13% of its stable code was essentially duplicate and could be removed and combined after some simple reengineering. In one case, the removal of three clones eliminated some 27 KLOC.

Together, Gears and CloneDR provide a naturally synergistic capability for generating a product line from two or more already-fielded systems that were developed from each other. Identical clones become common components; almost-alike clones and product-specific software define dimensions of variation to Gears, which can then quickly cast the products as variations of a single product line.  

 

3.7   Marketing/Customer Interface Management

In the beginning, Salion employed a "solution selling" strategy to connect with its customers. This strategy involved performing a needs assessment for a customer and then selling to those needs. The needs turn into business use case models, following RUP, at a two-hour meeting held every Wednesday. This so-called "joyous vision" meeting is an executive-level discussion among the chief financial officer (CFO), the vice president of marketing, the vice president of engineering, the chief architect, and others at this level to choose and prioritize among business opportunities, all under the auspices of Salion's own business use case model that drives the company. Salion still employs this approach, but as mentioned in Section 3.1, is much more inclined these days to channel the customer's statement of needs into the three main dimensions of variation inherent in its product line.

Thus, like most product line organizations, Salion's marketers do not have carte blanche to sell whatever the customer wants. Rather, they must first receive approval or confirmation that a proposed system is in the product line's scope. Of course, they try to sell each customer a basic system first (one that can satisfy the customer's needs through preplanned configuration) or, failing that, a variant already fielded.

The first litmus test applied to a new customer need is whether it's in Salion's business use case model. For instance, a customer who wanted to buy Salion's workflow engine would likely be turned down, because there is no use case that says Salion is a component provider.

If the customer's needs can be met only by a new system, Salion first predicts the cost based on past performance (see Section 3.9). At that point, whether to achieve the requirements by customization (new code) or configuration (expanding variabilities already in place) is a technical question that must be answered. But its answer is linked to business questions dealing with costs, the likelihood of future use, and which strategy is likely to make Salion more money. Thus, Salion's marketers must walk a fine line between keeping customers happy by selling features and limiting promised customizations.

But as a start-up company, Salion has been loathe to turn down business, and being able to say "yes" to a customer right out of the gate is an enormous advantage. Because of its flexible architecture and robust development process (see Section 3.8), Salion can say "yes" most of the time.

Also contributing to this ability to say "yes" is an innovative marketing arrangement made possible solely by the product line approach. All implementation work for a customer occurs in two phases. During the first phase, Salion installs its standard system for a customer within 60 days. During the second phase, Salion builds and installs a customized product. While the standard system is running, Salion works with the customer to define customizations and then, based on this elaboration step, commits to a delivery date and (fixed) contract price. This two-phase approach has many benefits:

  • It makes customers happy. In a fixed, relatively short period of time, they can begin receiving benefits from the system.

  • Having a working system in place allows Salion to work with the customer to define, elaborate, and specify customizations in a low-pressure setting.

  • It gets the Salion system in the door, providing the customer with most of the eventual functionality in a short time. Salion regards this capability as a big part of saying "yes." The remainder of saying "yes" can be deferred until the second phase.

  • Having a working system in place lets the customer define desired customizations more intelligently, in the context of what is available and feasible. The customer speaks the language of the system, so to speak, as opposed to asking for arbitrary features with no operational pedigree. The customer becomes more of a partner.

The customer's primary interface with Salion is through its Professional Services group, that configures delivered systems, initiates customizations, and (in the case of one-time-use-only components) might actually build custom parts. Salion understands that its customers just want a system and don't want to be bothered with configuring it. So that's what Salion delivers, and whether customers get their systems through customization or configuration is a detail Salion can keep hidden and over which it can maintain flexibility.

As mentioned in Section 3.1, the marketing group gently steers the customer to three areas of customization: (1) forms and screens, (2) export and reporting, and (3) bulk load (i.e., legacy data migration) requirements. Other variations are possible, but they are done via the configuration of built-in preplanned variation mechanisms, and so do not represent an area of intense concern to the development group.  

 

3.8   Operations

The "Operations" product line practice area is concerned with the day-to-day running of the product line and how various stakeholders come together to cooperatively make sure that new products in the product line are launched, built, and deployed smoothly.  

3.8.1   Normal Operation

Salion's operational strategy manages three different product cycles at any one time. While one product is in the inception stage, another is in requirements design and elaboration, while a third is in development.

The business use case model is the driving impetus for all three stages. This leads to other use case models for a given product, subsystem, or sub-subsystem. Those models are standard RUP practices, but as mentioned previously, Salion has also adopted some of the tenets of Extreme Programming. These tenets include Salion's twice-daily builds, emphasis on unit testing, use of contracts as the interface among units, and monthly refactoring to identify new commonality (which the Gears tool helps manage).

Salion's "rhythm" part of the VRAPS process comes from a planned release every 30 days. At that interval, a packet is given to the user-interface developers working on the front end and to the developers working on back-end components. There is one packet per component, and typically 5 (out of the 40) are being worked on at a time. A packet contains any of the following, as needed:

  • list of applicable use cases

  • high-level use case models

  • data models (for the database administrator)

  • class diagrams

  • user-interface page flow

  • user-interface mock-ups

  • database schema

A new release might contain enhanced generic properties or features, or represent a new variation contained in a new member of the product family.

After coding is complete, the system goes into quality assurance (QA) and testing. Most of the process after this point is scripted, handling checkout from the CM system, the build step, and the application of a suite of some 350 white-box tests. All told, this process takes about two hours.

To keep problems from derailing the clockwork rhythmic process of development and release, a so-called "joyous love" meeting is held every Tuesday and Thursday to address implementation-level concerns and keep projects on track. The objectives of these meetings include

  • Come up with a contract between owners of front-end components and owners of back-end components. The contract could be a written interface or an informal agreement.

  • Resolve any communication or design conflicts.

  • Make sure that everyone is on track. In the words of one participant, they "will stop heaven and earth to resolve issues." The idea is to do what it takes to make sure that no one is being held up.

At end of each release iteration, the chief architect and some of the key developers have a "quiet week." They run scripts that show coupling/cohesion among modules and inspect code. They post a list of recommendations, which are addressed in the following release, after being prioritized in the next "joyous love" meeting.

The QA team, by contrast, is never idle and always working to maintain and improve the quality of the artifacts.  

3.8.2   Introducing New Variants

If a new product is given the go-ahead, the architect must decide how to handle the new requirements. Depending on several factors, the requirements might

  • become part of the new core capabilities

  • be built as core capabilities, but be added as part of a new licensing option

  • be built as a customization, but be included in the product builder's guide as a common customization request

At that point, developers are assigned to make the necessary changes to the various artifacts. In a pilot demonstration of the product line concept, developers were tasked with building a new variant that produced a special kind of report detailing the history of the kinds of bids the supplier lost. This change resulted in adding new business logic to that layer of the architecture and required about two days of effort. Out of almost 3,000 classes, only about 20-30 required modification.  

3.8.3   Phasing Out Old Products

To simplify its life-cycle support costs, Salion prefers not to maintain old versions of products. Where possible, this provision is built into Salion's contracts. When a customer product undergoes maintenance, the first inclination is to upgrade that product to the current version of all software, if possible.  

 

3.9   Data Collection, Metrics, and Tracking

Salion uses metrics as a key planning tool. At the time of our first visit, it had accumulated 12 months worth of data and heuristics that help it predict with confidence what it can do by when.

Use cases are used to drive productivity measures. Numbers that are lower than expected help Salion spot potential problems, such as wheel spinning due to inadequately specified contracts.

For each release, Salion measures the

  • planned number of use cases implemented

  • actual number of use cases implemented

  • release date

  • new use cases found

  • use cases per staff

  • number of bugs found

  • number of bugs fixed

  • number of JSP pages created

  • number of JSP pages modified

  • ratio of engineers to marketers used

These measures help Salion determine its capacity for new work and prevent it from promising more to a customer than it can likely deliver. They also help to avoid "yes you can, no we can't" battles by simply establishing an historical baseline and allow Salion to answer questions such as how much work it could do if it doubled its staff.  

 

3.10   Structuring the Organization

Every software product line organization must adopt an organizational structure that promotes the most advantageous production process. Although other variations are possible [Bosch 00], fundamentally there are two organizational structures for product lines that differ in who produces the core assets that are reused across all the products in the family. One model establishes a separate core asset group (sometimes called the "platform" group) that is separate from the groups that turn out products. The second model assigns responsibility for building and maintaining the core assets directly to the product groups.

Salion is small enough--with only 10 people involved in product development-that crafting a formal organizational structure is not paramount. However, it is still instructive to examine how Salion addressed the question that every product line organization must face: who builds the core assets?

Early on, before Salion sold its first product, it worked on building its so-called "standard system." This was the system that would form the basis of Salion's reactive software product line model. Future systems would be built from this one, and it is still the system that is installed initially for a new customer. Since a reactive model proceeds largely without knowing in advance what is going to be reused, all the assets were regarded as at least potentially core. During this start-up period, Salion's three-cycle operational approach (see Section 3.8) drove its organizational role assignments. There was no separate core asset team; everyone worked on producing successively more capable versions of the product.

This model has persisted even with Salion's third customer product under way. When Salion needs to make a major customization, a product-based team is assigned to make it happen.  

 


1 Regardless of the order, there is perpetual iteration between these two activities throughout the life of the product line.  

 

2 This defined decision process also qualifies as a practice in the "Make/Buy/Mine/Commission" practice area.  

 

TM Rational Unified Process and RUP are registered trademarks of Rational Software Corporation.  

 

TM Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.  

 

® CORBA is a registered trademark of Object Management Group, Inc.  

 

 

 


[Title Page]    [Abstract]    [Acknowledgments]    [1 Introduction]    [2 Background]    [3 How Salion Builds Its Software Product Line]    [4 Payoffs and Benefits]    [5 Conclusions and Lessons Learned]    [6 Conclusions]    [7 For Further Reading]    [References]   [DTIC Page]    [PDF file]