Quality engineers can help teams identify issues in their adoption of these practices and can help optimize integration. Quality engineers can help teams integrate artificial intelligence when automating processes.
Implemented properly, AI can help teams identify glitches more quickly and can help developers focus on specific areas needing improvement. By basing analyses on historical data, AI tooling can even help teams predict a possible issue before it occurs.
Software quality engineering ensures that you are producing high quality software during every step of the SDLC. This is especially crucial for cross-site and cross-field teams. The more hands you have on deck, the more complex the project becomes. That does not mean you have to compromise velocity.
It is possible to build high quality software in a fast and efficient manner, while guaranteeing high quality, with the help of a software quality intelligence solution. Sealights software quality Intelligence analyzes your software, and then provides you with the insights necessary to prioritize testing and build efficient testing cycles.
With Sealights, you can discover which tests are needed to improve software quality, and which tests are redundant and should not be performed. This automates one of the most difficult roles of software quality engineers, helping your organization prioritize maintenance activity to maximize quality. Request a Live Demo. In this article you will learn: What is quality engineering What is software quality engineering Practices of software quality engineering Quality engineer vs quality analyst Benefits of software quality engineering services Software quality engineering with Sealights quality intelligence What Is Quality Engineering?
What Is Software Quality Engineering? The primary goals of software quality engineering are: Process control and oversight Implementing standards and metrics Data collection and analysis Test development Identification of issues and solutions Follow-up to ensure corrective actions Learn more about software quality in our guide: Measuring Software Quality: A Practical Guide. Practices of Software Quality Engineering To ensure quality throughout the SDLC, you should follow several key standard practices of software quality engineering.
Peer review of code Engineers should ensure that all source code is peer-reviewed. Correlation links have different influence labels --,-,? Those qualitative labels are converted to quantitative values: one The variability in functional and quality value for satisfiability and another for deniability.
There exist lots of variation mechanisms but the overview of them is out of the scope of this paper. It refers to any activity that validates SIG Softgoal interdependency graph [11]. In F- and verifies through the comparison of an actual result, SIG explicit and implicit contributions from with the result the artefact is expected to produce, based features to quality attributes are modeled.
To on its specifications. In the case of a product line, those quality requirements may have variability as well. With this framework it is possible to model the 3. The CVV captures variability in the product family in terms of In this section, an overview of methods and variation points and dependencies. Quality attributes approaches for the previously identified tasks and can be modelled with dependencies, a dependency practices is presented.
Association is used to associate variation In a product line, there are often products with points and dependencies. A indispensable to take the most adequate decisions during notation that extends feature models with attributes, design and derivation and get the required quality levels.
It also provides automatic to use goal-oriented analysis in product lines. The other nodes are design decisions and should be interesting: get an approximate value when an edge is between a design objective and a or level for several quality attributes starting design decision it shows that this requirement is from a set of functional requirements, detect partially satisfied by design decisions.
Each impossible configurations starting from a set of node in the definition hierarchy gets a priority functional and quality requirements, detect that reflects the importance of that node to conflicts among quality attributes and provide support the intention of its parent.
Priorities are help to perform a trade off analysis Due to the product specific; they are used as the mechanism complexity of this analysis and reasoning, it is to describe products in the definition hierarchy. In different and the BBN model to capture the impact of domains, one quality attribute may not mean functional variants on quality attributes. A method [43] of VTT captures and maps the mechanism for describing and explaining a requirements of a product family in the family quality attribute adequately must be provided: A architecture by analyzing the needs of business and structure where a quality attribute may be technology development stakeholders and the impact explained through refinement of different levels.
So this attribute is optional in framework [10], a graph called the Strategic the product line. It is functionality requirements and quality requirements; not enough to specify this optionality when Quality analysis, where quality requirements are deriving products. For example, for one family where quality requirements that vary on the business member the extensibility requirements are domain are defined.
This variation is specified in the extremely high, whereas for others those Strategic Dependency model; Hierarchical domain requirements are at the lowest level. However, analysis is used to map common and variable Quality quality attributes are not easy to quantify due to Aspects to functionality hierarchical service their nature, only more concrete concepts categories and Quality Representation to describe refinement results may be quantified.
It is architecture in a way that quality requirements can be necessary to provide a way to define different evaluated from the architectural models. The impact of two variants together is not always None of the evaluated approaches meets all the identified the sum of the individual impacts of those two requirements see Table 1.
In the paper [19] can be found a variants alone. For instance, in some applications more completed analysis of some of the methods. It consists of There are quite a lot specific methods to design two iterative processes of which the inner iteration contains product-line software architectures but not all take into three parts: functionality-based architecture design, account quality requirements explicitly.
Some of the assessment and transformation to quality requirements. The resulting software architecture. The method also uses styles and architecture is evaluated according to the architecture patterns as guides to carry out quality requirements in evaluation plan. If at least some test failed, the underlying architectural descriptions with a documented design problems are examined in order to determine how the rationale.
This method of Quality — Driven System Architecting of product families. The Preparation requirements. Workflow provides activities that support early Only one of these methods QADA takes into architectural considerations. The activities of the consideration explicitly the variability in quality attributes. Modelling Workflow are responsible of modelling architectural views and the variability within each view.
Assessment Method [15]. This method both levels in a coordinated way. HoPLAA addresses the requirements for the metrics to assess quality aspects. For existing product-line architectures evaluation: In the next table, a summary of the performed Gannod and Lutz [22] propose an approach that comparison is presented. In [18] a more completed survey of most of the methods can be found.
There are several approaches for software product lines testing: Nebut at al. However, most of the approaches focus on area in which more research would be welcome. To the best of our complete approaches, it covers most of the identified knowledge, there is only one product line testing technique tasks: it includes a modelling approach; QRF, a design that addresses a quality attribute performance [48].
However, QADA has also its inconveniences as it does 4. As a conclusion a new approach or an In this paper, several method comparisons that can extension of an existing approach could be interesting to help to assess quality aspects in software product lines address all the identified requirements to model variable are presented.
There are many surveys related to software product Quality aware design lines, for instance, [14] presents a survey of software Only one of the methods considers explicitly the reuse processes, where several product line processes variability in quality requirements.
Evaluation Among the surveyed evaluation methods, most of There are also some survey papers of single-system them focus on evaluating product-line quality attributes software architecture evaluation methods: [16], a flexibility at product-line architecture level and there comparison of scenario based methods [28][3], survey are few methods to evaluate execution or domain- of methods for reliability and availability evaluation relevant quality attributes performance, reliability….
And also one of our previous works, a survey of And there is only one method to evaluate both specific software architecture methods for software architectures in a holistic way. There also are surveys on software product line testing such as [53]. However, there are no product-line specific single- system architecture evaluation methods that can be used However, none of the works provide a global view of for derived product architectures and also for PLAs.
FUTURE WORK Regarding product line architecture evaluation, there We are working on developing a method and tool is an issue that no method answers and that is worth support for facilitating quality aware software product mentioning. To assess all the instances of the product- line engineering.
The method is based on a variability line may not be worthwhile due to the high cost. This method is used to facilitate quality evaluations because the product architecture evaluation assessment and management during software product is a variation of the product-line architecture evaluation.
Springer, However, quality variability the variability model may provide useful information [6] D. Benavides, S. Segura, P. Trinidad, and about which products should be validated. This way it is A. A first step towards a framework possible to focus on representative products and reduce for the automated analysis of feature models. Quality validation can be performed at different stages: during design software [7] D.
Benavides, P. Trinidad, and A. In testing. In software product line development, two phases are distinguished: Domain engineering and Application engineering. Domain engineering is in charge of developing a common infrastructure and assets while Application engineering makes use of them to generate the products of the line.
While working on domain engineering phase, all the requirements of the products must be taken into account, including quality attribute requirements such as performance, reliability, usability, etc. However, "research in the field of software product lines has primarily focused on analysis, design, and implementation to date and only very few results address the quality assurance problems and challenges that arise in a reuse context" [32].
In a software product line, quality attribute requirements have also variability, because not all the products require the same level of security, performance, etc.
This aspect has also been neglected or ignored by most of the researchers as attention has been mainly put in the variability to ensure that it is possible to get all the functionality of the products.
If in single-systems achieving quality attributes is sometimes a challenge, in software product lines this challenge is complicated because there is variability on quality attribute requirements and different quality constraints are required.
Tradeoff analysis of quality attributes is also more difficult than in single-systems due to this variability and the exponential number of possibilities. The difficulty grows but the impact of not addressing quality attributes also does.
The consequences of not considering and managing variability in quality attributes when designing a product line are not trivial, especially in embedded systems. As a consequence, the investment for developing the software product line will not be cost-effective. This paper presents an overview of the aspects that need to be considered during domain engineering to address quality as well as reviews of methods and approaches for each aspect.
The rest of the paper is organized as explained here. In Section 2, the tasks to meet quality requirements in a software product line are presented. In Section 3, an overview of existing methods and approaches for those tasks are reviewed and in section 4 conclusions and requirements for quality driven domain engineering are drawn. Finally, section 5 presents related work and section 6 future work.
As we have mentioned, it is vital to take into account quality requirements when developing software product lines. First of all, in the next subsection, what means quality in a software product line is explained and the specific classification of quality attributes for a software product line is presented.
Software quality is the degree to which software possesses a desired combination of attributes [25]. There are two broad categories of quality attributes [4]: Observable via execution or operational such as performance, security, availability, usability and not observable via execution or development attributes such as modifiability, portability, reusability, integrability, testability.
In a software product line, quality attribute requirements can be classified in two different types [18]: Product-line quality attributes and domain-relevant attributes. Product-line quality attributes are considered development attributes or non observable via execution. Whereas domain-relevant quality attributes usually are operational or observable via execution. Product-line quality attributes are those that are inherent or specific to product-lines to undertake a set of related products as well as new future products.
These attributes are the ones related to variability or flexibility. Assessing the variability of a product line ensures that it is possible to get all the functionality of the products in the envisioned scope; variability [55] understood as modifiability to allow variation or evolution over time and configurability variability in the product space to get a set of related products.
Domain-relevant quality attributes such as safety in a safety-critical domain, performance in a real-time domain, etc. As different products of the domain can require different attribute values not all products require the same level of security , variability in the way the attribute is translated to the product is relevant for the assessment to assure that the realization of all the quality attributes for all the products in the product-line scope is possible.
Software product line practice seeks to achieve a number of goals including reduced costs, improved time to market, and improved quality of the products belonging to the product line. These goals will only be achieved if quality attributes, such as correctness and reliability, are continuous objectives from the earliest phases of development [39].
The importance that quality and quality assurance is acquiring in reuse contexts is justified because an error in a reusable asset can be propagated to a lot of products. Regarding the previous classification of quality requirements, to date, product-line quality attributes such as extensibility, modifiability, etc. Nevertheless, domain-relevant quality attributes have being neglected, especially the variability that those attributes can have in a software product line. This paper deals with what can be done to address domain-relevant quality attributes and their variability when developing a software product line.
To obtain the required quality levels, quality must be addressed from the beginning, not only at design time, which is the stage where quality is usually considered, it must be considered through all the life cycle.
During requirement engineering quality requirements must be captured and modelled including variability aspects and during design, these requirements must be taken into account to get the most adequate design. We have made a list of tasks or practices to perform during domain engineering to facilitate quality aware product line engineering see Figure 1. Some of them are specific tasks and others consist on including a quality perspective in tasks that are performed in all software product line developments.
Quality variability modelling: To specify quality variability. Different products are going to have different quality levels and this information should be explicit.
Quality aware design: To take into account quality attributes including variability during software architecture design. Architecture evaluation: To evaluate the design taking into account the variability to see if all the quality levels are fulfilled. Quality testing: To assure that quality requirements are achieved once the product line assets have been developed. In a software product line, different members of the line may require different levels of a quality attribute or a quality can be optional for some products if the quality is not important for all products.
Moreover, functionality and qualities are closely related and the selection of a functional feature can influence or impact on the quality level. Optionality of a quality attribute. For example, for one product of the line, performance is important but for others products of the same line there are not performance requirements.
Quality attribute levels or groups. In a product line, quality attributes can have different priority levels. For example, for one product the performance requirements are extremely high, whereas for others those requirements are at the lowest level.
Impacts of functional variability on quality Indirect variation. Functional variability can indirectly cause variation in the quality requirements. To be able to assure quality aspects, the quality variability must be managed during all the life cycle and for it, quality variability modelling is essential including variability aspects of requirements, design and implementation.
Quality variability model is useful during domain engineering for addressing quality aspects taking into account their variability and also during application engineering when products are derived for facilitating a quality driven derivation.
There are some approaches for specifying quality attribute requirements that do not address variability explicitly. In a similar fashion, there are other approaches to specify varying requirements that do not address quality attributes [40]. However, there are also several methods that address quality attribute variability explicitly. During design, the software architecture of the product line is defined.
For that reason quality requirements and their variability must be very present during architecture design. The architecture evaluation is "the systematic examination of the extent to which an architecture fulfils requirements" [17]. To be able to analyze the potential of an architecture to reach the required quality levels helps to find the problems early in the life cycle, when they are easier and cheaper to correct than in later stages such as implementation, testing or deployment.
In the case of product-line architectures PLAs the architecture assessment becomes crucial to ensure that the PLA is flexible enough to support different products and to allow evolution. The variability in functional and quality requirements must be implemented in the code. There exist lots of variation mechanisms but the overview of them is out of the scope of this paper.
It refers to any activity that validates and verifies through the comparison of an actual result, with the result the artefact is expected to produce, based on its specifications. Deviations from the expected results are termed failures". Quality testing is used to assure that the product has the required quality requirements.
In the case of a product line, those quality requirements may have variability as well. In this section, an overview of methods and approaches for the previously identified tasks and practices is presented. In a product line, there are often products with varying levels of quality attributes. A model where quality attribute variability is modelled as well as the impacts of functional variants on quality attributes is indispensable to take the most adequate decisions during design and derivation and get the required quality levels.
Goal-based model [23]: This approach proposes to use goal-oriented analysis in product lines. Goal-oriented requirement engineering is an approach that deals with quality attributes or non-functional requirements in single systems.
Two sub-models are proposed: A functional goal model and a softgoal model. Quality attributes are represented as soft-goals and the operation of those quality attributes is encoded in the functional goal sub-model as tasks. Priorities are given to each softgoal on a percentile scale to perform the analysis.
And correlations are used to represent the links among functional goals and softgoals. Correlation links have different influence labels --,-,? Those qualitative labels are converted to quantitative values: one value for satisfiability and another for deniability. F-SIG Feature-softgoal interdependency graph [29]: The main goal of this approach is to provide a framework to record design rationale in the form of interdependencies of variable features and quality attributes.
In F-SIG explicit and implicit contributions from features to quality attributes are modeled. To express the degree of influence, correlations may have also a label break, hurt:-, unkown:? With this framework it is possible to model the variability on all layers of abstraction of the product family.
The CVV captures variability in the product family in terms of variation points and dependencies. Quality attributes can be modelled with dependencies, a dependency can specify a property that specifies the value of a quality attribute such as performance or memory usage. University of Kuopio, Department of Computer Science, Kolb, J. McGregor, and D. Muthig, editors. Introduction to quality assurance in reuse contexts.
Kolb and D. Korhonen and T. Assessing systems adaptability to a product family. Kuusela and J. Requirements engineering for product families. Experiences in assessing product family software architecture for evolution. Comparison of software product line architecture design methods: Copa, fast, form, kobra and qada. Matinlassi, E. Quality-driven architecture design and quality analysis method: A revolutionary initiation approach to a product line architecture.
Testing a software product line. Quality attribute variability within a software product family architecture. Nebut, Y. Traon, and J. Architecture centric software family engineering, product family engineering seminar.
Quality driven family architecture development. Quality evaluation by qada. Olumofin and V. Extending the atam architecture evaluation to product line architectures. Pohl and A. Software product line testing.
ACM , 49 12 —81, Metrics for the structural assessment of product line architecture. Reis, A. Metzger, and klaus Pohl. A reuse technique for performance testing of software product lines.
Knauber, C. Krueger, and T. Riva and C. Experiences with software product family evolution. Sinnema, S. Deelstra, J. Covamof: A framework for modeling variability in software product families. Springer, sep Stoermer, F.
Bachmann, and C. Sacam: The software architecture comparison analysis method. Svahnberg, C. Wohlin, L. Lundberg, and M. A quality-driven decision-support method for identifying software architecture candidates.
Tevanlinna, J. Taina, and R.
0コメント