Download presentation
Presentation is loading. Please wait.
Published byElvin Richards Modified over 8 years ago
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.)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.