0% found this document useful (0 votes)
54 views

Lecture 1 Summary

This document provides an overview of software engineering principles and processes. It discusses various software process models including the waterfall model, evolutionary development, and formal systems development. The waterfall model involves separate sequential phases of specification, design, implementation, testing, and maintenance. Evolutionary development allows for more iterative and incremental development through concurrent specification and development activities. Formal systems development applies mathematical transformations to formally specify and develop critical systems.

Uploaded by

taniyafernando28
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
54 views

Lecture 1 Summary

This document provides an overview of software engineering principles and processes. It discusses various software process models including the waterfall model, evolutionary development, and formal systems development. The waterfall model involves separate sequential phases of specification, design, implementation, testing, and maintenance. Evolutionary development allows for more iterative and incremental development through concurrent specification and development activities. Formal systems development applies mathematical transformations to formally specify and develop critical systems.

Uploaded by

taniyafernando28
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 40

5SENG007C

Software Engineering Principles


and Practice

IIT ML - Cassim Farook


[email protected]

(notes are adopted from UoW ML - Dr Alexander Bolotov)


Please read the detailed slides with extra notes on BB
Good
Morning!
I teach
@ IIT for
UoW BSc and BEng.

@ IIT for
RGU BSc AI & DS
RGU MSc Big Data Analytics

IIT Alumna 2004 MMU


11+ years Industry
8+ Years Academic

Wesley College
Rotary Club – Colombo Mid Town

2
The Panel

Lecturers
 Cassim Farook
 Ovini Seneviratne – Visiting Lecturer

Tutors
1. Cassim Farook
2. Lakshan Costa
3. Ovini Seneviratne
4. Dilani Lunugalage
5. Suvetha Suvendran
6. Adshayan Balachandran – Visiting Lecturer

3
Module Schedule
Week 1 Introduction to the Module. Software Engineering Life Cycle. Introduction to Software
25th Sep Design and Software developmental methodologies;

Week 2 Requirements Engineering 1: elicitation methods, types of requirements, formalisation (UML),


02nd Oct use case analysis
Week 3 Requirements Engineering 2: domain analysis and modelling, behaviour analysis and
09th Oct modelling, UML diagrams – sequence, class, activity, testing requirements

Week 4 Software developmental methodologies – detailed look


16th Oct
Week 5 Design and development principles. Modules, interfaces, separation of concerns, and
23rd Oct programming patterns.
Practical aspects of abstractions, invariants.
Week 6 Engagement Week No Lecture
30th Oct
Week 7 Software Architecture – Part 1
06th Nov
Week 8 Software Architecture – Part 2
13th Nov
Week 9 Software Sustainability
20th Nov
Week 10 Software Quality, Verification, Validation and Testing – Part 1
27th Nov
Week 11 Software Quality, Verification, Validation and Testing – Part 1
04th Dec
Week 12 Concluding Lecture – modern SE, SE and AI, links to future study 4
11th Dec
Expectations of You

Attend Lectures and Tutorials


To Learn how to “Earn” Marks

This module does not “give” marks.

“Earning” (in commerce) is the process of getting money for


genuine working done.

Using Generative AI for CW earns money to the AI, - not you.

This module would be useful during placement “in parts”, but you will
apply it fully if you “decide” to do the Final Year project (honours degree)

5
What is a Process … ?

When we provide a service or create a product


we always follow a sequence of steps to
accomplish a set of tasks
• You do not usually bake a cake
before all the ingredients are mixed
together

Any process has the following characteristics


1. Prescribes all of the major activities
2. Resources and produces intermediate and
final products
3. Sub-processes and has entry and exit
criteria
4. The activities are organized in a sequence
5. Constrains or control may apply to activities
(budget control, availability of resources )

Four Step Baking cake process (2023) 123RF. Available at:


https://www.123rf.com/photo_77491920_baking-cake-process-demonstrates-in-4-steps-till-
you-get-beautiful-creamy-butter-cake.html (Accessed: 27 September 2023).

6
Software Processes

Involves building of a product - we refer to the process as


a life cycle
Software development process – software life cycle

Software Life Cycle


• Specifying,
• Designing,
• Implementing and
• Testing software systems

7
The Software Process

A structured set of activities


1. Specification
2. Design
3. Validation
4. Evolution
A software process model is an abstract representation of a process
It presents a description of a process from some particular
perspective

1.Generic process models describe the organisation of software


processes
2.Iterative process models describe the software process as a cycle of
activities

8
Generic (Software) Process Models

 1. The waterfall model


• Separate and distinct phases of specification and development
 2. Evolutionary development
• Specification and development are interleaved
 3. Formal systems development
• A mathematical system model is formally transformed to an
implementation
 4. Reuse-based development
• The system is assembled from existing components

9
1. Waterfall Model

Requirements Waterfall model describes a


