Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 33

Software Engineering I

Revision Class
28th April 2022
Plan of the session
• A brief review of the technical material of SE1
• Reminder of the online exam
• Final remarks on the module and Q&A

• Revision:
• Today (April 28th) is the only formal revision session
• We will NOT have a formal session like this on Thursday 4th May
• But you are welcome to contact me
• Email: t.chen@bbk.ac.uk or via Teams
Contents
• One term, first course in Software Engineering

• Focus on

• Important concepts (such as software processes) – 3 sessions

• Essential software development activities – 5 sessions

• Project management and planning – 2 sessions


Arrangements
Contents Labs

W1 Introduction
W2 Software processes
W3 Requirements Requirements Specification

W4 Modelling System Modelling


W5 Design, Impl. and Evolution System Modelling

W6 SELF-STUDY Quiz
W7 Testing I Software Testing
W8 Testing II Software Testing
W9 Project management Project Planning and Risk Assessment

W10 Configuration control Version Control with Git and GitHub

W11 Agile methods


Assessment
• Coursework (20%)
• Quiz (5%) + coursework (15%)

• Final exam (80%)


• FOUR questions, 100 marks
• Each one will have a number sub-questions.
• Wednesday, 8th June 2022 (please double check)
• As in the last year, this will be an ONLINE exam
Textbook
• Ian Sommerville. Software Engineering. 10th Ed.
Session: Introduction
• What is Software Engineering?
• What does “software” mean in the context of SE?
• Importance and Challenges of Software engineering
• Software processes, methodologies, techniques, tools
• Understand that the development of different types of software may require
different SE techniques
• Two basic types: Generic products vs customised products
• Characteristics of successful software
• legal and ethical issues of software engineering
Session: Software processes
• What is a software process?
• a structured set of activities, actions, and tasks required to develop a software
system.
• Four fundamental activities of software processes
• What are they? What does each one do?
• Software process models
• an abstract representation of the software development process
• Generic models: waterfall, incremental development, iterative process
model (RAD and spiral), integration and configuration
• Definitions (e.g., major phrases);
• Advantages and disadvantages;
• Given a practical case, which model should be selected? And why?
• Software Process Improvement, CMM
Session: Agile Software Development
• What does it mean by “agile”?
• The core values and principles of agile methods
• Agile manifesto
• Typical practice of Agile methods

• Extreme programming
• Key practices and distinguished features of XP
• For each practice (user stories & task cards, refactoring, test-first development, pair
programming), understand
• what it is?
• Its benefits (i.e., why?)
Session: Requirements Engineering
• Understand basic concepts of user and system requirements
• Why they should be written in different ways?
• Understand basic concepts of functional and non-functional
requirements
• Their difference, how to distinguish them?
• Characteristics of well-written functional requirements
• Requirement engineering process
• Elicitation, analysis, and validation
• Requirement specification (ways to record the requirements)
Session: Software Modelling

• Interaction model (user case,


sequence diagram)

UML • Behavioural model (activity


diagram, state diagram)

• Structural model (class


diagram)
Session: Software Design, Implementation and evolution

• Architectural design and architectural patterns


• Implementation issues (reuse, system building)
• What is software evolution and why it is important?
• Software evolution process
• Software maintenance
• What is software maintenance?
• The reasons to perform software maintenance
• Principal activities of software maintenance
• Software re-engineering
Session: Testing
Testing Stages Testing activities By whom Remark

Development Unit testing team developing the White-box/black-box
testing system
Component testing
System testing (user case testing …) Or: a separate
testing team
Realising Testing Scenario testing Separate team not Black-box
involved in system
Requirement testing development Black-box

Performance testing (incl. stress testing)


User Testing Alpha testing users or customers
Beta testing
Acceptance testing
Development Testing
• Basic concepts:
• SUT, test cases, test input, test oracle
• One of the most fundamental questions: how to generate test cases?
• Black-box and white-box testing
• Unit testing
• Functional testing: how do you generate test cases?
• Equivalence classes and boundary conditions
• Test automation and test scaffolding
Input Domains
• Input domain: all possible inputs to a program
• Most input domains are so large that they are effectively infinite

• Input parameters define the scope of the input domain


• Parameter values to a method
• Data from a file
• Global variables
• User inputs
Input domain: Alphabetic letters
Partitioning characteristic: Case of letter
• Block 1: upper case
• Block 2: lower case
Forming Partitions
• We partition input domains into regions (called blocks)
• Choose at least one value from each block
• Each value is assumed to be equally useful for testing
• Forming partitions
• Find characteristics of the inputs: case of letter, relationship to 0, semantic
descriptions, …
• Example characteristics
• Whether X is null
• Order of the list F (sorted, inverse sorted, arbitrary, …)
• Min separation of two aircraft
• Input device (DVD, CD, VCR, computer, …)
• Hair color, height, major, age
Important steps
• Step: Model the input domain
• The domain is scoped by the parameters
• The structure is defined in terms of characteristics
• Each characteristic is partitioned into sets of blocks

