Presentation is loading. Please wait.

Presentation is loading. Please wait.

Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.

Similar presentations


Presentation on theme: "Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability."— Presentation transcript:

1 Chapter 10 Software quality

2 This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability. n General design characteristic for achieving standards of quality.

3 External Qualities n External qualities are those with which the user is concerned. n Internal qualities are those that help achieve the external qualities. n One of the most obvious external qualities is correctness. n A system is correct if it conforms to its specifications. n Some attributes are quantitative, others are qualitative.

4 External Qualities (cont.) n Another important quality is efficiency. u memory requirements u system speed n For real-time systems, speed is a matter of correctness. If it doesn’t act in time, the system doesn’t act as expected. n User friendliness-- difficult to measure. n Robustness--no one wants a system to crash.

5 External Qualities (cont.) n Maintainability. How easily can the system be modified? n Maintenance activities: u Corrective: taken to correct errors in the system. u Adaptive: taken to adapt the system to changes in the environment or in the user’s requirements. Software that is adapted easily sometimes is called extendible. u Perfective: taken to improve the quality of the system. n Portability. Can the system run on different “platforms”?

6 External Qualities (cont.) n Compatibility. Can the system work with other software systems.

7 Complexity n Complexity is the principal obstacle to the creation of correct, reliable, maintainable software. n Software systems are inherently complex. n A good design can reduce complexity considerably. n Key: control the interactions between components. n Components should be self contained; interaction should be minimal and carefully defined.

8 Modularity n The logical components of the design should correspond to physically separate syntactic software components. n Modules should be self-contained and coherent. n Cohesion is a measure of the degree to which a module completely encapsulates a single notion (a facet of the system’s functionality or data). n Coupling is a measure of the degree to which a module interacts with and depends on other modules. n We want to design modules with high cohesion and weak coupling.

9 Reusable software modules n A library of standard pieces that can be used in commonly occurring situations. n Tailorable software components.

10 Principles n Information hiding principle: A module should be able to obtain information from another module only through a well-defined interface between them. n Continuity principle: A small change in the specifications should effect only a few modules in the system, and not the entire structure of the system. u Structuring a system around data rather than around functionality measurably enhances continuity. n Open-closed principle: The ability to modify or extend a module without affecting other modules. u A module that still can be modified is said to be open. u A module that is available for use by other modules is said to be closed.

11 Software = a temporary solution to an evolving problem n We must design a system that adequately models the problem as currently perceived, yet implement the system in such a way as to minimize dependency on the particularities of the problem at hand.

12 A temporary solution to an evolving problem n Object design produces the collection of objects that not only model the problem at hand, but also provide a set of fixed conceptual constituents in terms of which system evolution can be expressed. n Algorithm design involves providing the detailed functionality of the objects.

13 A temporary solution to an evolving problem (cont.) n As the system changes, we expect u the way the objects interact to change. u the set of objects defining the system to remain stable. n The quality of a model depends on how successfully the stable components are identified and isolated from the aspects of the problem likely to change.

14 Software = data + algorithms n Since every program handles data, attention must be paid to how the representation of the data can affect the algorithm. n Data is the fundamental and most stable aspect of a software system. n The design of an abstract view of the data, followed by the implementation of this abstract view by means of algorithms, is the essence of programming.

15 Software = English and mathematics n Software is executed by machines, but written and maintained by people. n A software solution must be read and understood by anyone intending to maintain it -- it should be clear and comprehensible to a human reader. n The correctness should be verifiable in a formal, mathematical sense.

16 Why is this important? n When testing a program to detect a possible bug, quality is directly related to our ability to: u read the code. u localize the affected code. u tractably modify the code.

17 We’ve covered n Correctness --Conforming to specifications n Maintainability--Modification with minimal difficulty. n Composing module that are: u highly cohesive. u weakly coupled. n Three design principles: u information hiding u continuity u open/closed n software as a temporary solution. n Software as data design followed by algorithm design. n Software as both an English document and mathematical document.

18 Glossary

19 Glossary (cont.)


Download ppt "Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability."

Similar presentations


Ads by Google