Technological systems with some importance tend to outlive the initial project that created them. Typically, the maturing of software systems is accompanied by revisions to the quality management strategy used to direct the focusing and attention to different quality objectives. Industrial software practice suggests that there are three generic types of quality management strategies:
Guideline | Description |
---|---|
Describe the quality model evolution | To understand the evolution of quality models there are two questions we must address:
|
Mapping the product life cycle to appropriate measurements | There is a need to revise the practical (methodological) level with quality model evolution and explain what are the effects of such evolution on the measurements. |
Software systems tend to pass through different stages (see flyer “The staged model for the software life cycle ”.)from its first version till it is finally replaced by an alternative system. These stages need to be mapped to the product under the development since they should steer the development of the quality models too. QA project is associated with a product, a development project and an overall quality model. The latter is a manifestation of the organization’s quality strategy. The overall quality model may include quality objectives that span beyond software projects, but will be influential in the creation of the particular QA project. A unique QA project is created upon the establishment of a new development project, even if the project concerns an existing product. This is the entity in which change is most likely – it is the main point of support for life cycle evolution of quality management.
Lower level concepts, the indicators and the metrics, may also be replaced, but probably at a slower pace. With time, the organization is likely to accumulate a relatively stable set of indicators and metrics. After all, the final objective of all the quality management strategies is customer satisfaction. Therefore, we should expect that the accumulated set of indicators and metrics cover the entities of interest. What is changing is the weighting of indicators and
Guideline | Description |
---|---|
Fit QA activities into continuous deployment strategy | Customers are relying less and less on buying versions of software, they buy access to a product that is constantly changing and evolving to meet market demands. The product is no longer produced and sold as set versions with specific release dates – instead the product is constantly changing and evolving to cater for the needs of the users and technical needs. Tactics for testing new features or ideas on a subset of customers has been developed. |
Enforce QA activities at the developer's side | In the world of continuous deployment, the goal is to reduce time between coding and deploying the code on the production server for actual use by customers. Continuous deployment means that software developers become responsible for deployments and the quality assurance team has not looked at the quality of the already deployed code. The developers are thus responsible for the quality of the code, and this increases pressure on the developers. |
Enable roll-back | Lean startup focuses on using methods like A/B testing, and observing how the groups behave as they are using two versions of the same feature. By trying out new strategies and ideas on a continuous basis, small increments at the time, the idea is to spend as little effort as possible to check if the idea was beneficial or not. If it isn’t, it is simple to roll back to the previous version. By deploying small chunks of code there is also more control over deployment. You don’t deploy many features at the same, so if something goes wrong you stand a better chance to find out what is wrong. |
Continuous deployment strategy aims to reduce time between coding and deploying the code on the production server for actual use by customers. Here we describe some of the main challenges of quality assurance when software development is seen as a continuous process like continuous deployment, and where bringing in knowledge on quality from other sources like operations can help pinpoint where to focus effort. Software systems now operate in very complex environments – battling for shared resources (i.e. web servers, network use), differing environments (operating system platforms, various web browsers and even browser versions) or changing environments (network access while on the move) – and this gives rise to a whole new set of problems as well.
Key to creating a successful application is to understand and make use of knowledge of operations. Knowledge from operations is pivotal to understanding and quantifying problems within the client/applications landscape. Operations should become an integrated part of development and provide statistics, pinpointing where to focus effort in a large list of change requests and bug reports. Focus lies on automating as much as possible of the release, QA and operations processes, but in order to do this one needs knowledge of all these factors. Hence they must cooperate. This forces developers to gain a clearer understanding of the operational constraints of the system, and at the same time it gives operations insight into what it being made and can make the necessary preparations.