Prosperity Heights Software

Course: Domain-specific Engineering



Presentation: Domain-specific Engineering for Productivity and Quality

Synopsis

Reuse-driven Definition, Adoption, Performance, and Improvement of a Software Process for a Market-oriented Product Line

AIMS AND OBJECTIVES

The aim of this course is to give participants an understanding of the nature and benefits of Domain-specific Engineering as a strategic business initiative. The Domain-specific Engineering (DsE) methodology defines an approach for the disciplined engineering of a family of similar products and an associated process that enables the rapid manufacture of customized software-based systems/products for a market of diverse and changing customer needs. The DsE methodology provides detailed guidance at two levels:

Attendees will learn how to recognize appropriate product line business opportunities and to institute and improve a DsE approach for those businesses. The prospective audience for this course is experienced technologists and managers interested in techniques for competitive advantage and market leadership. Prior understanding of the motivations and means of process improvement, organizational change, and product lines is an advantage.

This course has four specific objectives:

  1. Explain the use of DsE for a market-oriented product line business
  2. Show how to assess and improve reuse maturity as an extension of the CMM
  3. Show how to assess the business and technical viability of candidate DsE domains
  4. Show how organizational objectives motivate DsE process tailoring
PURPOSE AND SCOPE

The defining principal of DsE is the concept of program families, underlying which is the idea that similar problems can and ought to have similar solutions. The software services industry perceives every problem as unique requiring a unique solution. The commercial software products industry perceives every problem as the same permitting a single solution for everybody. Neither view is wholly correct. A more accurate view is that many people share similar problems that deserve neither unique nor totally identical solutions. The goal of DsE is to permit products that satisfy customers’ similar needs with similar products that have been customized to address only important differences in those needs. Organizations with a commitment to treating expertise in the problems and solutions of a coherent market as a corporate asset succeed with a DsE approach.

The value of the DsE methodology derives from several distinctive aspects:

SUMMARY OF MATERIAL

The concept of Domain-specific Engineering (DsE) has developed over the last 10 years in response to the problems faced by organizations in developing and maintaining large software-based systems. Complementary trends in manufacturing have motivated the concept of mass customization, in which mass production techniques are used to produce a custom-tailored product for each customer. DsE is a direct successor and generalization of the Reuse-driven Software Processes methodology developed by the author at the Software Productivity Consortium (SPC) in the early '90s.

DsE is a systematic attempt to address as a whole all of the symptoms of the software problem which results in excessive costs, delays, and errors in delivering products that satisfy customers' actual needs. The underlying problems are impossible to resolve fully through piecemeal solutions. The premise of domain-specific engineering is that a focus on the needs of a market in which customers have similar needs provides an opportunity for much greater leverage than is possible with the general purpose approach to software development that is prevalent in industry today. The perceived obstacles to efficient, reliable development are:

Despite this formidable list, DsE is an effective, systemic approach to addressing all of these issues. It achieves this by providing a comprehensive framework in which the best available techniques for addressing each can be applied intelligently and improvements can be introduced incrementally. This has the added advantage that the particular needs and accepted practices of each adopting organization and its market can be accommodated in a tailored approach.

Although there are well-known inherent organizational and cultural obstacles to adopting a change of this magnitude, RSP/DsE has been modestly successful in its use. Programs in organizations such as Rockwell, Boeing, Lockheed-Martin, and Thomson-CSF have been using it since 1990. It has been used effectively in business areas such as global positioning services, satellite avionics, training simulators, air traffic control, and train control. Based on this continuing experience, there is a good understanding of how organizations can institute a successful DsE practice.

For this purpose, DsE encompasses an approach to reuse-driven improvement of the software process for product line business organizations. Building on the SEI's Software Capability Maturity Model (CMM) and the SPC's Reuse Capability Model (RCM), we define a unified model for adopting and improving a DsE dual life-cycle engineering process. The model presented is appropriate for use by product line organizations attempting to institute systematic reuse. Instituting a domain-specific process provides the necessary context and associated constraints for optimally leveraged reuse. Reuse-driven process adoption and improvement is described in more detail in the PHS tutorial on Reuse-driven Process Improvement.

The domain engineering facet of DsE is well established through five years of industrial use. The objective of DsE domain engineering is to create a product family and an associated application engineering process for the production of instance products. The DsE approach to domain engineering emphasizes the understanding and formalization of the variability among a set of similar products as the key to gaining maximum leverage for a product line business. Variability is formalized as a decision model which characterizes the adaptability needed in a product family in order to produce needed instance products. From the perspective of the application engineering process, the decision model defines the deferred decisions that must be resolved in order to uniquely determine a product that will satisfy a specific set of customer needs. All other aspects of domain engineering derive naturally from this basis along with accepted sound engineering principles and practices for effective software development. In this respect, all aspects of software engineering are considered including:

Although the specific details of application engineering practices are determined for each product line business by domain engineering, experience has shown that the process generally conforms to one of four general models, in increasing order of required effort and resulting capability:

DsE provides for the derivation of a process tailored to provide the desired level of capability indicated. Domain engineering then organizes its efforts to enable this process by providing appropriate guidance, tools, and reusable assets for the use of application engineering projects.

Topics
  1. Overview
    • Motivations for a domain-specific market orientation
    • Principles and concepts of DsE for product line businesses
    • Experience and insights
  2. Process adoption and improvement
    • The adoption/improvement process
    • Assessing the situation and setting objectives
    • Creating a transition strategy
  3. Domain engineering
    • Domain management
    • Domain definition
    • Product family engineering
    • Process engineering
    • Project support
  4. Application engineering
    • Opportunistic approach
    • Integrated approach
    • Leveraged approach
    • Anticipating approach



PHS