Software Quality Management (SQM)

A practice to quantitatively plan and guide software development, emphasizing Quality engineering, plan & control

  • Ensures req'd level of quality is achieved in software product
  • Defines appropriate Quality framework, standards, and procedures
  • Quality framework, standards, and procedures are followed
  • Develop a quality culture - it's everyone's responsibility

SQM steps

Achieving Quality Factors

  • Architectural based Tactics:
    • Quality models
    • Development models
    • Common sense
  • Architectural based Analysis and trade-off approach:
    • General properties essential for quality factors
    • Scenario based, quality factors required will satisfy goals

Reliability

Prevent/tolerate faults! Recover or handle fault to recover/limit damage.

Active fault detection

  • Periodically check for symptoms OR anticipate when failures will occur

Tolerating by exception

  • Situations that cause the system to deviate from its desired behavior
  • Apply exception handling with ability to bring system to acceptable state
  • Typical exceptions include:
    • Deadlocking
    • Violating a system invariant (e.g.; security property)
    • Corrupting data
    • Failing to provide a service
    • Providing the wrong service

Fault recovery tactics

  • Undoing transactions: manage a series of actions as a single transaction that are easily undone if a fault occurs midway through the transaction
  • Checkpoint/rollback: software records a checkpoint of current state; rolls back to that point if system gets in trouble
  • Degraded service: return to previous state with the least possible degraded service

Security

Architectural Characteristics:

Immunity

Ability to prevent attacks

  • Minimize exploitable security weaknesses
  • Ensure security feats are included in the design

Resilience

Ability to recover quickly and easily from an attack

  • Segmenting functionality to contain attack
  • Enable system to quickly restore functionality

Efficiency - constraints on system speed & accuracy

Response Time

Speed of response to requests

Throughput

Requests/minute

Load

How many users it can support before response time/throughput suffer

Improve Efficiency:

By Perceived Response Time:

Scheduling
  • Earliest deadline first
  • First come/fist served (FIFO)
  • Explicit Priority
Caching

By Utilization of Resources:

Load-Balancing

As a reverse proxy, distributes network or application traffic across a number of servers to increase users and app reliability

Maintainability

Design must be able to change

Directly affected Units

responsibilities change to accommodate a system modification. Minimize impact and focus on

  • Expected changes: design decisions most likely change. Put each in it's own software unit
  • Cohesion: increases chances that a change to system's responsibilities are confined to the few units that are assigned those responsibilities

    Indirectly affected units

    implementations must be revised, responsibilities remain the same. Focus on reducing Dependencies:

    • Coupling: reduces likelihood that change in one unit will affect others
  • Interfaces: If a unit interacts with other units only through their interfaces, changes to one unit won't go beyond the unit’s boundary - unless its interface changes

Self-Managing Software

autonomic, adaptive, dynamic, self-configuring, self- optimizing, self-healing, context-aware

Systems that operate optimally in different/changing environments - monitors environment and it's own performance, and changes in response

Usability

Quality of a user's experience when interacting with a product/system. The user's effort for:

  • Understandability: recognizing logical concept and applicability
  • Learnability: learning it's application (i.e. operation control, input, output)
  • Operability: operation and control.

results matching ""

    No results matching ""