[PEC] Ethics for Safety and Reliability

Ethics for Safety and Reliability

Content

  • Failure of Computing Systems
    • To reflect on the effect of computer systems failure on people
    • To compare various causes of software failure in the past
    • To identify potential causes of software system failure
  • Ethics and Software Vulnerability
    • To define fundamental concepts about software safety and reliability
    • To determine attributes of dependable software
    • To explain role of software development practice in producing dependable software
    • To explain the concept of machine ethics
    • To reflect on ethics and moral responsibility in respect of software development

How and why do computer systems fail?

Computers are only as good as we humans make them.
Computing system errors stem from(起源于) human errors
Errors are typically traceable but moral and legal responsibility is not always easy to establish

Causes of Failure in Computing Systems

  • Hardware errors
  • Software errors
  • Solving the wrong problem
  • Misuse of the system
  • Human communication failure
  • Human malice(恶意)

We strive towards dependable software

Dependability of a computing system is the ability to deliver service that can justifiably be trusted.
Dependability attributes are

  • Availability - Readiness(准备就绪) of correct service
  • Reliability - Continuity of correct service
  • Safety - Absence of catastrophic consequences on the users and the environment
  • Confidentiality(机密性) - Absence of unauthorized disclosure of information
  • Integrity - Absence of improper system state alternations
  • Maintainability - Ability to undergo(经受) repairs and modifications
    We aim to minimise the probability of potential injury, danger, catastrophic consequence to user and environment.

Software Engineering

Discipline(领域) focussed on the production of software and development of tools methodologies and theories supporting software production

  • Specification : Defining the functions to be performed by the software
  • Development: Producing the software that meets the specifications
  • Validation: Testing the software
  • Evolution: Modifying the software to meet the changing needs of the customer

Specification

Process

  • Determine the requirements of the system and constraints under which the software must operate
  • Assess feasibility of the software development within the budget and schedule requirements

Result

  • High level statement of requirements
  • Mock-ups(实物模型) of the user interface
  • Low-level requirements statement

Development

Software engineers produce a working software that matches the specifications

  • First design phase - based on high-level, abstract view of the system
    • Reveals ambiguities, omissions, and errors in the specifications
    • Mistakes are corrected; that is less expensive at a higher, abstract level
  • Subsequent design phases - add levels of details
    • Components of the system become clear
    • Interface between each components are spelled out(讲清楚)
    • Algorithms are selected and data structure defined

enter image description here

Tools and methodologies

  • Computer Assisted Software Engineering(CASE) tools support the process of developing and documenting increasingly detailed design
  • Object Oriented Design improves reliability, reusability and efficiency
    • Easier to understand - each object is associated with a particular components of the system
    • Fewer errors - each object hides its state and private data from other objects, preventing accidental modification of its data.
    • Reusability - objects are independent of each other; components can be reused without bring along other, unnecessary objects.

Validation

Software testing

  • Process to assess the correctness, completeness and quality of developed computer software
    • Validate that software satisfies the specification and meets user needs
  • Testing can reveal bugs but cannot prove that the program will work correctly under all circumstances
    • Formally proving that the software meets specifications may be unfeasible and is typically expensive
    • Even if we prove that the program is ‘correct’ and meets specifications that does not mean that specifications are correct.
      enter image description here

Validation: Testing Process

  • Stage 1: Test individual module independently
  • Stage 2: Combine modules into subsystems and test them
  • Stage 3: Combine all the subsystems into the complete system and test.

Bug fixing

  • When an error is detected and fixed in a particular module, all test cases related to the module need to be repeated
  • It is important to verify that a change that fixed one bug did not accidentally introduce another bug.

An example: V-model

enter image description here

Evolution

  • Successful software systems evolve over time to meet the changing needs of the users
  • Development of new software versions
    • New needs are compared with the strengths and weaknesses of the system
    • Decision is made about the changes to the system
    • Often the same CASE tools are used to support the development of the new version
    • Previous test suites may be reused and expanded to test the new version of the system

Computer Simulations

  • Support development of products across industries, including the simulation of computing systems
  • Simulate physical experiments which may not be possible to run in real setting
    Types of simulations:
  • Simulations of past events
  • Simulations to explore and understand world around us
  • Simulations to predict future

Testing simulations

  • Simulations may be run continuously, alongside the use of the production system
    • The objective is to identify possible problems before they are detected in the real situations and prevent them
  • Simulations may produce erroneous results due to error in the implementation(software bug) or a flawed model upon which the simulation program is based.
    • Verification - determine whether the computer program is correctly implemented
    • Validation - determine whether the model is an accurate representation of the real system.

There is a saying that " There is always another software bug". If perfect software is impossible, what kind of warranty should a consumer expect from a software company?

Software Warranties & Vendor Liability(供应商的责任)

  • Initially shrink-wrap software was purchased ‘as is’ without warranties
  • Nowadays, many shrink-wrap software manufactures provide replacement or money-back guarantee if the program fails.
    enter image description here

评论

此博客中的热门博文

[MLE] Linear Classification

[AIM] MetaHeuristics

[CS231] Neural Networks