Lecture 7 – Quality Attributes – ppt download
Presentation on theme: “Lecture 7 – Quality Attributes”— Presentation transcript:
1
Lecture 7 – Quality Attributes
Software Engineering Lecture 7 – Quality Attributes Usability testing of fruit
2
Qualitative attribute
Testability
3
Chapter Outline What is Testability? Tactics for Testability Summary
Testability General Scenario Tactics for Testability A Design Checklist for Testability Summary © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
4
What is Testability? Software testability refers to the ease with which software can be made to demonstrate its faults through (typically execution-based) testing. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
5
What is Testability? For a system to be properly testable, it must be possible to control each component’s inputs (and possibly manipulate its internal state) and then to observe its outputs (and possibly its internal state). © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
6
Exercise What is the difference between software testing and testability? What tactics can we use to make something testable? (not talking about specific tests, but rather how to make it possible or simplifying it) How do we measure if something is testable? (response measure / metrics)
7
Testability General Scenario
Portion of Scenario Possible Values Source Unit testers, integration testers, system testers, acceptance testers, end users, either running tests manually or using automated testing tools Stimulus A set of tests are executed due to the completion of a coding increment such as a class, layer or service; the completed integration of a subsystem; the complete implementation of the system; or the delivery of the system to the customer. Environment Design time, development time, compile time, integration time, deployment time, run time Response One or more of the following: execute test suite and capture results; capture activity that resulted in the fault; control and monitor the state of the system Response Measure effort to find a fault or class of faults, effort to achieve a given percentage of state space coverage; probability of fault being revealed by the next test; time to perform tests; effort to detect faults; length of longest dependency chain in test; length of time to prepare test environment; reduction in risk exposure (size(loss) * prob(loss)) Testability General Scenario © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
8
Sample Concrete Testability Scenario
The unit tester completes a code unit during development and performs a test sequence whose results are captured and that gives 85% path coverage within 3 hours of testing. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
9
Testability Tactics x=1; assert (x>0);
© Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
10
Control and Observe System State
Specialized Interfaces: to control or capture variable values for a component either through a test harness or through normal execution. Record/Playback: capturing information crossing an interface and using it as input for further testing. Localize State Storage: To start a system, subsystem, or module in an arbitrary state for a test, it is most convenient if that state is stored in a single place. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
11
Control and Observe System State
Abstract Data Sources: Abstracting the interfaces lets you substitute test data more easily. Sandbox: isolate the system from the real world to enable experimentation that is unconstrained by the worry about having to undo the consequences of the experiment. Executable Assertions: assertions are (usually) hand coded and placed at desired locations to indicate when and where a program is in a faulty state. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
12
Limit Complexity Limit Structural Complexity: avoiding or resolving cyclic dependencies between components, isolating and encapsulating dependencies on the external environment, and reducing dependencies between components in general. Limit Non-determinism / Limit behavioral complexity: finding all the sources of non-determinism, such as unconstrained parallelism, and weeding them out as far as possible. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
13
Checklist Allocation of responsibilities Coordination model Data model
Mapping among architectural elements Management of resources Binding time decisions Choice of technology
14
Design Checklist for Testability
Allocation of Responsibilities Determine which system responsibilities are most critical and hence need to be most thoroughly tested. Ensure that additional system responsibilities have been allocated to do the following: execute test suite and capture results (external test or self-test) capture (log) the activity that resulted in a fault or that resulted in unexpected (perhaps emergent) behavior that was not necessarily a fault control and observe relevant system state for testing Make sure the allocation of functionality provides high cohesion, low coupling, strong separation of concerns, and low structural complexity. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
15
Design Checklist for Testability
Coordination Model Ensure the system’s coordination and communication mechanisms: support the execution of a test suite and capture of the results within a system or between systems support capturing activity that resulted in a fault within a system or between systems support injection and monitoring of state into the communication channels for use in testing, within a system or between systems do not introduce needless non-determinism or unnecessary dependencies © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
16
Design Checklist for Testability
Data Model Determine the major data abstractions that must be tested to ensure the correct operation of the system. Ensure that it is possible to capture the values of instances of these data abstractions. Ensure that the values of instances of these data abstractions can be set when state is injected into the system, so that system state leading to a fault may be re-created. Ensure that the creation, initialization, persistence, manipulation, translation, and destruction of instances of these data abstractions can be exercised and captured © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
17
Design Checklist for Testability
Mapping Among Architectural Elements Determine how to test the possible mappings of architectural elements (especially mappings of processes to processors, threads to processes, modules to components) so that the desired test response is achieved and potential race conditions identified. In addition, determine whether it is possible to test for illegal mappings of architectural elements. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
18
Design Checklist for Testability
Resource Management Ensure there are sufficient resources available to execute a test suite and capture the results. Ensure that your test environment is representative of (or better yet, identical to) the environment in which the system will run. Ensure that the system provides the means to: test resource limits capture detailed resource usage for analysis in the event of a failure inject new resources limits into the system for the purposes of testing provide virtualized resources for testing © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
19
Design Checklist for Testability
Bindin g Time Ensure that components that are bound later than compile time can be tested in the late bound context. Ensure that late bindings can be captured in the event of a failure, so that you can re-create the system’s state leading to the failure. Ensure that the full range of binding possibilities can be tested. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
20
Design Checklist for Testability
Choice of Technology Determine what technologies are available to help achieve the testability scenarios that apply to your architecture. Are technologies available to help with regression testing, fault injection, recording and playback, and so on? Determine how testable the technologies are that you have chosen (or are considering choosing in the future) and ensure that your chosen technologies support the level of testing appropriate for your system. For example, if your chosen technologies do not make it possible to inject state, it may be difficult to re-create fault scenarios. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
21
Summary Ensuring that a system is easily testable has payoffs both in terms of the cost of testing and the reliability of the system. Controlling and observing the system state are a major class of testability tactics. Complex systems are difficult to test because of the large state space in which their computations take place, and because of the larger number of interconnections among the elements of the system. Consequently, keeping the system simple is another class of tactics that supports testability. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
22
Qualitative Attribute
Usability 10 Usability Heuristics
23
Chapter Outline What is Usability? Tactics for Usability Summary
Usability General Scenario Tactics for Usability A Design Checklist for Usability Summary © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
24
What is Usability? Usability is concerned with how easy it is for the user to accomplish a desired task and the kind of user support the system provides. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
25
What is Usability? Usability comprises the following areas:
Learning system features. Using a system efficiently. Minimizing the impact of errors. Adapting the system to user needs. Increasing confidence and satisfaction. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
26
Exercise How do we measure usability? (response measure / metrics)
What steps should we take to ensure that our end product is usable?
27
Usability General Scenario
Portion of Scenario Possible Values Source End user, possibly in a specialized role Stimulus End user tries to use a system efficiently, learn to use the system, minimize the impact of errors, adapt the system, or configure the system Environment Runtime or configuration time Response The system should either provide the user with the features needed or anticipate the user’s needs. Response Measure One or more of the following: task time, number of errors, number of tasks accomplished, user satisfaction, gain of user knowledge, ratio of successful operations to total operations, or amount of time or data lost when an error occurs. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
28
Usability Tactics © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
29
Support User Initiative
Cancel: the system must listen for the cancel request; the command being canceled must be terminated; resources used must be freed; and collaborating components must be informed. Pause/Resume: temporarily free resources so that they may be re-allocated to other tasks. Undo: maintain a sufficient amount of information about system state so that an earlier state may be restored, at the user’s request. Aggregate: ability to aggregate lower-level objects into a group, so that a user operation may be applied to the group, freeing the user from the drudgery. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
30
Support System Initiative
Maintain Task Model: determines context so the system can have some idea of what the user is attempting and provide assistance. Maintain User Model: explicitly represents the user’s knowledge of the system, the user’s behavior in terms of expected response time, etc. Maintain System Model: system maintains an explicit model of itself. This is used to determine expected system behavior so that appropriate feedback can be given to the user. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
31
Checklist Allocation of responsibilities Coordination model Data model
Mapping among architectural elements Management of resources Binding time decisions Choice of technology
32
Design Checklist for Usability
Allocation of Responsibilities Ensure that additional system responsibilities have been allocated, as needed, to assist the user in learning how to use the system efficiently achieving the task at hand adapting and configuring the system recovering from user and system errors © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
33
Design Checklist for Usability
Coordination Model Determine whether the properties of system elements’ coordination—timeliness, currency, completeness, correctness, consistency—affect how a user learns to use the system, achieves goals or completes tasks, adapts and configures the system, recovers from user and system errors, increases confidence and satisfaction. For example, can the system respond to mouse events and give semantic feedback in real time? Can long-running events be canceled in a reasonable amount of time? © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
34
Design Checklist for Usability
Data Model Determine the major data abstractions that are involved with user-perceivable behavior. Ensure these major data abstractions, their operations, and their properties have been designed to assist the user in achieving the task at hand, adapting and configuring the system, recovering from user and system errors, learning how to use the system, and increasing satisfaction and user confidence For example, the data abstractions should be designed to support undo and cancel operations: the transaction granularity should not be so great that canceling or undoing an operation takes an excessively long time. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
35
Design Checklist for Usability
Mapping Among Architectural Elements Determine what mapping among architectural elements is visible to the end user (for example, the extent to which the end user is aware of which services are local and which are remote). For those that are visible, determine how this affects the ways in which, or the ease with which the user will learn how to use the system, achieve the task at hand, adapt and configure the system, recover from user and system errors, and increase confidence and satisfaction. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
36
Design Checklist for Usability
Resource Management Determine how the user can adapt and configure the system’s use of resources. Ensure that resource limitations under all user- controlled configurations will not make users less likely to achieve their tasks. For example, attempt to avoid configurations that would result in excessively long response times. Ensure that the level of resources will not affect the users’ ability to learn how to use the system, or decrease their level of confidence and satisfaction with the system. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
37
Design Checklist for Usability
Binding Time Determine which binding time decisions should be under user control and ensure that users can make decisions that aid in usability. For example, if the user can choose, at run-time, the system’s configuration, or its communication protocols, or its functionality via plug-ins, you need to ensure that such choices do not adversely affect the user’s ability to learn system features, use the system efficiently, minimize the impact of errors, further adapt and configure the system, or increase confidence and satisfaction. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
38
Design Checklist for Usability
Choice of Technology Ensure the chosen technologies help to achieve the usability scenarios that apply to your system. For example, do these technologies aid in the creation of on-line help, training materials, and user feedback collection. How usable are any of your chosen technologies? Ensure the chosen technologies do not adversely affect the usability of the system (in terms of learning system features, using the system efficiently, minimizing the impact of errors, or adapting/configuring the system, increase confidence and satisfaction). © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
39
Summary Architectural support for usability involves both allowing the user to take the initiative in circumstances such as cancelling a long running command, undoing a completed command, and aggregating data and commands. To predict user or system response, the system must keep a model of the user, the system, and the task. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
40
Other Important Quality Attributes
Qualitative Attributes Other Important Quality Attributes
41
Chapter Outline Other Important Quality Attributes
Other Categories of Quality Attributes Software Quality Attributes and System Quality Attributes Using Standard Lists of Quality Attributes Dealing with “X-ability” Summary © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
42
Other Important Quality Attributes
Variability: is a special form of modifiability. It refers to the ability of a system and its supporting artifacts to support the production of a set of variants that differ from each other in a preplanned fashion. Portability: is also a special form of modifiability. Portability refers to the ease with which software that built to run on one platform can be changed to run on a different platform. Development Distributability: is the quality of designing the software to support distributed software development. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
43
Other Important Quality Attributes
Scalability: Horizontal scalability (scaling out) refers to adding more resources to logical units such as adding another server to a cluster. Vertical scalability (scaling up) refers to adding more resources to a physical unit such as adding more memory to a computer. Deployability: is concerned with how an executable arrives at a host platform and how it is invoked. Mobility: deals with the problems of movement and affordances of a platform (e.g. size, type of display, type of input devices, availability and volume of bandwidth, and battery life). © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
44
Other Important Quality Attributes
Monitorability: deals with the ability of the operations staff to monitor the system while it is executing. Safety: Software safety is about the software’s ability to avoid entering states that cause or lead to damage, injury, or loss of life, and to recover and limit the damage when it does enter into bad states. The architectural concerns with safety are almost identical with those for availability (i.e. preventing, detecting, and recovering from failures). © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
45
Other Categories of Quality Attributes
Conceptual Integrity: refers to consistency in the design of the architecture. It contributes to the understandability of the architecture. Conceptual integrity demands that the same thing is done in the same way through the architecture. Marketability: Some systems are marketed by their architectures, and these architectures sometimes carry a meaning all their own, independent of what other quality attributes they bring to the system (e.g. service-oriented or cloud-based). © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
46
Other Categories of Quality Attributes
Quality in Use: qualities that pertain to the use of the system by various stakeholders. For example Effectiveness: a measure whether the system is correct Efficiency: the effort and time required to develop a system Freedom from risk: degree to which a product or system affects economic status, human life, health, or the environment © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
47
Software Quality Attributes and System Quality Attributes
Physical systems, such as aircraft or automobiles or kitchen appliances, that rely on software embedded within are designed to meet a whole other litany of quality attributes: weight, size, electric consumption, power output, pollution output, weather resistance, battery life, and on and on. The software architecture can have a substantial effect on the system’s quality attributes. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
48
Standard Lists of Quality Attributes
ISO/IEC FCD Product Quality Standard © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
49
Standard Lists of Quality Attributes
Advantages: Can be helpful checklists to assist requirements gatherers in making sure that no important needs were overlooked. Can serve as the basis for creating your own checklist that contains the quality attributes of concern in your domain, your industry, your organization, your products, … © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
50
Standard Lists of Quality Attributes
Disadvantages: No list will ever be complete. Lists often generate more controversy than understanding. They force architects to pay attention to every quality attribute on the list, even if only to finally decide that the particular quality attribute is irrelevant to their system. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
51
Dealing with “X-ability”
Suppose you must deal with a quality attribute for which there is no compact body of knowledge, e.g. green computing. What do you do? Model the quality attribute Assemble a set of tactics for the quality attribute Construct design checklists © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License
52
Summary There are many other quality attributes than the seven that we cover in detail. Taxonomies of attributes may offer some help, but their disadvantages often outweigh their advantages. You may need to design or analyze a system for a “new” quality attribute. While this may be challenging, it is doable. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License