Software quality of scientific papers

Quality attribute

 Gao Xinyue Zhao Family understands Mingxia

(School of Software Engineering, Shijiazhuang Railway University    , Shijiazhuang 050300, Hebei Province)

Abstract : A piece of software is of excellent quality, and has only received one defect since it was introduced to the market. But is this software really a high-quality software? The result of this defect is: "The software cannot be installed!" In order to understand whether the quality of the software meets the requirements, we must define the quality attributes of the software. At the same time, quality attributes are also important factors affecting software architecture. The software architecture is mainly determined by the requirements. The requirements are functional and non-functional. The non-functional requirements mainly refer to quality attributes, that is, various "attributes".

Keywords: quality attributes, quantitative objectives, software architecture

The quality of a software is superior. Since it was launched to the market, only one defect has been received. But is this software really a high-quality software? The result of this defect is: "the software cannot be installed!" In order to know whether the quality of software meets the requirements, we must define the quality attributes of software. At the same time, quality attribute is also an important factor affecting software architecture. Software architecture is mainly determined by requirements, which are functional and non functional. Non functional requirements mainly refer to quality attributes, i.e. various "attributes".

Keywords:Quality attribute;Quantitative objectives;Software architecture;

 

I. Introduction

 

In order to achieve conceptual consistency, new concepts should be introduced as little as possible in the software design process. The process of software design is an abstract process. We abstract complex software systems into layers, problem domains, processes, modules, services, and interfaces. These are all necessary. However, these things should be as few as possible. Problems that can be solved at one or two layers should never be divided into four or five layers, can provide an API interface, and should never be given to three. Most people won't bother to understand the new concepts you designed on the tall. They are likely to design a parallel solution that is easier for them to understand to solve the same problem.

 

2. Quality attributes

 

1. Availability

 

The main problems facing usability are:

Physical layer failure: such as database server downtime, power outage, and network arrears , disconnected by China Telecom

Malicious attacks: such as DOS ( Deny of Service ) attacks

Software design problems or bugs : For example, a wrong resource control lock causes a certain resource to be occupied for a long time

Upgrade or daily maintenance

How to design failover ( failover ), generally can use redundancy to eliminate single points of failure in the system. Can be a variety of hot and cold backup, distributed system.

How to design exception handling. Exception handling is a big topic. In order to support high availability, how should we handle exceptions? For example, a website has to process user orders. However, due to the failure of the database server, although the front-end services are all normal, the orders cannot be processed. How would you deal with the abnormal situation of this database server? Most programmers will write a log when catching an exception, record the exception, and then display a piece of exception code on the client's UI that no one can understand. Such exception handling is actually almost the same as not doing it, or even worse. Would it be better to translate the exception code into a language that users can understand? Maybe, if you tell the user that your database is down, please come back tomorrow, and you can imagine how disappointed the user will be! Good exception handling is to record the user's order request and send it for manual processing, or wait for the database to be automatically processed after the recovery, and tell the user that the order has been processed, and there may be delay.

 

2 , can be modified of

Flexibility refers to whether the system can easily adapt to changes in the environment and needs.

For example, now the demand is to return all prime numbers up to 10. We can use the following procedures:

function prime(){

    var result = [2,3,5,7];

    return result;

}

This program is very good, but it is not very flexible. Through the analysis of the requirements, we seem to be able to foresee that 11 is a very likely need to change, so the way to increase flexibility is to change 11 into a variable parameter :

function prime(range){

    var result = [];

    was i, k;

    for(i=2; i<=range; i++){

      result.push(i);

    }

    for(i=0; i<result.length; i++){

      for(k=i+1; k<result.length; k++){

        if(result[k]%result[i]==0){

          result.splice(k,1);

        }

      }

    }

    return result;

}

In order to increase the flexibility of the second piece of code, the code becomes more complex and the running time becomes longer. Of course, the prime numbers in the first piece of code have not been verified by calculations at all, and I calculated them myself, because a simple operation such as prime numbers up to 10 does not require a computer at all.

What are the problems in software development that will cause a decrease in flexibility?

a. A surprising number of codes due to various reasons

b. Overly complex code

c, the code that repeats constantly

3 , performance

Ø Performance usually refers to the "time-space" efficiency of the software, not just the running speed of the software. It requires both the horse to run fast and the horse to eat less. The key job of performance optimization is to find the "bottleneck" that limits performance. Don't be busy with performance optimization. It's like squeezing water from a sponge. If you don't squeeze, the water will not come out. The more you squeeze the sponge, the drier.

4 , ease of use

Ease of use refers to the root cause of the ease of use of software by users. The root cause of poor software ease of use : there is a defect in the education of science and engineering universities, and developers have made "misplacement" problems. The ease of use of software should be evaluated by users.

 

5 , security  

Ø Security here refers to information security, English is Security instead of Safety. Security refers to the ability to prevent the system from being illegally invaded, which is both a technical issue and a management issue. Hacker: It's really "one foot tall, one demon tall"! Developers and customers are willing to invest limited funds to improve security, and they have to consider that the value is not worth it. What kind of security is satisfactory? In general, if the cost of hacking for illegal intrusions (considering time, cost, risk and other factors) is higher than the benefits, then such a system can be considered safe. For ordinary software, it is not necessary to pursue a high degree of security, nor can it completely ignore the security, we must first analyze the hacking behavior.  

6. Testability

Software portability refers to the ability of the software to run in different software and hardware environments ( CPU, OS, and compiler) without modification or slight modification , which is mainly reflected in the portability of the code. The lower the programming language, the harder it is to write programs written with it, and the easier it is otherwise. This is because different hardware architectures (such as Intel CPU and SPARC CPU) use different instruction sets and word lengths, and OS and compilers can shield this difference, so high-level languages ​​are more portable. Java programs are known as "compile once, run everywhere" and are 100% portable. In order to improve the performance of Java programs, the latest Java standard allows people to use some platform-related optimization techniques, so that although optimized Java programs cannot "compile once and run everywhere", they can still "program once and compile everywhere". Software design should separate "device-related programs" from "device-independent programs" and "functional modules" from "user interfaces".

3. Conclusion

When we design software, we need to define which quality attributes we want to achieve. Remember, the more quality attributes, the better. Generally speaking, it is enough to find the most important three to build the software, and "the fish and bear paw can not have both", the quality attributes may be contradictory or influencing each other. The CAP theory in distributed databases is a typical example. For a distributed computing system, it is not possible to satisfy Consistency, Availability, and Partition Tolerance at the same time.

 

Guess you like

Origin www.cnblogs.com/muailiulan/p/12757794.html