CS551 - Lecture 5 1 CS551 Lecture 5: Quality Attributes Yugi Lee FH #555 (816)
2 CS551 - Lecture 5 Classifications of Qualities Functional requirements - visible to a system’s end- user Non-functional requirements - visible only to a system’s developers Business quality Product vs. Process –Qualities of a process can impact the qualities of a product –Product can take on different meanings for different stakeholders –Quality attributes can be prioritized according to the stakeholders’ needs
3 CS551 - Lecture 5 External Quality Attributes Functional Requirements: Performance, security, availability, functionality, usability –How well does the system, during execution satisfy its behavioral requirement? –Does it provide the required result? –Does it provide them in a timely enough manner? –Are the results correct or within specified accuracy and stability tolerances? –Does the system function as desired when connected to other systems?
4 CS551 - Lecture 5 Internal Quality Attributes Non-functional Requirments: –Modifiability, scalability, portability, reusability, integrability, testability (verifiability), interoperability –How easy is the system to integrate, test and modify? Business Qualities Time to market, Cost, Projected lifetime of the system, Targeted market, Rollout schedule, Extensive use of legacy systems How expensive was it to develop? What was its time to market?
5 CS551 - Lecture 5 Software Qualities Correctness/Verifiability Reliability/Availability Robustness Performance Security Maintainability/Modifiabilit y Reusability/Integrability Understandability/Usabilit y/User Friendliness Interoperability/Portability Productivity Timeliness/Visibility
6 CS551 - Lecture 5 Correctness & Verifiability Correctness: –A system is functionally correct if it behaves according to its functional requirements specifications –Correctness asserts an equivalence between the software and its specifications –Assessment: Testing and Verification (program proofs) Verifiability: –Can properties of the system be verified? –Typically an internal quality
7 CS551 - Lecture 5 Reliability & Availability Reliability: A system can be reliable but not correct –e. g. the fault is not serious in nature and the user can continue to get work done in its presence – Engineering products are expected to be reliable; with software, users expect bugs! Availability: how quickly the system is able to resume operation in the event of failure.
8 CS551 - Lecture 5 Security The system’s ability –to resist unauthorized attempts at usage and denial of service –while still providing it services to legitimate user.
9 CS551 - Lecture 5 Robustness How well does a system behave in situations not specified by its requirements? –Examples incorrect input, hardware failure, loss of power Related to correctness –response specified implementation must handle to be correct – response not specified => robustness involved
10 CS551 - Lecture 5 Performance In SE, performance is equated with efficiency –How quickly does it perform its operations? – Does it make efficient use of resources? – Is it scalable? The time required to respond to stimuli (events) or the number of events processed in some interval of time.
11 CS551 - Lecture 5 Modifiability & Maintainability Modifiability –The ability to make changes quick and cost effectively –A function of locality of any change – Most closely aligned to the architecture of a system Maintainability –Corrective (software repair), enhancement (software update), Perfective (the effective of the product), and Adaptive (changes in environment) –Related: Repairability and Evolvability
12 CS551 - Lecture 5 Reusability & Integrability Reusability: Software components, people, requirements can be reused again in future applications. –SE needs to make reuse standard practice –Why? It’s standard practice in all engineering disciplines! Integrability: The ability to make the separately developed components of the system work correctly together.
13 CS551 - Lecture 5 Portability & Interoperability Portability: –The ability to run the same system in multiple contexts (typically hardware/ OS combinations) Interoperability: –Can a system coexist and cooperate with other systems? Again, present in other engineering disciplines
14 CS551 - Lecture 5 Understandability & Usability & User Friendliness Understandability: –How well do developers understand a system they have produced? supports evolvability and understandability Usability: The right information is available to the user at the right time User Friendliness: Human- Computer Interaction –Related: Human Factors, Cognitive Science
15 CS551 - Lecture 5 Productivity The efficiency of a development process –An efficient process can produce a product faster and with higher quality –Can parts of it be automated? –Standard processes? Software Life Cycles Capability Maturity Model –Measure everything! – Use the results to improve the process the next time
16 CS551 - Lecture 5 Visibility & Timeliness Visibility –A process is visible if all of its results and current status are documented clearly to internal and external viewers Timeliness –The ability to deliver a system on- time requires careful scheduling, accurate estimates and visible milestones