/
Introduction to Software Engineering Introduction to Software Engineering

Introduction to Software Engineering - PowerPoint Presentation

lois-ondreau
lois-ondreau . @lois-ondreau
Follow
357 views
Uploaded On 2018-11-06

Introduction to Software Engineering - PPT Presentation

Lecture 4 André van der Hoek Todays Lecture Quick recap Recurring and fundamental principles of software engineering BuildandFix Build first version Modify until client is satisfied ID: 718725

implementation interface software required interface implementation required software development verify abstraction design concerns phase separation requirements integration change modularity

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Introduction to Software Engineering" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Introduction to Software EngineeringLecture 4

André

van der

HoekSlide2

Today’s Lecture

Quick recap

Recurring

and fundamental principles of software

engineeringSlide3

Build-and-Fix

Build first

version

Modify until

client is satisfied

Operations mode

Retirement

Development

MaintenanceSlide4

Waterfall

Operations mode

Retirement

Requirements

phase

Verify

Specification

phase

Verify

Design

phase

Verify

Implementation

phase

Test

Integration

phase

Test

Changed

requirements

Verify

Development

MaintenanceSlide5

Rapid Prototyping

Operations mode

Retirement

Build and discard

simple prototype

Verify

Specification

phase

Verify

Design

phase

Verify

Implementation

phase

Test

Integration

phase

Test

Changed

requirements

Verify

Development

MaintenanceSlide6

FOR EACH BUILD

Perform detailed design,

implementation, and

integration. Test.

Deliver to client.

Incremental

Operations mode

Retirement

Requirements

phase

Verify

Specification

phase

Verify

Architectural

design

Verify

Development

MaintenanceSlide7

Synchronize-and-Stabilize

Specifications

Implementation,

Integration

Deliver to

client (version 1)

Specifications

Design

Implementation,

Integration

Deliver to

client (version 2)

Specifications

Design

Implementation,

Integration

Deliver to

client (version 3)

Specifications

Design

Implementation,

Integration

Deliver to

client (version n)

.

.

.

.

.

.

.

.

.

Specification team

Design team

Implementation/integration team

DesignSlide8

Spiral

Risk

analysis

Risk

analysis

Risk

analysis

Risk

analysis

Rapid

prototype

Specification

Design

Implementation

Verify

Verify

Verify

VerifySlide9

A Comparison of Life Cycle Models

Model

Strengths

Weaknesses

Build-and-Fix

Fine for small programs that do not require much maintenance

Totally unsatisfactorily for nontrivial programs

Waterfall

Disciplined approach

Document driven

Delivered product may not meet client’s needs

Rapid

Prototyping

Ensures that delivered product meets client’s needs

A need to build twice

Cannot always be used

Incremental

Maximizes early return on investment

Promotes maintainability

Requires open architecture

May degenerate into build-and-fix

Synchronize-

and-stabilize

Future user’s needs are met

Ensures components can be successfully integrated

Has not been widely used other than in Microsoft

Spiral

Incorporates features of all the above models

Can be used only for large-scale products

Developers have to be competent at risk-analysisSlide10

ICS 52 Software Life Cycle

Requirements specification

Interview customer (TA)

Focus on “what”, not “how”

Architectural and module design

Based on provided “official” requirements specificationFocus on interfaces

ImplementationBased on provided “official” designFocus on good implementation techniquesTestingBased on provided “official” implementationFocus on fault coverage and discoverySlide11

Recurring, Fundamental Principles

Rigor and formality

Separation of concerns

Modularity

Abstraction

Anticipation of changeGeneralityIncrementality

These principles apply to all aspects of software engineeringSlide12

Rigor and Formality

Creativity often leads to imprecision and inaccuracy

Software development is a creative process

Software development can tolerate neither imprecision nor inaccuracy

Rigor helps to…

…produce more reliable products…control cost

…increase confidence in productsFormality is “rigor – mathematically sound”Often used for mission critical systemsSlide13

Separation of Concerns

Trying to do too many things at the same time often leads to mistakes

Software development is comprised of many parallel tasks, goals, and responsibilities

Software development cannot tolerate mistakes

Separation of concerns helps to…

…divide a problem into parts that can be dealt with separately…create an understanding of how the parts depend on/relate to each other Slide14

Example Dimensions of Separation

Time

Requirements, design, implementation, testing, …

Dial, receive confirmation, connect, talk, …

Qualities

Efficiency and user friendlinessCorrectness and portabilityViews

Data flow and control flowManagement and developmentSlide15

Modularity

Separation into individual, physical parts

Decomposability

Divide and conquer

Composability

Component assemblyReuseUnderstandingLocalization

Special case of separation of concernsDivide and conquer “horizontally”“Brick”-effectSlide16

Modularity

Big

Small

Small

Small

SmallSlide17

Abstraction

Separation into individual, logical parts

Relevant versus irrelevant details

Use relevant details to solve task at hand

Ignore irrelevant details

Special case of separation of concernsDivide and conquer “vertically”“Iceberg”-effectSlide18

Abstraction

Big

Abstraction

DetailsSlide19

Modularity + Abstraction

Big

D

etails

Details

Details

Details

Abstraction

Abstraction

Abstraction

AbstractionSlide20

Anticipation of Change

Not anticipating change often leads to high cost and unmanageable software

Software development deals with inherently changing requirements

Software development can tolerate neither high cost nor unmanageable software

Anticipation of change helps to…

…create a software infrastructure that absorbs changes easily…enhance reusability of components

…control cost in the long runSlide21

Generality

Not generalizing often leads to continuous redevelopment of similar solutions

Software development involves building many similar kinds of software (components)

Software development cannot tolerate building the same thing over and over again

Generality leads to…

…increased reusability

…increased reliability…faster development…reduced costSlide22

Incrementality

Delivering a large product as a whole, and in one shot, often leads to dissatisfaction and a product that is “not quite right”

Software development typically delivers one final product

Software development cannot tolerate a product that is not quite right or dissatisfies the customer

Incrementality leads to…

…the development of better products

…early identification of problems…an increase in customer satisfactionActive involvement of customerSlide23

Cohesion

VERSUSSlide24

Coupling

VERSUSSlide25

Provided Interface

Implementation

Required Interface

A Good Separation of Concerns, 1

Abstraction through the use of provided/required interfaces

Modularity through the use of components

Low coupling through the use of hierarchies

High cohesion through the use of coherent implementations

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required InterfaceSlide26

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

A Good Separation of Concerns, 2

Abstraction through the use of provided/required interfaces

Modularity through the use of components

Low coupling through the use of a central “blackboard”

High cohesion through the use of coherent implementations

Implementation

Provided InterfaceSlide27

Benefit 1: Anticipating Change

Separating concerns anticipates change

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Implementation

Provided InterfaceSlide28

Benefit 1: Anticipating Change

Separating concerns anticipates change

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Implementation

Provided InterfaceSlide29

Benefit 2: Promoting Generality

Separating concerns promotes generality

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required InterfaceSlide30

Benefit 3: Facilitating Incrementality

Separating concerns facilitates incrementality

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required Interface

Implementation

Provided Interface

Provided Interface

Implementation

Required Interface

Provided Interface

Implementation

Required InterfaceSlide31

Recurring, Fundamental Principles

Rigor and formality

Separation of concerns

Modularity

Abstraction

Anticipation of changeGeneralityIncrementality

These principles apply to all aspects of software engineeringSlide32

Your Tasks

Read and study slides of this lecture

Read Chapters 6.2, 12.1.1, 12.1.2

of van

Vliet