The technological landscape is evolving with time, product life-cycles are diminishing, and service costs have risen to unprecedented heights. These are some of the challenges software companies are struggling with today. This has led to companies embracing the device mesh, analytics and machine learning techniques, and cloud computing technologies, to maintain a robust product pipeline.
Companies are also delving in on a more service-centric approach by adopting Software as a Service (SaaS) models through partnerships with software product modernization services.
Product engineering in software development can be divided into two different segments.
- Domain engineering
- Application engineering
Domain engineering:-Domain engineering is the process of software product line engineering in which the commonality and the variability of the product line are defined and realized. Domain Engineering consists of three different phases viz, Domain Analysis, Domain Design and Domain Implementation. When we talk about domain analysis, it is the activity of accumulating and analyzing experiences in building systems or parts of a system within a specific domain in the form of reusable assets. Meanwhile, domain design and domain implementation focus on designing and implementing reusable domain-specific languages, components, and code generators to support model-driven development, respectively.
Application engineering:- Application engineering is the process of software product line engineering in which the application of the product line are built by reusing domain artefacts and exploiting the product line variability. The process can also be called as a synthesis process for creating and supporting an application product which satiates specified customer requirements. A product can be represented by a set of associated work products that result from analysis of those requirements. It can be characterized by a comprehensive life-cycle process for the management, analysis, production, and support of a product as a set of work products that offer opportunities for reuse.
Domain Engineering
The key goals of the domain engineering process are to:
- Define the commonality and the variability of the software product line.
- Define the set of applications the software product line is planned for, i.e. define the scope of the software product line.
- Define and construct reusable artefacts that accomplish the desired variability.
- Detail and refine the variability determined by the preceding subprocess.
- Provide feedback about the feasibility of realising the required variability to the preceding sub-process.
Application Engineering
The key goals of the application engineering process are to:
- Achieve an as high as possible reuse of the domain assets when defining and developing a product line application
- Exploit the commonality and the variability of the software product line during the development of a product line application
- Document the application artefacts, i.e. application requirements, architecture, components, and tests, and relate them to the domain artefacts
- Bind the variability according to the application needs from requirements over architecture, components, and test cases
- Estimate the impact of the differences between application and domain requirements on architecture, components, and tests.
Conclusion
A product manager cannot always be in complete control of the software development
process that the product development team uses. This makes it important to understand the
challenges that each process presents. No one can define or establish a perfect product development process. The most determining factor is usually the quality and experience of the team members.
0 comments:
Post a Comment