There are many commonalities in information systems. If it is developed as a product, how can it be reused and expanded through the platform? The product line engineering method in the industry is a method for large-scale reuse. I also lived in the garden for a short time and found that the majority of technologies are concerned. In addition to technologies, there are still many issues that need to be concerned about in software engineering. For example, the software architecture platform is developed based on the product line engineering. I introduced scrum a while ago. Next I want to write several articles related to the product line, this article will briefly describe the four main concepts in the product line (variability management, business-driven, architecture-driven, two-phase life cycle) and hope to help users who are not familiar with product line knowledge.
Two concepts are explained before the explanation:
Product Family: A group of products built using common resources. A product family is defined based on the structural similarity of its member products. Product members are built on a general platform and are mainly set based on the technical connectivity between products. Product families can be reused in multiple product lines.
Product Line: A group of products that share a set of common management features that meet the specific needs of a selected market. A product line is defined based on market strategies, rather than the technical similarity between its member products. Features defined for a product may need solutions completely different from those of other member products. A product line may be provided together with a product family, but it may also require more than one product family.
In the next section, we will focus more on the concept of the product family when talking about the architecture platform.
Why product line Methods
With the popularization of software applications, enterprises pay more and more attention to software, and constantly require the use of software to improve efficiency, improve skills, and enhance the competitiveness of enterprises. As the number of customers increases, software enterprises need
Face more customers and deal with common and personalized issues. How to Ensure low cost, high quality, and fast listing has become one of the main manifestations of enterprise competitiveness, and the product line engineering method is to support such large-scale
Use (large-scale
Reuse. Different from traditional product linesCodeReuse means a large amount of reuse (up to 90%), not only code, but also requirements and services. In "openexpressapp architecture-an information system platform", I drew a picture of reuse. The product line will be developed based on a wider range of reuse.
As we all know, software development costs are part of the cost, and software maintenance costs are also a huge part. In addition to reducing development costs, product line engineering also greatly reduces maintenance costs, there is no need to maintain a large number of codes of different versions and architectures, and there is no need to maintain a large number of different documents.
The product is developed based on reuse and does not need to start over in every development step. This can greatly shorten the time to market.
In addition to reusable frameworks, product lines can also reuse development methods for products of the same type. In this way, task estimation and development plans can be well reused, which can also reduce the risk of project development.
The software is developed based on a large number of mature and verified core assets. These components have been widely used and verified, so there are few problems that can be ensured by applications in the project.
Although the expected results of the product line are fascinating, it does not bring benefits to enterprises in the first place, it must carry out some preliminary investment (development of core assets, organization transformation, etc.) in order to get a return. The picture on the right shows the economic line chart of the product line. In the third project, the balance of income and expenditure can be achieved.
Basic Principles of product line Methods
- The main difference between the product line method and the traditional single-project development lies in the shift of focus: from a single product to a product line project. This transfer implies a strategy: from a specific project development to a specific business domain product vision.
- Product Line EngineeringDevelopment for Reuse)AndDevelopment with reuse)Yes
Clearly differentiate. Compared with traditional reuse, the product line infrastructure includes all assets (frameworks, business modules, development plans, and requirements to the test phase) in the product development cycle, rather than code-Level Reuse. These duplicates
All assets contain clear variability descriptions. For example, the requirement prototype indicates that this function is only included in the special products, which requires a higher understanding of the product business.
- four main principles
- variability management: each product is a variant of the core assets and must systematically manage the variability of products, which requires higher business analysis, because of its importance in the product development lifecycle, we will explain it separately below.
- business-centric: the product line targets long-term business strategies rather than simply taking orders.
traditional software development is based on individual projects. Product Line development requires the system to fully position the market. Business-driven methods need to determine which functions should be included in the product line, in the field project or should be carried out in the project
. This is called scoping in the product line ). In software product line practices and models, does one company adopt one product line or multiple product lines? The book mentions that large
product lines play a good role only when they meet the following two conditions: first,
there are enough similar products, it is profitable to use them as a product line. Second, the company has the ability to control such large market operations, development and other aspects. If these two
items cannot be met for the time being, they can be divided into two product lines, rather than simply one product line for a company.
- architecture-centric: Technically, it must support maximum weight. The product line project depends on a general reference architecture. The specific project architecture is developed based on the reference architecture.
- Two-life-cycle approach: each product is developed based on the platform. Each product and platform has its own development team and development life cycle. If the conditions do not allow the two types of work to be done at the same time, you must be clear about what you are doing, which are domain engineering and Application Engineering. For the two-phase diagram:
the framework is divided into two phases: domain engineering and Application Engineering.
Public core assets of the project production platform, and application engineering production products. There are nine sub-processes throughout the development lifecycle, and eight processes match each other into four similar processes, requirements, design, implementation, and testing
both engineering and application projects exist, and the processes of each group are closely linked. The Subprocess of Domain Engineering aims to meet general requirements, while application engineering aims to produce available products. Application Engineering sub-flow
processes can reuse up to 90% of the domain engineering assets, and continuously provide feedback to the domain engineering during the production process, this type of circular feedback ensures that the platform can always produce final products effectively.
Variability management)
Production
The product line project supports a series of products with common characteristics. It clearly shows the main points of the product. variability is a very important concept, which is required for product development.
It must be clearly defined, expressed, developed, implemented, and constantly improved. It must be managed. Variable management should be defined at an early stage as it relates to all core assets. In fact, many companies, as long
The software is of the product nature. Many of them serve a large number of different customers and require variable management. However, it is not explicitly stated that product line development is in progress, so the concept of variability is not proposed, so
Naturally, they do not receive much attention and research. Variable management should be one of the core issues of product development, which is also my focus in the next year.
Variability type
Shows three main types of variability: commonalities, change points, based on specific products. Note that as the product progresses, the features based on the specific product may change to a change point, and the change points may become common.
Commonalities and changes are solved in the field engineering, and specific product functions are solved in the Application Engineering.
Three basic implementation variability Technologies
Visual Variability
The above briefly introduces the concept of variability. How can we express and communicate with others? The industry uses models to express,
Shows the association between a variability model and a domain model.
For reference:
Software product lines in action
More information: Large-scale product development method-product line engineering 100222.pdf
Welcome to reprint, reprint Please note: Reprinted from Zhou jingen [http://zhoujg.cnblogs.com/]