Lecture 7 - Software Reliability Flashcards
What is software engineering?
● 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
Why is SE important for products, processes and projects?
● Good software provides:
○ Competitive advantage
○ Scalability and efficiency
○ Smart systems
○ Good user interfaces
○ Flexibility
How is software different?
● 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
Why is software different?
● 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
Why is understanding software reliability important?
● 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
What are some sources of risk?
● 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
What is requirements engineering?
● 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.
What is requirements engineering standard?
● 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.
What are good practices for requirements statements?
Valid
Unambiguous
Complete
Understandable
Consistent
Verifiable
Modifiable
Traceable
What are some assumptions?
● 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.
What are some software development models?
● 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)
GOING THROUGH EACH MODEL
Refer to slides for visual and content as they are required together
What is softwre reliability?
● 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.
What is verification and validation?
Verification- Am I building the system correctly?
Validation - Have I built the right system?
What is pre-testing?
● 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.