process of stepwise
definition refinement
 Based on hardware
engineering models
System and  Widely used in military
software design and aerospace
industries

Implementation
and unit testing

Integr ation and


system testing

Operation and
maintenance

10
Classical Waterfall - restrictions

But software is different :


 No fabrication step
 Program code is another design level
 Hence, no “commit” step – software can always be changed…!
 No body of experience for design analysis (yet)
 Most analysis (testing) is done on program code
 Hence, problems not detected until late in the process
 Waterfall model takes a static view of requirements
 Ignore changing needs
 Lack of user involvement once specification is written
 Unrealistic separation of specification from the design

 Doesn’t accommodate prototyping, reuse, etc

11
2. Evolutionary development

Exploratory development
-Objective is to work with Throw-away prototyping
Objective is to understand the system requirements.
customers and to evolve a We start with some rough idea of the requirements
final system from an initial -detailed requirements are not possible;
outline specification. Concurr ent -powerful development tools

activities

Initial
Specification
version

Outline Intermediate
Development
description versions

Final
Validation
version

12
Evolutionary development -restrictions

 Problems
• Lack of process visibility
• Systems are often poorly structured
• Special skills (e.g. in languages for rapid prototyping)
may be required
 Applicability
• For small or medium-size interactive systems
• For parts of large systems (e.g. the user interface)
• For short-lifetime systems

13
3. Formal systems development

 Based on the transformation of a mathematical specification


 Transformations are ‘correctness-preserving’

Embodied in the ‘Cleanroom’ approach (which was originally


developed by IBM) to software development

Requirements Formal Formal Integration and


definition specification transformation system testing

Applicability
Critical systems especially those where a safety or security
case must be made before the system is put into operation

14
Formal transformations

transformations Formal transformations


T1 T2 T3 T4

Formal R1 Executable
R2 R3
specification program

P1 P2 P3 P4

Proofs of transformation correctness

proofs
Results/Revisions

15
Formal transformations

 What do we prove:
• Program Terminates (if needed)
• No Deadlock
• Something Good will happen
• Something Bad will never happen
• Prove that the desired invariants of the program are
preserved

• Note: For SE students , Concurrent Programming in Level 6 will use the


above properties to build safe concurrent programs.

16
4. Reuse-oriented development

 Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-
the-shelf) systems
 Process stages
• Component analysis
• Requirements modification
• System design with reuse
• Development and integration

This approach is becoming more important

Requirements Component Requirements System design


specification analysis modification with reuse

Development System
and integration validation

17
Iterative Process Models (aka Process Iteration)

 System requirements ALWAYS evolve

 Iteration can be applied to any of the generic process models

 Two (related) approaches

1. Incremental development
2. Spiral development

18
Process Iteration - Incremental development

Define outline Assign requirements Design system


requirements to increments architecture

Start of
development - the requirements are frozen
Develop system Valida te Integrate Valida te
increment increment increment system
Final
system
System incomplete

Customer value
• can be delivered with each increment
• system functionality is available earlier

Early increments act as a prototype to help elicit requirements for later increments

Lower risk of overall project failure

The highest priority system services


19
Process Iteration - Extreme programming

 New approach to development based on the development and delivery


of very small increments of functionality

 Relies on constant code improvement, user involvement in the


development team and pairwise programming

 Design of the test suits first !


Then you perform testing of the system after each small increment

20
Process is represented as a spiral.
Each loop in the spiral represents a phase
Process Iteration - Spiral development model No fixed phases - depending on what is required.
Risks are explicitly assessed and resolved

Objective setting Risk assessment and reduction


Determine objectives
Evaluate alternatives
alternatives and identify, resolve risks
constraints Risk
analysis
Risk
analysis
Risk
analysis Opera-
Prototype 3 tional
Prototype 2 protoype
Risk
REVIEW analy sis Proto-
type 1
Requirements plan Simulations, models, benchmarks
Life-cycle plan Concept of
Operation S/W
requirements Product
design Detailed
Requirement design
Development
plan validation Code
Planning Integration Design
V&V
Unit test
Integr ation
and test plan
Plan next phase test
Acceptance
Service test Develop, verify
next-level product

Development and validation


21
I. Software specification

The process of establishing what services are required and the


constraints on the system’s operation and development

 Requirements engineering process


1. Feasibility study
2. Requirements elicitation and analysis
3. Requirements specification
4. Requirements validation

22
I. Software specification - The requirements engineering process

Feasibility Requirements
study elicitation and
analysis
Requir ements
specification
Feasibility Requirements
report validation
System
models
User and system
requirements

Requirements
document

23
II. Software Design and Implementation

Requirements
specification Design process
Design acti
vities

Architectur
al Interface Component Data Algorithm
Abstract
design design design structur
e design
specification
design

Software Data
System Interface Component Algorithm
specification structure
e
architectur specifica
tion specification specifica
tion
specification

