Advanced Software Engineering Lecture 04(1)

39
Advanced Software Engineering University of Colombo Prabha Kularathna

description

se

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