Lecture 7 - Software Reliability Flashcards

1
Q

What is software engineering?

A

● One way of looking at software is that programs are the
encoding of knowledge.
● But where does the knowledge come from?
● Information provided by clients and end-users.
● Knowledge from domain experts.
● Opinions and expertise of the programmer.
● Data from sensors.
● Outputs from learning system e.g. AI.
● SE is engineering because it is the practical application of maths and physics principles in code that HAS to work in the real world

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Why is SE important for products, processes and projects?

A

● Good software provides:
○ Competitive advantage
○ Scalability and efficiency
○ Smart systems
○ Good user interfaces
○ Flexibility

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

How is software different?

A

● Software does not degrade, age or wear out.
● Every copy is identical with the same reliability.
● Unlike other engineering products software is ephemeral. It is flexible and of arbitrary complexity.
● When we find a defect in a mechanical system (for example), we repair it to its original or an in-between state.
● However, when we find a defect in a software system, we repair it to a new state.
● We analyze the reliability of a mechanical system by looking at the probability of failure of individual parts.
● However, we analyze the reliability of a software system by looking at its testing history

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Why is software different?

A

● Software has deterministic behaviour, whereas hardware behaviour is both deterministic and stochastic.
● Once the inputs have been selected the software will either execute correctly or fail.
● The nature and position of the fault may be influenced by the input, computer and/or operating system. One may translate this uncertainty into probabilities.
● A software fault is a triggering event that causes a software defect

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Why is understanding software reliability important?

A

● Very few functional objects and systems today function without software.
● As an engineer of whatever discipline you will have to
work with software and software engineers.
● It is therefore vital that you understand their world, methods and processes. You do not have to be able to drive these processes yourself but you need to know enough about them to participate effectively.
● You need to know what questions to ask

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are some sources of risk?

A

● Software development and maintenance is a humanintensive activity
● Code bases can be large and complex (millions of lines of code)
● Some parts of code bases can be dynamic and other parts don’t change much.
● Some parts get more maintenance than others.
● Code development depends on ASSUMPTIONS

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is requirements engineering?

A

● A significant proportion of defects arise during the Requirements analysis phase.
● A requirement is a statement about a proposed system that all stakeholders agree must be made true in order for the customers problems to be truly solved. It describes as a service or constraint, the user-level properties, general systems, specific constraints and
needs of clients.
● Requirements analysis is an incremental and iterative
process.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is requirements engineering standard?

A

● ISO/IEC/IEEE 29148-2018 - International Standard - Systems and software engineering – Life cycle processes – Requirements engineering.
● It defines the construct of a good requirement, provides
attributes and characteristics of requirements, and discusses the iterative and recursive application of requirements processes throughout the software life cycle.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are good practices for requirements statements?

A

Valid
Unambiguous
Complete
Understandable
Consistent
Verifiable
Modifiable
Traceable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

What are some assumptions?

A

● End users assume software engineers understand their domain
● Software engineers assume they understand the domain.
● Neither of these statements may be true
● Revisions to systems tend to carry forward defects from the previous system
● End users will specify what they want improved. They rarely talk about what they like about the system. Requirements always have trade-offs therefore software engineers tend to
fix the ‘bad’ things at the expense of the ‘good’ things.
● They assume what is being requested are important and those that not requested are unimportant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What are some software development models?

A

● There are a spectrum of models for software development for example:
● Waterfall and other software development life cycle models (SDLC)
● V model (verification and validation) - variant of SDLC
● Spiral (prototyping of Requirements phase) models
● Agile models are now the most widely used approach for conventional systems (not safety critical)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

GOING THROUGH EACH MODEL

A

Refer to slides for visual and content as they are required together

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is softwre reliability?

A

● Software reliability may be defined as the probability of
failure-free software operation for a specified period of time in a specified environment.

● Software failure may be due to issues such as, but not limited to, errors, ambiguities, over-sights, and misinterpretation of specifications.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is verification and validation?

A

Verification- Am I building the system correctly?
Validation - Have I built the right system?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What is pre-testing?

A

● We need to do verification on requirements statements, design statements, test statements BEFORE they are coded. This is done by Review Teams.
● There are many levels of testing (see the V model discussed earlier) and many different techniques that can be used once coding has commenced.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are the methods for verification of code?

A

● There are many methods of assessing the correctness of
code. Most are based on various forms of inspections
(reviews) and testing. A few important ones are:
● Formal methods of requirements or program proving. Formal methods are widely used for safety critical systems. In formal methods piece of code can be considered as a mathematical object and is thus susceptible to proof of correctness.
● Another approach is to use multiple independent teams to build similar systems leading to parallel testing against each other or multiple independent teams to review or test the system.
● And another is to use external tiger teams to try and penetrate security or destroy a system.

17
Q

What is s reliability growth model?

A

● In reliability growth models, software is tested for a period of time, during which failures may occur.
● These failures lead to modification and the new version goes back into test.
● This cycle continues until design objectives are met.

18
Q

What are software reliability metrics?

A

● SRMs can be grouped into three categories. 4
● Time-between-failure models.
● Fault seeding models.
● Independent testing teams.

● These are necessary to quantify reliability through the number of defects. One of the hardest questions of software engineering is “when do I stop testing?”

19
Q

What is the SRM: Fault seeding model I

A

● Purpose: To assess the number of defects in the software via seeding extraneous faults.
● An independent monitor inserts defects into the code.
● Key assumptions are as follows.6
● Defects are assumed to be independent.
● Seeded defects are distributed in the software using profiles based on previous experiences.
● Indigeneous and seeded defects have equal probabilities of being detected.

20
Q

What is the SRM: Fault seeding model III

A

● NS number of seeded faults.
● nS number of intentional seed faults found.
● nF number of faults found that were not intentionally seeded.
● Provided some seeded faults are found an estimate NF
for the MLE of unseeded faults can be determined.
● Est. NF = (nF . NS)/ nS

REFER TO SLIDES

21
Q

What is configuration management when linking to automation?

A

Automation inevitably requires software, hardware, data or
settings and also physical inputs to operate.
Knowing what versions of devices, software and values in the code is vital to ensuring robust and safe systems.
Configuration management is the process and systems to
do this.

22
Q

What are the challanges of configuration management?

A

How does an operator know that the equipment is safe
to use?
How can the operator verify that the configuration of the equipment is correct?
How does the maintainer know the software version was correctly loaded?
Is there a possibility that the software could be loaded successfully but may not work under operational conditions?

23
Q

Define configuration management?

A

Is a management process for establishing and maintaining consistency of a product’s physical and functional attributes with its design and operational information throughout its life.
It is a vital part of managing autonomous systems

REFER TO SLIDES FOR VISUALS

24
Q

Why does config management need good processes and culture?

A

● Implement a framework consistent with ISO 10007
● Write a configuration management plan
● Decide which equipment needs it (it’s expensive)
● Configuration Management affects many parts of the organisation
● Awareness is key to making the process work.
● Creating awareness through training and communication
● Check regularly with audits.
● Leadership must model the right behaviour