Advanced Software Engineering Lecture 04(1)
-
Upload
buddhika-gamage -
Category
Documents
-
view
213 -
download
0
description
Transcript of Advanced Software Engineering Lecture 04(1)
Advanced Software Engineering
Advanced Software EngineeringUniversity of ColomboPrabha KularathnaQualityIEEE Glossary: Degree to which a system, component, or process meets (1) specified requirements, and (2) customer or user needs or expectations
ISO: The totality of features and characteristics of a product or service that bear on its ability to satisfy specified or implied needs
Quality of designRefers to characteristics designers specify for the end product to be constructed
Quality of conformanceDegree to which design specifications are followed in manufacturing the product
Software QualityLondon Ambulance Disaster 1992 October 26
New automated ambulance dispatch system for London Ambulance Services 2000-2500 calls per day200+ ambulancesReplaced human operated system with a new softwareGoal: reduce average emergency response time down to 3 minutes
CADReleased without load-testing81 known issuesNo fallback processNo user consultation during requirements gathering phaseHad memory leaks & threading issuesSystem cant handle incomplete data
Why Software Quality Matters?46 deaths4Cost to fix faultsCostDefinitionDevelopmentPost Release1*1.5* to 6*60* to 100*Why Software Quality Matters?ChallengesTension between customer quality requirements (efficiency, reliability, etc.) and developer quality requirements (maintainability, reusability, etc.)
Some quality requirements are difficult to specify in an unambiguous way
Software specifications are usually incomplete and often inconsistent
6Prevention costsQuality planning, test tools, training
Appraisal costsReviews, refactoring, testing, etc. during development phase.
Failure costsDiagnosing & bug fixing
External failure costsBug reporting, handling, communications, delivery & installation of fixes.Quality CostsSoftware Quality Characteristics1. CorrectnessDegree of compliance to the requirement specification
Leads to functional defects
Challenging when building with large software systems
Conflicting requirements get discovered during development8Software Quality Characteristics2. EfficiencyEfficiency in performing the function/functions that the software was built for.
User Experience factorHow fast user can use the software Data creation efficiencyData consumption efficiency
Resource utilizationTemporal: How fast intended functionality takes to executeSpatial: How much memory is consumed to execute the intended functionality
Efficiency in data flow in overall systemEfficiency in data flow automation9Software Quality Characteristics3. FlexibilityThe ease of changing / adapting during its lifecycle
Changing requirements during development and maintenance
Flexibility leads to generic designs and architecturesUsually increases complexity
Tradeoff: depends on the problem domainAircraft ILSAndroid Launcher
10Software Quality Characteristics4. MaintainabilityThe ease of maintaining the software across changes during maintenance phase.Needs well designed architectureCritical for large systems
Exceptions:Throw-away systems with limited lifespanEx: Small scale web applicationsSmall scale mobile apps
11Software Quality Characteristics5. ReliabilityThe ability of a software system to operate in its target environment without experiencing failure (system-down scenarios)
Mission Critical SystemsSystems whose failure can lead to catastrophic circumstancesEx: death / damage to property / financial losses
Irrespective of criticality, software failures damage reputation / user confidence.
12Software Quality Characteristics6. InteroperabilityDescribes the ease of a software system to interoperate with other systems
Software integration
Software architectureLoosely coupled components13Software Quality Characteristics7. ReusabilityThe ability to re-use systems components / assets across multiple systems
ModularitySeparation of functional and infrastructural layers
14Software Quality Characteristics8. PortabilityEase of transferring existing functionality fromOne technology to another / multiple technologiesOne platform to another / multiple platforms
Separation of technology-dependent logic (usually UI & IO) from technology-independent logic (usually data model / business logic)
Use of cross-platform technologiesJavaXamarinHTML5 / JavaScript
15Software Quality Characteristics9. Code CoverageThe degree to which the code base of a software can be tested by automated-testing
Software testing time/cost across development and maintenance
Enforces Correctness
Increases development and maintenance timeMay increase code complexity
16Software Quality Characteristics10. IntegrityDegree of conformity to QA testing.
A higher Code Coverage is a requirement to measure code integrityCode coverage is not a must to enforce code integrity
Focus on maintaining higher software quality throughput development and maintenance 17Software Quality Characteristics11. TestabilityThe degree to which the system can be tested at a given test context.
Higher testability leads to assuring integrity at a lower cost
Repeatability (automated testing)Reproducible deterministic states input / output
Ease of writing test cases
Maintainability of test cases
RequirementsImplementationTest cases18Software Quality Measurement1. Ambiguity
Number of Weak phrasescan, could, may
Weak: The results of the Initialization checks may be reported in a special file.
Non-weak: The results of the Initialization checks shall be reported in a special file
Number of Optional phrasesPhrases which contain an option / options
Optional: The system shall be such that the mission can be pursued, possibly without performance degradation.
Non-optional: The system shall be such that the mission can be pursued, with performance degradation not greater than 10%.
Quality of Requirements19Software Quality Measurement2. Completeness
Number of To-be-determined (TBD)Number of To-be-added (TBA)Quality of Requirements20Software Quality Measurement3. Understandability
Automated Readability IndexQuality of Requirements21Software Quality Measurement4. Volatility
Quality of Requirements22Software Quality Measurement5. Traceability
Number of requirements not traced to system requirements.
Number of requirements not traced to code and tests.Quality of Requirements23Software Quality MeasurementQuality of Code24Software Quality Measurement2. Defect Removal Efficiency (DRE)E : number of errors found before delivery of the software to the userD: number of defects found after deliveryQuality of Code25Software Quality Measurement3. Code IntegrityE : number of errors found before delivery of the software to the userD: number of defects found after deliveryQuality of Code26Software Quality Measurement4. Internal Documentation
Comment percentage.Quality of Code27Software Quality Measurement5. External Documentation
Automated Readability Index.Quality of Code28Software Quality Measurement1. Resource Usage Efficiency
Staff hours spent on lifecycle activitiesImplementation Efficiency29Software Quality Measurement2. Completion Rates
Task completionsPlanned task completionsImplementation Efficiency30Software Quality Measurement1. Correctness
Errors and criticality.Time of finding of errors.Time of error fixes.Code Location of fault.Test Efficiency31Software Quality Measurement1. Mean Time to Failure (a.k.a. Mean Time Before Failure)Operational Quality32Software Quality Measurement2. Mean Time to RepairOperational Quality33Software Quality Measurement3. AvailabilityOperational Quality34Software Quality Measurement3. ReliabilityOperational Quality35Software Quality Assurance (SQA)Conformance to software requirements is the foundation from which software quality is measured.
Software must conform to implicit requirements (ease of use, maintainability, reliability, etc.) as well as its explicit requirements.Set of systematic activities providing evidence of the ability of the software process to produce a software product that is fit to useG. Schulmeyer and J. McManus, Software Quality Handbook, Prentice Hall, 1998.36Software Quality Assurance (SQA)Monitoring processes and products throughout the software development lifecycle to ensure the quality of the delivered product(s)
Monitoring the processes
Provides management with objective feedback regarding process compliance to:
Approved plansProceduresStandardsAnalyses
Monitoring the products
Focuses on the quality of product within each phase of the SDLC
RequirementsArchitectureTest plans37Software Quality Assurance (SQA)Process Assessment:
Use of standards and process models has a positive impact on the quality of the software product
ISO 9001CMMCMU SEI, 5 levelsSPICE (Software Process Improvement and Capability Determination) a.k.a. ISO/IEC 15504ISO joint committee, Europe, AustraliaIEEE 1074, IEEE 12207,
38Software Quality Assurance (SQA)Product Assessment:
Architectural Reviews, Code ReviewsInspectionsMeasurement via metricsTestingSimulationPrototypingFormal verificationModel checking, theorem proving
39