Design pr
oducts

Systematic approaches to developing a software design


 The design is usually documented as a set of graphical models
 Possible models
• Data-flow model
• Entity-relation-attribute model Design Methods
• Structural model
• Object models
24
II. Software Design and Implementation

The process of converting the system specification into an executable system

 Software design
• Design a software structure that realises the specification
 Implementation
• Translate this structure into an executable program

 The activities of design and implementation are closely related and may be inter-
leaved

25
II. Software Design and Implementation - The Debugging Process

Translating a design into a program and removing errors from that program

 Programming is a personal activity - there is no generic programming process


 Programmers carry out some program testing to discover faults in the program and remove these faults in the
debugging process

Locate Design Repair Re-test


error error repair error program

26
III Software validation

 A) Verification and validation is intended to show that a system


conforms to its specification and meets the requirements of the system
customer

 Involves checking and review processes and system testing

 B) System testing - Involves executing the system with test cases


that are derived from the specification of the real data to be processed
by the system

27
III Software validation - The Testing process

Unit
testing
Module
testing
Sub-system
testing
System
testing
Acceptance
testing

Component Integration testing User


testing testing

28
III Software validation - Testing stages

 Unit testing
• Individual components are tested
 Module testing
• Related collections of dependent components are tested
 Sub-system testing
• Modules are integrated into sub-systems and tested. The focus
here should be on interface testing
 System testing
• Testing of the system as a whole. Testing of emergent properties
 Acceptance testing
• Testing with customer data to check that it is acceptable

29
III Software validation - Testing phases

Requir ements System System Detailed


specification specification design design

System Sub-system Module and


Acceptance
integration integration unit code
test plan
test plan test plan and tess

Acceptance System Sub-system


Service
test integration test integration test

30
IV Software evolution

Software is inherently flexible and can change.

 As requirements change through changing business circumstances,


the software that supports the business must also evolve and change

 Although there has been a demarcation between development and


evolution (maintenance) this is increasingly irrelevant as fewer and
fewer systems are completely new

31
IV Software evolution System evolution

Define system Assess existing Propose system Modify


requirements systems changes systems

Existing New
systems system

32
Automated process support (CASE)
 Computer-aided software engineering (CASE) is software to support software
development and evolution processes

 Activity automation
• Graphical editors for system model development
• Data dictionary to manage design entities
• Graphical UI builder for user interface construction
• Debuggers to support program fault finding
• Automated translators to generate new versions of a program

33
CASE tool Example: Rational Rose (Diagram to Code Generation)

34
CASE classification

 Functional perspective
• Tools are classified according to their specific function
 Process perspective
• Tools are classified according to process activities that are supported
 Integration perspective
• Tools are classified according to their organisation into integrated units

35
CASE classification - Functional perspective

Tool type Examples


Planning tools PERT tools, estimation tools,
spreadsheets
Editing tools Text editors, diagram editors, word
processors
Change management tools Requirements traceability tools, change
control systems
Configuration management tools Version management systems, system
building tools
Prototyping tools Very high-level languages,
user interface generators
Method-support tools Design editors, data dictionaries, code
generators
Language-processing tools Compilers, interpreters
Program analysis tools Cross reference generators, static
analysers, dynamic analysers
Testing tools Test data generators, file comparators
Debugging tools Interactive debugging systems
Documentation tools Page layout programs, image editors
Re-engineering tools Cross-reference systems, program re-
structuring systems 36
CASE classification - Process perspective

Reengineering tools

Testing tools

Debugging tools

Program analysis tools

Language-processing
tools

Method support tools

Prototyping tools

Configuration
management tools

Change management tools

Documentation tools

Editing tools

Planning tools

Specification Design Implementation Verification


and 37
Validation
CASE classification – Integration Perspective

Tools - Support individual process tasks such as design consistency checking, text editing, etc.
Workbenches - Support a process phase such as specification or design, Normally include a number of integrated tools
Environments - Support all or a substantial part of an entire software process. Include several IDEs, Workbenches
CASE
technology

Tools Workbenches Environments

File Integrated Process-centred


Editors Compilers
comparators environments environments

Analysis and
Programming Testing
design

Multi-method Single-method General-purpose Language-specific


workbenches workbenches workbenches workbenches

38
Key points

 Software processes are the activities involved in producing and


evolving a software system. They are represented in a software
process model
 General activities are specification, design and implementation,
validation and evolution
 Generic process models describe the organisation of software
processes
 Iterative process models describe the software process as a cycle of
activities

39
Key points

 Requirements engineering is the process of developing a software


specification
 Design and implementation processes transform the specification to
an executable program
 Validation involves checking that the system meets to its specification
and user needs
 Evolution is concerned with modifying the system after it is in use
 CASE technology supports software process activities

40

You might also like