Presentation: Domain-specific Engineering for Productivity and Quality
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:
- the product-line/products dual lifecycle of domain and application engineering
- reuse-driven adoption and improvement of the product-line/products dual lifecycle
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:
- Explain the use of DsE for a market-oriented product line business
- Show how to assess and improve reuse maturity as an extension of the CMM
- Show how to assess the business and technical viability of candidate DsE domains
- 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:
- Scalability. DsE can be used at the component level by individual developers, at the work product level by projects, or at the product level by programs responsible for a strategic business initiative. It adjusts to suit different size markets and products whose depth and breadth can grow through a systematic series of planned iterations over time. The DsE process and its activities vary depending on the scope and extent of its intended usage.
- Flexibility. DsE is an infrastructure for disciplined engineering methods. It does not dictate the use of specific methods of management, requirements, design, implementation, or verification. These methods are the choice of each adopting organization, consistent with their existing standards and anticipated needs. Similarly, each DsE activity can be effectively performed manually or can be aided or subsumed by automation, to varying degrees, depending on the cost-benefit to the organization and its business needs.
- Decision-centricity. DsE guides the standardization of products and process based on similarities in a set of similar products, reducing differences to a set of deferred decisions. These decisions are normally at the level of (component, work product, or system) customer/client needs expressed as requirements and engineering constraints. By systematically tracing essential differences in the form and content of products to these decisions, generation of a particular product becomes a mechanical, optionally automated, procedure.
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:
- An inefficient, bureaucratic production process
- Unreliable, inconsistent, and ad hoc methods
- Reactive, detail-oriented management
- Inadequate and ineffective automated support
- Inadequate investment in retention of business and technical knowledge as a capital asset
- Poor communication among engineers, marketing, and customers
- An inability to rapidly adjust and respond to changing customer needs and technology
- An inadequate ability to predict and control the operational characteristics of software
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:
- management practices for strategic, incremental, and iterative planning, configuration management, and quality assurance
- product engineering practices for requirements analysis and specification, architectural-level design, and component-level design, implementation, and verification
- process engineering practices for specifying, documenting, and automating support for a tailored domain-specific application engineering process
- productization practices for verification, validation, and delivery of the resulting domain product into use by application engineering projects and for feedback of needed improvements and changing needs
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:
- Opportunistic, for enhanced project-level reuse
- Integrated, establishing coordinated management of projects for standardized work products
- Leveraged, aspiring to standardized products produced through an optimized process
- Anticipating, achieving co-evolution of the domain and the targeted market
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.
- Motivations for a domain-specific market orientation
- Principles and concepts of DsE for product line businesses
- Experience and insights
- Process adoption and improvement
- The adoption/improvement process
- Assessing the situation and setting objectives
- Creating a transition strategy
- Domain engineering
- Domain management
- Domain definition
- Product family engineering
- Process engineering
- Project support
- Application engineering
- Opportunistic approach
- Integrated approach
- Leveraged approach
- Anticipating approach