Quality
Conformance to Requirement.
Never ending improvements.
Fitness for use.
Meeting users’ composite expectation
QMS- Software Organization
1) Primary life cycle processes of acquisition, development, operation and maintenance of software.
2) Organizational processes of management, infrastructure, improvement and training.
3) Support life cycle processes of documentation, configuration management, V&V, joint reviews, audits and problem resolution.
4) Requirements regularly change.
- Not always easy to communicate
- Customer needs change
5) Unique product every time.
- Estimation and planning is difficult.
6) Intangible nature of the software
- Intellectual (Design) approach throughout.
- Inspection can be exhaustive.
7) Fast-changing technologies.
8) Documentation in software organization
-QMS Documentation (quality manual, procedures, guidelines etc)
-Project documentation (software requirements, design documents, code listing, project plans, quality plans, test plans, test cases etc.)
9) The extent of documentation depends on
- Size and type of the organization.
- Complexity and interaction of processes.
- Competence of personnel.
10) Software in response to specified customer requirements.
- Processes that define the customer requirements and track them through out the software life cycle.
11) Software in anticipation to customer needs
- Processes that define the software capability and constraints and control changes.
Approaches for defining software quality
Transcendent – excellence invariant over time, cost and requirements.
Product based – a function of product attributes.
User’s based – users perception of system performance.
Manufacturing based – compliance with formal product specification.
Value based – ratio of performance to cost.
Software quality
Software quality is called the conformance to explicitly stated functional and performance requirements, documented development standards, implicit characteristics
Software quality Management
A set of planned and systematic activities that ensure that the software processes and products confirm to requirements standards and procedures
Software quality importance
Software systems are increasingly being developed in areas that are affecting us in our daily lives.
The implication of the failures of such critical software systems on consumers can range from mere annoying inconveniences to serious life threatening situation.
Importance of quality- causes of poor quality
Specification phase
- Poorly defined system specification.
- Inadequate, incomplete and ambiguous requirements.
- Lack of specific quality objective.
Development phase
- Constraints of cost, time and man power.
- Varying level of skill
- Poor or inappropriate development facilities.
- Inadequate testing of system components.
- Uncontrolled frequent changes.
- Poor documentation.
Underlying reasons for poor quality
Lack of discipline
Management related problems
Lack of quality objectives
Inconsistent.
What is SQA
SQA is a planned and systematic pattern of actions that are require to ensure the quality in system.
- By developing software standards for procedure and products.
- By assessment of conformance to those standards.
- SQA is an umbrella activity that is applied through out the life cycle phases.
Goal of SQA
To improve software quality by appropriately monitoring both the software and development process that produces it.
Software Life Cycle
Three generic phases are
1 definition
2 development
3 maintenance
Definition phase
Focuses on what?
What information is to be processed?
What functions and performances are desired?
What interfaces are to be established?
What design constraints exist?
What validation criteria are required to define a successful system?
Development phase
Development phase focuses on the – how
How data structure are to be designed?
How software architecture are to be designed?
How procedure details are to be implemented?
How the design will be translated in to a code?
How testing will be performed?
Three specific steps in development phase
- Design
- Coding
- Testing
Maintenance phase
The maintenance phase focuses on change that is associated with
- Error correction
- Adaptation required as the software environment evolves.
- Enhancement brought about by changing customer requirement
- Reengineering carried out for performance improvement.
- Maintenance phase re-applies the step of the definition and development phases.
Software Engineering
Systematic approach indicates that software engineering provides methodologies of developing software as close to the scientific methods as possible.
Methodologies are repeatable and if applied by different people, similar software will be produced.
Goal of software engineering is to take software development closer to science and away from being an art.
Focus of software engineering is not developing software per se, but methods (for developing software) that can be used by various software projects.
Product Assessment
Ways of directly examining the product - static analysis and dynamic analysis
Static analysis
Audits
Inspection
Reviews (from requirement review to maintenance review)
Proofs (Correctness, …)
Symbolic execution
Code analysis
Dynamic analysis
Functional testing
Structural testing (Control flow, data flow)
Special purpose tests
- Mutation test
- Regression test
- Statistical test
Measurement.
Role of SRS
Bridges the communication gap between the client, the user and the developer.
Help client to understand their own needs.
SRS must correctly define all the software requirements, but no more.
The SRS should not describe any design, verification or project management details except design constraints.
Characteristics of a good software requirement specification
Unambiguous
Complete
Verifiable
Consistent
Modifiable
Traceable
Usable during operations and maintenance phase.
Software requirement specification
SRS is a specification for a perticular software product, program or set of program that does certain things
The SRS is a means of translating the ideas in the mind of the clients (the input) into a formal document (the output) of the requirement phase.
Quality through Software Processes
Software quality assurance activities include:
- Standards and documentation
- Contract review
- Vendor review
- Project management (Planning & Tracking)
- Review and Audits
- Software Testing
- Configuration Management
- Release and Delivery
- Software quality training
Acquisition Process
This process consists of the following activities.
- Initiation
- Request for proposal (Tender) preparation
- Supplier monitoring
- Acceptance and completion
Development Process
List of activities – this process consists of the following activities
1 process implementation
2 system requirement analysis
3 system architectural design
4 software requirement analysis
5 software architectural design
6 software detailed design
7 software coding and testing
8 software integration
9 software qualification testing
10 system integration
11 system qualification testing
12 software installation
13 software acceptance support
Operation process
This process consists of the following activities.
Process implementation
Operational testing
System operation
User support
Maintenance process
This process consists of the following activities.
Process implementation
Problem and modification analysis
Modification implementation
Maintenance review / acceptance
Migration
Software retirement
Supporting life cycle process
This process consists of the following activities
Process implementation
Problem and modification analysis
Modification implementation
Maintenance review / acceptance
Migration
Software retirement
Documentation process
This process consists of the following activities
Process implementation
Design and development
Production
maintenance
Configuration management process
This process consists of the following activities
Process implementation
Design and development
Production
maintenance
Configuration management process
Process implementation
Configuration identification
Configuration control
Configuration status accounting
Configuration evaluation
Release management and delivery
Quality Assurance Process
This process consists of the following activities
Process implementation
2. Product assurance
3. Process assurance
4. Assurance of quality system
Organization life cycle process
This clause defines the following organizational life cycle processes
Management process
Infrastructure process
Improvement process
Training process
Management process
This process consists of the following activities
Initiation and scope definition
Planning
Execution and control
Review and evaluation
closure
Improvement process
This process consists of the following activities
Process establishment
Process assessment
Process improvement
Training process
This process consists of the following activities
Process implementation
Training material development
Training plan implementation
Measurement
Measurement is the process by which numbers are assign to attributes of entities in the real world to describe them
An entity is an object (e.g. person, room) or an event (e.g. testing phase) in the real world.
An attribute is a feature or property of an entity. Each of the software entity may have multiple attributes (e.g. code inspected, no. of defects found, duration of the project)
metrics
Metrics are measurements, collection of data about project activities, resources, deliverables.
Metrics have to
Estimate projects
Measure project progress
Measure quality
Type of software metrics
Process
Product
project
Project metrics
Describe the characteristics of project and its execution
- schedules (size slippage)
- size (size slippage)
- effort (effort slippage)
- Number of software developers
- staffing pattern
Product metrics
Describe the characteristics of the product
Complexity
Performance
Functionality, usability, efficiency, reliability, portability, maintainability
Defect density
Process metrics
Effectiveness of methods and tools
- Effectiveness of defect removal during the development
- Pattern of testing defect arrival
- Response time to fix process
Process metrics can be used to improve the software development and maintenance
Software measurement
May apply to
- Final products
- Intermediate products (predictive methods)
May be
- Relative or binary (does it/ does it not exist?)
- Direct or indirect
- Tightly or loosely coupled
Quality factors
The factors that affect software quality can be categorized in to two broad categories
Factors that can be directly measured (e.g. errors, KLOC etc)
Factors that can be measured indirectly (e.g. usability, maintainability etc.)
Always identify the quality factors appropriate to customers, product and stakeholders
Software quality factors operational characteristics
Correctness – does it do what I want?
Reliability – does it do it accurately?
Efficiency – will it run efficiently on my hardware? (time and resource behavior)
Integrity – is it secure?
Usability – is it designed for the user?
Software quality factorsProduct Revision
Maintainability – can I fix it?
Flexibility – can I change it?
Testability – can I test it?
Software quality factorsProduct Transition
Portability – will I be able to use it on another machine?
Reusability – will I be able to reuse some of the software?
Interoperability – will I be able to interface it with another system?
Metrics for grading the software quality factors
Audit ability – the ease with which conformance to standards can be checked
Accuracy – the precision of computations and control
Communication commonality – the degree to which standard interfaces are used.
Completeness- the degree to which the implementation has been achieved.
Metrics for grading the software quality factors
Conciseness- the compactness of the program in terms of lines of code
Consistency- the use of uniform design and documentation techniques
Data commonality- the use of standard data structures and types
Error tolerance- the damage that occurs when the program encounters an error.
Metrics for grading the software quality factors
Execution efficiency- the run time performance of the program
Expandability- the degree to which the design can be extended.
Generality- the breadth of potential application of program component
Hardware independence- the degree of decoupling from the hardware
Modularity- the functional independence of the program components.
Operability- the ease of operation with the system
Security- existence of mechanism that protect the data and the program
Simplicity- the degree of understandability of the program without difficulty.
Traceability- the ability to trace a component back to the requirement.
ISO 9126 software quality characteristics
Functionality
- does it satisfy user needs?
Reliability
- can the software maintain its level of performance?
Usability
- how easy is it to use?
Efficiency
- relates to the physical resources used during execution
Maintainability
- relates to the effort needed to make changes to the software
Portability
- how easy can it be moved to a new environment?
External quality
- Changeability
- Testability
- Portability
Internal qualities
- Modularity
- Generality
- Expandability
- Self descriptiveness
- Simplicity
- Modularity
- Instrumentation
- Modularity
- Self descriptiveness
- Machine independence
- S/W system independence
Software characteristics
Each of the software characteristics is subdivided into the sub characteristics
Sub characteristics of functionality
Suitability
Accuracy
Interoperability
Compliance
Security
Sub characteristics of Reliability
Maturity
Recoverability
Fault tolerance
Sub characteristics of usability
Learn ability
Understandability
Operability
Sub characteristics of efficiency
Time behavior
Resource behavior
Sub characteristics of maintainability
Stability
Analyzability
Changeability
Testability
Install ability
Replace ability
Adaptability
Proven principles, tested techniques, best practices and state of art tools.
Adherence to development standards
Coding standards
Naming conventions
Documentation
Design standards
Life cycle models
Documentations
Requirements
Development environments ( case tools)
Configuration management
People ware
IEEE software engineering standards
ANSI/IEEE 730 standard for s/w QA plans
ANSI/IEEE 828 standard for s/w CM plans
ANSI/IEEE 830 Guide to s/w requirement specification
ANSI/IEEE 1208 standard for s/w review and audit
ANSI/IEEE1012 standard for s/w V&V plans
ANSI/IEEE 1074 standard for development s/w life cycle processes