New Trend of Improving Software Quality: Evaluated from Improvement of Working Methods and Introduction of New Mechanisms
Author/Huang Xiangteng [Issue Date: 2015/12/4]]
Quality control is the last line of defense guarding a product release, but its artifice is not just enabled during the final release phase (Delivery Phase or Release Phase). By only putting the missing "discovered" points (i.e., the position in which the quality control method is adopted) into the final relese phase we are sure to miss "discovered" points and thereby also missing efforts to maximize cost-effective investment.
In this paper, we divided the Software Development Life Cycle into four stages (figure 1) and adjust the method of each phase's work. This includes new mechanisms that should be adopted to achieve the highest quality control. These four stages are as follows: requirements gathering, system design, program design and release test.
Figure 1: Software Development Life Cycle
During the requirements gathering phase, analysis occurs in three-tiers as follows: demand covers, mold analysis and requirements describe. In this way, the solution that improves working quality and introduces the new mechanisms is found. (figure 2) (Note 1).
Figure 2: Policy for improving quality in the requirements gathering phase
1. Requirement Domain
The main purpose defining domains is to reduce the risk of missing some critical requirments. The most effective strategy is classifying the requirement needs as detailed here:
- Functional Requirements: These are the operation of functions, business processes, and the like that general users are concerned with.Such as “A day of sales staff”.
- Architecture Requirements: These are requirements that users ignore (note 2), but the operating staff will focus on after release. These include the following: management, security, performance, reliability, auditing, portability, modifiability and so on. In general, these type of requirements should be considered througout the overall project.
- HMI (Human-Machine Interface ) Requirements: These focus on the user interface, such as user input devices like keyboards, numeric keypads, touch screens, mouse, tablet PCs, touch pens, and so on. In addition, more detailed HMI requirements belong to HFE (Human Factors Engineering), such as color selecting, screen configuration, operation sequence and operation tips.
2. cMoldel Analysis
Moldel analysis focuses on the following:
- The Object-oriented moldel, which examines the requirements from various prespectives (note 3), ensures the integrity of the requirements;
- Using an Analysis Pattern (note 4), we shorten analysis time and improve analysis quality.
3. Requirements Description
Finally, Requirements Description focuses on subsequent project management. There are several components as follows:
- Process: Enterprise Demand consists of a number of process, therefore, it is more suitable to make the processes the minimum unit that the requirements describe and further make it the follow-up project schedule management unit.
- Usage Cases: Views describing interactions between users and the system as the management unit of the follow-up project.
- Hybrid: A process is often too large, therefore we divide it into smaller usage cases giving us a more flexible and more accurate project schedule management capability.
Make a bBrief conclusion for the quality improvement strategy of this stage:
- Allow the system analyst see multiple facets with modeling techniques and requirements classification.
- Ensure requirements are covered by multiple facets.
- Inherit a mature analysis style, shorten the process of analysis phase, reduce the risk of insufficient analysis, and improve the quality of analysis.
- Select a description method for the requirements that is appropriate for project's features as the target of the follow-up project management.
When designing systems, adopt a strategy that aims at improving quality and decreasing the cost of subsequent modifications and maintenance. In addition to adopting object-oriented design and carefully choosing a design pattern, consider our goal of improving follow-up automatic testing for shortening future release periods (figure 3):
Figure 3: Quanlity Management Strategy in System Design Stage
The main strategy of this phase is classifying codes according to their features and putting them where they should be (Note 5).
1. Human-computer Interface Program:
- Put the input checked code in the related input component.
- Put the code relate to judging business processes on the server side, as far as possible, and if we cannot do so, at least attempt to center the code on the same object.
- Improve the proportion of components sharing the human-machine interface.
This way, the proportion of the automatic test will be effectively improved by the automatic unit testing of this component (detailed in the next stage).
2. Programs on Server Side:
Business processes are divided into two parts:
- Process control: responsible for the control of main business processes by calling a variety of business logic components.
- Business logic: This component is called by the process control and contains many simple business logic methods.
For example, a program handling emplyee special leave may include the following four programs: reading employee basic data, judging seniority, judging special leave days, and writing a main file into the special leave. This program can be split into the following two categories:
- Business logic components: components processing employee basic data (including judging seniority and method of calculating special leave days), employee special leave components (including method of new employee leave record).
- Process control components on special leave: call the component that handles employee basic data to retrieve the number the special leave days, call the component on employee special leave to produce a new special leave record, and include other process controls such as relevant exception handling and log recording.
Improve the proportion of automatic tests through the automatic unit testing on this component (detailed in the next stage).
Make a Brief conclusion on the quality improvement strategy of this stage:
- By classifying program code according to features, the programmer focuses on the process when writing process controls and focuses on pure business logic when writing that code.
- Appropriate classification and dismantling improves the utilization ratio of a component and reduces loss.
- Utilizing unit testing of these components during the release stage improves the quality of the released version and shortens the release period.
The following diagram illustrates the quality management strategy of the program design stage.
Figure 4: Quanlity Management Strategy in Program Design Stage
The main strategy of this phase is providing a mechanism to overlap the time point of finding the program code deletion and that of the program code deletion occuring.
1. Using Unit Testing Framework
- This framework has been widely used for all major programming languages, including: Java, .net, and c + +. It closely integrates with the development tool (IDE).
- This framework provides frequently-used expection-result comparision, start of the testing program, results integration and so on. Programmers do not need to spend time writing these sorts of related code.
- This framework greatly reduces the burden of programmers by doing unit testing. In most of the cases, as long as transfer the parameters the expected results to the unit testing framework, this framework helps programmers test, compare and generate reports.
2. Quantitative Data Representing Code Coverage
- Quantitative data representing code coverage = (number of lines of code travelled by the unit testing / total number of lines of code in the component × 100%). The general standard is 80 to 85 percent.
- The Mainstream programming languages all have a tool closely combined with development tools (IDE) for generating code coverage quantitative data. These tools integrate with the unit testing framework to record and generate quantitative data during the testing process.
- Programmers themselves examine their unit testing program design using this tool and improve the testing coverage by adjusting parameters and calling different methods.
Make a bBrief conclusion on the quality improvement strateg of this stage:
- Unit testing framework minimizes the burden on programmers yet ensures the quality of their output program code.
- Code coverage can provide specific quantitative data to reduce the chance that a deletion occurs in the program design phase.
In the final delivery testing stage, the main strategy uses a Continuous Delivery mechanism (figure 5).
Figure 5: Quanlity Management Strategy in Delivery Testing Stage
Continuous delivery includes:
1. In combination with an edition control mechanism and automatic code check out and check in from the source tree (Note 6).
2. Combines with the automated build mechanism.
3. Combines with the unit testing mechanism to generate unit testing reports and code coverage reports.
4. Combines with the automated deployment mechanism to deploy editions under the testing environment.
5. Combines with the automatic function testing to generate function testing reports.
Brief conclusion on the quality improvement strateg of this stage: By adopting the continuous delivery mechanism editions are quickly and continuously delivered, and in this way deletions are found in the shortest time.
Quanlity management methods in every development phase are not limited to adding a management process (a return schedule for example), and sometimes they are an improvement of working methods. In this paper, through the four stages of software development life cycle, we have provided a strategy in each stage relating to quality management. Some of the strategies are an improvement of working methods, such as demands classification, demand modeling, analysis pattern, demands description, classification and placement of program code; others adpot a new mechanism, such as unit testing framework, code coverage, and contionous delivery. All of them are part of current trends in software quality management and each has an immediate impact on software quality improvement and cost reduction.
[note 1] Generally, the first phase is described as demands analysis, however, in this article it is described as demand gathering mainly to highlight the two issues: demand covererage and demand descriptions.
[note 2] A large number of ticket demands surging into the site simultaneously causes site crashes that belong to this kind demand.
[note 3] The most powerful function of object oriented design is achieve through naming and giving of responsibilities that transfer the focus from the details of the object to other information relating to the object.
[note 4] Analysis Pattern is conceptual modeling that can be repeatly used in the system analysis phase. It is a mature approach that has been widely used.
[note 5] It is the main spirit of refactoring reconstruction that put code in the right place and is helpful for debugging and code maintenance.
[note 6] File editions controled by configuration management is stored within a tree structure and according to the released program; generally there are at least three tree structures:
- Source Tree (Tree): stores the original source edition delivered by the development team
- Test Tree: stores editions that has been successfully built or are waiting for testing
- Released Tree: stores the release edition