• Step: choose combinations of values


– A test input has a value for each parameter
– One block for each characteristic
– Choose appropriate values from each block
Two Approaches to Input Domain Modeling
1. Interface-based approach
• Develops characteristics directly from individual input parameters
• Simplest application
• Can be partially automated in some situations

2. Functionality-based approach
• Develops characteristics from a behavioral view of the program under test
• Harder to develop—requires more design effort
• May result in better tests, or fewer tests that are as effective
Interface-Based Approach
• Mechanically consider each parameter in isolation
• an easy modeling technique and relies mostly on syntax

• Some domain and semantic information won’t be used


• Could lead to an incomplete IDM

• Ignores relationships among parameters


Interface-Based Example
• Consider method triang() from class TriangleType
public enum Triangle {Scalene, Isosceles, Equilateral, Invalid}

public static Triangle triang (int Side1, int Side2, int Side3)
// Side1, Side2, and Side3 represent the lengths of the sides of a triangle
// Returns the appropriate enum value

The IDM for each parameter is identical


Characteristic : Relation of side with zero
Blocks: negative; positive; zero
Choosing Blocks
• Partition the domain of the characteristics into sets of values (blocks)

• Allow all values: include valid, invalid and special values

• Sub-partition some blocks

• A partition where blocks are a discrete, enumerated set often makes sense

• Try to balance the number of blocks in each characteristic


• Tradeoff between characteristics and blocks

• Check for completeness and disjointness


Choose values
• Explore boundaries of domains and include values that represent
“normal use”

• Boundary value analysis is to use input variable values


• at their minimum,
• just above the minimum,
• a nominal value,
• just below their maximum, and
• at their maximum
triang(): Relation of Side with Zero
• 3 input parameters, each has the same partitioning
Characteristic b1 b2 b3
q1 = “Relation of Side 1 to 0” positive equal to 0 negative

q2 = “Relation of Side 2 to 0” positive equal to 0 negative

q3 = “Relation of Side 3 to 0” positive equal to 0 negative

• Maximum of 3*3*3 = 27 partitions


• Some triangles are valid, some are invalid
• Refining the characterisation can lead to more partitions …
Refining triang()’s IDM
Second Characterisation of triang()’s inputs
Characteristic b1 b2 b3 b4
q1 = “Refinement of q1” greater than 1 equal to 1 equal to 0 negative

q2 = “Refinement of q2” greater than 1 equal to 1 equal to 0 negative

q3 = “Refinement of q3” greater than 1 equal to 1 equal to 0 negative

• Maximum of 4*4*4 = 64

Values for partition q1


Characteristic B1 B2 B3 B4
Side1 52 1 0 -5
-1

Test boundary conditions


Session: Project management and planning
• Risk management
• Categories of risks
• Risk management process (identification, analysis, planning, monitoring)

• Project planning
• Scheduling: Gantt chart, PERT (program evaluation and review technique)
chart
• Show the interdependence of tasks; Calculate the amount of time it will take
to complete a project; Determine a project’s critical path; Set start and end
dates for tasks
Session: Software Quality and Configuration
Management
• Software quality
• What is software quality and its management, why it is important?
• Quality assurance process
• Software standard
• Configuration Management
• Aim
• Activities (version management, release management, change management,
system building)
• What are these? What are the typical examples? The functionalities and
underlying machinery.
Online examination
Online exam
• The contents of the exam do not change substantially
• There is one paper on Moodle, together with answers (cf. the next slide)

• Major changes:
• You will have three hours rather than 2 hours, + 1 hour for downloading and
uploading papers
• in total a 4-hour window for completing the exam
• Reserve: Wednesday 8th June, 10 – 14, get some food ready ;-)
• You will have some “open-ended” questions
• You need to write your answers in a doc or pdf file and upload to Moodle
Arrangement of exam
• Go to the Moodle page of SE1
• Locate SUMMER EXAM
• You see a pdf file, which contains all the exam
questions
• You also find a docx file, which is the answer sheet.
• You mainly work on the answer sheet where you will
find
• the question, followed by
• an area where you are supposed to provide your
answer (You should use BLUE colour for the
answer)
• When you finish, convert the docx file to a pdf file,
and submit it to Turnitin (which will be shown on the
exam day).
Three things you must do to prepare

• Read the exam guidance

• Practice following the guidance


• Using Mock exam and answer sheet

• Make sure that your equipment and


Internet are ready
Plagiarism
• Please note:
• direct copying from books or online will be treated as plagiarism
• all third-party sources must be paraphrased as part of the answer

• Turnitin will detect similar texts and generate a report for each script
• If the similarity score is high, your script will be flagged
• A plagiarism case might be opened as a result

• The best practice


• do not to consult any other resource (e.g., textbook, slides, Internet, etc)
• Use your own language to answer questions
• work on the paper yourself!
Questions?

You might also like